@gracefultools/astrid-sdk 0.7.16 → 0.8.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/README.md +127 -341
- package/dist/channel/channel.d.ts +33 -0
- package/dist/channel/channel.d.ts.map +1 -0
- package/dist/channel/channel.js +90 -0
- package/dist/channel/channel.js.map +1 -0
- package/dist/channel/index.d.ts +13 -0
- package/dist/channel/index.d.ts.map +1 -0
- package/dist/channel/index.js +23 -0
- package/dist/channel/index.js.map +1 -0
- package/dist/channel/message-formatter.d.ts +14 -0
- package/dist/channel/message-formatter.d.ts.map +1 -0
- package/dist/channel/message-formatter.js +71 -0
- package/dist/channel/message-formatter.js.map +1 -0
- package/dist/channel/oauth-client.d.ts +15 -0
- package/dist/channel/oauth-client.d.ts.map +1 -0
- package/dist/channel/oauth-client.js +45 -0
- package/dist/channel/oauth-client.js.map +1 -0
- package/dist/channel/rest-client.d.ts +16 -0
- package/dist/channel/rest-client.d.ts.map +1 -0
- package/dist/channel/rest-client.js +66 -0
- package/dist/channel/rest-client.js.map +1 -0
- package/dist/channel/session-mapper.d.ts +14 -0
- package/dist/channel/session-mapper.d.ts.map +1 -0
- package/dist/channel/session-mapper.js +37 -0
- package/dist/channel/session-mapper.js.map +1 -0
- package/dist/channel/sse-client.d.ts +31 -0
- package/dist/channel/sse-client.d.ts.map +1 -0
- package/dist/channel/sse-client.js +171 -0
- package/dist/channel/sse-client.js.map +1 -0
- package/dist/channel/types.d.ts +65 -0
- package/dist/channel/types.d.ts.map +1 -0
- package/dist/channel/types.js +3 -0
- package/dist/channel/types.js.map +1 -0
- package/dist/config/agent-workflow.js +7 -7
- package/dist/index.d.ts +1 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -30
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/agent-config.d.ts.map +1 -1
- package/dist/utils/agent-config.js +14 -0
- package/dist/utils/agent-config.js.map +1 -1
- package/openclaw.plugin.json +25 -0
- package/package.json +66 -77
- package/templates/.astrid.config.json +60 -60
- package/templates/ASTRID.template.md +74 -74
- package/dist/bin/cli.d.ts +0 -14
- package/dist/bin/cli.d.ts.map +0 -1
- package/dist/bin/cli.js +0 -1610
- package/dist/bin/cli.js.map +0 -1
- package/dist/executors/claude.d.ts +0 -65
- package/dist/executors/claude.d.ts.map +0 -1
- package/dist/executors/claude.js +0 -838
- package/dist/executors/claude.js.map +0 -1
- package/dist/executors/gemini.d.ts +0 -23
- package/dist/executors/gemini.d.ts.map +0 -1
- package/dist/executors/gemini.js +0 -558
- package/dist/executors/gemini.js.map +0 -1
- package/dist/executors/openai.d.ts +0 -17
- package/dist/executors/openai.d.ts.map +0 -1
- package/dist/executors/openai.js +0 -614
- package/dist/executors/openai.js.map +0 -1
- package/dist/executors/shared/index.d.ts +0 -9
- package/dist/executors/shared/index.d.ts.map +0 -1
- package/dist/executors/shared/index.js +0 -21
- package/dist/executors/shared/index.js.map +0 -1
- package/dist/executors/shared/tool-executor.d.ts +0 -52
- package/dist/executors/shared/tool-executor.d.ts.map +0 -1
- package/dist/executors/shared/tool-executor.js +0 -262
- package/dist/executors/shared/tool-executor.js.map +0 -1
- package/dist/executors/shared/tool-schemas.d.ts +0 -61
- package/dist/executors/shared/tool-schemas.d.ts.map +0 -1
- package/dist/executors/shared/tool-schemas.js +0 -135
- package/dist/executors/shared/tool-schemas.js.map +0 -1
- package/dist/executors/terminal-base.d.ts +0 -207
- package/dist/executors/terminal-base.d.ts.map +0 -1
- package/dist/executors/terminal-base.js +0 -552
- package/dist/executors/terminal-base.js.map +0 -1
- package/dist/executors/terminal-claude.d.ts +0 -116
- package/dist/executors/terminal-claude.d.ts.map +0 -1
- package/dist/executors/terminal-claude.js +0 -700
- package/dist/executors/terminal-claude.js.map +0 -1
- package/dist/executors/terminal-executors.test.d.ts +0 -8
- package/dist/executors/terminal-executors.test.d.ts.map +0 -1
- package/dist/executors/terminal-executors.test.js +0 -469
- package/dist/executors/terminal-executors.test.js.map +0 -1
- package/dist/executors/terminal-gemini.d.ts +0 -50
- package/dist/executors/terminal-gemini.d.ts.map +0 -1
- package/dist/executors/terminal-gemini.js +0 -401
- package/dist/executors/terminal-gemini.js.map +0 -1
- package/dist/executors/terminal-openai.d.ts +0 -50
- package/dist/executors/terminal-openai.d.ts.map +0 -1
- package/dist/executors/terminal-openai.js +0 -405
- package/dist/executors/terminal-openai.js.map +0 -1
- package/dist/server/astrid-client.d.ts +0 -77
- package/dist/server/astrid-client.d.ts.map +0 -1
- package/dist/server/astrid-client.js +0 -125
- package/dist/server/astrid-client.js.map +0 -1
- package/dist/server/index.d.ts +0 -38
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -408
- package/dist/server/index.js.map +0 -1
- package/dist/server/repo-manager.d.ts +0 -41
- package/dist/server/repo-manager.d.ts.map +0 -1
- package/dist/server/repo-manager.js +0 -177
- package/dist/server/repo-manager.js.map +0 -1
- package/dist/server/session-manager.d.ts +0 -93
- package/dist/server/session-manager.d.ts.map +0 -1
- package/dist/server/session-manager.js +0 -217
- package/dist/server/session-manager.js.map +0 -1
- package/dist/server/webhook-signature.d.ts +0 -23
- package/dist/server/webhook-signature.d.ts.map +0 -1
- package/dist/server/webhook-signature.js +0 -74
- package/dist/server/webhook-signature.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/executors/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gemini Agent Executor
|
|
3
|
-
*
|
|
4
|
-
* Executes code implementation using Google's Gemini API with function calling.
|
|
5
|
-
*/
|
|
6
|
-
import type { ImplementationPlan, ExecutionResult, PlanningResult, Logger, ProgressCallback } from '../types/index.js';
|
|
7
|
-
export interface GeminiExecutorConfig {
|
|
8
|
-
/** Path to the cloned repository */
|
|
9
|
-
repoPath: string;
|
|
10
|
-
/** Gemini API key */
|
|
11
|
-
apiKey: string;
|
|
12
|
-
/** Model to use */
|
|
13
|
-
model?: string;
|
|
14
|
-
/** Maximum iterations for tool use loop */
|
|
15
|
-
maxIterations?: number;
|
|
16
|
-
/** Logger function */
|
|
17
|
-
logger?: Logger;
|
|
18
|
-
/** Callback for progress updates */
|
|
19
|
-
onProgress?: ProgressCallback;
|
|
20
|
-
}
|
|
21
|
-
export declare function planWithGemini(taskTitle: string, taskDescription: string | null, config: GeminiExecutorConfig): Promise<PlanningResult>;
|
|
22
|
-
export declare function executeWithGemini(plan: ImplementationPlan, taskTitle: string, taskDescription: string | null, config: GeminiExecutorConfig): Promise<ExecutionResult>;
|
|
23
|
-
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/executors/gemini.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,MAAM,EACN,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAc1B,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B;AA0RD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,cAAc,CAAC,CA6JzB;AAMD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAiK1B"}
|
package/dist/executors/gemini.js
DELETED
|
@@ -1,558 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Gemini Agent Executor
|
|
4
|
-
*
|
|
5
|
-
* Executes code implementation using Google's Gemini API with function calling.
|
|
6
|
-
*/
|
|
7
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
-
if (k2 === undefined) k2 = k;
|
|
9
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
-
}
|
|
13
|
-
Object.defineProperty(o, k2, desc);
|
|
14
|
-
}) : (function(o, m, k, k2) {
|
|
15
|
-
if (k2 === undefined) k2 = k;
|
|
16
|
-
o[k2] = m[k];
|
|
17
|
-
}));
|
|
18
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
-
}) : function(o, v) {
|
|
21
|
-
o["default"] = v;
|
|
22
|
-
});
|
|
23
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
-
var ownKeys = function(o) {
|
|
25
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
-
var ar = [];
|
|
27
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
-
return ar;
|
|
29
|
-
};
|
|
30
|
-
return ownKeys(o);
|
|
31
|
-
};
|
|
32
|
-
return function (mod) {
|
|
33
|
-
if (mod && mod.__esModule) return mod;
|
|
34
|
-
var result = {};
|
|
35
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
-
__setModuleDefault(result, mod);
|
|
37
|
-
return result;
|
|
38
|
-
};
|
|
39
|
-
})();
|
|
40
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.planWithGemini = planWithGemini;
|
|
42
|
-
exports.executeWithGemini = executeWithGemini;
|
|
43
|
-
const fs = __importStar(require("fs/promises"));
|
|
44
|
-
const path = __importStar(require("path"));
|
|
45
|
-
const child_process_1 = require("child_process");
|
|
46
|
-
const glob_1 = require("glob");
|
|
47
|
-
const agent_config_js_1 = require("../utils/agent-config.js");
|
|
48
|
-
// ============================================================================
|
|
49
|
-
// TOOL DEFINITIONS
|
|
50
|
-
// ============================================================================
|
|
51
|
-
const TOOL_DECLARATIONS = [
|
|
52
|
-
{
|
|
53
|
-
name: 'read_file',
|
|
54
|
-
description: 'Read the contents of a file',
|
|
55
|
-
parameters: {
|
|
56
|
-
type: 'object',
|
|
57
|
-
properties: {
|
|
58
|
-
file_path: { type: 'string', description: 'Path to the file' }
|
|
59
|
-
},
|
|
60
|
-
required: ['file_path']
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
name: 'write_file',
|
|
65
|
-
description: 'Write content to a file (creates or overwrites)',
|
|
66
|
-
parameters: {
|
|
67
|
-
type: 'object',
|
|
68
|
-
properties: {
|
|
69
|
-
file_path: { type: 'string', description: 'Path to the file' },
|
|
70
|
-
content: { type: 'string', description: 'Content to write' }
|
|
71
|
-
},
|
|
72
|
-
required: ['file_path', 'content']
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: 'edit_file',
|
|
77
|
-
description: 'Edit a file by replacing old_string with new_string',
|
|
78
|
-
parameters: {
|
|
79
|
-
type: 'object',
|
|
80
|
-
properties: {
|
|
81
|
-
file_path: { type: 'string', description: 'Path to the file' },
|
|
82
|
-
old_string: { type: 'string', description: 'String to find' },
|
|
83
|
-
new_string: { type: 'string', description: 'Replacement string' }
|
|
84
|
-
},
|
|
85
|
-
required: ['file_path', 'old_string', 'new_string']
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
name: 'run_bash',
|
|
90
|
-
description: 'Run a bash command',
|
|
91
|
-
parameters: {
|
|
92
|
-
type: 'object',
|
|
93
|
-
properties: {
|
|
94
|
-
command: { type: 'string', description: 'The bash command' }
|
|
95
|
-
},
|
|
96
|
-
required: ['command']
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
name: 'glob_files',
|
|
101
|
-
description: 'Find files matching a glob pattern',
|
|
102
|
-
parameters: {
|
|
103
|
-
type: 'object',
|
|
104
|
-
properties: {
|
|
105
|
-
pattern: { type: 'string', description: 'Glob pattern' }
|
|
106
|
-
},
|
|
107
|
-
required: ['pattern']
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
name: 'grep_search',
|
|
112
|
-
description: 'Search for a pattern in files',
|
|
113
|
-
parameters: {
|
|
114
|
-
type: 'object',
|
|
115
|
-
properties: {
|
|
116
|
-
pattern: { type: 'string', description: 'Search pattern' },
|
|
117
|
-
file_pattern: { type: 'string', description: 'Optional glob pattern' }
|
|
118
|
-
},
|
|
119
|
-
required: ['pattern']
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
name: 'task_complete',
|
|
124
|
-
description: 'Signal task completion',
|
|
125
|
-
parameters: {
|
|
126
|
-
type: 'object',
|
|
127
|
-
properties: {
|
|
128
|
-
commit_message: { type: 'string', description: 'Git commit message' },
|
|
129
|
-
pr_title: { type: 'string', description: 'PR title' },
|
|
130
|
-
pr_description: { type: 'string', description: 'PR description' }
|
|
131
|
-
},
|
|
132
|
-
required: ['commit_message', 'pr_title', 'pr_description']
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
];
|
|
136
|
-
async function executeTool(name, args, repoPath) {
|
|
137
|
-
try {
|
|
138
|
-
switch (name) {
|
|
139
|
-
case 'read_file': {
|
|
140
|
-
const filePath = path.join(repoPath, args.file_path);
|
|
141
|
-
const content = await fs.readFile(filePath, 'utf-8');
|
|
142
|
-
return { success: true, result: content };
|
|
143
|
-
}
|
|
144
|
-
case 'write_file': {
|
|
145
|
-
const filePath = path.join(repoPath, args.file_path);
|
|
146
|
-
const content = args.content;
|
|
147
|
-
let action = 'create';
|
|
148
|
-
try {
|
|
149
|
-
await fs.access(filePath);
|
|
150
|
-
action = 'modify';
|
|
151
|
-
}
|
|
152
|
-
catch {
|
|
153
|
-
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
154
|
-
}
|
|
155
|
-
await fs.writeFile(filePath, content, 'utf-8');
|
|
156
|
-
return {
|
|
157
|
-
success: true,
|
|
158
|
-
result: `File ${action === 'create' ? 'created' : 'updated'}: ${args.file_path}`,
|
|
159
|
-
fileChange: { path: args.file_path, content, action }
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
case 'edit_file': {
|
|
163
|
-
const filePath = path.join(repoPath, args.file_path);
|
|
164
|
-
const oldContent = await fs.readFile(filePath, 'utf-8');
|
|
165
|
-
const oldString = args.old_string;
|
|
166
|
-
const newString = args.new_string;
|
|
167
|
-
if (!oldContent.includes(oldString)) {
|
|
168
|
-
return { success: false, result: `Error: Could not find string in file` };
|
|
169
|
-
}
|
|
170
|
-
const newContent = oldContent.replace(oldString, newString);
|
|
171
|
-
await fs.writeFile(filePath, newContent, 'utf-8');
|
|
172
|
-
return {
|
|
173
|
-
success: true,
|
|
174
|
-
result: `File edited: ${args.file_path}`,
|
|
175
|
-
fileChange: { path: args.file_path, content: newContent, action: 'modify' }
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
case 'run_bash': {
|
|
179
|
-
const command = args.command;
|
|
180
|
-
const dangerous = ['rm -rf /', 'sudo', '> /dev/', 'mkfs', 'dd if='];
|
|
181
|
-
if (dangerous.some(d => command.includes(d))) {
|
|
182
|
-
return { success: false, result: 'Error: Dangerous command blocked' };
|
|
183
|
-
}
|
|
184
|
-
try {
|
|
185
|
-
const output = (0, child_process_1.execSync)(command, {
|
|
186
|
-
cwd: repoPath,
|
|
187
|
-
encoding: 'utf-8',
|
|
188
|
-
timeout: 60000,
|
|
189
|
-
maxBuffer: 1024 * 1024
|
|
190
|
-
});
|
|
191
|
-
return { success: true, result: output || '(no output)' };
|
|
192
|
-
}
|
|
193
|
-
catch (error) {
|
|
194
|
-
const err = error;
|
|
195
|
-
return { success: false, result: `Error: ${err.stderr || err.message}` };
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
case 'glob_files': {
|
|
199
|
-
const pattern = args.pattern;
|
|
200
|
-
const files = await (0, glob_1.glob)(pattern, { cwd: repoPath, nodir: true });
|
|
201
|
-
return { success: true, result: files.slice(0, 100).join('\n') || '(no matches)' };
|
|
202
|
-
}
|
|
203
|
-
case 'grep_search': {
|
|
204
|
-
const pattern = args.pattern;
|
|
205
|
-
const filePattern = args.file_pattern || '.';
|
|
206
|
-
try {
|
|
207
|
-
const output = (0, child_process_1.execSync)(`grep -rn "${pattern.replace(/"/g, '\\"')}" ${filePattern} | head -50`, { cwd: repoPath, encoding: 'utf-8', timeout: 30000 });
|
|
208
|
-
return { success: true, result: output || '(no matches)' };
|
|
209
|
-
}
|
|
210
|
-
catch {
|
|
211
|
-
return { success: true, result: '(no matches)' };
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
case 'task_complete':
|
|
215
|
-
return { success: true, result: 'Task marked complete' };
|
|
216
|
-
default:
|
|
217
|
-
return { success: false, result: `Unknown tool: ${name}` };
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
catch (error) {
|
|
221
|
-
return { success: false, result: `Error: ${error instanceof Error ? error.message : String(error)}` };
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
async function callGemini(contents, systemInstruction, apiKey, model) {
|
|
225
|
-
const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`;
|
|
226
|
-
const response = await fetch(url, {
|
|
227
|
-
method: 'POST',
|
|
228
|
-
headers: { 'Content-Type': 'application/json' },
|
|
229
|
-
body: JSON.stringify({
|
|
230
|
-
systemInstruction: { parts: [{ text: systemInstruction }] },
|
|
231
|
-
contents,
|
|
232
|
-
tools: [{ functionDeclarations: TOOL_DECLARATIONS }],
|
|
233
|
-
toolConfig: {
|
|
234
|
-
functionCallingConfig: {
|
|
235
|
-
mode: 'AUTO'
|
|
236
|
-
}
|
|
237
|
-
},
|
|
238
|
-
generationConfig: { maxOutputTokens: 8192, temperature: 0.2 }
|
|
239
|
-
})
|
|
240
|
-
});
|
|
241
|
-
if (!response.ok) {
|
|
242
|
-
const error = await response.text();
|
|
243
|
-
throw new Error(`Gemini API error: ${error}`);
|
|
244
|
-
}
|
|
245
|
-
return response.json();
|
|
246
|
-
}
|
|
247
|
-
async function loadAstridMd(repoPath, maxLength = 16000) {
|
|
248
|
-
try {
|
|
249
|
-
const content = await fs.readFile(path.join(repoPath, 'ASTRID.md'), 'utf-8');
|
|
250
|
-
return content.length > maxLength ? content.substring(0, maxLength) + '\n\n[truncated...]' : content;
|
|
251
|
-
}
|
|
252
|
-
catch {
|
|
253
|
-
// Try README.md as fallback
|
|
254
|
-
try {
|
|
255
|
-
const content = await fs.readFile(path.join(repoPath, 'README.md'), 'utf-8');
|
|
256
|
-
const truncated = content.length > maxLength / 2
|
|
257
|
-
? content.substring(0, maxLength / 2) + '\n\n[README.md truncated...]'
|
|
258
|
-
: content;
|
|
259
|
-
return `## Project Context (from README.md)\n\n${truncated}`;
|
|
260
|
-
}
|
|
261
|
-
catch {
|
|
262
|
-
return null;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
// ============================================================================
|
|
267
|
-
// PLANNING
|
|
268
|
-
// ============================================================================
|
|
269
|
-
async function planWithGemini(taskTitle, taskDescription, config) {
|
|
270
|
-
const log = config.logger || (() => { });
|
|
271
|
-
const onProgress = config.onProgress || (() => { });
|
|
272
|
-
const model = config.model || agent_config_js_1.DEFAULT_MODELS.gemini;
|
|
273
|
-
log('info', 'Starting Gemini planning', { repoPath: config.repoPath, taskTitle });
|
|
274
|
-
onProgress('Initializing Gemini for planning...');
|
|
275
|
-
const astridMd = await loadAstridMd(config.repoPath);
|
|
276
|
-
const systemInstruction = `You are an expert software engineer with access to tools for exploring codebases.
|
|
277
|
-
|
|
278
|
-
${astridMd ? `## Project Context\n${astridMd}\n` : ''}
|
|
279
|
-
|
|
280
|
-
## Your Task
|
|
281
|
-
Create an implementation plan for: "${taskTitle}"
|
|
282
|
-
${taskDescription ? `\nDetails: ${taskDescription}` : ''}
|
|
283
|
-
|
|
284
|
-
## EXPLORATION WORKFLOW (MANDATORY)
|
|
285
|
-
|
|
286
|
-
You MUST follow this workflow:
|
|
287
|
-
|
|
288
|
-
### Step 1: Understand Project Structure
|
|
289
|
-
- Call glob_files with patterns like "**/*.ts" or "**/*.tsx"
|
|
290
|
-
- Call read_file on package.json and config files
|
|
291
|
-
|
|
292
|
-
### Step 2: Find Relevant Code
|
|
293
|
-
- Call grep_search to find related terms, functions, or patterns
|
|
294
|
-
- Call read_file on files that are likely to need changes
|
|
295
|
-
- Read adjacent files to understand context and patterns
|
|
296
|
-
|
|
297
|
-
### Step 3: Create Precise Plan
|
|
298
|
-
After reading at least 3-5 relevant files, create a surgical plan.
|
|
299
|
-
|
|
300
|
-
CRITICAL: You must use ACTUAL FUNCTION CALLS, not text descriptions.
|
|
301
|
-
Do NOT write text saying "I will call X" - actually invoke the function.
|
|
302
|
-
|
|
303
|
-
## Final Output Format
|
|
304
|
-
After exploring, respond with a JSON block:
|
|
305
|
-
\`\`\`json
|
|
306
|
-
{
|
|
307
|
-
"summary": "Brief summary of what needs to be done",
|
|
308
|
-
"approach": "High-level approach with technical details",
|
|
309
|
-
"files": [
|
|
310
|
-
{"path": "path/to/file.ts", "purpose": "Why this file needs changes", "changes": "Specific changes"}
|
|
311
|
-
],
|
|
312
|
-
"estimatedComplexity": "simple|medium|complex",
|
|
313
|
-
"considerations": ["Edge case 1", "Testing requirement"]
|
|
314
|
-
}
|
|
315
|
-
\`\`\`
|
|
316
|
-
|
|
317
|
-
RULES:
|
|
318
|
-
- You MUST call tools first to explore - don't guess file paths
|
|
319
|
-
- Include SPECIFIC file paths you discovered
|
|
320
|
-
- Be SURGICAL: only list files that MUST change
|
|
321
|
-
- Follow existing patterns in the codebase`;
|
|
322
|
-
const contents = [
|
|
323
|
-
{ role: 'user', parts: [{ text: `Start by calling glob_files to find relevant files, then create an implementation plan for: ${taskTitle}` }] }
|
|
324
|
-
];
|
|
325
|
-
let totalInputTokens = 0;
|
|
326
|
-
let totalOutputTokens = 0;
|
|
327
|
-
const maxIterations = config.maxIterations || 20;
|
|
328
|
-
try {
|
|
329
|
-
for (let i = 0; i < maxIterations; i++) {
|
|
330
|
-
onProgress(`Planning iteration ${i + 1}...`);
|
|
331
|
-
const response = await callGemini(contents, systemInstruction, config.apiKey, model);
|
|
332
|
-
totalInputTokens += response.usageMetadata?.promptTokenCount || 0;
|
|
333
|
-
totalOutputTokens += response.usageMetadata?.candidatesTokenCount || 0;
|
|
334
|
-
const candidate = response.candidates[0];
|
|
335
|
-
if (!candidate) {
|
|
336
|
-
return { success: false, error: 'No response from Gemini' };
|
|
337
|
-
}
|
|
338
|
-
contents.push({ role: 'model', parts: candidate.content.parts });
|
|
339
|
-
const functionCalls = candidate.content.parts.filter(p => p.functionCall);
|
|
340
|
-
if (functionCalls.length > 0) {
|
|
341
|
-
const functionResponses = [];
|
|
342
|
-
for (const part of functionCalls) {
|
|
343
|
-
if (!part.functionCall)
|
|
344
|
-
continue;
|
|
345
|
-
const { name, args } = part.functionCall;
|
|
346
|
-
onProgress(`Using tool: ${name}`);
|
|
347
|
-
const result = await executeTool(name, args, config.repoPath);
|
|
348
|
-
functionResponses.push({
|
|
349
|
-
functionResponse: { name, response: { result: result.result.substring(0, 10000) } }
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
contents.push({ role: 'user', parts: functionResponses });
|
|
353
|
-
continue;
|
|
354
|
-
}
|
|
355
|
-
const textPart = candidate.content.parts.find(p => p.text);
|
|
356
|
-
if (textPart?.text) {
|
|
357
|
-
const jsonMatch = textPart.text.match(/```json\s*([\s\S]*?)\s*```/);
|
|
358
|
-
if (jsonMatch) {
|
|
359
|
-
try {
|
|
360
|
-
const plan = JSON.parse(jsonMatch[1]);
|
|
361
|
-
// Validate plan has at least 1 file
|
|
362
|
-
if (!plan.files || plan.files.length === 0) {
|
|
363
|
-
log('warn', 'Plan has no files, asking model to explore more', {});
|
|
364
|
-
contents.push({
|
|
365
|
-
role: 'user',
|
|
366
|
-
parts: [{
|
|
367
|
-
text: 'Your plan has no files to modify. This is not valid. You MUST use the glob_files and read_file tools to explore the codebase first, then provide a plan with specific files to modify. Please call glob_files now to find relevant files.'
|
|
368
|
-
}]
|
|
369
|
-
});
|
|
370
|
-
continue;
|
|
371
|
-
}
|
|
372
|
-
return {
|
|
373
|
-
success: true,
|
|
374
|
-
plan,
|
|
375
|
-
usage: {
|
|
376
|
-
inputTokens: totalInputTokens,
|
|
377
|
-
outputTokens: totalOutputTokens,
|
|
378
|
-
costUSD: (totalInputTokens * 0.00125 + totalOutputTokens * 0.005) / 1000
|
|
379
|
-
}
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
catch {
|
|
383
|
-
log('warn', 'Failed to parse plan JSON', {});
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
// Model output text but no JSON plan - check if it's first iteration
|
|
387
|
-
if (i === 0) {
|
|
388
|
-
log('warn', 'First iteration had no function calls - prompting model to use tools', {});
|
|
389
|
-
contents.push({
|
|
390
|
-
role: 'user',
|
|
391
|
-
parts: [{
|
|
392
|
-
text: 'You must use the function calling tools to explore the codebase. Please call glob_files with an appropriate pattern to find relevant files. Do not describe what you will do - actually invoke the function.'
|
|
393
|
-
}]
|
|
394
|
-
});
|
|
395
|
-
continue;
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
if (candidate.finishReason === 'STOP') {
|
|
399
|
-
contents.push({
|
|
400
|
-
role: 'user',
|
|
401
|
-
parts: [{ text: 'Please provide the implementation plan as a JSON block with at least one file to modify.' }]
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
return { success: false, error: 'Max iterations reached' };
|
|
406
|
-
}
|
|
407
|
-
catch (error) {
|
|
408
|
-
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
// ============================================================================
|
|
412
|
-
// EXECUTION
|
|
413
|
-
// ============================================================================
|
|
414
|
-
async function executeWithGemini(plan, taskTitle, taskDescription, config) {
|
|
415
|
-
const log = config.logger || (() => { });
|
|
416
|
-
const onProgress = config.onProgress || (() => { });
|
|
417
|
-
const model = config.model || agent_config_js_1.DEFAULT_MODELS.gemini;
|
|
418
|
-
log('info', 'Starting Gemini execution', { repoPath: config.repoPath, filesInPlan: plan.files.length });
|
|
419
|
-
onProgress('Initializing Gemini agent...');
|
|
420
|
-
const astridMd = await loadAstridMd(config.repoPath);
|
|
421
|
-
const systemInstruction = `You are an expert software engineer implementing changes.
|
|
422
|
-
|
|
423
|
-
${astridMd ? `## Project Context\n${astridMd}\n` : ''}
|
|
424
|
-
|
|
425
|
-
## Task
|
|
426
|
-
Implement: "${taskTitle}"
|
|
427
|
-
${taskDescription ? `\nDetails: ${taskDescription}` : ''}
|
|
428
|
-
|
|
429
|
-
## Implementation Plan
|
|
430
|
-
${JSON.stringify(plan, null, 2)}
|
|
431
|
-
|
|
432
|
-
## IMPLEMENTATION WORKFLOW (MANDATORY)
|
|
433
|
-
|
|
434
|
-
### Step 1: Verify Understanding
|
|
435
|
-
- Read the files in the plan to confirm your approach
|
|
436
|
-
- Check import paths and dependencies
|
|
437
|
-
|
|
438
|
-
### Step 2: Implement Changes
|
|
439
|
-
- Make changes one file at a time
|
|
440
|
-
- Follow existing code style and patterns
|
|
441
|
-
- Write complete, production-ready code (no TODOs)
|
|
442
|
-
|
|
443
|
-
### Step 3: Verify Changes
|
|
444
|
-
- After making changes, run "npm run build" or tests via run_bash
|
|
445
|
-
- If build/tests fail, FIX the issues before continuing
|
|
446
|
-
|
|
447
|
-
### Step 4: Complete
|
|
448
|
-
- Call task_complete with good commit message and PR description
|
|
449
|
-
|
|
450
|
-
## Rules
|
|
451
|
-
- Follow the plan exactly
|
|
452
|
-
- Write complete code - no placeholders
|
|
453
|
-
- Test your changes before completing
|
|
454
|
-
- Handle edge cases properly`;
|
|
455
|
-
const contents = [
|
|
456
|
-
{ role: 'user', parts: [{ text: 'Please implement the changes according to the plan.' }] }
|
|
457
|
-
];
|
|
458
|
-
const fileChanges = new Map();
|
|
459
|
-
let totalInputTokens = 0;
|
|
460
|
-
let totalOutputTokens = 0;
|
|
461
|
-
const maxIterations = config.maxIterations || 50;
|
|
462
|
-
try {
|
|
463
|
-
for (let i = 0; i < maxIterations; i++) {
|
|
464
|
-
onProgress(`Implementation iteration ${i + 1}...`);
|
|
465
|
-
const response = await callGemini(contents, systemInstruction, config.apiKey, model);
|
|
466
|
-
totalInputTokens += response.usageMetadata?.promptTokenCount || 0;
|
|
467
|
-
totalOutputTokens += response.usageMetadata?.candidatesTokenCount || 0;
|
|
468
|
-
const candidate = response.candidates[0];
|
|
469
|
-
if (!candidate) {
|
|
470
|
-
return {
|
|
471
|
-
success: false,
|
|
472
|
-
files: [],
|
|
473
|
-
commitMessage: '',
|
|
474
|
-
prTitle: '',
|
|
475
|
-
prDescription: '',
|
|
476
|
-
error: 'No response from Gemini'
|
|
477
|
-
};
|
|
478
|
-
}
|
|
479
|
-
contents.push({ role: 'model', parts: candidate.content.parts });
|
|
480
|
-
const functionCalls = candidate.content.parts.filter(p => p.functionCall);
|
|
481
|
-
if (functionCalls.length > 0) {
|
|
482
|
-
const functionResponses = [];
|
|
483
|
-
for (const part of functionCalls) {
|
|
484
|
-
if (!part.functionCall)
|
|
485
|
-
continue;
|
|
486
|
-
const { name, args } = part.functionCall;
|
|
487
|
-
onProgress(`Using tool: ${name}`);
|
|
488
|
-
if (name === 'task_complete') {
|
|
489
|
-
const files = Array.from(fileChanges.entries()).map(([p, change]) => ({
|
|
490
|
-
path: p,
|
|
491
|
-
content: change.content,
|
|
492
|
-
action: change.action
|
|
493
|
-
}));
|
|
494
|
-
return {
|
|
495
|
-
success: true,
|
|
496
|
-
files,
|
|
497
|
-
commitMessage: args.commit_message || `feat: ${taskTitle}`,
|
|
498
|
-
prTitle: args.pr_title || `feat: ${taskTitle}`,
|
|
499
|
-
prDescription: args.pr_description || taskDescription || taskTitle,
|
|
500
|
-
usage: {
|
|
501
|
-
inputTokens: totalInputTokens,
|
|
502
|
-
outputTokens: totalOutputTokens,
|
|
503
|
-
costUSD: (totalInputTokens * 0.00125 + totalOutputTokens * 0.005) / 1000
|
|
504
|
-
}
|
|
505
|
-
};
|
|
506
|
-
}
|
|
507
|
-
const result = await executeTool(name, args, config.repoPath);
|
|
508
|
-
if (result.fileChange) {
|
|
509
|
-
fileChanges.set(result.fileChange.path, {
|
|
510
|
-
content: result.fileChange.content,
|
|
511
|
-
action: result.fileChange.action
|
|
512
|
-
});
|
|
513
|
-
}
|
|
514
|
-
functionResponses.push({
|
|
515
|
-
functionResponse: { name, response: { result: result.result.substring(0, 10000) } }
|
|
516
|
-
});
|
|
517
|
-
}
|
|
518
|
-
contents.push({ role: 'user', parts: functionResponses });
|
|
519
|
-
continue;
|
|
520
|
-
}
|
|
521
|
-
if (candidate.finishReason === 'STOP') {
|
|
522
|
-
contents.push({
|
|
523
|
-
role: 'user',
|
|
524
|
-
parts: [{ text: 'Please call task_complete to finalize.' }]
|
|
525
|
-
});
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
const files = Array.from(fileChanges.entries()).map(([p, change]) => ({
|
|
529
|
-
path: p,
|
|
530
|
-
content: change.content,
|
|
531
|
-
action: change.action
|
|
532
|
-
}));
|
|
533
|
-
return {
|
|
534
|
-
success: files.length > 0,
|
|
535
|
-
files,
|
|
536
|
-
commitMessage: `feat: ${taskTitle}`,
|
|
537
|
-
prTitle: `feat: ${taskTitle}`,
|
|
538
|
-
prDescription: taskDescription || taskTitle,
|
|
539
|
-
error: 'Max iterations reached',
|
|
540
|
-
usage: {
|
|
541
|
-
inputTokens: totalInputTokens,
|
|
542
|
-
outputTokens: totalOutputTokens,
|
|
543
|
-
costUSD: (totalInputTokens * 0.00125 + totalOutputTokens * 0.005) / 1000
|
|
544
|
-
}
|
|
545
|
-
};
|
|
546
|
-
}
|
|
547
|
-
catch (error) {
|
|
548
|
-
return {
|
|
549
|
-
success: false,
|
|
550
|
-
files: [],
|
|
551
|
-
commitMessage: '',
|
|
552
|
-
prTitle: '',
|
|
553
|
-
prDescription: '',
|
|
554
|
-
error: error instanceof Error ? error.message : String(error)
|
|
555
|
-
};
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
//# sourceMappingURL=gemini.js.map
|