gemini-helper-friend 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -0
- package/README.md +216 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +22 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +193 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/templates/completion-inspector.mdx +648 -0
- package/dist/config/templates/helper-friend.mdx +763 -0
- package/dist/config/templates/manual-tester.mdx +950 -0
- package/dist/config/types.d.ts +90 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +6 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/yaml/subagents.yaml +449 -0
- package/dist/config/yaml/tools.yaml +0 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +253 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/agentic-task.tool.d.ts +2 -0
- package/dist/tools/agentic-task.tool.d.ts.map +1 -0
- package/dist/tools/agentic-task.tool.js +2 -0
- package/dist/tools/agentic-task.tool.js.map +1 -0
- package/dist/tools/extension-manager.tool.d.ts +2 -0
- package/dist/tools/extension-manager.tool.d.ts.map +1 -0
- package/dist/tools/extension-manager.tool.js +2 -0
- package/dist/tools/extension-manager.tool.js.map +1 -0
- package/dist/tools/gemini-task.tool.d.ts +2 -0
- package/dist/tools/gemini-task.tool.d.ts.map +1 -0
- package/dist/tools/gemini-task.tool.js +2 -0
- package/dist/tools/gemini-task.tool.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/session-manager.tool.d.ts +2 -0
- package/dist/tools/session-manager.tool.d.ts.map +1 -0
- package/dist/tools/session-manager.tool.js +2 -0
- package/dist/tools/session-manager.tool.js.map +1 -0
- package/dist/tools/structured-query.tool.d.ts +2 -0
- package/dist/tools/structured-query.tool.d.ts.map +1 -0
- package/dist/tools/structured-query.tool.js +2 -0
- package/dist/tools/structured-query.tool.js.map +1 -0
- package/dist/tools/subagent.tool.d.ts +75 -0
- package/dist/tools/subagent.tool.d.ts.map +1 -0
- package/dist/tools/subagent.tool.js +604 -0
- package/dist/tools/subagent.tool.js.map +1 -0
- package/dist/utils/geminiExecutor.d.ts +2 -0
- package/dist/utils/geminiExecutor.d.ts.map +1 -0
- package/dist/utils/geminiExecutor.js +2 -0
- package/dist/utils/geminiExecutor.js.map +1 -0
- package/package.json +62 -0
- package/src/config/templates/completion-inspector.mdx +648 -0
- package/src/config/templates/helper-friend.mdx +763 -0
- package/src/config/templates/manual-tester.mdx +950 -0
- package/src/config/yaml/subagents.yaml +449 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Gemini Helper Friend MCP
|
|
4
|
+
* Your autonomous AI assistant that works on your codebase using Gemini CLI
|
|
5
|
+
*/
|
|
6
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
7
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
8
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
9
|
+
import { generateMcpTools, getMetadata } from "./config/index.js";
|
|
10
|
+
import { executeSubagent, executeSubagentAsync, getTaskStatusResponse, getCompletedTasksAsResources, getTaskResourceContent, } from "./tools/index.js";
|
|
11
|
+
const metadata = getMetadata();
|
|
12
|
+
const server = new Server({
|
|
13
|
+
name: metadata.name,
|
|
14
|
+
version: "2.0.0",
|
|
15
|
+
}, {
|
|
16
|
+
capabilities: {
|
|
17
|
+
tools: {
|
|
18
|
+
listChanged: true, // Support tool list change notifications
|
|
19
|
+
},
|
|
20
|
+
resources: {
|
|
21
|
+
subscribe: true, // Support resource subscriptions
|
|
22
|
+
listChanged: true, // Support resource list change notifications
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
const KEEPALIVE_INTERVAL = 25000;
|
|
27
|
+
let isProcessing = false;
|
|
28
|
+
let latestOutput = "";
|
|
29
|
+
async function sendProgressNotification(progressToken, progress, message) {
|
|
30
|
+
if (!progressToken)
|
|
31
|
+
return;
|
|
32
|
+
try {
|
|
33
|
+
await server.notification({
|
|
34
|
+
method: "notifications/progress",
|
|
35
|
+
params: { progressToken, progress, message },
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Ignore notification errors
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function startProgressUpdates(progressToken) {
|
|
43
|
+
isProcessing = true;
|
|
44
|
+
latestOutput = "";
|
|
45
|
+
const messages = [
|
|
46
|
+
"🤖 Gemini Helper Friend is working on your task...",
|
|
47
|
+
"📊 Analyzing files and gathering insights...",
|
|
48
|
+
"✨ Processing with Gemini CLI (YOLO mode)...",
|
|
49
|
+
"🔍 Still working... complex tasks take time...",
|
|
50
|
+
];
|
|
51
|
+
let idx = 0;
|
|
52
|
+
let progress = 0;
|
|
53
|
+
if (progressToken) {
|
|
54
|
+
sendProgressNotification(progressToken, 0, "🚀 Starting task...");
|
|
55
|
+
}
|
|
56
|
+
const interval = setInterval(() => {
|
|
57
|
+
if (isProcessing && progressToken) {
|
|
58
|
+
progress += 1;
|
|
59
|
+
const msg = messages[idx % messages.length];
|
|
60
|
+
const preview = latestOutput.slice(-100).trim();
|
|
61
|
+
sendProgressNotification(progressToken, progress, preview ? `${msg}\n📝 ...${preview}` : msg);
|
|
62
|
+
idx++;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
clearInterval(interval);
|
|
66
|
+
}
|
|
67
|
+
}, KEEPALIVE_INTERVAL);
|
|
68
|
+
return { interval, progressToken };
|
|
69
|
+
}
|
|
70
|
+
function stopProgressUpdates(data, success) {
|
|
71
|
+
isProcessing = false;
|
|
72
|
+
clearInterval(data.interval);
|
|
73
|
+
if (data.progressToken) {
|
|
74
|
+
sendProgressNotification(data.progressToken, 100, success ? "✅ Task completed!" : "❌ Task failed");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// NOTIFICATION HELPER - Send resource list changed notification
|
|
79
|
+
// ============================================================================
|
|
80
|
+
async function sendResourceListChangedNotification() {
|
|
81
|
+
try {
|
|
82
|
+
await server.notification({
|
|
83
|
+
method: "notifications/resources/list_changed",
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Ignore notification errors (client may not support)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async function sendTaskCompletionNotification(taskId) {
|
|
91
|
+
try {
|
|
92
|
+
await server.notification({
|
|
93
|
+
method: "notifications/resources/updated",
|
|
94
|
+
params: { uri: `task://${taskId}` },
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Ignore notification errors
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// ============================================================================
|
|
102
|
+
// RESOURCES - Completed tasks exposed as readable resources
|
|
103
|
+
// ============================================================================
|
|
104
|
+
// resources/list - Return completed tasks as resources
|
|
105
|
+
server.setRequestHandler(ListResourcesRequestSchema, async (_request) => {
|
|
106
|
+
const completedTasks = getCompletedTasksAsResources();
|
|
107
|
+
return { resources: completedTasks };
|
|
108
|
+
});
|
|
109
|
+
// resources/read - Read a specific task result
|
|
110
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
111
|
+
const uri = request.params.uri;
|
|
112
|
+
const content = getTaskResourceContent(uri);
|
|
113
|
+
if (!content) {
|
|
114
|
+
throw new Error(`Resource not found: ${uri}`);
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
contents: [{
|
|
118
|
+
uri,
|
|
119
|
+
mimeType: "text/markdown",
|
|
120
|
+
text: content,
|
|
121
|
+
}],
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
// ============================================================================
|
|
125
|
+
// TOOLS
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// tools/list - Return tools from YAML config
|
|
128
|
+
server.setRequestHandler(ListToolsRequestSchema, async (_request) => {
|
|
129
|
+
const tools = generateMcpTools();
|
|
130
|
+
return { tools: tools };
|
|
131
|
+
});
|
|
132
|
+
// tools/call - Execute tools (gemini-subagent or check_subagent_task)
|
|
133
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
134
|
+
const toolName = request.params.name;
|
|
135
|
+
// ========================================================================
|
|
136
|
+
// TOOL: check_subagent_task - Query async task status
|
|
137
|
+
// ========================================================================
|
|
138
|
+
if (toolName === "check_subagent_task") {
|
|
139
|
+
const args = request.params.arguments;
|
|
140
|
+
if (!args.task_id || typeof args.task_id !== 'number') {
|
|
141
|
+
return {
|
|
142
|
+
content: [{
|
|
143
|
+
type: "text",
|
|
144
|
+
text: JSON.stringify({
|
|
145
|
+
status: "error",
|
|
146
|
+
error: "task_id is required and must be a number (5-digit integer)",
|
|
147
|
+
}, null, 2),
|
|
148
|
+
}],
|
|
149
|
+
isError: true,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const statusResponse = getTaskStatusResponse(args.task_id);
|
|
153
|
+
return {
|
|
154
|
+
content: [{
|
|
155
|
+
type: "text",
|
|
156
|
+
text: JSON.stringify(statusResponse, null, 2),
|
|
157
|
+
}],
|
|
158
|
+
isError: false,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// ========================================================================
|
|
162
|
+
// TOOL: gemini-subagent - Execute subagent (async or sync)
|
|
163
|
+
// ========================================================================
|
|
164
|
+
if (toolName !== "gemini-subagent") {
|
|
165
|
+
throw new Error(`Unknown tool: ${toolName}`);
|
|
166
|
+
}
|
|
167
|
+
const args = (request.params.arguments || {});
|
|
168
|
+
// Default async=true; explicit false for sync/blocking mode
|
|
169
|
+
const isAsync = args.async !== false;
|
|
170
|
+
// ========================================================================
|
|
171
|
+
// ASYNC MODE (default): Return task ID immediately
|
|
172
|
+
// ========================================================================
|
|
173
|
+
if (isAsync) {
|
|
174
|
+
const progressToken = request.params._meta?.progressToken;
|
|
175
|
+
const asyncResult = executeSubagentAsync(args,
|
|
176
|
+
// Progress callback
|
|
177
|
+
(taskId, progress, output) => {
|
|
178
|
+
if (progressToken) {
|
|
179
|
+
sendProgressNotification(progressToken, progress, `Task ${taskId}: ${output.slice(-100)}`);
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
// Completion callback - send MCP notifications
|
|
183
|
+
async (taskId) => {
|
|
184
|
+
await sendResourceListChangedNotification();
|
|
185
|
+
await sendTaskCompletionNotification(taskId);
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
content: [{
|
|
189
|
+
type: "text",
|
|
190
|
+
text: `## 🚀 Async Task Started
|
|
191
|
+
|
|
192
|
+
**Task ID:** \`${asyncResult.task_id}\`
|
|
193
|
+
**Status:** ${asyncResult.status}
|
|
194
|
+
|
|
195
|
+
${asyncResult.message}
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
### ⚠️ IMPORTANT - This is NOT the result!
|
|
200
|
+
|
|
201
|
+
The task is running in the background. To get the actual result:
|
|
202
|
+
|
|
203
|
+
1. **Wait a moment** (task complexity varies)
|
|
204
|
+
2. **Call \`check_subagent_task\`** with:
|
|
205
|
+
\`\`\`json
|
|
206
|
+
{ "task_id": ${asyncResult.task_id} }
|
|
207
|
+
\`\`\`
|
|
208
|
+
3. **Check the status** in the response:
|
|
209
|
+
- \`running\` → Wait and check again
|
|
210
|
+
- \`completed\` → Result is in the response
|
|
211
|
+
- \`failed\` → Error message in the response
|
|
212
|
+
|
|
213
|
+
**Do NOT assume the task is complete until you verify with \`check_subagent_task\`!**`,
|
|
214
|
+
}],
|
|
215
|
+
isError: false,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
// ========================================================================
|
|
219
|
+
// SYNC MODE (async=false): Block and wait for result
|
|
220
|
+
// ========================================================================
|
|
221
|
+
const progressToken = request.params._meta?.progressToken;
|
|
222
|
+
const progressData = startProgressUpdates(progressToken);
|
|
223
|
+
try {
|
|
224
|
+
const result = await executeSubagent(args, (output) => {
|
|
225
|
+
latestOutput = output;
|
|
226
|
+
});
|
|
227
|
+
stopProgressUpdates(progressData, true);
|
|
228
|
+
return {
|
|
229
|
+
content: [{ type: "text", text: result }],
|
|
230
|
+
isError: false,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
stopProgressUpdates(progressData, false);
|
|
235
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
236
|
+
return {
|
|
237
|
+
content: [{ type: "text", text: errorMessage }],
|
|
238
|
+
isError: true,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
// Start server
|
|
243
|
+
async function main() {
|
|
244
|
+
console.error(`[${metadata.displayName}] Starting...`);
|
|
245
|
+
const transport = new StdioServerTransport();
|
|
246
|
+
await server.connect(transport);
|
|
247
|
+
console.error(`[${metadata.displayName}] Ready on stdio`);
|
|
248
|
+
}
|
|
249
|
+
main().catch((error) => {
|
|
250
|
+
console.error("Fatal error:", error);
|
|
251
|
+
process.exit(1);
|
|
252
|
+
});
|
|
253
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentic-task.tool.d.ts","sourceRoot":"","sources":["../../src/tools/agentic-task.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentic-task.tool.js","sourceRoot":"","sources":["../../src/tools/agentic-task.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-manager.tool.d.ts","sourceRoot":"","sources":["../../src/tools/extension-manager.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-manager.tool.js","sourceRoot":"","sources":["../../src/tools/extension-manager.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-task.tool.d.ts","sourceRoot":"","sources":["../../src/tools/gemini-task.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-task.tool.js","sourceRoot":"","sources":["../../src/tools/gemini-task.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools module - exports subagent tools and task management
|
|
3
|
+
*/
|
|
4
|
+
export { executeSubagent, executeSubagentAsync, getTaskStatusResponse, getCompletedTasksAsResources, getTaskResourceContent, type SubagentArgs, type TaskState, type TaskStatus, } from './subagent.tool.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,GAIvB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.tool.d.ts","sourceRoot":"","sources":["../../src/tools/session-manager.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.tool.js","sourceRoot":"","sources":["../../src/tools/session-manager.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-query.tool.d.ts","sourceRoot":"","sources":["../../src/tools/structured-query.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured-query.tool.js","sourceRoot":"","sources":["../../src/tools/structured-query.tool.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini Subagent Tool - Single consolidated tool with task type enum
|
|
3
|
+
* Loads task-specific instructions from YAML and merges with user prompt
|
|
4
|
+
*/
|
|
5
|
+
export interface SubagentArgs {
|
|
6
|
+
task_type: 'completion-inspector' | 'helper-friend' | 'manual-tester';
|
|
7
|
+
prompt: string;
|
|
8
|
+
model?: string;
|
|
9
|
+
sandbox?: boolean;
|
|
10
|
+
approval_mode?: string;
|
|
11
|
+
include_directories?: string;
|
|
12
|
+
include_instructions?: boolean;
|
|
13
|
+
async?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed';
|
|
16
|
+
export interface TaskState {
|
|
17
|
+
id: number;
|
|
18
|
+
status: TaskStatus;
|
|
19
|
+
task_type: string;
|
|
20
|
+
progress: number;
|
|
21
|
+
result?: string;
|
|
22
|
+
error?: string;
|
|
23
|
+
started_at: string;
|
|
24
|
+
completed_at?: string;
|
|
25
|
+
updated_at: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create a new task in pending state
|
|
29
|
+
*/
|
|
30
|
+
export declare function createTask(taskType: string): TaskState;
|
|
31
|
+
/**
|
|
32
|
+
* Update task status
|
|
33
|
+
*/
|
|
34
|
+
export declare function updateTask(id: number, updates: Partial<TaskState>): TaskState | null;
|
|
35
|
+
/**
|
|
36
|
+
* Get task by ID
|
|
37
|
+
*/
|
|
38
|
+
export declare function getTask(id: number): TaskState | null;
|
|
39
|
+
/**
|
|
40
|
+
* Get task status response for check_subagent_task tool
|
|
41
|
+
*/
|
|
42
|
+
export declare function getTaskStatusResponse(taskId: number): object;
|
|
43
|
+
export interface GeminiError {
|
|
44
|
+
code: string;
|
|
45
|
+
message: string;
|
|
46
|
+
suggestion: string;
|
|
47
|
+
retryable: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get all completed/failed tasks as MCP resources
|
|
51
|
+
*/
|
|
52
|
+
export declare function getCompletedTasksAsResources(): Array<{
|
|
53
|
+
uri: string;
|
|
54
|
+
name: string;
|
|
55
|
+
description: string;
|
|
56
|
+
mimeType: string;
|
|
57
|
+
}>;
|
|
58
|
+
/**
|
|
59
|
+
* Get task result content by resource URI
|
|
60
|
+
*/
|
|
61
|
+
export declare function getTaskResourceContent(uri: string): string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Execute subagent in async mode - returns task ID immediately, runs in background
|
|
64
|
+
*/
|
|
65
|
+
export declare function executeSubagentAsync(args: SubagentArgs, onTaskProgress?: (taskId: number, progress: number, output: string) => void, onTaskComplete?: (taskId: number) => Promise<void>): {
|
|
66
|
+
task_id: number;
|
|
67
|
+
status: string;
|
|
68
|
+
message: string;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Execute Gemini CLI with subagent task (blocking mode)
|
|
72
|
+
* Uses model fallback chain: tries models in sequence until one succeeds
|
|
73
|
+
*/
|
|
74
|
+
export declare function executeSubagent(args: SubagentArgs, onProgress?: (output: string) => void): Promise<string>;
|
|
75
|
+
//# sourceMappingURL=subagent.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent.tool.d.ts","sourceRoot":"","sources":["../../src/tools/subagent.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,sBAAsB,GAAG,eAAe,GAAG,eAAe,CAAC;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAwBD;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAqBtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAMpF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmC5D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AA6WD;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,KAAK,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAuBD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsCjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,EAC3E,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACjD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsCtD;AAiID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACpC,OAAO,CAAC,MAAM,CAAC,CAqDjB"}
|