MCPcopy Create free account
hub / github.com/rilldata/rill / Handler

Method Handler

runtime/ai/developer_agent.go:49–112  ·  view source on GitHub ↗
(ctx context.Context, args *DeveloperAgentArgs)

Source from the content-addressed store, hash-verified

47}
48
49func (t *DeveloperAgent) Handler(ctx context.Context, args *DeveloperAgentArgs) (*DeveloperAgentResult, error) {
50 // Generate the prompts
51 systemPrompt, err := t.systemPrompt()
52 if err != nil {
53 return nil, err
54 }
55 userPrompt, err := t.userPrompt(ctx, args)
56 if err != nil {
57 return nil, err
58 }
59
60 // Pre-invoke some tool calls
61 s := GetSession(ctx)
62 _, err = s.CallTool(ctx, RoleAssistant, ListFilesName, nil, &ListFilesArgs{})
63 if err != nil {
64 return nil, err
65 }
66 _, err = s.CallTool(ctx, RoleAssistant, ProjectStatusName, nil, &ProjectStatusArgs{})
67 if err != nil {
68 return nil, err
69 }
70 if args.CurrentFilePath != "" {
71 _, _ = s.CallTool(ctx, RoleAssistant, ReadFileName, nil, &ReadFileArgs{
72 Path: args.CurrentFilePath,
73 })
74 if ctx.Err() != nil { // Ignore tool error since the file may not exist
75 return nil, ctx.Err()
76 }
77 }
78
79 // Build initial completion messages
80 messages := []*aiv1.CompletionMessage{NewTextCompletionMessage(RoleSystem, systemPrompt)}
81 messages = append(messages, s.NewCompletionMessages(s.MessagesWithResults(FilterByType(MessageTypeCall), FilterByTool(DeveloperAgentName)))...)
82 messages = append(messages, NewTextCompletionMessage(RoleUser, userPrompt))
83 messages = append(messages, s.NewCompletionMessages(s.MessagesWithResults(FilterByParent(s.ParentID)))...)
84
85 // Run an LLM tool call loop
86 var response string
87 err = s.Complete(ctx, "Developer loop", &response, &CompleteOptions{
88 Messages: messages,
89 Tools: []string{
90 ProjectStatusName,
91 ListFilesName,
92 SearchFilesName,
93 ReadFileName,
94 ListBucketsName,
95 ListBucketObjectsName,
96 ListTablesName,
97 ShowTableName,
98 QuerySQLName,
99 DevelopFileName,
100 NavigateName,
101 },
102 MaxIterations: 20,
103 UnwrapCall: true,
104 })
105 if err != nil {
106 return nil, err

Callers

nothing calls this directly

Calls 12

systemPromptMethod · 0.95
userPromptMethod · 0.95
GetSessionFunction · 0.85
NewTextCompletionMessageFunction · 0.85
FilterByTypeFunction · 0.85
FilterByToolFunction · 0.85
FilterByParentFunction · 0.85
CallToolMethod · 0.80
NewCompletionMessagesMethod · 0.80
MessagesWithResultsMethod · 0.80
ErrMethod · 0.65
CompleteMethod · 0.65

Tested by

no test coverage detected