(ctx context.Context, params acp.PromptRequest)
| 87 | } |
| 88 | |
| 89 | func (a *acpEchoAgent) Prompt(ctx context.Context, params acp.PromptRequest) (acp.PromptResponse, error) { |
| 90 | // Extract text from prompt |
| 91 | var promptText string |
| 92 | for _, block := range params.Prompt { |
| 93 | if block.Text != nil { |
| 94 | promptText = block.Text.Text |
| 95 | break |
| 96 | } |
| 97 | } |
| 98 | promptText = strings.TrimSpace(promptText) |
| 99 | |
| 100 | if a.scriptIndex >= len(a.script) { |
| 101 | return acp.PromptResponse{ |
| 102 | StopReason: acp.StopReasonEndTurn, |
| 103 | }, nil |
| 104 | } |
| 105 | |
| 106 | entry := a.script[a.scriptIndex] |
| 107 | expected := strings.TrimSpace(entry.ExpectMessage) |
| 108 | |
| 109 | // Empty ExpectMessage matches any prompt |
| 110 | if expected != "" && expected != promptText { |
| 111 | return acp.PromptResponse{}, fmt.Errorf("expected message %q but got %q", expected, promptText) |
| 112 | } |
| 113 | |
| 114 | a.scriptIndex++ |
| 115 | |
| 116 | // Send response via session update |
| 117 | if err := a.conn.SessionUpdate(ctx, acp.SessionNotification{ |
| 118 | SessionId: params.SessionId, |
| 119 | Update: acp.UpdateAgentMessageText(entry.ResponseMessage), |
| 120 | }); err != nil { |
| 121 | return acp.PromptResponse{}, err |
| 122 | } |
| 123 | |
| 124 | return acp.PromptResponse{ |
| 125 | StopReason: acp.StopReasonEndTurn, |
| 126 | }, nil |
| 127 | } |
| 128 | |
| 129 | func (a *acpEchoAgent) SetSessionMode(_ context.Context, _ acp.SetSessionModeRequest) (acp.SetSessionModeResponse, error) { |
| 130 | return acp.SetSessionModeResponse{}, nil |
nothing calls this directly
no test coverage detected