cmdr-agent 2.1.2 → 2.3.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/dist/bin/cmdr.js +4 -0
- package/dist/bin/cmdr.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/src/cli/args.d.ts +4 -0
- package/dist/src/cli/args.d.ts.map +1 -1
- package/dist/src/cli/args.js +15 -0
- package/dist/src/cli/args.js.map +1 -1
- package/dist/src/cli/commands.js +21 -1
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/ink/App.d.ts +2 -0
- package/dist/src/cli/ink/App.d.ts.map +1 -1
- package/dist/src/cli/ink/App.js +71 -7
- package/dist/src/cli/ink/App.js.map +1 -1
- package/dist/src/cli/repl.d.ts +4 -0
- package/dist/src/cli/repl.d.ts.map +1 -1
- package/dist/src/cli/repl.js +83 -20
- package/dist/src/cli/repl.js.map +1 -1
- package/dist/src/config/mcp-registry.d.ts +45 -0
- package/dist/src/config/mcp-registry.d.ts.map +1 -0
- package/dist/src/config/mcp-registry.js +156 -0
- package/dist/src/config/mcp-registry.js.map +1 -0
- package/dist/src/config/schema.d.ts +8 -8
- package/dist/src/core/agent-runner.d.ts +5 -0
- package/dist/src/core/agent-runner.d.ts.map +1 -1
- package/dist/src/core/agent-runner.js +34 -2
- package/dist/src/core/agent-runner.js.map +1 -1
- package/dist/src/core/agent.d.ts +2 -1
- package/dist/src/core/agent.d.ts.map +1 -1
- package/dist/src/core/agent.js +5 -1
- package/dist/src/core/agent.js.map +1 -1
- package/dist/src/core/content-replacement.d.ts +44 -0
- package/dist/src/core/content-replacement.d.ts.map +1 -0
- package/dist/src/core/content-replacement.js +67 -0
- package/dist/src/core/content-replacement.js.map +1 -0
- package/dist/src/core/event-bus.d.ts +129 -0
- package/dist/src/core/event-bus.d.ts.map +1 -0
- package/dist/src/core/event-bus.js +103 -0
- package/dist/src/core/event-bus.js.map +1 -0
- package/dist/src/core/hooks.d.ts +61 -0
- package/dist/src/core/hooks.d.ts.map +1 -0
- package/dist/src/core/hooks.js +140 -0
- package/dist/src/core/hooks.js.map +1 -0
- package/dist/src/core/orchestrator.d.ts +17 -1
- package/dist/src/core/orchestrator.d.ts.map +1 -1
- package/dist/src/core/orchestrator.js +95 -1
- package/dist/src/core/orchestrator.js.map +1 -1
- package/dist/src/core/permissions.d.ts +74 -3
- package/dist/src/core/permissions.d.ts.map +1 -1
- package/dist/src/core/permissions.js +230 -11
- package/dist/src/core/permissions.js.map +1 -1
- package/dist/src/core/presets.d.ts.map +1 -1
- package/dist/src/core/presets.js +1 -0
- package/dist/src/core/presets.js.map +1 -1
- package/dist/src/core/types.d.ts +22 -1
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/llm/anthropic.d.ts +27 -0
- package/dist/src/llm/anthropic.d.ts.map +1 -0
- package/dist/src/llm/anthropic.js +269 -0
- package/dist/src/llm/anthropic.js.map +1 -0
- package/dist/src/llm/ollama.d.ts.map +1 -1
- package/dist/src/llm/ollama.js +16 -4
- package/dist/src/llm/ollama.js.map +1 -1
- package/dist/src/llm/openai.d.ts +25 -0
- package/dist/src/llm/openai.d.ts.map +1 -0
- package/dist/src/llm/openai.js +299 -0
- package/dist/src/llm/openai.js.map +1 -0
- package/dist/src/llm/provider-factory.d.ts +35 -0
- package/dist/src/llm/provider-factory.d.ts.map +1 -0
- package/dist/src/llm/provider-factory.js +73 -0
- package/dist/src/llm/provider-factory.js.map +1 -0
- package/dist/src/memory/consolidation.d.ts +37 -0
- package/dist/src/memory/consolidation.d.ts.map +1 -0
- package/dist/src/memory/consolidation.js +148 -0
- package/dist/src/memory/consolidation.js.map +1 -0
- package/dist/src/memory/memory-manager.d.ts +39 -0
- package/dist/src/memory/memory-manager.d.ts.map +1 -0
- package/dist/src/memory/memory-manager.js +96 -0
- package/dist/src/memory/memory-manager.js.map +1 -0
- package/dist/src/plugins/mcp-client.d.ts +14 -5
- package/dist/src/plugins/mcp-client.d.ts.map +1 -1
- package/dist/src/plugins/mcp-client.js +197 -43
- package/dist/src/plugins/mcp-client.js.map +1 -1
- package/dist/src/scheduling/task-scheduler.d.ts +51 -0
- package/dist/src/scheduling/task-scheduler.d.ts.map +1 -0
- package/dist/src/scheduling/task-scheduler.js +127 -0
- package/dist/src/scheduling/task-scheduler.js.map +1 -0
- package/dist/src/session/prompt-builder.d.ts +6 -0
- package/dist/src/session/prompt-builder.d.ts.map +1 -1
- package/dist/src/session/prompt-builder.js +21 -2
- package/dist/src/session/prompt-builder.js.map +1 -1
- package/dist/src/session/prompt-cache.d.ts +33 -0
- package/dist/src/session/prompt-cache.d.ts.map +1 -0
- package/dist/src/session/prompt-cache.js +54 -0
- package/dist/src/session/prompt-cache.js.map +1 -0
- package/dist/src/tools/built-in/cron-tools.d.ts +19 -0
- package/dist/src/tools/built-in/cron-tools.d.ts.map +1 -0
- package/dist/src/tools/built-in/cron-tools.js +86 -0
- package/dist/src/tools/built-in/cron-tools.js.map +1 -0
- package/dist/src/tools/built-in/diagnostics.d.ts +12 -0
- package/dist/src/tools/built-in/diagnostics.d.ts.map +1 -0
- package/dist/src/tools/built-in/diagnostics.js +119 -0
- package/dist/src/tools/built-in/diagnostics.js.map +1 -0
- package/dist/src/tools/built-in/git-worktree.d.ts +13 -0
- package/dist/src/tools/built-in/git-worktree.d.ts.map +1 -0
- package/dist/src/tools/built-in/git-worktree.js +75 -0
- package/dist/src/tools/built-in/git-worktree.js.map +1 -0
- package/dist/src/tools/built-in/index.d.ts +11 -1
- package/dist/src/tools/built-in/index.d.ts.map +1 -1
- package/dist/src/tools/built-in/index.js +19 -2
- package/dist/src/tools/built-in/index.js.map +1 -1
- package/dist/src/tools/built-in/mcp-resource-tools.d.ts +16 -0
- package/dist/src/tools/built-in/mcp-resource-tools.d.ts.map +1 -0
- package/dist/src/tools/built-in/mcp-resource-tools.js +73 -0
- package/dist/src/tools/built-in/mcp-resource-tools.js.map +1 -0
- package/dist/src/tools/built-in/memory.d.ts +15 -0
- package/dist/src/tools/built-in/memory.d.ts.map +1 -0
- package/dist/src/tools/built-in/memory.js +58 -0
- package/dist/src/tools/built-in/memory.js.map +1 -0
- package/dist/src/tools/built-in/notebook.d.ts +22 -0
- package/dist/src/tools/built-in/notebook.d.ts.map +1 -0
- package/dist/src/tools/built-in/notebook.js +207 -0
- package/dist/src/tools/built-in/notebook.js.map +1 -0
- package/dist/src/tools/built-in/plan-tools.d.ts +13 -0
- package/dist/src/tools/built-in/plan-tools.d.ts.map +1 -0
- package/dist/src/tools/built-in/plan-tools.js +42 -0
- package/dist/src/tools/built-in/plan-tools.js.map +1 -0
- package/dist/src/tools/built-in/task-tools.d.ts +22 -0
- package/dist/src/tools/built-in/task-tools.d.ts.map +1 -0
- package/dist/src/tools/built-in/task-tools.js +113 -0
- package/dist/src/tools/built-in/task-tools.js.map +1 -0
- package/dist/src/tools/built-in/todo-tool.d.ts +21 -0
- package/dist/src/tools/built-in/todo-tool.d.ts.map +1 -0
- package/dist/src/tools/built-in/todo-tool.js +52 -0
- package/dist/src/tools/built-in/todo-tool.js.map +1 -0
- package/dist/src/tools/built-in/web-search.d.ts +9 -0
- package/dist/src/tools/built-in/web-search.d.ts.map +1 -0
- package/dist/src/tools/built-in/web-search.js +89 -0
- package/dist/src/tools/built-in/web-search.js.map +1 -0
- package/package.json +1 -1
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Drives: LLM call -> tool extraction -> parallel execution -> tool results -> loop
|
|
5
5
|
*/
|
|
6
6
|
import { classifyIntent, filterToolsByIntent, detectFrustration, FRUSTRATION_NUDGE } from './intent.js';
|
|
7
|
+
import { ContentReplacer } from './content-replacement.js';
|
|
8
|
+
import { globalEventBus } from './event-bus.js';
|
|
7
9
|
// ---------------------------------------------------------------------------
|
|
8
10
|
// Safe parallel tools — read-only tools that can safely run concurrently
|
|
9
11
|
// ---------------------------------------------------------------------------
|
|
@@ -15,6 +17,7 @@ const SAFE_PARALLEL_TOOLS = new Set([
|
|
|
15
17
|
'git_diff',
|
|
16
18
|
'git_log',
|
|
17
19
|
'think',
|
|
20
|
+
'memory_read',
|
|
18
21
|
]);
|
|
19
22
|
// ---------------------------------------------------------------------------
|
|
20
23
|
// Helpers
|
|
@@ -45,6 +48,7 @@ export class AgentRunner {
|
|
|
45
48
|
options;
|
|
46
49
|
permissionManager;
|
|
47
50
|
maxTurns;
|
|
51
|
+
contentReplacer;
|
|
48
52
|
constructor(adapter, toolRegistry, toolExecutor, options, permissionManager) {
|
|
49
53
|
this.adapter = adapter;
|
|
50
54
|
this.toolRegistry = toolRegistry;
|
|
@@ -52,6 +56,7 @@ export class AgentRunner {
|
|
|
52
56
|
this.options = options;
|
|
53
57
|
this.permissionManager = permissionManager;
|
|
54
58
|
this.maxTurns = options.maxTurns ?? 10;
|
|
59
|
+
this.contentReplacer = new ContentReplacer();
|
|
55
60
|
}
|
|
56
61
|
/** Run a complete conversation, collecting all stream events internally. */
|
|
57
62
|
async run(messages, callbacks = {}) {
|
|
@@ -109,6 +114,8 @@ export class AgentRunner {
|
|
|
109
114
|
if (turns >= this.maxTurns)
|
|
110
115
|
break;
|
|
111
116
|
turns++;
|
|
117
|
+
// Emit turn:start event
|
|
118
|
+
globalEventBus.emit('turn:start', { turn: turns, model: this.options.model });
|
|
112
119
|
// Dynamic tool injection:
|
|
113
120
|
// Turn 1 uses intent-filtered tools (may be empty for chat).
|
|
114
121
|
// Turns 2+ (model is mid-agentic-loop after tool results) get full tools.
|
|
@@ -122,12 +129,15 @@ export class AgentRunner {
|
|
|
122
129
|
temperature: this.options.temperature,
|
|
123
130
|
systemPrompt: this.options.systemPrompt,
|
|
124
131
|
abortSignal: this.options.abortSignal,
|
|
132
|
+
thinkingEnabled: this.options.thinkingEnabled,
|
|
125
133
|
};
|
|
126
134
|
// Step 1: Stream from LLM — yield text tokens in real-time
|
|
127
135
|
const turnContent = [];
|
|
128
136
|
let turnText = '';
|
|
129
137
|
const pendingToolUse = [];
|
|
130
138
|
let turnUsage = ZERO_USAGE;
|
|
139
|
+
// Emit llm:request event
|
|
140
|
+
globalEventBus.emit('llm:request', { model: this.options.model, messageCount: conversationMessages.length });
|
|
131
141
|
for await (const event of this.adapter.stream(conversationMessages, turnChatOptions)) {
|
|
132
142
|
if (event.type === 'text') {
|
|
133
143
|
const chunk = event.data;
|
|
@@ -145,11 +155,14 @@ export class AgentRunner {
|
|
|
145
155
|
turnUsage = response.usage;
|
|
146
156
|
}
|
|
147
157
|
else if (event.type === 'error') {
|
|
158
|
+
globalEventBus.emit('llm:error', { model: this.options.model, error: String(event.data.message) });
|
|
148
159
|
yield event;
|
|
149
160
|
return;
|
|
150
161
|
}
|
|
151
162
|
}
|
|
152
163
|
totalUsage = addTokenUsage(totalUsage, turnUsage);
|
|
164
|
+
// Emit llm:response event
|
|
165
|
+
globalEventBus.emit('llm:response', { model: this.options.model, usage: turnUsage, stopReason: pendingToolUse.length > 0 ? 'tool_use' : 'end_turn' });
|
|
153
166
|
// Build assistant content blocks
|
|
154
167
|
if (turnText) {
|
|
155
168
|
turnContent.push({ type: 'text', text: turnText });
|
|
@@ -167,6 +180,8 @@ export class AgentRunner {
|
|
|
167
180
|
// Step 3: No tools? We're done.
|
|
168
181
|
if (pendingToolUse.length === 0) {
|
|
169
182
|
finalOutput = turnText;
|
|
183
|
+
// Emit turn:end for the final turn
|
|
184
|
+
globalEventBus.emit('turn:end', { turn: turns, tokenUsage: turnUsage, toolCallCount: 0 });
|
|
170
185
|
break;
|
|
171
186
|
}
|
|
172
187
|
// Step 4: Execute tool calls — parallelize safe read-only tools,
|
|
@@ -179,10 +194,13 @@ export class AgentRunner {
|
|
|
179
194
|
},
|
|
180
195
|
cwd: this.options.cwd,
|
|
181
196
|
abortSignal: this.options.abortSignal,
|
|
197
|
+
metadata: this.options.metadata,
|
|
182
198
|
};
|
|
183
199
|
const allSafe = pendingToolUse.every(tc => SAFE_PARALLEL_TOOLS.has(tc.name));
|
|
184
200
|
const executeOne = async (block) => {
|
|
185
201
|
callbacks.onToolCall?.(block.name, block.input);
|
|
202
|
+
// Emit tool:before event
|
|
203
|
+
globalEventBus.emit('tool:before', { name: block.name, input: block.input });
|
|
186
204
|
// --- HITL gate: check permissions before executing ---
|
|
187
205
|
if (this.permissionManager && callbacks.onToolApproval) {
|
|
188
206
|
const decision = await this.permissionManager.gate(block.name, block.input, callbacks.onToolApproval);
|
|
@@ -191,6 +209,7 @@ export class AgentRunner {
|
|
|
191
209
|
data: `Tool "${block.name}" was denied by the user.`,
|
|
192
210
|
isError: true,
|
|
193
211
|
};
|
|
212
|
+
globalEventBus.emit('tool:denied', { name: block.name, reason: 'User denied permission' });
|
|
194
213
|
callbacks.onToolResult?.(block.name, deniedResult);
|
|
195
214
|
const resultBlock = {
|
|
196
215
|
type: 'tool_result',
|
|
@@ -216,17 +235,28 @@ export class AgentRunner {
|
|
|
216
235
|
result = { data: message, isError: true };
|
|
217
236
|
}
|
|
218
237
|
const duration = Date.now() - startTime;
|
|
238
|
+
// Emit tool lifecycle events
|
|
239
|
+
if (result.isError) {
|
|
240
|
+
globalEventBus.emit('tool:error', { name: block.name, error: result.data });
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
globalEventBus.emit('tool:after', { name: block.name, result, durationMs: duration });
|
|
244
|
+
}
|
|
219
245
|
callbacks.onToolResult?.(block.name, result);
|
|
246
|
+
// Truncate large outputs to prevent context overflow
|
|
247
|
+
const truncatedData = result.isError
|
|
248
|
+
? result.data
|
|
249
|
+
: this.contentReplacer.truncateIfNeeded(result.data, block.name, block.id);
|
|
220
250
|
const record = {
|
|
221
251
|
toolName: block.name,
|
|
222
252
|
input: block.input,
|
|
223
|
-
output:
|
|
253
|
+
output: truncatedData,
|
|
224
254
|
duration,
|
|
225
255
|
};
|
|
226
256
|
const resultBlock = {
|
|
227
257
|
type: 'tool_result',
|
|
228
258
|
tool_use_id: block.id,
|
|
229
|
-
content:
|
|
259
|
+
content: truncatedData,
|
|
230
260
|
is_error: result.isError,
|
|
231
261
|
};
|
|
232
262
|
return { resultBlock, record };
|
|
@@ -255,6 +285,8 @@ export class AgentRunner {
|
|
|
255
285
|
};
|
|
256
286
|
conversationMessages.push(toolResultMessage);
|
|
257
287
|
callbacks.onMessage?.(toolResultMessage);
|
|
288
|
+
// Emit turn:end event
|
|
289
|
+
globalEventBus.emit('turn:end', { turn: turns, tokenUsage: turnUsage, toolCallCount: pendingToolUse.length });
|
|
258
290
|
// Loop back — send updated conversation to LLM
|
|
259
291
|
}
|
|
260
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../src/core/agent-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../../src/core/agent-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/agent.d.ts
CHANGED
|
@@ -13,9 +13,10 @@ export declare class Agent {
|
|
|
13
13
|
private readonly toolRegistry;
|
|
14
14
|
private readonly toolExecutor;
|
|
15
15
|
private readonly permissionManager?;
|
|
16
|
+
private readonly metadata?;
|
|
16
17
|
private state;
|
|
17
18
|
private cwd;
|
|
18
|
-
constructor(config: AgentConfig, adapter: LLMAdapter, toolRegistry: ToolRegistry, cwd?: string, permissionManager?: PermissionManager);
|
|
19
|
+
constructor(config: AgentConfig, adapter: LLMAdapter, toolRegistry: ToolRegistry, cwd?: string, permissionManager?: PermissionManager, metadata?: Readonly<Record<string, unknown>>);
|
|
19
20
|
/** Fresh conversation — does not carry history. */
|
|
20
21
|
run(task: string, callbacks?: RunCallbacks): Promise<AgentRunResult>;
|
|
21
22
|
/** Persistent conversation — appends to history. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAC/C,cAAc,EAAc,WAAW,EACxC,MAAM,YAAY,CAAA;AACnB,OAAO,EAAe,KAAK,YAAY,EAAkB,MAAM,mBAAmB,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAIzD,qBAAa,KAAK;IAChB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAmB;IACtD,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,GAAG,CAAQ;gBAGjB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,YAAY,EAC1B,GAAG,CAAC,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAC/C,cAAc,EAAc,WAAW,EACxC,MAAM,YAAY,CAAA;AACnB,OAAO,EAAe,KAAK,YAAY,EAAkB,MAAM,mBAAmB,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAIzD,qBAAa,KAAK;IAChB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAmC;IAC7D,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,GAAG,CAAQ;gBAGjB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,YAAY,EAC1B,GAAG,CAAC,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAgB9C,mDAAmD;IAC7C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAkB1E,oDAAoD;IAC9C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IA8BhF,qDAAqD;IAC9C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;IAkChH,QAAQ,IAAI,UAAU;IACtB,UAAU,IAAI,UAAU,EAAE;IAE1B,KAAK,IAAI,IAAI;IAIb,gEAAgE;IAChE,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI;IAI7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,aAAa;CAStB"}
|
package/dist/src/core/agent.js
CHANGED
|
@@ -12,14 +12,16 @@ export class Agent {
|
|
|
12
12
|
toolRegistry;
|
|
13
13
|
toolExecutor;
|
|
14
14
|
permissionManager;
|
|
15
|
+
metadata;
|
|
15
16
|
state;
|
|
16
17
|
cwd;
|
|
17
|
-
constructor(config, adapter, toolRegistry, cwd, permissionManager) {
|
|
18
|
+
constructor(config, adapter, toolRegistry, cwd, permissionManager, metadata) {
|
|
18
19
|
this.config = config;
|
|
19
20
|
this.adapter = adapter;
|
|
20
21
|
this.toolRegistry = toolRegistry;
|
|
21
22
|
this.toolExecutor = new ToolExecutor(toolRegistry);
|
|
22
23
|
this.permissionManager = permissionManager;
|
|
24
|
+
this.metadata = metadata;
|
|
23
25
|
this.cwd = cwd ?? process.cwd();
|
|
24
26
|
this.state = {
|
|
25
27
|
status: 'idle',
|
|
@@ -133,6 +135,8 @@ export class Agent {
|
|
|
133
135
|
agentRole: 'assistant',
|
|
134
136
|
cwd: this.cwd,
|
|
135
137
|
abortSignal,
|
|
138
|
+
thinkingEnabled: this.config.thinkingEnabled,
|
|
139
|
+
metadata: this.metadata,
|
|
136
140
|
}, this.permissionManager);
|
|
137
141
|
}
|
|
138
142
|
toAgentResult(result) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,WAAW,EAAqC,MAAM,mBAAmB,CAAA;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,MAAM,UAAU,GAAe,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAA;AAEpE,MAAM,OAAO,KAAK;IACP,MAAM,CAAa;IACX,OAAO,CAAY;IACnB,YAAY,CAAc;IAC1B,YAAY,CAAc;IAC1B,iBAAiB,CAAoB;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/core/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Replacement — prevents context overflow from large tool outputs.
|
|
3
|
+
*
|
|
4
|
+
* When a tool result exceeds the configured threshold, the system:
|
|
5
|
+
* 1. Truncates the content to the limit
|
|
6
|
+
* 2. Appends a notice with the total size
|
|
7
|
+
* 3. Tracks replacements so downstream systems can reference the full content
|
|
8
|
+
*
|
|
9
|
+
* This is critical for tools like file_read and grep that can return huge outputs.
|
|
10
|
+
*/
|
|
11
|
+
export interface ContentReplacementOptions {
|
|
12
|
+
/** Maximum characters per tool result before truncation. Default: 16KB. */
|
|
13
|
+
maxToolResultSize?: number;
|
|
14
|
+
/** Lines to keep from the start of truncated content. Default: 200. */
|
|
15
|
+
headLines?: number;
|
|
16
|
+
/** Lines to keep from the end of truncated content. Default: 100. */
|
|
17
|
+
tailLines?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ReplacedContent {
|
|
20
|
+
readonly toolName: string;
|
|
21
|
+
readonly toolUseId: string;
|
|
22
|
+
readonly originalSize: number;
|
|
23
|
+
readonly truncatedSize: number;
|
|
24
|
+
readonly timestamp: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class ContentReplacer {
|
|
27
|
+
private readonly maxSize;
|
|
28
|
+
private readonly headLines;
|
|
29
|
+
private readonly tailLines;
|
|
30
|
+
private history;
|
|
31
|
+
constructor(options?: ContentReplacementOptions);
|
|
32
|
+
/**
|
|
33
|
+
* If the content exceeds the limit, truncate with head/tail preservation.
|
|
34
|
+
* Returns the (possibly truncated) content string.
|
|
35
|
+
*/
|
|
36
|
+
truncateIfNeeded(content: string, toolName: string, toolUseId: string): string;
|
|
37
|
+
private recordReplacement;
|
|
38
|
+
/** Get statistics about recent truncations. */
|
|
39
|
+
getStats(): {
|
|
40
|
+
count: number;
|
|
41
|
+
totalSaved: number;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=content-replacement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-replacement.d.ts","sourceRoot":"","sources":["../../../src/core/content-replacement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,OAAO,CAAwB;gBAE3B,OAAO,GAAE,yBAA8B;IAMnD;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAwB9E,OAAO,CAAC,iBAAiB;IAmBzB,+CAA+C;IAC/C,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAOlD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Replacement — prevents context overflow from large tool outputs.
|
|
3
|
+
*
|
|
4
|
+
* When a tool result exceeds the configured threshold, the system:
|
|
5
|
+
* 1. Truncates the content to the limit
|
|
6
|
+
* 2. Appends a notice with the total size
|
|
7
|
+
* 3. Tracks replacements so downstream systems can reference the full content
|
|
8
|
+
*
|
|
9
|
+
* This is critical for tools like file_read and grep that can return huge outputs.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_MAX_SIZE = 16_384; // 16 KB
|
|
12
|
+
const DEFAULT_HEAD_LINES = 200;
|
|
13
|
+
const DEFAULT_TAIL_LINES = 100;
|
|
14
|
+
export class ContentReplacer {
|
|
15
|
+
maxSize;
|
|
16
|
+
headLines;
|
|
17
|
+
tailLines;
|
|
18
|
+
history = [];
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
this.maxSize = options.maxToolResultSize ?? DEFAULT_MAX_SIZE;
|
|
21
|
+
this.headLines = options.headLines ?? DEFAULT_HEAD_LINES;
|
|
22
|
+
this.tailLines = options.tailLines ?? DEFAULT_TAIL_LINES;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* If the content exceeds the limit, truncate with head/tail preservation.
|
|
26
|
+
* Returns the (possibly truncated) content string.
|
|
27
|
+
*/
|
|
28
|
+
truncateIfNeeded(content, toolName, toolUseId) {
|
|
29
|
+
if (content.length <= this.maxSize)
|
|
30
|
+
return content;
|
|
31
|
+
const lines = content.split('\n');
|
|
32
|
+
const totalLines = lines.length;
|
|
33
|
+
// If line count is small enough, just character-truncate
|
|
34
|
+
if (totalLines <= this.headLines + this.tailLines + 5) {
|
|
35
|
+
const truncated = content.slice(0, this.maxSize);
|
|
36
|
+
this.recordReplacement(toolName, toolUseId, content.length, truncated.length);
|
|
37
|
+
return truncated +
|
|
38
|
+
`\n\n[Content truncated: ${content.length.toLocaleString()} chars total, showing first ${this.maxSize.toLocaleString()} chars]`;
|
|
39
|
+
}
|
|
40
|
+
// Head + tail line preservation
|
|
41
|
+
const head = lines.slice(0, this.headLines).join('\n');
|
|
42
|
+
const tail = lines.slice(-this.tailLines).join('\n');
|
|
43
|
+
const omitted = totalLines - this.headLines - this.tailLines;
|
|
44
|
+
const result = `${head}\n\n... [${omitted} lines omitted — ${content.length.toLocaleString()} chars total] ...\n\n${tail}`;
|
|
45
|
+
this.recordReplacement(toolName, toolUseId, content.length, result.length);
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
recordReplacement(toolName, toolUseId, originalSize, truncatedSize) {
|
|
49
|
+
this.history.push({
|
|
50
|
+
toolName,
|
|
51
|
+
toolUseId,
|
|
52
|
+
originalSize,
|
|
53
|
+
truncatedSize,
|
|
54
|
+
timestamp: Date.now(),
|
|
55
|
+
});
|
|
56
|
+
// Keep only last 50 replacements
|
|
57
|
+
if (this.history.length > 50) {
|
|
58
|
+
this.history = this.history.slice(-50);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Get statistics about recent truncations. */
|
|
62
|
+
getStats() {
|
|
63
|
+
const totalSaved = this.history.reduce((sum, r) => sum + (r.originalSize - r.truncatedSize), 0);
|
|
64
|
+
return { count: this.history.length, totalSaved };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=content-replacement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-replacement.js","sourceRoot":"","sources":["../../../src/core/content-replacement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventBus — typed pub/sub event system for cmdr lifecycle events.
|
|
3
|
+
*
|
|
4
|
+
* Provides a decoupled communication layer beyond plugin hooks.
|
|
5
|
+
* Supports:
|
|
6
|
+
* - Typed event emission and subscription
|
|
7
|
+
* - One-time listeners
|
|
8
|
+
* - Wildcard subscriptions
|
|
9
|
+
* - Async handlers
|
|
10
|
+
*/
|
|
11
|
+
import type { TokenUsage, ToolResult } from './types.js';
|
|
12
|
+
export interface CmdrEvents {
|
|
13
|
+
'session:start': {
|
|
14
|
+
sessionId: string;
|
|
15
|
+
};
|
|
16
|
+
'session:end': {
|
|
17
|
+
sessionId: string;
|
|
18
|
+
messageCount: number;
|
|
19
|
+
totalTokens: TokenUsage;
|
|
20
|
+
};
|
|
21
|
+
'session:compact': {
|
|
22
|
+
before: number;
|
|
23
|
+
after: number;
|
|
24
|
+
tokensSaved: number;
|
|
25
|
+
};
|
|
26
|
+
'turn:start': {
|
|
27
|
+
turn: number;
|
|
28
|
+
model: string;
|
|
29
|
+
};
|
|
30
|
+
'turn:end': {
|
|
31
|
+
turn: number;
|
|
32
|
+
tokenUsage: TokenUsage;
|
|
33
|
+
toolCallCount: number;
|
|
34
|
+
};
|
|
35
|
+
'tool:before': {
|
|
36
|
+
name: string;
|
|
37
|
+
input: Record<string, unknown>;
|
|
38
|
+
};
|
|
39
|
+
'tool:after': {
|
|
40
|
+
name: string;
|
|
41
|
+
result: ToolResult;
|
|
42
|
+
durationMs: number;
|
|
43
|
+
};
|
|
44
|
+
'tool:error': {
|
|
45
|
+
name: string;
|
|
46
|
+
error: string;
|
|
47
|
+
};
|
|
48
|
+
'tool:denied': {
|
|
49
|
+
name: string;
|
|
50
|
+
reason: string;
|
|
51
|
+
};
|
|
52
|
+
'llm:request': {
|
|
53
|
+
model: string;
|
|
54
|
+
messageCount: number;
|
|
55
|
+
};
|
|
56
|
+
'llm:response': {
|
|
57
|
+
model: string;
|
|
58
|
+
usage: TokenUsage;
|
|
59
|
+
stopReason: string;
|
|
60
|
+
};
|
|
61
|
+
'llm:stream:text': {
|
|
62
|
+
chunk: string;
|
|
63
|
+
};
|
|
64
|
+
'llm:error': {
|
|
65
|
+
model: string;
|
|
66
|
+
error: string;
|
|
67
|
+
};
|
|
68
|
+
'memory:read': {
|
|
69
|
+
scope: string;
|
|
70
|
+
};
|
|
71
|
+
'memory:write': {
|
|
72
|
+
scope: string;
|
|
73
|
+
bytes: number;
|
|
74
|
+
};
|
|
75
|
+
'memory:consolidate': {
|
|
76
|
+
entriesBefore: number;
|
|
77
|
+
entriesAfter: number;
|
|
78
|
+
};
|
|
79
|
+
'agent:start': {
|
|
80
|
+
name: string;
|
|
81
|
+
task: string;
|
|
82
|
+
};
|
|
83
|
+
'agent:complete': {
|
|
84
|
+
name: string;
|
|
85
|
+
success: boolean;
|
|
86
|
+
turns: number;
|
|
87
|
+
};
|
|
88
|
+
'agent:error': {
|
|
89
|
+
name: string;
|
|
90
|
+
error: string;
|
|
91
|
+
};
|
|
92
|
+
'user:message': {
|
|
93
|
+
text: string;
|
|
94
|
+
tokenEstimate: number;
|
|
95
|
+
};
|
|
96
|
+
'user:command': {
|
|
97
|
+
command: string;
|
|
98
|
+
args: string;
|
|
99
|
+
};
|
|
100
|
+
'user:abort': {};
|
|
101
|
+
}
|
|
102
|
+
export type EventName = keyof CmdrEvents;
|
|
103
|
+
type Listener<T> = (data: T) => void | Promise<void>;
|
|
104
|
+
export declare class EventBus {
|
|
105
|
+
private listeners;
|
|
106
|
+
private wildcardListeners;
|
|
107
|
+
/** Subscribe to a specific event. Returns an unsubscribe function. */
|
|
108
|
+
on<E extends EventName>(event: E, handler: Listener<CmdrEvents[E]>): () => void;
|
|
109
|
+
/** Subscribe to a specific event, auto-remove after first fire. */
|
|
110
|
+
once<E extends EventName>(event: E, handler: Listener<CmdrEvents[E]>): () => void;
|
|
111
|
+
/** Subscribe to ALL events (wildcard). */
|
|
112
|
+
onAny(handler: Listener<{
|
|
113
|
+
event: string;
|
|
114
|
+
data: unknown;
|
|
115
|
+
}>): () => void;
|
|
116
|
+
/** Emit an event to all listeners. */
|
|
117
|
+
emit<E extends EventName>(event: E, data: CmdrEvents[E]): Promise<void>;
|
|
118
|
+
/** Remove all listeners for a specific event. */
|
|
119
|
+
off<E extends EventName>(event: E): void;
|
|
120
|
+
/** Remove ALL listeners. */
|
|
121
|
+
removeAll(): void;
|
|
122
|
+
/** Get count of listeners for an event. */
|
|
123
|
+
listenerCount(event: EventName): number;
|
|
124
|
+
private addListener;
|
|
125
|
+
}
|
|
126
|
+
/** Singleton event bus for the cmdr process. */
|
|
127
|
+
export declare const globalEventBus: EventBus;
|
|
128
|
+
export {};
|
|
129
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../../src/core/event-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EventBus — typed pub/sub event system for cmdr lifecycle events.
|
|
3
|
+
*
|
|
4
|
+
* Provides a decoupled communication layer beyond plugin hooks.
|
|
5
|
+
* Supports:
|
|
6
|
+
* - Typed event emission and subscription
|
|
7
|
+
* - One-time listeners
|
|
8
|
+
* - Wildcard subscriptions
|
|
9
|
+
* - Async handlers
|
|
10
|
+
*/
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// EventBus implementation
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
export class EventBus {
|
|
15
|
+
listeners = new Map();
|
|
16
|
+
wildcardListeners = [];
|
|
17
|
+
/** Subscribe to a specific event. Returns an unsubscribe function. */
|
|
18
|
+
on(event, handler) {
|
|
19
|
+
return this.addListener(event, handler, false);
|
|
20
|
+
}
|
|
21
|
+
/** Subscribe to a specific event, auto-remove after first fire. */
|
|
22
|
+
once(event, handler) {
|
|
23
|
+
return this.addListener(event, handler, true);
|
|
24
|
+
}
|
|
25
|
+
/** Subscribe to ALL events (wildcard). */
|
|
26
|
+
onAny(handler) {
|
|
27
|
+
const entry = { handler, once: false };
|
|
28
|
+
this.wildcardListeners.push(entry);
|
|
29
|
+
return () => {
|
|
30
|
+
const idx = this.wildcardListeners.indexOf(entry);
|
|
31
|
+
if (idx !== -1)
|
|
32
|
+
this.wildcardListeners.splice(idx, 1);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** Emit an event to all listeners. */
|
|
36
|
+
async emit(event, data) {
|
|
37
|
+
// Specific listeners
|
|
38
|
+
const entries = this.listeners.get(event);
|
|
39
|
+
if (entries) {
|
|
40
|
+
const toRemove = [];
|
|
41
|
+
for (let i = 0; i < entries.length; i++) {
|
|
42
|
+
try {
|
|
43
|
+
await entries[i].handler(data);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Don't let listener errors propagate
|
|
47
|
+
}
|
|
48
|
+
if (entries[i].once)
|
|
49
|
+
toRemove.push(i);
|
|
50
|
+
}
|
|
51
|
+
// Remove one-time listeners in reverse order
|
|
52
|
+
for (let i = toRemove.length - 1; i >= 0; i--) {
|
|
53
|
+
entries.splice(toRemove[i], 1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Wildcard listeners
|
|
57
|
+
const wcToRemove = [];
|
|
58
|
+
for (let i = 0; i < this.wildcardListeners.length; i++) {
|
|
59
|
+
try {
|
|
60
|
+
await this.wildcardListeners[i].handler({ event, data });
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Don't let listener errors propagate
|
|
64
|
+
}
|
|
65
|
+
if (this.wildcardListeners[i].once)
|
|
66
|
+
wcToRemove.push(i);
|
|
67
|
+
}
|
|
68
|
+
for (let i = wcToRemove.length - 1; i >= 0; i--) {
|
|
69
|
+
this.wildcardListeners.splice(wcToRemove[i], 1);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** Remove all listeners for a specific event. */
|
|
73
|
+
off(event) {
|
|
74
|
+
this.listeners.delete(event);
|
|
75
|
+
}
|
|
76
|
+
/** Remove ALL listeners. */
|
|
77
|
+
removeAll() {
|
|
78
|
+
this.listeners.clear();
|
|
79
|
+
this.wildcardListeners = [];
|
|
80
|
+
}
|
|
81
|
+
/** Get count of listeners for an event. */
|
|
82
|
+
listenerCount(event) {
|
|
83
|
+
return (this.listeners.get(event)?.length ?? 0);
|
|
84
|
+
}
|
|
85
|
+
addListener(event, handler, once) {
|
|
86
|
+
if (!this.listeners.has(event)) {
|
|
87
|
+
this.listeners.set(event, []);
|
|
88
|
+
}
|
|
89
|
+
const entry = { handler: handler, once };
|
|
90
|
+
this.listeners.get(event).push(entry);
|
|
91
|
+
return () => {
|
|
92
|
+
const entries = this.listeners.get(event);
|
|
93
|
+
if (entries) {
|
|
94
|
+
const idx = entries.indexOf(entry);
|
|
95
|
+
if (idx !== -1)
|
|
96
|
+
entries.splice(idx, 1);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/** Singleton event bus for the cmdr process. */
|
|
102
|
+
export const globalEventBus = new EventBus();
|
|
103
|
+
//# sourceMappingURL=event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/core/event-bus.ts"],"names":[],"mappings":"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"}
|