codeep 1.2.31 → 1.2.33
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 +5 -7
- package/dist/acp/server.js +23 -1
- package/dist/acp/session.d.ts +2 -5
- package/dist/acp/session.js +38 -12
- package/dist/config/providers.js +23 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -780,13 +780,11 @@ npm install -g codeep
|
|
|
780
780
|
2. Add to your Zed `settings.json`:
|
|
781
781
|
|
|
782
782
|
```json
|
|
783
|
-
{
|
|
784
|
-
"
|
|
785
|
-
"
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
"args": ["acp"]
|
|
789
|
-
}
|
|
783
|
+
"agent_servers": {
|
|
784
|
+
"Codeep": {
|
|
785
|
+
"type": "custom",
|
|
786
|
+
"command": "codeep",
|
|
787
|
+
"args": ["acp"]
|
|
790
788
|
}
|
|
791
789
|
}
|
|
792
790
|
```
|
package/dist/acp/server.js
CHANGED
|
@@ -170,8 +170,30 @@ export function startAcpServer() {
|
|
|
170
170
|
conversationId: params.sessionId,
|
|
171
171
|
abortSignal: abortController.signal,
|
|
172
172
|
onChunk: sendChunk,
|
|
173
|
+
onThought: (text) => {
|
|
174
|
+
transport.notify('session/update', {
|
|
175
|
+
sessionId: params.sessionId,
|
|
176
|
+
update: {
|
|
177
|
+
sessionUpdate: 'agent_thought_chunk',
|
|
178
|
+
content: { type: 'text', text },
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
},
|
|
182
|
+
onToolCall: (toolCallId, _toolName, kind, title, status, locations) => {
|
|
183
|
+
transport.notify('session/update', {
|
|
184
|
+
sessionId: params.sessionId,
|
|
185
|
+
update: {
|
|
186
|
+
sessionUpdate: 'tool_call',
|
|
187
|
+
toolCallId,
|
|
188
|
+
title,
|
|
189
|
+
kind,
|
|
190
|
+
status,
|
|
191
|
+
...(locations?.length ? { locations: locations.map(uri => ({ uri })) } : {}),
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
},
|
|
173
195
|
onFileEdit: (uri, newText) => {
|
|
174
|
-
// ACP structured file/edit notification — lets the editor
|
|
196
|
+
// ACP structured file/edit notification — lets the editor apply changes
|
|
175
197
|
transport.notify('file/edit', {
|
|
176
198
|
uri,
|
|
177
199
|
textChanges: newText
|
package/dist/acp/session.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export interface AgentSessionOptions {
|
|
|
5
5
|
conversationId: string;
|
|
6
6
|
abortSignal: AbortSignal;
|
|
7
7
|
onChunk: (text: string) => void;
|
|
8
|
+
onThought?: (text: string) => void;
|
|
9
|
+
onToolCall?: (toolCallId: string, toolName: string, kind: string, title: string, status: 'pending' | 'running' | 'finished' | 'error', locations?: string[]) => void;
|
|
8
10
|
onFileEdit: (uri: string, newText: string) => void;
|
|
9
11
|
}
|
|
10
12
|
/**
|
|
@@ -12,10 +14,5 @@ export interface AgentSessionOptions {
|
|
|
12
14
|
* Falls back to a minimal synthetic context if scanning fails.
|
|
13
15
|
*/
|
|
14
16
|
export declare function buildProjectContext(workspaceRoot: string): ProjectContext;
|
|
15
|
-
/**
|
|
16
|
-
* Run a single agent session driven by ACP parameters.
|
|
17
|
-
*
|
|
18
|
-
* onFileEdit is reserved for future use (v1 emits everything via onChunk).
|
|
19
|
-
*/
|
|
20
17
|
export declare function runAgentSession(opts: AgentSessionOptions): Promise<void>;
|
|
21
18
|
export declare function pathToUri(absolutePath: string): string;
|
package/dist/acp/session.js
CHANGED
|
@@ -24,28 +24,54 @@ export function buildProjectContext(workspaceRoot) {
|
|
|
24
24
|
summary: `Workspace at ${workspaceRoot}`,
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
// Maps internal tool names to ACP tool_call kind values and human titles.
|
|
28
|
+
function toolCallMeta(toolName, params) {
|
|
29
|
+
const file = params.path ?? params.file ?? '';
|
|
30
|
+
const label = file ? ` ${file.split('/').pop()}` : '';
|
|
31
|
+
switch (toolName) {
|
|
32
|
+
case 'read_file': return { kind: 'read', title: `Reading${label}` };
|
|
33
|
+
case 'write_file': return { kind: 'edit', title: `Writing${label}` };
|
|
34
|
+
case 'edit_file': return { kind: 'edit', title: `Editing${label}` };
|
|
35
|
+
case 'delete_file': return { kind: 'delete', title: `Deleting${label}` };
|
|
36
|
+
case 'move_file': return { kind: 'move', title: `Moving${label}` };
|
|
37
|
+
case 'list_files': return { kind: 'read', title: `Listing files${label}` };
|
|
38
|
+
case 'search_files': return { kind: 'search', title: `Searching${label || ' files'}` };
|
|
39
|
+
case 'run_command': return { kind: 'execute', title: `Running: ${params.command ?? ''}` };
|
|
40
|
+
case 'web_fetch': return { kind: 'fetch', title: `Fetching ${params.url ?? ''}` };
|
|
41
|
+
default: return { kind: 'other', title: toolName };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
32
44
|
export async function runAgentSession(opts) {
|
|
33
45
|
const projectContext = buildProjectContext(opts.workspaceRoot);
|
|
46
|
+
let toolCallCounter = 0;
|
|
34
47
|
const result = await runAgent(opts.prompt, projectContext, {
|
|
35
48
|
abortSignal: opts.abortSignal,
|
|
36
|
-
onIteration: (_iteration,
|
|
37
|
-
|
|
49
|
+
onIteration: (_iteration, _message) => {
|
|
50
|
+
// Intentionally not forwarded — iteration count is internal detail
|
|
38
51
|
},
|
|
39
52
|
onThinking: (text) => {
|
|
40
|
-
opts.
|
|
53
|
+
if (opts.onThought) {
|
|
54
|
+
opts.onThought(text);
|
|
55
|
+
}
|
|
41
56
|
},
|
|
42
57
|
onToolCall: (toolCall) => {
|
|
43
|
-
// Notify the caller when agent writes or edits a file so ACP can
|
|
44
|
-
// send a structured file/edit notification to the editor.
|
|
45
58
|
const name = toolCall.tool;
|
|
59
|
+
const params = (toolCall.parameters ?? {});
|
|
60
|
+
const { kind, title } = toolCallMeta(name, params);
|
|
61
|
+
const toolCallId = `tc_${++toolCallCounter}`;
|
|
62
|
+
// Resolve file locations for edit/read/delete/move tools
|
|
63
|
+
const locations = [];
|
|
64
|
+
const filePath = params.path ?? params.file ?? '';
|
|
65
|
+
if (filePath) {
|
|
66
|
+
const absPath = isAbsolute(filePath)
|
|
67
|
+
? filePath
|
|
68
|
+
: join(opts.workspaceRoot, filePath);
|
|
69
|
+
locations.push(pathToFileURL(absPath).href);
|
|
70
|
+
}
|
|
71
|
+
// Emit tool_call notification (running state)
|
|
72
|
+
opts.onToolCall?.(toolCallId, name, kind, title, 'running', locations.length ? locations : undefined);
|
|
73
|
+
// For file edits, also send structured file/edit notification
|
|
46
74
|
if (name === 'write_file' || name === 'edit_file') {
|
|
47
|
-
const params = toolCall.parameters;
|
|
48
|
-
const filePath = params.path ?? '';
|
|
49
75
|
if (filePath) {
|
|
50
76
|
const absPath = isAbsolute(filePath)
|
|
51
77
|
? filePath
|
package/dist/config/providers.js
CHANGED
|
@@ -148,6 +148,29 @@ export const PROVIDERS = {
|
|
|
148
148
|
defaultProtocol: 'anthropic',
|
|
149
149
|
envKey: 'ANTHROPIC_API_KEY',
|
|
150
150
|
},
|
|
151
|
+
'google': {
|
|
152
|
+
name: 'Google AI',
|
|
153
|
+
description: 'Gemini models',
|
|
154
|
+
protocols: {
|
|
155
|
+
openai: {
|
|
156
|
+
baseUrl: 'https://generativelanguage.googleapis.com/v1beta/openai',
|
|
157
|
+
authHeader: 'Bearer',
|
|
158
|
+
supportsNativeTools: true,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
models: [
|
|
162
|
+
{ id: 'gemini-2.5-pro-exp-03-25', name: 'Gemini 2.5 Pro Experimental', description: 'Most capable, best reasoning' },
|
|
163
|
+
{ id: 'gemini-2.0-flash', name: 'Gemini 2.0 Flash', description: 'Fast and capable, general use' },
|
|
164
|
+
{ id: 'gemini-2.0-flash-lite', name: 'Gemini 2.0 Flash Lite', description: 'Fastest, lowest cost' },
|
|
165
|
+
{ id: 'gemini-1.5-pro', name: 'Gemini 1.5 Pro', description: 'Long context (2M tokens)' },
|
|
166
|
+
{ id: 'gemini-1.5-flash', name: 'Gemini 1.5 Flash', description: 'Balanced speed and quality' },
|
|
167
|
+
{ id: 'gemini-1.5-flash-8b', name: 'Gemini 1.5 Flash 8B', description: 'Ultra-fast, lightweight' },
|
|
168
|
+
],
|
|
169
|
+
defaultModel: 'gemini-2.0-flash',
|
|
170
|
+
defaultProtocol: 'openai',
|
|
171
|
+
envKey: 'GOOGLE_API_KEY',
|
|
172
|
+
subscribeUrl: 'https://aistudio.google.com/apikey',
|
|
173
|
+
},
|
|
151
174
|
};
|
|
152
175
|
export function getProvider(id) {
|
|
153
176
|
return PROVIDERS[id] || null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeep",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.33",
|
|
4
4
|
"description": "AI-powered coding assistant built for the terminal. Multiple LLM providers, project-aware context, and a seamless development workflow.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|