cmdr-agent 1.2.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/dist/bin/cmdr.js +3 -1
- package/dist/bin/cmdr.js.map +1 -1
- package/dist/src/agents/executor.d.ts +32 -0
- package/dist/src/agents/executor.d.ts.map +1 -0
- package/dist/src/agents/executor.js +50 -0
- package/dist/src/agents/executor.js.map +1 -0
- package/dist/src/agents/index.d.ts +7 -0
- package/dist/src/agents/index.d.ts.map +1 -0
- package/dist/src/agents/index.js +7 -0
- package/dist/src/agents/index.js.map +1 -0
- package/dist/src/agents/registry.d.ts +36 -0
- package/dist/src/agents/registry.d.ts.map +1 -0
- package/dist/src/agents/registry.js +168 -0
- package/dist/src/agents/registry.js.map +1 -0
- package/dist/src/agents/subagent-tool.d.ts +27 -0
- package/dist/src/agents/subagent-tool.d.ts.map +1 -0
- package/dist/src/agents/subagent-tool.js +36 -0
- package/dist/src/agents/subagent-tool.js.map +1 -0
- package/dist/src/cli/args.d.ts +2 -0
- package/dist/src/cli/args.d.ts.map +1 -1
- package/dist/src/cli/args.js +8 -0
- package/dist/src/cli/args.js.map +1 -1
- package/dist/src/cli/commands.d.ts.map +1 -1
- package/dist/src/cli/commands.js +92 -4
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/ink/App.d.ts +4 -0
- package/dist/src/cli/ink/App.d.ts.map +1 -1
- package/dist/src/cli/ink/App.js +164 -20
- package/dist/src/cli/ink/App.js.map +1 -1
- package/dist/src/cli/ink/StatusBar.d.ts +17 -0
- package/dist/src/cli/ink/StatusBar.d.ts.map +1 -0
- package/dist/src/cli/ink/StatusBar.js +32 -0
- package/dist/src/cli/ink/StatusBar.js.map +1 -0
- package/dist/src/cli/repl.d.ts +2 -0
- package/dist/src/cli/repl.d.ts.map +1 -1
- package/dist/src/cli/repl.js +117 -4
- package/dist/src/cli/repl.js.map +1 -1
- package/dist/src/cli/theme.d.ts +42 -22
- package/dist/src/cli/theme.d.ts.map +1 -1
- package/dist/src/cli/theme.js +25 -1
- package/dist/src/cli/theme.js.map +1 -1
- package/dist/src/cli/themes.d.ts +57 -0
- package/dist/src/cli/themes.d.ts.map +1 -0
- package/dist/src/cli/themes.js +98 -0
- package/dist/src/cli/themes.js.map +1 -0
- package/dist/src/commands/index.d.ts +3 -0
- package/dist/src/commands/index.d.ts.map +1 -0
- package/dist/src/commands/index.js +2 -0
- package/dist/src/commands/index.js.map +1 -0
- package/dist/src/commands/loader.d.ts +35 -0
- package/dist/src/commands/loader.d.ts.map +1 -0
- package/dist/src/commands/loader.js +134 -0
- package/dist/src/commands/loader.js.map +1 -0
- package/dist/src/config/config-loader.d.ts.map +1 -1
- package/dist/src/config/config-loader.js +2 -0
- package/dist/src/config/config-loader.js.map +1 -1
- package/dist/src/config/defaults.d.ts.map +1 -1
- package/dist/src/config/defaults.js +1 -0
- package/dist/src/config/defaults.js.map +1 -1
- package/dist/src/config/schema.d.ts +3 -0
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +1 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/core/agent-runner.d.ts.map +1 -1
- package/dist/src/core/agent-runner.js +39 -5
- package/dist/src/core/agent-runner.js.map +1 -1
- package/dist/src/core/agent.d.ts +1 -1
- package/dist/src/core/agent.d.ts.map +1 -1
- package/dist/src/core/agent.js +4 -3
- package/dist/src/core/agent.js.map +1 -1
- package/dist/src/core/intent.d.ts +2 -0
- package/dist/src/core/intent.d.ts.map +1 -1
- package/dist/src/core/intent.js +12 -0
- package/dist/src/core/intent.js.map +1 -1
- package/dist/src/core/presets.d.ts.map +1 -1
- package/dist/src/core/presets.js +49 -15
- package/dist/src/core/presets.js.map +1 -1
- package/dist/src/core/types.d.ts +5 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/llm/model-registry.d.ts +25 -0
- package/dist/src/llm/model-registry.d.ts.map +1 -1
- package/dist/src/llm/model-registry.js +223 -22
- package/dist/src/llm/model-registry.js.map +1 -1
- package/dist/src/llm/model-watcher.d.ts +26 -0
- package/dist/src/llm/model-watcher.d.ts.map +1 -0
- package/dist/src/llm/model-watcher.js +130 -0
- package/dist/src/llm/model-watcher.js.map +1 -0
- package/dist/src/llm/ollama.d.ts +13 -1
- package/dist/src/llm/ollama.d.ts.map +1 -1
- package/dist/src/llm/ollama.js +309 -93
- package/dist/src/llm/ollama.js.map +1 -1
- package/dist/src/session/compaction.js +4 -0
- package/dist/src/session/compaction.js.map +1 -1
- package/dist/src/session/project-context.d.ts.map +1 -1
- package/dist/src/session/project-context.js +54 -4
- package/dist/src/session/project-context.js.map +1 -1
- package/dist/src/session/prompt-builder.d.ts +28 -1
- package/dist/src/session/prompt-builder.d.ts.map +1 -1
- package/dist/src/session/prompt-builder.js +97 -23
- package/dist/src/session/prompt-builder.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +10 -3
- package/dist/src/session/session-manager.d.ts.map +1 -1
- package/dist/src/session/session-manager.js +53 -16
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session/session-persistence.d.ts +12 -0
- package/dist/src/session/session-persistence.d.ts.map +1 -1
- package/dist/src/session/session-persistence.js +94 -4
- package/dist/src/session/session-persistence.js.map +1 -1
- package/dist/src/tools/built-in/bash-security.d.ts +13 -0
- package/dist/src/tools/built-in/bash-security.d.ts.map +1 -0
- package/dist/src/tools/built-in/bash-security.js +53 -0
- package/dist/src/tools/built-in/bash-security.js.map +1 -0
- package/dist/src/tools/built-in/bash.d.ts.map +1 -1
- package/dist/src/tools/built-in/bash.js +7 -1
- package/dist/src/tools/built-in/bash.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -72,6 +72,7 @@ cmdr --cwd /path/to/project # Override working directory
|
|
|
72
72
|
| `--cwd <path>` | Set working directory |
|
|
73
73
|
| `--verbose` | Print full tool output |
|
|
74
74
|
| `--dangerously-skip-permissions` | Auto-approve all tool calls |
|
|
75
|
+
| `--max-turns <n>` | Limit agent tool-call turns |
|
|
75
76
|
| `-h, --help` | Show help |
|
|
76
77
|
| `-v, --version` | Show version |
|
|
77
78
|
|
|
@@ -203,6 +204,24 @@ enabled = false # opt-in local-only usage stats
|
|
|
203
204
|
| `CMDR_MODEL` | `qwen2.5-coder:14b` | Default model |
|
|
204
205
|
| `CMDR_OLLAMA_URL` | `http://localhost:11434` | Ollama server URL |
|
|
205
206
|
|
|
207
|
+
## Benchmark Results
|
|
208
|
+
|
|
209
|
+
### Custom Eval Suite (50 tasks, 4 tiers)
|
|
210
|
+
|
|
211
|
+
| Model | Pass Rate | Score | Grade |
|
|
212
|
+
|---|---|---|---|
|
|
213
|
+
| qwen3-coder:latest (14B) | 42/50 (84%) | ~160/197 | **S** |
|
|
214
|
+
|
|
215
|
+
Grade A at 38/50 (71.6%) after the v1.3.0 system prompt rewrite alone (+8 tasks, +19pp from v1.2). Verify script hardening pushed it to 42/50.
|
|
216
|
+
|
|
217
|
+
### HumanEval (164 tasks, pass@1)
|
|
218
|
+
|
|
219
|
+
| Model | pass@1 | Passed |
|
|
220
|
+
|---|---|---|
|
|
221
|
+
| minimax-m2.5:cloud | **95.7%** | 157/164 |
|
|
222
|
+
|
|
223
|
+
All benchmarks run through cmdr's eval harness on local hardware (Ollama). No cloud inference for the custom eval suite.
|
|
224
|
+
|
|
206
225
|
## Architecture
|
|
207
226
|
|
|
208
227
|
```
|
package/dist/bin/cmdr.js
CHANGED
|
@@ -11,7 +11,7 @@ import { GREEN, PURPLE, DIM, renderError, WHITE, CYAN } from '../src/cli/theme.j
|
|
|
11
11
|
import { OllamaAdapter } from '../src/llm/ollama.js';
|
|
12
12
|
import { checkForUpdate } from '../src/cli/update-checker.js';
|
|
13
13
|
import * as readline from 'readline';
|
|
14
|
-
const VERSION = '
|
|
14
|
+
const VERSION = '2.0.0';
|
|
15
15
|
/** Prompt user to pick a model from the list. */
|
|
16
16
|
function promptModelSelection(models) {
|
|
17
17
|
return new Promise((resolve) => {
|
|
@@ -93,6 +93,8 @@ async function main() {
|
|
|
93
93
|
continue: args.continue,
|
|
94
94
|
verbose: args.verbose,
|
|
95
95
|
team: args.team,
|
|
96
|
+
maxTurns: args.maxTurns,
|
|
97
|
+
outputFormat: args.outputFormat,
|
|
96
98
|
});
|
|
97
99
|
}
|
|
98
100
|
catch (err) {
|
package/dist/bin/cmdr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmdr.js","sourceRoot":"","sources":["../../bin/cmdr.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cmdr.js","sourceRoot":"","sources":["../../bin/cmdr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Executor — runs a subagent to completion in an isolated context.
|
|
3
|
+
*
|
|
4
|
+
* Each subagent gets its own AgentRunner with:
|
|
5
|
+
* - Restricted tool set (only tools listed in the agent definition)
|
|
6
|
+
* - Its own conversation history (does NOT pollute parent context)
|
|
7
|
+
* - Its own system prompt
|
|
8
|
+
*/
|
|
9
|
+
import type { LLMAdapter } from '../core/types.js';
|
|
10
|
+
import { ToolRegistry } from '../tools/registry.js';
|
|
11
|
+
import type { AgentDefinition } from './registry.js';
|
|
12
|
+
export interface SubagentResult {
|
|
13
|
+
output: string;
|
|
14
|
+
tokensUsed: {
|
|
15
|
+
input: number;
|
|
16
|
+
output: number;
|
|
17
|
+
};
|
|
18
|
+
turns: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class AgentExecutor {
|
|
21
|
+
/**
|
|
22
|
+
* Run a subagent to completion with its own isolated context.
|
|
23
|
+
*
|
|
24
|
+
* @param definition — The agent definition (from registry)
|
|
25
|
+
* @param task — The task/question to delegate
|
|
26
|
+
* @param parentModel — The parent agent's model (used if definition.model is null)
|
|
27
|
+
* @param adapter — The LLM adapter to use
|
|
28
|
+
* @param parentToolRegistry — The parent's full tool registry (we pick allowed tools)
|
|
29
|
+
*/
|
|
30
|
+
execute(definition: AgentDefinition, task: string, parentModel: string, adapter: LLMAdapter, parentToolRegistry: ToolRegistry): Promise<SubagentResult>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/agents/executor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,KAAK,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,aAAa;IACxB;;;;;;;;OAQG;IACG,OAAO,CACX,UAAU,EAAE,eAAe,EAC3B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,EACnB,kBAAkB,EAAE,YAAY,GAC/B,OAAO,CAAC,cAAc,CAAC;CAkC3B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Executor — runs a subagent to completion in an isolated context.
|
|
3
|
+
*
|
|
4
|
+
* Each subagent gets its own AgentRunner with:
|
|
5
|
+
* - Restricted tool set (only tools listed in the agent definition)
|
|
6
|
+
* - Its own conversation history (does NOT pollute parent context)
|
|
7
|
+
* - Its own system prompt
|
|
8
|
+
*/
|
|
9
|
+
import { Agent } from '../core/agent.js';
|
|
10
|
+
import { ToolRegistry } from '../tools/registry.js';
|
|
11
|
+
export class AgentExecutor {
|
|
12
|
+
/**
|
|
13
|
+
* Run a subagent to completion with its own isolated context.
|
|
14
|
+
*
|
|
15
|
+
* @param definition — The agent definition (from registry)
|
|
16
|
+
* @param task — The task/question to delegate
|
|
17
|
+
* @param parentModel — The parent agent's model (used if definition.model is null)
|
|
18
|
+
* @param adapter — The LLM adapter to use
|
|
19
|
+
* @param parentToolRegistry — The parent's full tool registry (we pick allowed tools)
|
|
20
|
+
*/
|
|
21
|
+
async execute(definition, task, parentModel, adapter, parentToolRegistry) {
|
|
22
|
+
// 1. Create a restricted ToolRegistry with only the agent's allowed tools
|
|
23
|
+
const agentTools = new ToolRegistry();
|
|
24
|
+
for (const toolName of definition.tools) {
|
|
25
|
+
const tool = parentToolRegistry.get(toolName);
|
|
26
|
+
if (tool)
|
|
27
|
+
agentTools.register(tool);
|
|
28
|
+
}
|
|
29
|
+
// 2. Create Agent with the subagent's config (isolated context)
|
|
30
|
+
const agent = new Agent({
|
|
31
|
+
name: definition.name,
|
|
32
|
+
model: definition.model ?? parentModel,
|
|
33
|
+
systemPrompt: definition.systemPrompt,
|
|
34
|
+
tools: definition.tools,
|
|
35
|
+
maxTurns: definition.maxTurns,
|
|
36
|
+
temperature: definition.temperature,
|
|
37
|
+
}, adapter, agentTools);
|
|
38
|
+
// 3. Run to completion, collecting all text output
|
|
39
|
+
const result = await agent.run(task);
|
|
40
|
+
return {
|
|
41
|
+
output: result.output,
|
|
42
|
+
tokensUsed: {
|
|
43
|
+
input: result.tokenUsage.input_tokens,
|
|
44
|
+
output: result.tokenUsage.output_tokens,
|
|
45
|
+
},
|
|
46
|
+
turns: result.toolCalls.length,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/agents/executor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AASnD,MAAM,OAAO,aAAa;IACxB;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,CACX,UAA2B,EAC3B,IAAY,EACZ,WAAmB,EACnB,OAAmB,EACnB,kBAAgC;QAEhC,0EAA0E;QAC1E,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE,CAAA;QACrC,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC7C,IAAI,IAAI;gBAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAED,gEAAgE;QAChE,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB;YACE,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,WAAW;YACtC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,WAAW,EAAE,UAAU,CAAC,WAAW;SACpC,EACD,OAAO,EACP,UAAU,CACX,CAAA;QAED,mDAAmD;QACnD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEpC,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE;gBACV,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY;gBACrC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,aAAa;aACxC;YACD,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM;SAC/B,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent system — subagents as tools.
|
|
3
|
+
*/
|
|
4
|
+
export { AgentRegistry, type AgentDefinition } from './registry.js';
|
|
5
|
+
export { AgentExecutor, type SubagentResult } from './executor.js';
|
|
6
|
+
export { createSubagentTool } from './subagent-tool.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAwB,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,aAAa,EAAuB,MAAM,eAAe,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Registry — discovers and manages subagent definitions from markdown files.
|
|
3
|
+
*
|
|
4
|
+
* Loading priority (project overrides user overrides bundled):
|
|
5
|
+
* .cmdr/agents/*.md — project-level (shared with team)
|
|
6
|
+
* ~/.cmdr/agents/*.md — user-level (personal agents)
|
|
7
|
+
* src/agents/bundled/*.md — bundled with cmdr (shipped defaults)
|
|
8
|
+
*/
|
|
9
|
+
export interface AgentDefinition {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
kind: 'local' | 'remote';
|
|
13
|
+
tools: string[];
|
|
14
|
+
model: string | null;
|
|
15
|
+
temperature: number;
|
|
16
|
+
maxTurns: number;
|
|
17
|
+
systemPrompt: string;
|
|
18
|
+
source: 'bundled' | 'user' | 'project';
|
|
19
|
+
filePath: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class AgentRegistry {
|
|
22
|
+
private agents;
|
|
23
|
+
/** Load all agent definitions from all three source directories. */
|
|
24
|
+
loadAll(projectRoot: string): Promise<void>;
|
|
25
|
+
/** Get a specific agent by name. */
|
|
26
|
+
get(name: string): AgentDefinition | undefined;
|
|
27
|
+
/** List all registered agents. */
|
|
28
|
+
list(): AgentDefinition[];
|
|
29
|
+
/** Check if an agent exists. */
|
|
30
|
+
has(name: string): boolean;
|
|
31
|
+
/** Register a runtime-defined agent (for programmatic use). */
|
|
32
|
+
register(def: AgentDefinition): void;
|
|
33
|
+
/** Unregister an agent. */
|
|
34
|
+
unregister(name: string): void;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/agents/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACxB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAmJD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAqC;IAEnD,oEAAoE;IAC9D,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBjD,oCAAoC;IACpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9C,kCAAkC;IAClC,IAAI,IAAI,eAAe,EAAE;IAIzB,gCAAgC;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,+DAA+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAIpC,2BAA2B;IAC3B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAG/B"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Registry — discovers and manages subagent definitions from markdown files.
|
|
3
|
+
*
|
|
4
|
+
* Loading priority (project overrides user overrides bundled):
|
|
5
|
+
* .cmdr/agents/*.md — project-level (shared with team)
|
|
6
|
+
* ~/.cmdr/agents/*.md — user-level (personal agents)
|
|
7
|
+
* src/agents/bundled/*.md — bundled with cmdr (shipped defaults)
|
|
8
|
+
*/
|
|
9
|
+
import { readdir, readFile } from 'fs/promises';
|
|
10
|
+
import { join, dirname } from 'path';
|
|
11
|
+
import { fileURLToPath } from 'url';
|
|
12
|
+
import { existsSync } from 'fs';
|
|
13
|
+
import { homedir } from 'os';
|
|
14
|
+
function parseFrontmatter(content) {
|
|
15
|
+
const match = content.match(/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/);
|
|
16
|
+
if (!match) {
|
|
17
|
+
return { frontmatter: {}, body: content };
|
|
18
|
+
}
|
|
19
|
+
const yamlBlock = match[1];
|
|
20
|
+
const body = match[2].trim();
|
|
21
|
+
const frontmatter = {};
|
|
22
|
+
let currentKey = '';
|
|
23
|
+
let inArray = false;
|
|
24
|
+
let arrayItems = [];
|
|
25
|
+
for (const line of yamlBlock.split('\n')) {
|
|
26
|
+
const trimmed = line.trim();
|
|
27
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
28
|
+
continue;
|
|
29
|
+
// Array item
|
|
30
|
+
if (inArray && trimmed.startsWith('- ')) {
|
|
31
|
+
arrayItems.push(trimmed.slice(2).trim());
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
// End previous array
|
|
35
|
+
if (inArray) {
|
|
36
|
+
frontmatter[currentKey] = arrayItems;
|
|
37
|
+
inArray = false;
|
|
38
|
+
arrayItems = [];
|
|
39
|
+
}
|
|
40
|
+
const colonIdx = trimmed.indexOf(':');
|
|
41
|
+
if (colonIdx === -1)
|
|
42
|
+
continue;
|
|
43
|
+
const key = trimmed.slice(0, colonIdx).trim();
|
|
44
|
+
const rawValue = trimmed.slice(colonIdx + 1).trim();
|
|
45
|
+
if (rawValue === '' || rawValue === '[]') {
|
|
46
|
+
// Could be start of an array or empty value
|
|
47
|
+
currentKey = key;
|
|
48
|
+
if (rawValue === '[]') {
|
|
49
|
+
frontmatter[key] = [];
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
inArray = true;
|
|
53
|
+
arrayItems = [];
|
|
54
|
+
}
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
// Parse value
|
|
58
|
+
if (rawValue === 'null' || rawValue === '~') {
|
|
59
|
+
frontmatter[key] = null;
|
|
60
|
+
}
|
|
61
|
+
else if (rawValue === 'true') {
|
|
62
|
+
frontmatter[key] = true;
|
|
63
|
+
}
|
|
64
|
+
else if (rawValue === 'false') {
|
|
65
|
+
frontmatter[key] = false;
|
|
66
|
+
}
|
|
67
|
+
else if (/^-?\d+(\.\d+)?$/.test(rawValue)) {
|
|
68
|
+
frontmatter[key] = Number(rawValue);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Strip quotes
|
|
72
|
+
frontmatter[key] = rawValue.replace(/^["']|["']$/g, '');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Flush last array
|
|
76
|
+
if (inArray) {
|
|
77
|
+
frontmatter[currentKey] = arrayItems;
|
|
78
|
+
}
|
|
79
|
+
return { frontmatter: frontmatter, body };
|
|
80
|
+
}
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// Agent file parser
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
function parseAgentFile(content, filePath, source) {
|
|
85
|
+
const { frontmatter, body } = parseFrontmatter(content);
|
|
86
|
+
if (!frontmatter.name || !frontmatter.description) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
name: frontmatter.name,
|
|
91
|
+
description: frontmatter.description,
|
|
92
|
+
kind: frontmatter.kind ?? 'local',
|
|
93
|
+
tools: Array.isArray(frontmatter.tools) ? frontmatter.tools : [],
|
|
94
|
+
model: frontmatter.model === undefined ? null : frontmatter.model,
|
|
95
|
+
temperature: frontmatter.temperature ?? 0.3,
|
|
96
|
+
maxTurns: frontmatter.max_turns ?? 15,
|
|
97
|
+
systemPrompt: body,
|
|
98
|
+
source,
|
|
99
|
+
filePath,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// Directory loader
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
async function loadAgentsFromDir(dir, source) {
|
|
106
|
+
if (!existsSync(dir))
|
|
107
|
+
return [];
|
|
108
|
+
const agents = [];
|
|
109
|
+
try {
|
|
110
|
+
const entries = await readdir(dir);
|
|
111
|
+
for (const entry of entries) {
|
|
112
|
+
if (!entry.endsWith('.md'))
|
|
113
|
+
continue;
|
|
114
|
+
const filePath = join(dir, entry);
|
|
115
|
+
const content = await readFile(filePath, 'utf-8');
|
|
116
|
+
const def = parseAgentFile(content, filePath, source);
|
|
117
|
+
if (def)
|
|
118
|
+
agents.push(def);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// Directory not readable — skip silently
|
|
123
|
+
}
|
|
124
|
+
return agents;
|
|
125
|
+
}
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
// AgentRegistry
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
export class AgentRegistry {
|
|
130
|
+
agents = new Map();
|
|
131
|
+
/** Load all agent definitions from all three source directories. */
|
|
132
|
+
async loadAll(projectRoot) {
|
|
133
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
134
|
+
// Load in priority order: bundled first, then user, then project
|
|
135
|
+
// Later sources override earlier ones (project > user > bundled)
|
|
136
|
+
const bundledDir = join(__dirname, 'bundled');
|
|
137
|
+
const userDir = join(homedir(), '.cmdr', 'agents');
|
|
138
|
+
const projectDir = join(projectRoot, '.cmdr', 'agents');
|
|
139
|
+
const bundled = await loadAgentsFromDir(bundledDir, 'bundled');
|
|
140
|
+
const user = await loadAgentsFromDir(userDir, 'user');
|
|
141
|
+
const project = await loadAgentsFromDir(projectDir, 'project');
|
|
142
|
+
// Register in priority order — later registrations override
|
|
143
|
+
for (const def of [...bundled, ...user, ...project]) {
|
|
144
|
+
this.agents.set(def.name, def);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** Get a specific agent by name. */
|
|
148
|
+
get(name) {
|
|
149
|
+
return this.agents.get(name);
|
|
150
|
+
}
|
|
151
|
+
/** List all registered agents. */
|
|
152
|
+
list() {
|
|
153
|
+
return Array.from(this.agents.values());
|
|
154
|
+
}
|
|
155
|
+
/** Check if an agent exists. */
|
|
156
|
+
has(name) {
|
|
157
|
+
return this.agents.has(name);
|
|
158
|
+
}
|
|
159
|
+
/** Register a runtime-defined agent (for programmatic use). */
|
|
160
|
+
register(def) {
|
|
161
|
+
this.agents.set(def.name, def);
|
|
162
|
+
}
|
|
163
|
+
/** Unregister an agent. */
|
|
164
|
+
unregister(name) {
|
|
165
|
+
this.agents.delete(name);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/agents/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAiC5B,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;IACtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5B,MAAM,WAAW,GAA4B,EAAE,CAAA;IAE/C,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,UAAU,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAEjD,aAAa;QACb,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACxC,SAAQ;QACV,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,EAAE,CAAC;YACZ,WAAW,CAAC,UAAU,CAAC,GAAG,UAAU,CAAA;YACpC,OAAO,GAAG,KAAK,CAAA;YACf,UAAU,GAAG,EAAE,CAAA;QACjB,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACrC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,SAAQ;QAE7B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAEnD,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACzC,4CAA4C;YAC5C,UAAU,GAAG,GAAG,CAAA;YAChB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,IAAI,CAAA;gBACd,UAAU,GAAG,EAAE,CAAA;YACjB,CAAC;YACD,SAAQ;QACV,CAAC;QAED,cAAc;QACd,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YAC5C,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;aAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC/B,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACzB,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAC1B,CAAC;aAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QACrC,CAAC;aAAM,CAAC;YACN,eAAe;YACf,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,EAAE,CAAC;QACZ,WAAW,CAAC,UAAU,CAAC,GAAG,UAAU,CAAA;IACtC,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,WAA6B,EAAE,IAAI,EAAE,CAAA;AAC7D,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,SAAS,cAAc,CACrB,OAAe,EACf,QAAgB,EAChB,MAAsC;IAEtC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAEvD,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,IAAI,EAAG,WAAW,CAAC,IAA2B,IAAI,OAAO;QACzD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAChE,KAAK,EAAE,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK;QACjE,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,GAAG;QAC3C,QAAQ,EAAE,WAAW,CAAC,SAAS,IAAI,EAAE;QACrC,YAAY,EAAE,IAAI;QAClB,MAAM;QACN,QAAQ;KACT,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,KAAK,UAAU,iBAAiB,CAC9B,GAAW,EACX,MAAsC;IAEtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAE/B,MAAM,MAAM,GAAsB,EAAE,CAAA;IACpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;QAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAQ;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACjC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACjD,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;YACrD,IAAI,GAAG;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,OAAO,aAAa;IAChB,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAA;IAEnD,oEAAoE;IACpE,KAAK,CAAC,OAAO,CAAC,WAAmB;QAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAEzD,iEAAiE;QACjE,iEAAiE;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAEvD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QAC9D,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QAE9D,4DAA4D;QAC5D,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,kCAAkC;IAClC,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,gCAAgC;IAChC,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,+DAA+D;IAC/D,QAAQ,CAAC,GAAoB;QAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,2BAA2B;IAC3B,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subagent Tool — wraps a subagent definition as a standard cmdr tool.
|
|
3
|
+
*
|
|
4
|
+
* When the main agent calls this tool, it:
|
|
5
|
+
* 1. Spins up an isolated subagent with restricted tools
|
|
6
|
+
* 2. Runs the task to completion
|
|
7
|
+
* 3. Returns the subagent's output as the tool result
|
|
8
|
+
*
|
|
9
|
+
* Subagent tools have 'read' permission — they're always safe from HITL
|
|
10
|
+
* perspective because the subagent itself has restricted tools.
|
|
11
|
+
*/
|
|
12
|
+
import type { AgentDefinition } from './registry.js';
|
|
13
|
+
import { AgentExecutor } from './executor.js';
|
|
14
|
+
import type { LLMAdapter } from '../core/types.js';
|
|
15
|
+
import type { ToolRegistry } from '../tools/registry.js';
|
|
16
|
+
/**
|
|
17
|
+
* Create a tool definition that wraps a subagent.
|
|
18
|
+
*
|
|
19
|
+
* @param definition — The agent definition from the registry
|
|
20
|
+
* @param executor — The shared AgentExecutor instance
|
|
21
|
+
* @param adapter — The LLM adapter for the subagent to use
|
|
22
|
+
* @param parentToolRegistry — The parent's tool registry (subagent picks from this)
|
|
23
|
+
*/
|
|
24
|
+
export declare function createSubagentTool(definition: AgentDefinition, executor: AgentExecutor, adapter: LLMAdapter, parentToolRegistry: ToolRegistry): import("../core/types.js").ToolDefinition<{
|
|
25
|
+
task: string;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=subagent-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-tool.d.ts","sourceRoot":"","sources":["../../../src/agents/subagent-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,UAAU,EACnB,kBAAkB,EAAE,YAAY;;GAoBjC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subagent Tool — wraps a subagent definition as a standard cmdr tool.
|
|
3
|
+
*
|
|
4
|
+
* When the main agent calls this tool, it:
|
|
5
|
+
* 1. Spins up an isolated subagent with restricted tools
|
|
6
|
+
* 2. Runs the task to completion
|
|
7
|
+
* 3. Returns the subagent's output as the tool result
|
|
8
|
+
*
|
|
9
|
+
* Subagent tools have 'read' permission — they're always safe from HITL
|
|
10
|
+
* perspective because the subagent itself has restricted tools.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { defineTool } from '../tools/registry.js';
|
|
14
|
+
/**
|
|
15
|
+
* Create a tool definition that wraps a subagent.
|
|
16
|
+
*
|
|
17
|
+
* @param definition — The agent definition from the registry
|
|
18
|
+
* @param executor — The shared AgentExecutor instance
|
|
19
|
+
* @param adapter — The LLM adapter for the subagent to use
|
|
20
|
+
* @param parentToolRegistry — The parent's tool registry (subagent picks from this)
|
|
21
|
+
*/
|
|
22
|
+
export function createSubagentTool(definition, executor, adapter, parentToolRegistry) {
|
|
23
|
+
return defineTool({
|
|
24
|
+
name: definition.name,
|
|
25
|
+
description: definition.description,
|
|
26
|
+
inputSchema: z.object({
|
|
27
|
+
task: z.string().describe('The specific task or question to delegate to this agent'),
|
|
28
|
+
}),
|
|
29
|
+
execute: async (input, context) => {
|
|
30
|
+
const parentModel = context.agent.model;
|
|
31
|
+
const result = await executor.execute(definition, input.task, parentModel, adapter, parentToolRegistry);
|
|
32
|
+
return { data: result.output, isError: false };
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=subagent-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-tool.js","sourceRoot":"","sources":["../../../src/agents/subagent-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMjD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAA2B,EAC3B,QAAuB,EACvB,OAAmB,EACnB,kBAAgC;IAEhC,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;SACrF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;YACvC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CACnC,UAAU,EACV,KAAK,CAAC,IAAI,EACV,WAAW,EACX,OAAO,EACP,kBAAkB,CACnB,CAAA;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAChD,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/src/cli/args.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface CliArgs {
|
|
|
13
13
|
verbose?: boolean;
|
|
14
14
|
cwd?: string;
|
|
15
15
|
team?: string;
|
|
16
|
+
maxTurns?: number;
|
|
17
|
+
outputFormat?: 'text' | 'json' | 'stream-json';
|
|
16
18
|
}
|
|
17
19
|
export declare function parseArgs(argv: string[]): CliArgs;
|
|
18
20
|
export declare function printHelp(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAA;CAC/C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAoEjD;AAED,wBAAgB,SAAS,IAAI,IAAI,CA2BhC"}
|
package/dist/src/cli/args.js
CHANGED
|
@@ -44,10 +44,16 @@ export function parseArgs(argv) {
|
|
|
44
44
|
case '--verbose':
|
|
45
45
|
args.verbose = true;
|
|
46
46
|
break;
|
|
47
|
+
case '--max-turns':
|
|
48
|
+
args.maxTurns = parseInt(argv[++i], 10);
|
|
49
|
+
break;
|
|
47
50
|
case '--team':
|
|
48
51
|
case '-t':
|
|
49
52
|
args.team = argv[++i];
|
|
50
53
|
break;
|
|
54
|
+
case '--output-format':
|
|
55
|
+
args.outputFormat = argv[++i];
|
|
56
|
+
break;
|
|
51
57
|
default:
|
|
52
58
|
// If no flag prefix, treat as inline prompt
|
|
53
59
|
if (!arg.startsWith('-') && !args.prompt) {
|
|
@@ -76,6 +82,8 @@ export function printHelp() {
|
|
|
76
82
|
-t, --team <preset> Run in team mode (review, fullstack, security)
|
|
77
83
|
--cwd <path> Set working directory
|
|
78
84
|
--verbose Print full tool output (default: collapsed)
|
|
85
|
+
--max-turns <n> Maximum agent turns before stopping
|
|
86
|
+
--output-format <fmt> Output format: text (default), json, stream-json
|
|
79
87
|
-h, --help Show this help
|
|
80
88
|
-v, --version Show version
|
|
81
89
|
--dangerously-skip-permissions Auto-approve all tool calls (yolo mode)
|
package/dist/src/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,IAAI,GAAY,EAAE,CAAA;IACxB,IAAI,CAAC,GAAG,CAAC,CAAA;IAET,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAEnB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,IAAI;gBACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACtB,MAAK;YACP,KAAK,cAAc,CAAC;YACpB,KAAK,IAAI;gBACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC1B,MAAK;YACP,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;gBAChB,MAAK;YACP,KAAK,WAAW,CAAC;YACjB,KAAK,IAAI;gBACP,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;gBACnB,MAAK;YACP,KAAK,UAAU,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACvB,MAAK;YACP,KAAK,gCAAgC;gBACnC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAA;gBACtC,MAAK;YACP,KAAK,UAAU,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACvB,MAAK;YACP,KAAK,YAAY,CAAC;YAClB,KAAK,IAAI;gBACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACpB,MAAK;YACP,KAAK,WAAW;gBACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;gBACnB,MAAK;YACP,KAAK,aAAa;gBAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBACvC,MAAK;YACP,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACrB,MAAK;YACP,KAAK,iBAAiB;gBACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAoC,CAAA;gBAChE,MAAK;YACP;gBACE,4CAA4C;gBAC5C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACrC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;gBACjB,CAAC;gBACD,MAAK;QACT,CAAC;QAED,CAAC,EAAE,CAAA;IACL,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;CAyBb,CAAC,CAAA;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA8C,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA8C,MAAM,kBAAkB,CAAA;AAoBhG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEjE;AAED,wBAAgB,cAAc,IAAI,YAAY,EAAE,CAE/C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAU/E"}
|