deepseek-coder-cli 1.0.11 → 1.0.12
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/dist/bin/lean.d.ts +9 -0
- package/dist/bin/lean.d.ts.map +1 -0
- package/dist/bin/lean.js +332 -0
- package/dist/bin/lean.js.map +1 -0
- package/dist/capabilities/index.d.ts +1 -0
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/index.js +3 -0
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/unifiedCodingCapability.d.ts +42 -0
- package/dist/capabilities/unifiedCodingCapability.d.ts.map +1 -0
- package/dist/capabilities/unifiedCodingCapability.js +500 -0
- package/dist/capabilities/unifiedCodingCapability.js.map +1 -0
- package/dist/leanAgent.d.ts +73 -0
- package/dist/leanAgent.d.ts.map +1 -0
- package/dist/leanAgent.js +158 -0
- package/dist/leanAgent.js.map +1 -0
- package/package.json +8 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lean.d.ts","sourceRoot":"","sources":["../../src/bin/lean.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|
package/dist/bin/lean.js
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* LEAN CODING AGENT CLI
|
|
4
|
+
*
|
|
5
|
+
* A minimal, streamlined CLI for the unified coding agent.
|
|
6
|
+
* Usage: lean [prompt] or interactive mode
|
|
7
|
+
*/
|
|
8
|
+
import * as readline from 'readline';
|
|
9
|
+
import { LeanAgent } from '../leanAgent.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// CONFIGURATION
|
|
12
|
+
// ============================================================================
|
|
13
|
+
function getApiKey() {
|
|
14
|
+
return (process.env['DEEPSEEK_API_KEY'] ??
|
|
15
|
+
process.env['OPENAI_API_KEY'] ??
|
|
16
|
+
process.env['ANTHROPIC_API_KEY']);
|
|
17
|
+
}
|
|
18
|
+
function getProviderConfig() {
|
|
19
|
+
if (process.env['DEEPSEEK_API_KEY']) {
|
|
20
|
+
return {
|
|
21
|
+
baseUrl: 'https://api.deepseek.com/v1',
|
|
22
|
+
model: 'deepseek-chat',
|
|
23
|
+
providerId: 'deepseek',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if (process.env['OPENAI_API_KEY']) {
|
|
27
|
+
return {
|
|
28
|
+
baseUrl: 'https://api.openai.com/v1',
|
|
29
|
+
model: 'gpt-4-turbo-preview',
|
|
30
|
+
providerId: 'openai',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
baseUrl: 'https://api.deepseek.com/v1',
|
|
35
|
+
model: 'deepseek-chat',
|
|
36
|
+
providerId: 'deepseek',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// SIMPLE LLM PROVIDER
|
|
41
|
+
// ============================================================================
|
|
42
|
+
function createSimpleProvider(apiKey, config) {
|
|
43
|
+
const { baseUrl, model, providerId } = config;
|
|
44
|
+
return {
|
|
45
|
+
id: providerId,
|
|
46
|
+
model,
|
|
47
|
+
async generate(messages, tools) {
|
|
48
|
+
const response = await fetch(`${baseUrl}/chat/completions`, {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
headers: {
|
|
51
|
+
'Content-Type': 'application/json',
|
|
52
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
53
|
+
},
|
|
54
|
+
body: JSON.stringify({
|
|
55
|
+
model,
|
|
56
|
+
messages: messages.map(m => ({
|
|
57
|
+
role: m.role,
|
|
58
|
+
content: m.content,
|
|
59
|
+
...(m.role === 'assistant' && m.toolCalls ? {
|
|
60
|
+
tool_calls: m.toolCalls.map(tc => ({
|
|
61
|
+
id: tc.id,
|
|
62
|
+
type: 'function',
|
|
63
|
+
function: { name: tc.name, arguments: JSON.stringify(tc.arguments) },
|
|
64
|
+
})),
|
|
65
|
+
} : {}),
|
|
66
|
+
...(m.role === 'tool' ? { tool_call_id: m.toolCallId, name: m.name } : {}),
|
|
67
|
+
})),
|
|
68
|
+
tools: tools.length > 0 ? tools.map(t => ({
|
|
69
|
+
type: 'function',
|
|
70
|
+
function: { name: t.name, description: t.description, parameters: t.parameters },
|
|
71
|
+
})) : undefined,
|
|
72
|
+
tool_choice: tools.length > 0 ? 'auto' : undefined,
|
|
73
|
+
}),
|
|
74
|
+
});
|
|
75
|
+
if (!response.ok) {
|
|
76
|
+
const error = await response.text();
|
|
77
|
+
throw new Error(`API error: ${response.status} - ${error}`);
|
|
78
|
+
}
|
|
79
|
+
const data = await response.json();
|
|
80
|
+
const choice = data.choices?.[0];
|
|
81
|
+
if (!choice) {
|
|
82
|
+
return { type: 'message', content: '' };
|
|
83
|
+
}
|
|
84
|
+
const message = choice.message;
|
|
85
|
+
const toolCalls = message?.tool_calls;
|
|
86
|
+
if (toolCalls?.length) {
|
|
87
|
+
return {
|
|
88
|
+
type: 'tool_calls',
|
|
89
|
+
content: message?.content ?? undefined,
|
|
90
|
+
toolCalls: toolCalls.map(tc => ({
|
|
91
|
+
id: tc.id,
|
|
92
|
+
name: tc.function.name,
|
|
93
|
+
arguments: JSON.parse(tc.function.arguments || '{}'),
|
|
94
|
+
})),
|
|
95
|
+
usage: data.usage ? {
|
|
96
|
+
inputTokens: data.usage.prompt_tokens,
|
|
97
|
+
outputTokens: data.usage.completion_tokens,
|
|
98
|
+
totalTokens: data.usage.total_tokens,
|
|
99
|
+
} : undefined,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
type: 'message',
|
|
104
|
+
content: message?.content || '',
|
|
105
|
+
usage: data.usage ? {
|
|
106
|
+
inputTokens: data.usage.prompt_tokens,
|
|
107
|
+
outputTokens: data.usage.completion_tokens,
|
|
108
|
+
totalTokens: data.usage.total_tokens,
|
|
109
|
+
} : undefined,
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
async *generateStream(messages, tools) {
|
|
113
|
+
const response = await fetch(`${baseUrl}/chat/completions`, {
|
|
114
|
+
method: 'POST',
|
|
115
|
+
headers: {
|
|
116
|
+
'Content-Type': 'application/json',
|
|
117
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
118
|
+
},
|
|
119
|
+
body: JSON.stringify({
|
|
120
|
+
model,
|
|
121
|
+
messages: messages.map(m => ({
|
|
122
|
+
role: m.role,
|
|
123
|
+
content: m.content,
|
|
124
|
+
...(m.role === 'assistant' && m.toolCalls ? {
|
|
125
|
+
tool_calls: m.toolCalls.map(tc => ({
|
|
126
|
+
id: tc.id,
|
|
127
|
+
type: 'function',
|
|
128
|
+
function: { name: tc.name, arguments: JSON.stringify(tc.arguments) },
|
|
129
|
+
})),
|
|
130
|
+
} : {}),
|
|
131
|
+
...(m.role === 'tool' ? { tool_call_id: m.toolCallId, name: m.name } : {}),
|
|
132
|
+
})),
|
|
133
|
+
tools: tools.length > 0 ? tools.map(t => ({
|
|
134
|
+
type: 'function',
|
|
135
|
+
function: { name: t.name, description: t.description, parameters: t.parameters },
|
|
136
|
+
})) : undefined,
|
|
137
|
+
tool_choice: tools.length > 0 ? 'auto' : undefined,
|
|
138
|
+
stream: true,
|
|
139
|
+
}),
|
|
140
|
+
});
|
|
141
|
+
if (!response.ok) {
|
|
142
|
+
const error = await response.text();
|
|
143
|
+
throw new Error(`API error: ${response.status} - ${error}`);
|
|
144
|
+
}
|
|
145
|
+
const reader = response.body?.getReader();
|
|
146
|
+
if (!reader) {
|
|
147
|
+
throw new Error('No response body');
|
|
148
|
+
}
|
|
149
|
+
const decoder = new TextDecoder();
|
|
150
|
+
let buffer = '';
|
|
151
|
+
const toolCallsBuffer = new Map();
|
|
152
|
+
while (true) {
|
|
153
|
+
const { done, value } = await reader.read();
|
|
154
|
+
if (done)
|
|
155
|
+
break;
|
|
156
|
+
buffer += decoder.decode(value, { stream: true });
|
|
157
|
+
const lines = buffer.split('\n');
|
|
158
|
+
buffer = lines.pop() || '';
|
|
159
|
+
for (const line of lines) {
|
|
160
|
+
if (line.startsWith('data: ')) {
|
|
161
|
+
const dataStr = line.slice(6);
|
|
162
|
+
if (dataStr === '[DONE]')
|
|
163
|
+
continue;
|
|
164
|
+
try {
|
|
165
|
+
const parsed = JSON.parse(dataStr);
|
|
166
|
+
const delta = parsed.choices?.[0]?.delta;
|
|
167
|
+
if (delta?.content) {
|
|
168
|
+
yield { type: 'content', content: delta.content };
|
|
169
|
+
}
|
|
170
|
+
if (delta?.tool_calls) {
|
|
171
|
+
for (const tc of delta.tool_calls) {
|
|
172
|
+
const idx = tc.index ?? 0;
|
|
173
|
+
const existing = toolCallsBuffer.get(idx) || { id: '', name: '', arguments: '' };
|
|
174
|
+
if (tc.id)
|
|
175
|
+
existing.id = tc.id;
|
|
176
|
+
if (tc.function?.name)
|
|
177
|
+
existing.name = tc.function.name;
|
|
178
|
+
if (tc.function?.arguments)
|
|
179
|
+
existing.arguments += tc.function.arguments;
|
|
180
|
+
toolCallsBuffer.set(idx, existing);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (parsed.usage) {
|
|
184
|
+
yield {
|
|
185
|
+
type: 'usage',
|
|
186
|
+
usage: {
|
|
187
|
+
inputTokens: parsed.usage.prompt_tokens,
|
|
188
|
+
outputTokens: parsed.usage.completion_tokens,
|
|
189
|
+
totalTokens: parsed.usage.total_tokens,
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// Skip invalid JSON
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Emit collected tool calls
|
|
201
|
+
if (toolCallsBuffer.size > 0) {
|
|
202
|
+
for (const [, tc] of toolCallsBuffer) {
|
|
203
|
+
try {
|
|
204
|
+
yield {
|
|
205
|
+
type: 'tool_call',
|
|
206
|
+
toolCall: {
|
|
207
|
+
id: tc.id,
|
|
208
|
+
name: tc.name,
|
|
209
|
+
arguments: JSON.parse(tc.arguments || '{}'),
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// Skip invalid tool calls
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
yield { type: 'done' };
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
// ============================================================================
|
|
223
|
+
// CLI INTERFACE
|
|
224
|
+
// ============================================================================
|
|
225
|
+
async function runInteractive(agent) {
|
|
226
|
+
const rl = readline.createInterface({
|
|
227
|
+
input: process.stdin,
|
|
228
|
+
output: process.stdout,
|
|
229
|
+
});
|
|
230
|
+
console.log('\n🤖 Lean Coding Agent');
|
|
231
|
+
console.log('Type your request or "exit" to quit\n');
|
|
232
|
+
const prompt = () => {
|
|
233
|
+
rl.question('> ', async (input) => {
|
|
234
|
+
const trimmed = input.trim();
|
|
235
|
+
if (!trimmed || trimmed === 'exit' || trimmed === 'quit') {
|
|
236
|
+
console.log('Goodbye!');
|
|
237
|
+
rl.close();
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (trimmed === 'clear') {
|
|
241
|
+
agent.clearHistory();
|
|
242
|
+
console.log('History cleared.\n');
|
|
243
|
+
prompt();
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
process.stdout.write('\n');
|
|
248
|
+
const response = await agent.chat(trimmed, true);
|
|
249
|
+
console.log('\n' + response.content);
|
|
250
|
+
if (response.toolsUsed.length > 0) {
|
|
251
|
+
console.log(`\n[Tools: ${response.toolsUsed.join(', ')}]`);
|
|
252
|
+
}
|
|
253
|
+
console.log(`[${response.elapsedMs}ms]\n`);
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
console.error('Error:', error.message);
|
|
257
|
+
}
|
|
258
|
+
prompt();
|
|
259
|
+
});
|
|
260
|
+
};
|
|
261
|
+
prompt();
|
|
262
|
+
}
|
|
263
|
+
async function runQuick(agent, userPrompt) {
|
|
264
|
+
try {
|
|
265
|
+
const response = await agent.chat(userPrompt, false);
|
|
266
|
+
console.log(response.content);
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
console.error('Error:', error.message);
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// ============================================================================
|
|
274
|
+
// MAIN
|
|
275
|
+
// ============================================================================
|
|
276
|
+
async function main() {
|
|
277
|
+
const args = process.argv.slice(2);
|
|
278
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
279
|
+
console.log(`
|
|
280
|
+
Lean Coding Agent - Minimal AI coding assistant
|
|
281
|
+
|
|
282
|
+
Usage:
|
|
283
|
+
lean Interactive mode
|
|
284
|
+
lean "prompt" Execute single prompt
|
|
285
|
+
lean -q "prompt" Quick mode (non-interactive)
|
|
286
|
+
|
|
287
|
+
Environment:
|
|
288
|
+
DEEPSEEK_API_KEY DeepSeek API key
|
|
289
|
+
OPENAI_API_KEY OpenAI API key (fallback)
|
|
290
|
+
`);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
const apiKey = getApiKey();
|
|
294
|
+
if (!apiKey) {
|
|
295
|
+
console.error('Error: No API key found. Set DEEPSEEK_API_KEY or OPENAI_API_KEY');
|
|
296
|
+
process.exit(1);
|
|
297
|
+
}
|
|
298
|
+
const providerConfig = getProviderConfig();
|
|
299
|
+
const provider = createSimpleProvider(apiKey, providerConfig);
|
|
300
|
+
const agent = new LeanAgent({
|
|
301
|
+
provider,
|
|
302
|
+
providerId: providerConfig.providerId,
|
|
303
|
+
modelId: providerConfig.model,
|
|
304
|
+
workingDir: process.cwd(),
|
|
305
|
+
callbacks: {
|
|
306
|
+
onStreamChunk: (chunk) => {
|
|
307
|
+
process.stdout.write(chunk);
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
});
|
|
311
|
+
const quickMode = args.includes('-q') || args.includes('--quick');
|
|
312
|
+
const promptArgs = args.filter(a => !a.startsWith('-'));
|
|
313
|
+
if (promptArgs.length > 0) {
|
|
314
|
+
const userPrompt = promptArgs.join(' ');
|
|
315
|
+
if (quickMode) {
|
|
316
|
+
await runQuick(agent, userPrompt);
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
const response = await agent.chat(userPrompt, true);
|
|
320
|
+
console.log('\n' + response.content + '\n');
|
|
321
|
+
await runInteractive(agent);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
await runInteractive(agent);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
main().catch((error) => {
|
|
329
|
+
console.error('Fatal error:', error);
|
|
330
|
+
process.exit(1);
|
|
331
|
+
});
|
|
332
|
+
//# sourceMappingURL=lean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lean.js","sourceRoot":"","sources":["../../src/bin/lean.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { UnifiedCodingCapabilityModule, createUnifiedCodingCapability, type UnifiedCodingOptions } from './unifiedCodingCapability.js';
|
|
1
2
|
export { FilesystemCapabilityModule, type FilesystemCapabilityOptions } from './filesystemCapability.js';
|
|
2
3
|
export { EditCapabilityModule } from './editCapability.js';
|
|
3
4
|
export { BashCapabilityModule, type BashCapabilityOptions } from './bashCapability.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// === UNIFIED CAPABILITY (RECOMMENDED) ===
|
|
2
|
+
export { UnifiedCodingCapabilityModule, createUnifiedCodingCapability } from './unifiedCodingCapability.js';
|
|
3
|
+
// === LEGACY INDIVIDUAL CAPABILITIES ===
|
|
1
4
|
export { FilesystemCapabilityModule } from './filesystemCapability.js';
|
|
2
5
|
export { EditCapabilityModule } from './editCapability.js';
|
|
3
6
|
export { BashCapabilityModule } from './bashCapability.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAoC,MAAM,2BAA2B,CAAC;AACzG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAA8B,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAgC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAA6B,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAuC,MAAM,8BAA8B,CAAC;AAClH,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,iCAAiC,EAA2C,MAAM,kCAAkC,CAAC;AAC9H,OAAO,EAAE,mCAAmC,EAA6C,MAAM,oCAAoC,CAAC;AACpI,OAAO,EAAE,mCAAmC,EAAiH,MAAM,oCAAoC,CAAC;AACxM,OAAO,EAAE,oBAAoB,EAA8B,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC1H,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAA8I,MAAM,mCAAmC,CAAC;AACjP,OAAO,EAAE,+BAA+B,EAAiG,MAAM,gCAAgC,CAAC;AAChL,OAAO,EAAE,4BAA4B,EAA4I,MAAM,mCAAmC,CAAC;AAC3N,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,YAAY,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAClK,OAAO,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC/J,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACrN,OAAO,EAAE,iCAAiC,EAAE,2BAA2B,EAA2C,MAAM,kCAAkC,CAAC;AAC3J,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,eAAe,EAA4E,MAAM,oBAAoB,CAAC;AAChP,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,EAAgH,MAAM,4BAA4B,CAAC;AACvP,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,2BAA2B,EAAsJ,MAAM,yBAAyB,CAAC;AACrU,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,0BAA0B,EAAiI,MAAM,0BAA0B,CAAC;AACvR,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,yBAAyB,EAA4E,MAAM,0BAA0B,CAAC;AAC9O,OAAO,EAAE,+BAA+B,EAAsI,MAAM,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAA6B,MAAM,8BAA8B,CAAC;AAEvI,yCAAyC;AACzC,OAAO,EAAE,0BAA0B,EAAoC,MAAM,2BAA2B,CAAC;AACzG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAA8B,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAgC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAA6B,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAuC,MAAM,8BAA8B,CAAC;AAClH,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,iCAAiC,EAA2C,MAAM,kCAAkC,CAAC;AAC9H,OAAO,EAAE,mCAAmC,EAA6C,MAAM,oCAAoC,CAAC;AACpI,OAAO,EAAE,mCAAmC,EAAiH,MAAM,oCAAoC,CAAC;AACxM,OAAO,EAAE,oBAAoB,EAA8B,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC1H,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAA8I,MAAM,mCAAmC,CAAC;AACjP,OAAO,EAAE,+BAA+B,EAAiG,MAAM,gCAAgC,CAAC;AAChL,OAAO,EAAE,4BAA4B,EAA4I,MAAM,mCAAmC,CAAC;AAC3N,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,YAAY,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAClK,OAAO,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC/J,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACrN,OAAO,EAAE,iCAAiC,EAAE,2BAA2B,EAA2C,MAAM,kCAAkC,CAAC;AAC3J,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,eAAe,EAA4E,MAAM,oBAAoB,CAAC;AAChP,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,EAAgH,MAAM,4BAA4B,CAAC;AACvP,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,2BAA2B,EAAsJ,MAAM,yBAAyB,CAAC;AACrU,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,0BAA0B,EAAiI,MAAM,0BAA0B,CAAC;AACvR,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,yBAAyB,EAA4E,MAAM,0BAA0B,CAAC;AAC9O,OAAO,EAAE,+BAA+B,EAAsI,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UNIFIED CODING CAPABILITY
|
|
3
|
+
*
|
|
4
|
+
* A lean, consolidated capability module that provides all essential
|
|
5
|
+
* tools for an AI coding assistant in a single, coherent interface.
|
|
6
|
+
*
|
|
7
|
+
* Consolidates: Filesystem, Edit, Bash, Search, Git, Web
|
|
8
|
+
*/
|
|
9
|
+
import type { CapabilityContribution, CapabilityContext, CapabilityModule } from '../runtime/agentHost.js';
|
|
10
|
+
export interface UnifiedCodingOptions {
|
|
11
|
+
workingDir?: string;
|
|
12
|
+
enableGit?: boolean;
|
|
13
|
+
enableWeb?: boolean;
|
|
14
|
+
enableBash?: boolean;
|
|
15
|
+
maxFileSize?: number;
|
|
16
|
+
timeout?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class UnifiedCodingCapabilityModule implements CapabilityModule {
|
|
19
|
+
readonly id = "unified-coding";
|
|
20
|
+
private readonly options;
|
|
21
|
+
constructor(options?: UnifiedCodingOptions);
|
|
22
|
+
create(_context: CapabilityContext): Promise<CapabilityContribution>;
|
|
23
|
+
private buildToolSuite;
|
|
24
|
+
private createReadFileTool;
|
|
25
|
+
private createWriteFileTool;
|
|
26
|
+
private createListFilesTool;
|
|
27
|
+
private createFileExistsTool;
|
|
28
|
+
private createEditFileTool;
|
|
29
|
+
private createSearchReplaceTool;
|
|
30
|
+
private createGrepTool;
|
|
31
|
+
private createGlobTool;
|
|
32
|
+
private createBashTool;
|
|
33
|
+
private createGitTool;
|
|
34
|
+
private createWebFetchTool;
|
|
35
|
+
private resolvePath;
|
|
36
|
+
private listDirectory;
|
|
37
|
+
private globToRegex;
|
|
38
|
+
private escapeRegex;
|
|
39
|
+
}
|
|
40
|
+
export declare function createUnifiedCodingCapability(options?: UnifiedCodingOptions): UnifiedCodingCapabilityModule;
|
|
41
|
+
export default UnifiedCodingCapabilityModule;
|
|
42
|
+
//# sourceMappingURL=unifiedCodingCapability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unifiedCodingCapability.d.ts","sourceRoot":"","sources":["../../src/capabilities/unifiedCodingCapability.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAW3G,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgCD,qBAAa,6BAA8B,YAAW,gBAAgB;IACpE,QAAQ,CAAC,EAAE,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;gBAE7C,OAAO,GAAE,oBAAyB;IAWxC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAQ1E,OAAO,CAAC,cAAc;IA2CtB,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,uBAAuB;IA6C/B,OAAO,CAAC,cAAc;IAkFtB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,cAAc;IA0CtB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,WAAW;CAGpB;AAMD,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,6BAA6B,CAE3G;AAED,eAAe,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UNIFIED CODING CAPABILITY
|
|
3
|
+
*
|
|
4
|
+
* A lean, consolidated capability module that provides all essential
|
|
5
|
+
* tools for an AI coding assistant in a single, coherent interface.
|
|
6
|
+
*
|
|
7
|
+
* Consolidates: Filesystem, Edit, Bash, Search, Git, Web
|
|
8
|
+
*/
|
|
9
|
+
import * as fs from 'fs';
|
|
10
|
+
import * as path from 'path';
|
|
11
|
+
import { execSync } from 'child_process';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// SCHEMA HELPERS
|
|
14
|
+
// ============================================================================
|
|
15
|
+
function stringProp(description, enumValues) {
|
|
16
|
+
const prop = {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description,
|
|
19
|
+
};
|
|
20
|
+
if (enumValues) {
|
|
21
|
+
return { ...prop, enum: enumValues };
|
|
22
|
+
}
|
|
23
|
+
return prop;
|
|
24
|
+
}
|
|
25
|
+
function objectSchema(properties, required) {
|
|
26
|
+
return {
|
|
27
|
+
type: 'object',
|
|
28
|
+
properties,
|
|
29
|
+
required,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// ============================================================================
|
|
33
|
+
// UNIFIED CODING CAPABILITY MODULE
|
|
34
|
+
// ============================================================================
|
|
35
|
+
export class UnifiedCodingCapabilityModule {
|
|
36
|
+
id = 'unified-coding';
|
|
37
|
+
options;
|
|
38
|
+
constructor(options = {}) {
|
|
39
|
+
this.options = {
|
|
40
|
+
workingDir: options.workingDir ?? process.cwd(),
|
|
41
|
+
enableGit: options.enableGit ?? true,
|
|
42
|
+
enableWeb: options.enableWeb ?? true,
|
|
43
|
+
enableBash: options.enableBash ?? true,
|
|
44
|
+
maxFileSize: options.maxFileSize ?? 10 * 1024 * 1024, // 10MB
|
|
45
|
+
timeout: options.timeout ?? 30000, // 30s
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async create(_context) {
|
|
49
|
+
return {
|
|
50
|
+
id: this.id,
|
|
51
|
+
description: 'Unified coding assistant tools',
|
|
52
|
+
toolSuite: this.buildToolSuite(),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
buildToolSuite() {
|
|
56
|
+
const tools = [];
|
|
57
|
+
// === FILESYSTEM TOOLS ===
|
|
58
|
+
tools.push(this.createReadFileTool());
|
|
59
|
+
tools.push(this.createWriteFileTool());
|
|
60
|
+
tools.push(this.createListFilesTool());
|
|
61
|
+
tools.push(this.createFileExistsTool());
|
|
62
|
+
// === EDIT TOOLS ===
|
|
63
|
+
tools.push(this.createEditFileTool());
|
|
64
|
+
tools.push(this.createSearchReplaceTool());
|
|
65
|
+
// === SEARCH TOOLS ===
|
|
66
|
+
tools.push(this.createGrepTool());
|
|
67
|
+
tools.push(this.createGlobTool());
|
|
68
|
+
// === BASH TOOLS ===
|
|
69
|
+
if (this.options.enableBash) {
|
|
70
|
+
tools.push(this.createBashTool());
|
|
71
|
+
}
|
|
72
|
+
// === GIT TOOLS ===
|
|
73
|
+
if (this.options.enableGit) {
|
|
74
|
+
tools.push(this.createGitTool());
|
|
75
|
+
}
|
|
76
|
+
// === WEB TOOLS ===
|
|
77
|
+
if (this.options.enableWeb) {
|
|
78
|
+
tools.push(this.createWebFetchTool());
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
id: 'unified-coding-tools',
|
|
82
|
+
description: 'Unified coding assistant tools for file operations, editing, search, and execution',
|
|
83
|
+
tools,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// ============================================================================
|
|
87
|
+
// FILESYSTEM TOOLS
|
|
88
|
+
// ============================================================================
|
|
89
|
+
createReadFileTool() {
|
|
90
|
+
return {
|
|
91
|
+
name: 'read_file',
|
|
92
|
+
description: 'Read the contents of a file. Returns the file content as a string.',
|
|
93
|
+
parameters: objectSchema({
|
|
94
|
+
path: stringProp('Absolute or relative path to the file'),
|
|
95
|
+
encoding: stringProp('File encoding (default: utf-8)'),
|
|
96
|
+
}, ['path']),
|
|
97
|
+
handler: async (args) => {
|
|
98
|
+
try {
|
|
99
|
+
const filePath = this.resolvePath(args.path);
|
|
100
|
+
const stat = fs.statSync(filePath);
|
|
101
|
+
if (stat.size > this.options.maxFileSize) {
|
|
102
|
+
return `Error: File too large (${stat.size} bytes). Max: ${this.options.maxFileSize} bytes`;
|
|
103
|
+
}
|
|
104
|
+
const content = fs.readFileSync(filePath, { encoding: args.encoding ?? 'utf-8' });
|
|
105
|
+
return content;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
return `Error reading file: ${error.message}`;
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
createWriteFileTool() {
|
|
114
|
+
return {
|
|
115
|
+
name: 'write_file',
|
|
116
|
+
description: 'Write content to a file. Creates the file if it does not exist.',
|
|
117
|
+
parameters: objectSchema({
|
|
118
|
+
path: stringProp('Absolute or relative path to the file'),
|
|
119
|
+
content: stringProp('Content to write to the file'),
|
|
120
|
+
createDirs: stringProp('Create parent directories if they do not exist (default: true)'),
|
|
121
|
+
}, ['path', 'content']),
|
|
122
|
+
handler: async (args) => {
|
|
123
|
+
try {
|
|
124
|
+
const filePath = this.resolvePath(args.path);
|
|
125
|
+
if (args.createDirs !== 'false') {
|
|
126
|
+
const dir = path.dirname(filePath);
|
|
127
|
+
if (!fs.existsSync(dir)) {
|
|
128
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
fs.writeFileSync(filePath, args.content, 'utf-8');
|
|
132
|
+
return `Successfully wrote ${args.content.length} characters to ${filePath}`;
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
return `Error writing file: ${error.message}`;
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
createListFilesTool() {
|
|
141
|
+
return {
|
|
142
|
+
name: 'list_files',
|
|
143
|
+
description: 'List files in a directory. Optionally filter by pattern and recurse into subdirectories.',
|
|
144
|
+
parameters: objectSchema({
|
|
145
|
+
path: stringProp('Directory path to list'),
|
|
146
|
+
recursive: stringProp('Recurse into subdirectories (default: false)'),
|
|
147
|
+
pattern: stringProp('Glob pattern to filter files (e.g., "*.ts")'),
|
|
148
|
+
}, ['path']),
|
|
149
|
+
handler: async (args) => {
|
|
150
|
+
try {
|
|
151
|
+
const dirPath = this.resolvePath(args.path);
|
|
152
|
+
const files = this.listDirectory(dirPath, args.recursive === 'true', args.pattern);
|
|
153
|
+
return files.join('\n');
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
return `Error listing files: ${error.message}`;
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
createFileExistsTool() {
|
|
162
|
+
return {
|
|
163
|
+
name: 'file_exists',
|
|
164
|
+
description: 'Check if a file or directory exists.',
|
|
165
|
+
parameters: objectSchema({
|
|
166
|
+
path: stringProp('Path to check'),
|
|
167
|
+
}, ['path']),
|
|
168
|
+
handler: async (args) => {
|
|
169
|
+
const filePath = this.resolvePath(args.path);
|
|
170
|
+
const exists = fs.existsSync(filePath);
|
|
171
|
+
if (exists) {
|
|
172
|
+
const stat = fs.statSync(filePath);
|
|
173
|
+
return `Exists: ${stat.isDirectory() ? 'directory' : 'file'}`;
|
|
174
|
+
}
|
|
175
|
+
return 'Does not exist';
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
// ============================================================================
|
|
180
|
+
// EDIT TOOLS
|
|
181
|
+
// ============================================================================
|
|
182
|
+
createEditFileTool() {
|
|
183
|
+
return {
|
|
184
|
+
name: 'edit_file',
|
|
185
|
+
description: 'Edit a file by replacing specific text. The oldText must match exactly.',
|
|
186
|
+
parameters: objectSchema({
|
|
187
|
+
path: stringProp('Path to the file to edit'),
|
|
188
|
+
oldText: stringProp('Exact text to find and replace'),
|
|
189
|
+
newText: stringProp('Text to replace with'),
|
|
190
|
+
}, ['path', 'oldText', 'newText']),
|
|
191
|
+
handler: async (args) => {
|
|
192
|
+
try {
|
|
193
|
+
const filePath = this.resolvePath(args.path);
|
|
194
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
195
|
+
if (!content.includes(args.oldText)) {
|
|
196
|
+
return `Error: Could not find the specified text in ${filePath}`;
|
|
197
|
+
}
|
|
198
|
+
const newContent = content.replace(args.oldText, args.newText);
|
|
199
|
+
fs.writeFileSync(filePath, newContent, 'utf-8');
|
|
200
|
+
return `Successfully edited ${filePath}`;
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
return `Error editing file: ${error.message}`;
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
createSearchReplaceTool() {
|
|
209
|
+
return {
|
|
210
|
+
name: 'search_replace',
|
|
211
|
+
description: 'Search and replace text in a file. Supports regex patterns.',
|
|
212
|
+
parameters: objectSchema({
|
|
213
|
+
path: stringProp('Path to the file'),
|
|
214
|
+
search: stringProp('Text or regex pattern to search for'),
|
|
215
|
+
replace: stringProp('Replacement text'),
|
|
216
|
+
regex: stringProp('Treat search as regex (default: false)'),
|
|
217
|
+
global: stringProp('Replace all occurrences (default: true)'),
|
|
218
|
+
}, ['path', 'search', 'replace']),
|
|
219
|
+
handler: async (args) => {
|
|
220
|
+
try {
|
|
221
|
+
const filePath = this.resolvePath(args.path);
|
|
222
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
223
|
+
let pattern;
|
|
224
|
+
if (args.regex === 'true') {
|
|
225
|
+
const flags = args.global !== 'false' ? 'g' : '';
|
|
226
|
+
pattern = new RegExp(args.search, flags);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
pattern = args.global !== 'false'
|
|
230
|
+
? new RegExp(this.escapeRegex(args.search), 'g')
|
|
231
|
+
: args.search;
|
|
232
|
+
}
|
|
233
|
+
const newContent = content.replace(pattern, args.replace);
|
|
234
|
+
const matchCount = (content.match(pattern instanceof RegExp ? pattern : new RegExp(this.escapeRegex(args.search), 'g')) || []).length;
|
|
235
|
+
fs.writeFileSync(filePath, newContent, 'utf-8');
|
|
236
|
+
return `Replaced ${matchCount} occurrence(s) in ${filePath}`;
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
return `Error in search/replace: ${error.message}`;
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
// ============================================================================
|
|
245
|
+
// SEARCH TOOLS
|
|
246
|
+
// ============================================================================
|
|
247
|
+
createGrepTool() {
|
|
248
|
+
return {
|
|
249
|
+
name: 'grep',
|
|
250
|
+
description: 'Search for a pattern in files. Returns matching lines with file names and line numbers.',
|
|
251
|
+
parameters: objectSchema({
|
|
252
|
+
pattern: stringProp('Regex pattern to search for'),
|
|
253
|
+
path: stringProp('Directory or file to search in (default: working directory)'),
|
|
254
|
+
filePattern: stringProp('Filter files by glob pattern (e.g., "*.ts")'),
|
|
255
|
+
contextLines: stringProp('Number of context lines around matches (default: 0)'),
|
|
256
|
+
}, ['pattern']),
|
|
257
|
+
handler: async (args) => {
|
|
258
|
+
try {
|
|
259
|
+
const searchPath = this.resolvePath(args.path ?? '.');
|
|
260
|
+
const results = [];
|
|
261
|
+
const files = fs.statSync(searchPath).isDirectory()
|
|
262
|
+
? this.listDirectory(searchPath, true, args.filePattern)
|
|
263
|
+
: [searchPath];
|
|
264
|
+
// Use regex without 'g' flag for test() to avoid lastIndex issues
|
|
265
|
+
const regex = new RegExp(args.pattern, 'i');
|
|
266
|
+
const contextLines = parseInt(args.contextLines ?? '0', 10) || 0;
|
|
267
|
+
const matchedLineSet = new Set(); // Prevent duplicate context lines
|
|
268
|
+
for (const file of files.slice(0, 100)) { // Limit to 100 files
|
|
269
|
+
try {
|
|
270
|
+
// Skip binary files by checking for null bytes
|
|
271
|
+
const buffer = fs.readFileSync(file);
|
|
272
|
+
if (buffer.includes(0))
|
|
273
|
+
continue; // Binary file
|
|
274
|
+
const content = buffer.toString('utf-8');
|
|
275
|
+
// Skip very large files
|
|
276
|
+
if (content.length > 1024 * 1024)
|
|
277
|
+
continue; // > 1MB
|
|
278
|
+
const lines = content.split('\n');
|
|
279
|
+
const fileMatches = [];
|
|
280
|
+
// First pass: find all matching line numbers
|
|
281
|
+
for (let i = 0; i < lines.length; i++) {
|
|
282
|
+
if (regex.test(lines[i])) {
|
|
283
|
+
fileMatches.push(i);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// Second pass: output with context, avoiding duplicates
|
|
287
|
+
for (const matchIdx of fileMatches) {
|
|
288
|
+
const start = Math.max(0, matchIdx - contextLines);
|
|
289
|
+
const end = Math.min(lines.length - 1, matchIdx + contextLines);
|
|
290
|
+
for (let j = start; j <= end; j++) {
|
|
291
|
+
const lineKey = `${file}:${j}`;
|
|
292
|
+
if (!matchedLineSet.has(lineKey)) {
|
|
293
|
+
matchedLineSet.add(lineKey);
|
|
294
|
+
const prefix = j === matchIdx ? '>' : ' ';
|
|
295
|
+
results.push(`${file}:${j + 1}:${prefix} ${lines[j]}`);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
if (contextLines > 0 && matchIdx < fileMatches[fileMatches.length - 1]) {
|
|
299
|
+
results.push('--');
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
catch {
|
|
304
|
+
// Skip unreadable files
|
|
305
|
+
}
|
|
306
|
+
// Stop if we have enough results
|
|
307
|
+
if (results.length > 500)
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
return results.length > 0
|
|
311
|
+
? results.slice(0, 500).join('\n')
|
|
312
|
+
: 'No matches found';
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
return `Error in grep: ${error.message}`;
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
createGlobTool() {
|
|
321
|
+
return {
|
|
322
|
+
name: 'glob',
|
|
323
|
+
description: 'Find files matching a glob pattern.',
|
|
324
|
+
parameters: objectSchema({
|
|
325
|
+
pattern: stringProp('Glob pattern (e.g., "**/*.ts", "src/**/*.js")'),
|
|
326
|
+
path: stringProp('Base directory (default: working directory)'),
|
|
327
|
+
}, ['pattern']),
|
|
328
|
+
handler: async (args) => {
|
|
329
|
+
try {
|
|
330
|
+
const basePath = this.resolvePath(args.path ?? '.');
|
|
331
|
+
const files = this.listDirectory(basePath, true, args.pattern);
|
|
332
|
+
return files.length > 0
|
|
333
|
+
? files.slice(0, 200).join('\n')
|
|
334
|
+
: 'No files found matching pattern';
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
return `Error in glob: ${error.message}`;
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
// ============================================================================
|
|
343
|
+
// BASH TOOL
|
|
344
|
+
// ============================================================================
|
|
345
|
+
createBashTool() {
|
|
346
|
+
return {
|
|
347
|
+
name: 'bash',
|
|
348
|
+
description: 'Execute a bash command and return the output. Use for running builds, tests, git commands, etc.',
|
|
349
|
+
parameters: objectSchema({
|
|
350
|
+
command: stringProp('The command to execute'),
|
|
351
|
+
timeout: stringProp('Timeout in milliseconds (default: 30000)'),
|
|
352
|
+
cwd: stringProp('Working directory for the command'),
|
|
353
|
+
}, ['command']),
|
|
354
|
+
handler: async (args) => {
|
|
355
|
+
return new Promise((resolve) => {
|
|
356
|
+
try {
|
|
357
|
+
const timeout = parseInt(args.timeout ?? String(this.options.timeout), 10);
|
|
358
|
+
const cwd = args.cwd ? this.resolvePath(args.cwd) : this.options.workingDir;
|
|
359
|
+
const result = execSync(args.command, {
|
|
360
|
+
cwd,
|
|
361
|
+
timeout,
|
|
362
|
+
encoding: 'utf-8',
|
|
363
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
364
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
365
|
+
});
|
|
366
|
+
resolve(result.trim() || '(no output)');
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
const execError = error;
|
|
370
|
+
const stdout = execError.stdout ?? '';
|
|
371
|
+
const stderr = execError.stderr ?? '';
|
|
372
|
+
resolve(`Error: ${execError.message}\nStdout: ${stdout}\nStderr: ${stderr}`);
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
},
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
// ============================================================================
|
|
379
|
+
// GIT TOOL
|
|
380
|
+
// ============================================================================
|
|
381
|
+
createGitTool() {
|
|
382
|
+
return {
|
|
383
|
+
name: 'git',
|
|
384
|
+
description: 'Execute git operations. Supports: status, diff, log, add, commit, push, pull, branch, checkout, merge, stash',
|
|
385
|
+
parameters: objectSchema({
|
|
386
|
+
operation: stringProp('Git operation', ['status', 'diff', 'log', 'add', 'commit', 'push', 'pull', 'branch', 'checkout', 'merge', 'stash', 'reset', 'fetch']),
|
|
387
|
+
args: stringProp('Additional arguments for the git command'),
|
|
388
|
+
}, ['operation']),
|
|
389
|
+
handler: async (args) => {
|
|
390
|
+
try {
|
|
391
|
+
const command = `git ${args.operation}${args.args ? ' ' + args.args : ''}`;
|
|
392
|
+
const result = execSync(command, {
|
|
393
|
+
cwd: this.options.workingDir,
|
|
394
|
+
encoding: 'utf-8',
|
|
395
|
+
timeout: this.options.timeout,
|
|
396
|
+
});
|
|
397
|
+
return result.trim() || '(no output)';
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
const execError = error;
|
|
401
|
+
return `Git error: ${execError.stderr || execError.message}`;
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
// ============================================================================
|
|
407
|
+
// WEB TOOL
|
|
408
|
+
// ============================================================================
|
|
409
|
+
createWebFetchTool() {
|
|
410
|
+
return {
|
|
411
|
+
name: 'web_fetch',
|
|
412
|
+
description: 'Fetch content from a URL. Useful for downloading documentation or API responses.',
|
|
413
|
+
parameters: objectSchema({
|
|
414
|
+
url: stringProp('URL to fetch'),
|
|
415
|
+
method: stringProp('HTTP method (default: GET)'),
|
|
416
|
+
headers: stringProp('JSON string of headers'),
|
|
417
|
+
}, ['url']),
|
|
418
|
+
handler: async (args) => {
|
|
419
|
+
try {
|
|
420
|
+
const headers = args.headers ? JSON.parse(args.headers) : {};
|
|
421
|
+
const response = await fetch(args.url, {
|
|
422
|
+
method: args.method ?? 'GET',
|
|
423
|
+
headers,
|
|
424
|
+
});
|
|
425
|
+
if (!response.ok) {
|
|
426
|
+
return `HTTP ${response.status}: ${response.statusText}`;
|
|
427
|
+
}
|
|
428
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
429
|
+
if (contentType.includes('application/json')) {
|
|
430
|
+
const json = await response.json();
|
|
431
|
+
return JSON.stringify(json, null, 2);
|
|
432
|
+
}
|
|
433
|
+
const text = await response.text();
|
|
434
|
+
return text.slice(0, 50000); // Limit response size
|
|
435
|
+
}
|
|
436
|
+
catch (error) {
|
|
437
|
+
return `Fetch error: ${error.message}`;
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
// ============================================================================
|
|
443
|
+
// UTILITY METHODS
|
|
444
|
+
// ============================================================================
|
|
445
|
+
resolvePath(inputPath) {
|
|
446
|
+
if (path.isAbsolute(inputPath)) {
|
|
447
|
+
return inputPath;
|
|
448
|
+
}
|
|
449
|
+
return path.resolve(this.options.workingDir, inputPath);
|
|
450
|
+
}
|
|
451
|
+
listDirectory(dir, recursive, pattern) {
|
|
452
|
+
const results = [];
|
|
453
|
+
const regex = pattern ? this.globToRegex(pattern) : null;
|
|
454
|
+
const walk = (currentDir) => {
|
|
455
|
+
try {
|
|
456
|
+
const entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
457
|
+
for (const entry of entries) {
|
|
458
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
459
|
+
// Skip hidden files and common ignore patterns
|
|
460
|
+
if (entry.name.startsWith('.') || entry.name === 'node_modules') {
|
|
461
|
+
continue;
|
|
462
|
+
}
|
|
463
|
+
if (entry.isDirectory()) {
|
|
464
|
+
if (recursive) {
|
|
465
|
+
walk(fullPath);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
else {
|
|
469
|
+
if (!regex || regex.test(entry.name) || regex.test(fullPath)) {
|
|
470
|
+
results.push(fullPath);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
catch {
|
|
476
|
+
// Skip unreadable directories
|
|
477
|
+
}
|
|
478
|
+
};
|
|
479
|
+
walk(dir);
|
|
480
|
+
return results;
|
|
481
|
+
}
|
|
482
|
+
globToRegex(pattern) {
|
|
483
|
+
const escaped = pattern
|
|
484
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&')
|
|
485
|
+
.replace(/\*/g, '.*')
|
|
486
|
+
.replace(/\?/g, '.');
|
|
487
|
+
return new RegExp(escaped, 'i');
|
|
488
|
+
}
|
|
489
|
+
escapeRegex(str) {
|
|
490
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
// ============================================================================
|
|
494
|
+
// FACTORY & CONVENIENCE EXPORTS
|
|
495
|
+
// ============================================================================
|
|
496
|
+
export function createUnifiedCodingCapability(options) {
|
|
497
|
+
return new UnifiedCodingCapabilityModule(options);
|
|
498
|
+
}
|
|
499
|
+
export default UnifiedCodingCapabilityModule;
|
|
500
|
+
//# sourceMappingURL=unifiedCodingCapability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unifiedCodingCapability.js","sourceRoot":"","sources":["../../src/capabilities/unifiedCodingCapability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LEAN CODING AGENT
|
|
3
|
+
*
|
|
4
|
+
* A streamlined, unified coding assistant that consolidates all
|
|
5
|
+
* capabilities into a single, efficient agent architecture.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Unified tool suite (filesystem, edit, search, bash, git, web)
|
|
9
|
+
* - Context management with auto-pruning
|
|
10
|
+
* - Loop detection and recovery
|
|
11
|
+
* - Multi-provider support
|
|
12
|
+
* - Streaming responses
|
|
13
|
+
*/
|
|
14
|
+
import { type AgentCallbacks } from './core/agent.js';
|
|
15
|
+
import { type UnifiedCodingOptions } from './capabilities/unifiedCodingCapability.js';
|
|
16
|
+
import type { LLMProvider } from './core/types.js';
|
|
17
|
+
export interface LeanAgentConfig {
|
|
18
|
+
/** LLM provider instance */
|
|
19
|
+
provider: LLMProvider;
|
|
20
|
+
/** Working directory for file operations */
|
|
21
|
+
workingDir?: string;
|
|
22
|
+
/** System prompt for the agent */
|
|
23
|
+
systemPrompt?: string;
|
|
24
|
+
/** Capability options */
|
|
25
|
+
capabilities?: UnifiedCodingOptions;
|
|
26
|
+
/** Context window size for pruning */
|
|
27
|
+
contextWindowSize?: number;
|
|
28
|
+
/** Provider ID for tracking */
|
|
29
|
+
providerId?: string;
|
|
30
|
+
/** Model ID for tracking */
|
|
31
|
+
modelId?: string;
|
|
32
|
+
/** Event callbacks */
|
|
33
|
+
callbacks?: AgentCallbacks;
|
|
34
|
+
}
|
|
35
|
+
export interface LeanAgentResponse {
|
|
36
|
+
content: string;
|
|
37
|
+
toolsUsed: string[];
|
|
38
|
+
tokensUsed?: number;
|
|
39
|
+
elapsedMs?: number;
|
|
40
|
+
}
|
|
41
|
+
export declare class LeanAgent {
|
|
42
|
+
private runtime;
|
|
43
|
+
private toolRuntime;
|
|
44
|
+
private config;
|
|
45
|
+
private toolsUsed;
|
|
46
|
+
private initialized;
|
|
47
|
+
constructor(config: LeanAgentConfig);
|
|
48
|
+
private initializeCapability;
|
|
49
|
+
/**
|
|
50
|
+
* Send a message to the agent and get a response
|
|
51
|
+
*/
|
|
52
|
+
chat(message: string, streaming?: boolean): Promise<LeanAgentResponse>;
|
|
53
|
+
/**
|
|
54
|
+
* Request cancellation of current operation
|
|
55
|
+
*/
|
|
56
|
+
cancel(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Check if agent is currently processing
|
|
59
|
+
*/
|
|
60
|
+
isRunning(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Clear conversation history
|
|
63
|
+
*/
|
|
64
|
+
clearHistory(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Get conversation history
|
|
67
|
+
*/
|
|
68
|
+
getHistory(): import("./core/types.js").ConversationMessage[];
|
|
69
|
+
private getDefaultSystemPrompt;
|
|
70
|
+
}
|
|
71
|
+
export declare function createLeanAgent(config: LeanAgentConfig): LeanAgent;
|
|
72
|
+
export default LeanAgent;
|
|
73
|
+
//# sourceMappingURL=leanAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leanAgent.d.ts","sourceRoot":"","sources":["../src/leanAgent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAAiC,KAAK,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACrH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAMnD,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,QAAQ,EAAE,WAAW,CAAC;IACtB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,eAAe;YAuCrB,oBAAoB;IA6BlC;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgBzE;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACH,UAAU;IAIV,OAAO,CAAC,sBAAsB;CAyB/B;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAElE;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LEAN CODING AGENT
|
|
3
|
+
*
|
|
4
|
+
* A streamlined, unified coding assistant that consolidates all
|
|
5
|
+
* capabilities into a single, efficient agent architecture.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Unified tool suite (filesystem, edit, search, bash, git, web)
|
|
9
|
+
* - Context management with auto-pruning
|
|
10
|
+
* - Loop detection and recovery
|
|
11
|
+
* - Multi-provider support
|
|
12
|
+
* - Streaming responses
|
|
13
|
+
*/
|
|
14
|
+
import { AgentRuntime } from './core/agent.js';
|
|
15
|
+
import { ContextManager } from './core/contextManager.js';
|
|
16
|
+
import { ToolRuntime } from './core/toolRuntime.js';
|
|
17
|
+
import { createUnifiedCodingCapability } from './capabilities/unifiedCodingCapability.js';
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// LEAN AGENT
|
|
20
|
+
// ============================================================================
|
|
21
|
+
export class LeanAgent {
|
|
22
|
+
runtime;
|
|
23
|
+
toolRuntime;
|
|
24
|
+
config;
|
|
25
|
+
toolsUsed = [];
|
|
26
|
+
initialized = false;
|
|
27
|
+
constructor(config) {
|
|
28
|
+
this.config = config;
|
|
29
|
+
// Create tool runtime
|
|
30
|
+
this.toolRuntime = new ToolRuntime();
|
|
31
|
+
// Create context manager
|
|
32
|
+
const contextManager = new ContextManager({
|
|
33
|
+
maxTokens: config.contextWindowSize ?? 128000,
|
|
34
|
+
targetTokens: Math.floor((config.contextWindowSize ?? 128000) * 0.85),
|
|
35
|
+
});
|
|
36
|
+
// Build system prompt
|
|
37
|
+
const systemPrompt = config.systemPrompt ?? this.getDefaultSystemPrompt();
|
|
38
|
+
// Create agent runtime
|
|
39
|
+
this.runtime = new AgentRuntime({
|
|
40
|
+
provider: config.provider,
|
|
41
|
+
toolRuntime: this.toolRuntime,
|
|
42
|
+
systemPrompt,
|
|
43
|
+
contextManager,
|
|
44
|
+
providerId: config.providerId ?? 'unknown',
|
|
45
|
+
modelId: config.modelId ?? 'unknown',
|
|
46
|
+
workingDirectory: config.workingDir ?? process.cwd(),
|
|
47
|
+
callbacks: {
|
|
48
|
+
...config.callbacks,
|
|
49
|
+
onToolExecution: (name, isStart) => {
|
|
50
|
+
if (isStart) {
|
|
51
|
+
this.toolsUsed.push(name);
|
|
52
|
+
}
|
|
53
|
+
config.callbacks?.onToolExecution?.(name, isStart);
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
// Initialize capability asynchronously
|
|
58
|
+
this.initializeCapability();
|
|
59
|
+
}
|
|
60
|
+
async initializeCapability() {
|
|
61
|
+
if (this.initialized)
|
|
62
|
+
return;
|
|
63
|
+
// Initialize unified coding capability
|
|
64
|
+
const capability = createUnifiedCodingCapability({
|
|
65
|
+
workingDir: this.config.workingDir ?? process.cwd(),
|
|
66
|
+
...this.config.capabilities,
|
|
67
|
+
});
|
|
68
|
+
// Build and register tool suite
|
|
69
|
+
const contribution = await capability.create({
|
|
70
|
+
profile: 'default',
|
|
71
|
+
workspaceContext: null,
|
|
72
|
+
workingDir: this.config.workingDir ?? process.cwd(),
|
|
73
|
+
env: process.env,
|
|
74
|
+
});
|
|
75
|
+
if (contribution.toolSuite) {
|
|
76
|
+
this.toolRuntime.registerSuite(contribution.toolSuite);
|
|
77
|
+
}
|
|
78
|
+
if (contribution.toolSuites) {
|
|
79
|
+
for (const suite of contribution.toolSuites) {
|
|
80
|
+
this.toolRuntime.registerSuite(suite);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
this.initialized = true;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Send a message to the agent and get a response
|
|
87
|
+
*/
|
|
88
|
+
async chat(message, streaming = true) {
|
|
89
|
+
// Ensure initialized
|
|
90
|
+
await this.initializeCapability();
|
|
91
|
+
this.toolsUsed = [];
|
|
92
|
+
const startTime = Date.now();
|
|
93
|
+
const content = await this.runtime.send(message, streaming);
|
|
94
|
+
return {
|
|
95
|
+
content,
|
|
96
|
+
toolsUsed: [...this.toolsUsed],
|
|
97
|
+
elapsedMs: Date.now() - startTime,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Request cancellation of current operation
|
|
102
|
+
*/
|
|
103
|
+
cancel() {
|
|
104
|
+
this.runtime.requestCancellation();
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if agent is currently processing
|
|
108
|
+
*/
|
|
109
|
+
isRunning() {
|
|
110
|
+
return this.runtime.isRunning();
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Clear conversation history
|
|
114
|
+
*/
|
|
115
|
+
clearHistory() {
|
|
116
|
+
this.runtime.clearHistory();
|
|
117
|
+
this.toolRuntime.clearToolHistory();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get conversation history
|
|
121
|
+
*/
|
|
122
|
+
getHistory() {
|
|
123
|
+
return this.runtime.getHistory();
|
|
124
|
+
}
|
|
125
|
+
getDefaultSystemPrompt() {
|
|
126
|
+
return `You are a skilled coding assistant with access to file system operations, code editing, search, and command execution tools.
|
|
127
|
+
|
|
128
|
+
Your capabilities:
|
|
129
|
+
- read_file: Read file contents
|
|
130
|
+
- write_file: Create or overwrite files
|
|
131
|
+
- list_files: List directory contents
|
|
132
|
+
- file_exists: Check if files exist
|
|
133
|
+
- edit_file: Make precise edits to existing files
|
|
134
|
+
- search_replace: Search and replace text in files
|
|
135
|
+
- grep: Search for patterns in files
|
|
136
|
+
- glob: Find files by pattern
|
|
137
|
+
- bash: Execute shell commands
|
|
138
|
+
- git: Git operations (status, diff, commit, etc.)
|
|
139
|
+
- web_fetch: Fetch content from URLs
|
|
140
|
+
|
|
141
|
+
Guidelines:
|
|
142
|
+
1. Always read files before editing to understand context
|
|
143
|
+
2. Make minimal, focused changes
|
|
144
|
+
3. Test your changes when possible
|
|
145
|
+
4. Explain what you're doing and why
|
|
146
|
+
5. Handle errors gracefully
|
|
147
|
+
|
|
148
|
+
Working directory: ${this.config.workingDir ?? process.cwd()}`;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// ============================================================================
|
|
152
|
+
// FACTORY FUNCTION
|
|
153
|
+
// ============================================================================
|
|
154
|
+
export function createLeanAgent(config) {
|
|
155
|
+
return new LeanAgent(config);
|
|
156
|
+
}
|
|
157
|
+
export default LeanAgent;
|
|
158
|
+
//# sourceMappingURL=leanAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leanAgent.js","sourceRoot":"","sources":["../src/leanAgent.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deepseek-coder-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12",
|
|
4
4
|
"description": "DeepSeek AI-powered CLI agent for code assistance and automation",
|
|
5
5
|
"deepseek": {
|
|
6
6
|
"rulebookSchema": "src/contracts/schemas/agent-rules.schema.json"
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
"main": "dist/bin/deepseek.js",
|
|
9
9
|
"exports": {
|
|
10
10
|
".": "./dist/bin/deepseek.js",
|
|
11
|
+
"./lean": "./dist/leanAgent.js",
|
|
12
|
+
"./capabilities": "./dist/capabilities/index.js",
|
|
11
13
|
"./security": "./dist/core/universalSecurityAudit.js",
|
|
12
14
|
"./orchestration": "./dist/orchestration/index.js"
|
|
13
15
|
},
|
|
@@ -20,10 +22,11 @@
|
|
|
20
22
|
],
|
|
21
23
|
"bin": {
|
|
22
24
|
"deepseek": "dist/bin/deepseek.js",
|
|
23
|
-
"erosolar": "dist/bin/erosolar.js"
|
|
25
|
+
"erosolar": "dist/bin/erosolar.js",
|
|
26
|
+
"lean": "dist/bin/lean.js"
|
|
24
27
|
},
|
|
25
28
|
"scripts": {
|
|
26
|
-
"postinstall": "node -e \"const fs=require('fs');['dist/bin/deepseek.js','dist/bin/erosolar.js'].forEach(f=>{try{fs.chmodSync(f,0o755)}catch{}})\"",
|
|
29
|
+
"postinstall": "node -e \"const fs=require('fs');['dist/bin/deepseek.js','dist/bin/erosolar.js','dist/bin/lean.js'].forEach(f=>{try{fs.chmodSync(f,0o755)}catch{}})\"",
|
|
27
30
|
"prebuild": "npm run clean",
|
|
28
31
|
"clean": "node -e \"const { rmSync } = require('fs'); for (const target of ['dist', '.tsbuildinfo']) { try { rmSync(target, { recursive: true, force: true, maxRetries: 10 }); } catch (error) { console.warn('Clean warning:', error.code, 'for', target); } }\"",
|
|
29
32
|
"build": "tsc",
|
|
@@ -42,6 +45,8 @@
|
|
|
42
45
|
"pretest": "npm run build",
|
|
43
46
|
"postbuild": "node scripts/postbuild.mjs",
|
|
44
47
|
"cli": "node dist/bin/deepseek.js",
|
|
48
|
+
"lean": "node dist/bin/lean.js",
|
|
49
|
+
"lean:dev": "node --loader ts-node/esm src/bin/lean.ts",
|
|
45
50
|
"dev": "node --loader ts-node/esm src/bin/deepseek.ts",
|
|
46
51
|
"dev:watch": "node --watch --loader ts-node/esm src/bin/deepseek.ts",
|
|
47
52
|
"start": "node dist/bin/deepseek.js",
|