MCPcopy Create free account
hub / github.com/Zoo-Code-Org/Zoo-Code / runMcpTask

Function runMcpTask

apps/vscode-e2e/src/suite/tools/use-mcp-tool.test.ts:119–172  ·  view source on GitHub ↗
(text: string)

Source from the content-addressed store, hash-verified

117 }
118
119 async function runMcpTask(text: string): Promise<TaskRunResult> {
120 const api = globalThis.api
121 const messages: ClineMessage[] = []
122 let attemptCompletionCalled = false
123 let mcpRequest: ParsedMcpRequest | null = null
124 let mcpServerResponse: string | null = null
125 let errorOccurred: string | null = null
126
127 const messageHandler = ({ message }: { message: ClineMessage }) => {
128 messages.push(message)
129
130 if (message.type === "ask" && message.ask === "use_mcp_server" && message.text) {
131 try {
132 const parsed = JSON.parse(message.text) as ParsedMcpRequest
133 if (parsed.serverName && parsed.toolName) {
134 mcpRequest = parsed
135 }
136 } catch {
137 // Ignore partial JSON; a later complete ask will overwrite.
138 }
139 }
140
141 if (message.type === "say" && message.say === "mcp_server_response") {
142 mcpServerResponse = message.text || null
143 }
144
145 if (message.type === "say" && message.say === "completion_result") {
146 attemptCompletionCalled = true
147 }
148
149 if (message.type === "say" && message.say === "error") {
150 errorOccurred = message.text || "Unknown error"
151 }
152 }
153
154 api.on(RooCodeEventName.Message, messageHandler)
155
156 try {
157 await api.startNewTask({
158 configuration: {
159 mode: "code",
160 autoApprovalEnabled: true,
161 alwaysAllowMcp: true,
162 mcpEnabled: true,
163 },
164 text,
165 })
166
167 await waitFor(() => attemptCompletionCalled, { timeout: 45_000 })
168 return { messages, mcpRequest, mcpServerResponse, errorOccurred }
169 } finally {
170 api.off(RooCodeEventName.Message, messageHandler)
171 }
172 }
173
174 suiteSetup(async () => {
175 const workspaceFolders = vscode.workspace.workspaceFolders

Callers 1

Calls 4

waitForFunction · 0.90
onMethod · 0.65
startNewTaskMethod · 0.65
offMethod · 0.65

Tested by

no test coverage detected