beth-copilot 1.0.18 → 1.1.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/CHANGELOG.md +41 -28
- package/README.md +87 -247
- package/bin/cli.js +158 -358
- package/dist/__tests__/smoke.test.d.ts +8 -0
- package/dist/__tests__/smoke.test.d.ts.map +1 -0
- package/dist/__tests__/smoke.test.js +49 -0
- package/dist/__tests__/smoke.test.js.map +1 -0
- package/dist/cli/commands/beads.e2e.test.d.ts +13 -0
- package/dist/cli/commands/beads.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/beads.e2e.test.js +526 -0
- package/dist/cli/commands/beads.e2e.test.js.map +1 -0
- package/dist/cli/commands/cli-edge-cases.e2e.test.d.ts +32 -0
- package/dist/cli/commands/cli-edge-cases.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/cli-edge-cases.e2e.test.js +162 -0
- package/dist/cli/commands/cli-edge-cases.e2e.test.js.map +1 -0
- package/dist/cli/commands/close.d.ts +89 -0
- package/dist/cli/commands/close.d.ts.map +1 -0
- package/dist/cli/commands/close.e2e.test.d.ts +27 -0
- package/dist/cli/commands/close.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/close.e2e.test.js +252 -0
- package/dist/cli/commands/close.e2e.test.js.map +1 -0
- package/dist/cli/commands/close.js +309 -0
- package/dist/cli/commands/close.js.map +1 -0
- package/dist/cli/commands/close.test.d.ts +15 -0
- package/dist/cli/commands/close.test.d.ts.map +1 -0
- package/dist/cli/commands/close.test.js +634 -0
- package/dist/cli/commands/close.test.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +23 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +93 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/doctor.test.js +209 -0
- package/dist/cli/commands/doctor.test.js.map +1 -1
- package/dist/cli/commands/framework-isolation.test.d.ts +30 -0
- package/dist/cli/commands/framework-isolation.test.d.ts.map +1 -0
- package/dist/cli/commands/framework-isolation.test.js +119 -0
- package/dist/cli/commands/framework-isolation.test.js.map +1 -0
- package/dist/cli/commands/help.e2e.test.js +4 -4
- package/dist/cli/commands/help.e2e.test.js.map +1 -1
- package/dist/cli/commands/init-logic.e2e.test.d.ts +37 -0
- package/dist/cli/commands/init-logic.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/init-logic.e2e.test.js +305 -0
- package/dist/cli/commands/init-logic.e2e.test.js.map +1 -0
- package/dist/cli/commands/land.d.ts +142 -0
- package/dist/cli/commands/land.d.ts.map +1 -0
- package/dist/cli/commands/land.js +647 -0
- package/dist/cli/commands/land.js.map +1 -0
- package/dist/cli/commands/land.test.d.ts +20 -0
- package/dist/cli/commands/land.test.d.ts.map +1 -0
- package/dist/cli/commands/land.test.js +622 -0
- package/dist/cli/commands/land.test.js.map +1 -0
- package/dist/cli/commands/mcp.e2e.test.js +22 -29
- package/dist/cli/commands/mcp.e2e.test.js.map +1 -1
- package/dist/cli/commands/pipeline.e2e.test.js +20 -20
- package/dist/cli/commands/pipeline.e2e.test.js.map +1 -1
- package/dist/cli/commands/pre-push-guard.d.ts +84 -0
- package/dist/cli/commands/pre-push-guard.d.ts.map +1 -0
- package/dist/cli/commands/pre-push-guard.e2e.test.d.ts +24 -0
- package/dist/cli/commands/pre-push-guard.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/pre-push-guard.e2e.test.js +171 -0
- package/dist/cli/commands/pre-push-guard.e2e.test.js.map +1 -0
- package/dist/cli/commands/pre-push-guard.js +257 -0
- package/dist/cli/commands/pre-push-guard.js.map +1 -0
- package/dist/cli/commands/pre-push-guard.test.d.ts +15 -0
- package/dist/cli/commands/pre-push-guard.test.d.ts.map +1 -0
- package/dist/cli/commands/pre-push-guard.test.js +397 -0
- package/dist/cli/commands/pre-push-guard.test.js.map +1 -0
- package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts +23 -0
- package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/quickstart-expanded.e2e.test.js +179 -0
- package/dist/cli/commands/quickstart-expanded.e2e.test.js.map +1 -0
- package/dist/cli/commands/quickstart.d.ts.map +1 -1
- package/dist/cli/commands/quickstart.js +7 -23
- package/dist/cli/commands/quickstart.js.map +1 -1
- package/dist/cli/commands/quickstart.test.js +40 -67
- package/dist/cli/commands/quickstart.test.js.map +1 -1
- package/dist/core/agents/suite.test.js +4 -2
- package/dist/core/agents/suite.test.js.map +1 -1
- package/dist/core/agents/tools.test.js +5 -1
- package/dist/core/agents/tools.test.js.map +1 -1
- package/dist/index.d.ts +3 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -10
- package/dist/index.js.map +1 -1
- package/package.json +15 -9
- package/sbom.json +2011 -819
- package/templates/.github/agents/beth.agent.md +220 -66
- package/templates/.github/agents/developer.agent.md +53 -90
- package/templates/.github/agents/product-manager.agent.md +15 -68
- package/templates/.github/agents/researcher.agent.md +20 -71
- package/templates/.github/agents/security-reviewer.agent.md +29 -81
- package/templates/.github/agents/tester.agent.md +40 -69
- package/templates/.github/agents/ux-designer.agent.md +20 -74
- package/templates/.github/copilot-instructions.md +217 -225
- package/templates/AGENTS.md +108 -20
- package/templates/mcp.json.example +0 -3
- package/dist/cli/commands/client-config.d.ts +0 -31
- package/dist/cli/commands/client-config.d.ts.map +0 -1
- package/dist/cli/commands/client-config.e2e.test.d.ts +0 -15
- package/dist/cli/commands/client-config.e2e.test.d.ts.map +0 -1
- package/dist/cli/commands/client-config.e2e.test.js +0 -556
- package/dist/cli/commands/client-config.e2e.test.js.map +0 -1
- package/dist/cli/commands/client-config.js +0 -73
- package/dist/cli/commands/client-config.js.map +0 -1
- package/dist/cli/commands/client-config.test.d.ts +0 -6
- package/dist/cli/commands/client-config.test.d.ts.map +0 -1
- package/dist/cli/commands/client-config.test.js +0 -133
- package/dist/cli/commands/client-config.test.js.map +0 -1
- package/dist/cli/commands/init-quickstart.e2e.test.d.ts +0 -11
- package/dist/cli/commands/init-quickstart.e2e.test.d.ts.map +0 -1
- package/dist/cli/commands/init-quickstart.e2e.test.js +0 -221
- package/dist/cli/commands/init-quickstart.e2e.test.js.map +0 -1
- package/dist/core/context.d.ts +0 -171
- package/dist/core/context.d.ts.map +0 -1
- package/dist/core/context.js +0 -353
- package/dist/core/context.js.map +0 -1
- package/dist/core/context.test.d.ts +0 -8
- package/dist/core/context.test.d.ts.map +0 -1
- package/dist/core/context.test.js +0 -253
- package/dist/core/context.test.js.map +0 -1
- package/dist/core/handoffs.d.ts +0 -151
- package/dist/core/handoffs.d.ts.map +0 -1
- package/dist/core/handoffs.js +0 -220
- package/dist/core/handoffs.js.map +0 -1
- package/dist/core/handoffs.test.d.ts +0 -8
- package/dist/core/handoffs.test.d.ts.map +0 -1
- package/dist/core/handoffs.test.js +0 -231
- package/dist/core/handoffs.test.js.map +0 -1
- package/dist/core/orchestrator.d.ts +0 -246
- package/dist/core/orchestrator.d.ts.map +0 -1
- package/dist/core/orchestrator.js +0 -514
- package/dist/core/orchestrator.js.map +0 -1
- package/dist/core/orchestrator.test.d.ts +0 -8
- package/dist/core/orchestrator.test.d.ts.map +0 -1
- package/dist/core/orchestrator.test.js +0 -517
- package/dist/core/orchestrator.test.js.map +0 -1
- package/dist/core/router.d.ts +0 -102
- package/dist/core/router.d.ts.map +0 -1
- package/dist/core/router.js +0 -178
- package/dist/core/router.js.map +0 -1
- package/dist/core/router.test.d.ts +0 -8
- package/dist/core/router.test.d.ts.map +0 -1
- package/dist/core/router.test.js +0 -215
- package/dist/core/router.test.js.map +0 -1
- package/dist/init.test.js +0 -288
- package/dist/providers/azure.d.ts +0 -147
- package/dist/providers/azure.d.ts.map +0 -1
- package/dist/providers/azure.js +0 -491
- package/dist/providers/azure.js.map +0 -1
- package/dist/providers/azure.test.d.ts +0 -11
- package/dist/providers/azure.test.d.ts.map +0 -1
- package/dist/providers/azure.test.js +0 -330
- package/dist/providers/azure.test.js.map +0 -1
- package/dist/providers/config.d.ts +0 -87
- package/dist/providers/config.d.ts.map +0 -1
- package/dist/providers/config.js +0 -193
- package/dist/providers/config.js.map +0 -1
- package/dist/providers/config.test.d.ts +0 -7
- package/dist/providers/config.test.d.ts.map +0 -1
- package/dist/providers/config.test.js +0 -370
- package/dist/providers/config.test.js.map +0 -1
- package/dist/providers/index.d.ts +0 -18
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -14
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/interface.d.ts +0 -191
- package/dist/providers/interface.d.ts.map +0 -1
- package/dist/providers/interface.js +0 -94
- package/dist/providers/interface.js.map +0 -1
- package/dist/providers/retry.d.ts +0 -128
- package/dist/providers/retry.d.ts.map +0 -1
- package/dist/providers/retry.js +0 -205
- package/dist/providers/retry.js.map +0 -1
- package/dist/providers/retry.test.d.ts +0 -7
- package/dist/providers/retry.test.d.ts.map +0 -1
- package/dist/providers/retry.test.js +0 -439
- package/dist/providers/retry.test.js.map +0 -1
- package/dist/providers/streaming.d.ts +0 -157
- package/dist/providers/streaming.d.ts.map +0 -1
- package/dist/providers/streaming.js +0 -233
- package/dist/providers/streaming.js.map +0 -1
- package/dist/providers/streaming.test.d.ts +0 -7
- package/dist/providers/streaming.test.d.ts.map +0 -1
- package/dist/providers/streaming.test.js +0 -372
- package/dist/providers/streaming.test.js.map +0 -1
- package/dist/providers/types.d.ts +0 -209
- package/dist/providers/types.d.ts.map +0 -1
- package/dist/providers/types.js +0 -53
- package/dist/providers/types.js.map +0 -1
- package/dist/providers/types.test.d.ts +0 -7
- package/dist/providers/types.test.d.ts.map +0 -1
- package/dist/providers/types.test.js +0 -141
- package/dist/providers/types.test.js.map +0 -1
- package/dist/tools/cli/beads.d.ts +0 -27
- package/dist/tools/cli/beads.d.ts.map +0 -1
- package/dist/tools/cli/beads.js +0 -172
- package/dist/tools/cli/beads.js.map +0 -1
- package/dist/tools/cli/beads.test.d.ts +0 -8
- package/dist/tools/cli/beads.test.d.ts.map +0 -1
- package/dist/tools/cli/beads.test.js +0 -264
- package/dist/tools/cli/beads.test.js.map +0 -1
- package/dist/tools/cli/editFile.d.ts +0 -17
- package/dist/tools/cli/editFile.d.ts.map +0 -1
- package/dist/tools/cli/editFile.js +0 -125
- package/dist/tools/cli/editFile.js.map +0 -1
- package/dist/tools/cli/editFile.test.d.ts +0 -8
- package/dist/tools/cli/editFile.test.d.ts.map +0 -1
- package/dist/tools/cli/editFile.test.js +0 -177
- package/dist/tools/cli/editFile.test.js.map +0 -1
- package/dist/tools/cli/readFile.d.ts +0 -25
- package/dist/tools/cli/readFile.d.ts.map +0 -1
- package/dist/tools/cli/readFile.js +0 -118
- package/dist/tools/cli/readFile.js.map +0 -1
- package/dist/tools/cli/readFile.test.d.ts +0 -8
- package/dist/tools/cli/readFile.test.d.ts.map +0 -1
- package/dist/tools/cli/readFile.test.js +0 -194
- package/dist/tools/cli/readFile.test.js.map +0 -1
- package/dist/tools/cli/search.d.ts +0 -16
- package/dist/tools/cli/search.d.ts.map +0 -1
- package/dist/tools/cli/search.js +0 -261
- package/dist/tools/cli/search.js.map +0 -1
- package/dist/tools/cli/search.test.d.ts +0 -8
- package/dist/tools/cli/search.test.d.ts.map +0 -1
- package/dist/tools/cli/search.test.js +0 -172
- package/dist/tools/cli/search.test.js.map +0 -1
- package/dist/tools/cli/subagent.d.ts +0 -43
- package/dist/tools/cli/subagent.d.ts.map +0 -1
- package/dist/tools/cli/subagent.js +0 -99
- package/dist/tools/cli/subagent.js.map +0 -1
- package/dist/tools/cli/subagent.test.d.ts +0 -8
- package/dist/tools/cli/subagent.test.d.ts.map +0 -1
- package/dist/tools/cli/subagent.test.js +0 -190
- package/dist/tools/cli/subagent.test.js.map +0 -1
- package/dist/tools/cli/terminal.d.ts +0 -19
- package/dist/tools/cli/terminal.d.ts.map +0 -1
- package/dist/tools/cli/terminal.js +0 -164
- package/dist/tools/cli/terminal.js.map +0 -1
- package/dist/tools/cli/terminal.test.d.ts +0 -8
- package/dist/tools/cli/terminal.test.d.ts.map +0 -1
- package/dist/tools/cli/terminal.test.js +0 -161
- package/dist/tools/cli/terminal.test.js.map +0 -1
- package/dist/tools/index.d.ts +0 -25
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -41
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/interface.d.ts +0 -64
- package/dist/tools/interface.d.ts.map +0 -1
- package/dist/tools/interface.js +0 -37
- package/dist/tools/interface.js.map +0 -1
- package/dist/tools/interface.test.d.ts +0 -7
- package/dist/tools/interface.test.d.ts.map +0 -1
- package/dist/tools/interface.test.js +0 -179
- package/dist/tools/interface.test.js.map +0 -1
- package/dist/tools/mcp/bridge.d.ts +0 -48
- package/dist/tools/mcp/bridge.d.ts.map +0 -1
- package/dist/tools/mcp/bridge.js +0 -128
- package/dist/tools/mcp/bridge.js.map +0 -1
- package/dist/tools/mcp/bridge.test.d.ts +0 -8
- package/dist/tools/mcp/bridge.test.d.ts.map +0 -1
- package/dist/tools/mcp/bridge.test.js +0 -300
- package/dist/tools/mcp/bridge.test.js.map +0 -1
- package/dist/tools/mcp/client.d.ts +0 -135
- package/dist/tools/mcp/client.d.ts.map +0 -1
- package/dist/tools/mcp/client.js +0 -263
- package/dist/tools/mcp/client.js.map +0 -1
- package/dist/tools/mcp/client.test.d.ts +0 -8
- package/dist/tools/mcp/client.test.d.ts.map +0 -1
- package/dist/tools/mcp/client.test.js +0 -390
- package/dist/tools/mcp/client.test.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -82
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -99
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/registry.test.d.ts +0 -7
- package/dist/tools/registry.test.d.ts.map +0 -1
- package/dist/tools/registry.test.js +0 -199
- package/dist/tools/registry.test.js.map +0 -1
- package/dist/tools/suite.test.d.ts +0 -11
- package/dist/tools/suite.test.d.ts.map +0 -1
- package/dist/tools/suite.test.js +0 -119
- package/dist/tools/suite.test.js.map +0 -1
- package/dist/tools/types.d.ts +0 -75
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js +0 -30
- package/dist/tools/types.js.map +0 -1
- package/dist/tools/types.test.d.ts +0 -7
- package/dist/tools/types.test.d.ts.map +0 -1
- package/dist/tools/types.test.js +0 -178
- package/dist/tools/types.test.js.map +0 -1
- package/templates/.vscode/mcp.json +0 -20
- package/templates/CLAUDE.md +0 -129
|
@@ -1,514 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Orchestrator — Beth's Brain
|
|
3
|
-
*
|
|
4
|
-
* The main agentic loop that ties everything together:
|
|
5
|
-
*
|
|
6
|
-
* User message
|
|
7
|
-
* → Route to agent (AgentRouter)
|
|
8
|
-
* → Build context (ConversationContext)
|
|
9
|
-
* → Inject skills (if triggers match)
|
|
10
|
-
* → Send to LLM (Provider)
|
|
11
|
-
* → If tool calls → execute tools (ToolRegistry)
|
|
12
|
-
* → If subagent request → spawn child conversation
|
|
13
|
-
* → Return tool results to LLM → loop
|
|
14
|
-
* → If handoff → transfer to new agent (HandoffManager)
|
|
15
|
-
* → If text response → return to caller
|
|
16
|
-
*
|
|
17
|
-
* The orchestrator supports both streaming and non-streaming modes,
|
|
18
|
-
* and handles the full tool-calling loop until the model produces
|
|
19
|
-
* a final text response or a handoff.
|
|
20
|
-
*/
|
|
21
|
-
import { isSubagentRequest } from '../tools/cli/subagent.js';
|
|
22
|
-
import { ConversationContext } from './context.js';
|
|
23
|
-
import { AgentRouter } from './router.js';
|
|
24
|
-
import { HandoffManager } from './handoffs.js';
|
|
25
|
-
// =============================================================================
|
|
26
|
-
// Orchestrator
|
|
27
|
-
// =============================================================================
|
|
28
|
-
/** Default maximum tool-call iterations per user turn */
|
|
29
|
-
const DEFAULT_MAX_ITERATIONS = 25;
|
|
30
|
-
/** Default maximum subagent nesting depth */
|
|
31
|
-
const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
|
|
32
|
-
/**
|
|
33
|
-
* The Orchestrator — Beth's brain.
|
|
34
|
-
*
|
|
35
|
-
* Manages the full agent loop: routing → LLM → tool calls → response.
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* const orchestrator = new Orchestrator({
|
|
40
|
-
* agents: loadAgents('.github/agents'),
|
|
41
|
-
* skills: loadSkills('.github/skills'),
|
|
42
|
-
* provider: new AzureOpenAIProvider(config),
|
|
43
|
-
* toolRegistry: createDefaultRegistry(),
|
|
44
|
-
* toolContext: { workingDir: process.cwd(), permissions: { ... } },
|
|
45
|
-
* });
|
|
46
|
-
*
|
|
47
|
-
* const result = await orchestrator.processMessage('Implement the login page');
|
|
48
|
-
* console.log(result.response);
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
export class Orchestrator {
|
|
52
|
-
router;
|
|
53
|
-
handoffs;
|
|
54
|
-
provider;
|
|
55
|
-
toolRegistry;
|
|
56
|
-
toolContext;
|
|
57
|
-
maxIterations;
|
|
58
|
-
maxSubagentDepth;
|
|
59
|
-
contextOptions;
|
|
60
|
-
/** Active conversation contexts by agent ID */
|
|
61
|
-
contexts = new Map();
|
|
62
|
-
/** Currently active agent ID */
|
|
63
|
-
activeAgentId;
|
|
64
|
-
/** Observer for event callbacks */
|
|
65
|
-
observer;
|
|
66
|
-
constructor(config) {
|
|
67
|
-
this.router = new AgentRouter(config.agents, config.skills, config.defaultAgentId);
|
|
68
|
-
this.handoffs = new HandoffManager(this.router, {
|
|
69
|
-
maxDepth: config.maxHandoffDepth,
|
|
70
|
-
});
|
|
71
|
-
this.provider = config.provider;
|
|
72
|
-
this.toolRegistry = config.toolRegistry;
|
|
73
|
-
this.toolContext = config.toolContext;
|
|
74
|
-
this.maxIterations = config.maxIterations ?? DEFAULT_MAX_ITERATIONS;
|
|
75
|
-
this.maxSubagentDepth = config.maxSubagentDepth ?? DEFAULT_MAX_SUBAGENT_DEPTH;
|
|
76
|
-
this.contextOptions = config.contextOptions;
|
|
77
|
-
// Start with the default agent
|
|
78
|
-
this.activeAgentId = config.defaultAgentId ?? 'beth';
|
|
79
|
-
}
|
|
80
|
-
// ===========================================================================
|
|
81
|
-
// Public API
|
|
82
|
-
// ===========================================================================
|
|
83
|
-
/**
|
|
84
|
-
* Set an observer for orchestrator events.
|
|
85
|
-
*/
|
|
86
|
-
setObserver(observer) {
|
|
87
|
-
this.observer = observer;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Process a user message through the full agent loop.
|
|
91
|
-
*
|
|
92
|
-
* This is the main entry point. It:
|
|
93
|
-
* 1. Routes the message to the appropriate agent
|
|
94
|
-
* 2. Injects any matching skills
|
|
95
|
-
* 3. Runs the agent loop (LLM → tools → LLM → ...)
|
|
96
|
-
* 4. Returns the final response
|
|
97
|
-
*
|
|
98
|
-
* @param userMessage - The user's input
|
|
99
|
-
* @returns The complete turn result
|
|
100
|
-
*/
|
|
101
|
-
async processMessage(userMessage) {
|
|
102
|
-
return this.processMessageAtDepth(userMessage, 0);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Process a message at a specific subagent depth.
|
|
106
|
-
* Used internally for subagent chains.
|
|
107
|
-
*/
|
|
108
|
-
async processMessageAtDepth(userMessage, subagentDepth) {
|
|
109
|
-
// 1. Route the message
|
|
110
|
-
const routeResult = this.router.route(userMessage, this.activeAgentId);
|
|
111
|
-
this.observer?.onRoute?.(routeResult);
|
|
112
|
-
// Switch active agent if routing changed it
|
|
113
|
-
const agent = routeResult.agent;
|
|
114
|
-
this.activeAgentId = agent.id;
|
|
115
|
-
// 2. Get or create conversation context
|
|
116
|
-
const context = this.getOrCreateContext(agent);
|
|
117
|
-
// 3. Inject matched skills
|
|
118
|
-
const injectedSkills = [];
|
|
119
|
-
for (const skill of routeResult.matchedSkills) {
|
|
120
|
-
if (context.injectSkill(skill)) {
|
|
121
|
-
injectedSkills.push(skill.id);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
// 4. Add user message
|
|
125
|
-
const prompt = routeResult.cleanedPrompt ?? userMessage;
|
|
126
|
-
context.addUserMessage(prompt);
|
|
127
|
-
// 5. Run the agent loop
|
|
128
|
-
const toolCallsExecuted = [];
|
|
129
|
-
const subagentResults = [];
|
|
130
|
-
let iterations = 0;
|
|
131
|
-
let handoffResult;
|
|
132
|
-
let finalResponse = '';
|
|
133
|
-
while (iterations < this.maxIterations) {
|
|
134
|
-
iterations++;
|
|
135
|
-
this.observer?.onIteration?.(iterations, agent.id);
|
|
136
|
-
// Build messages and tool definitions
|
|
137
|
-
const messages = context.getMessages();
|
|
138
|
-
const toolDefs = this.getToolDefinitions(agent);
|
|
139
|
-
// Call the LLM
|
|
140
|
-
this.observer?.onLLMCall?.(agent.id, messages.length);
|
|
141
|
-
const requestOptions = {};
|
|
142
|
-
if (toolDefs.length > 0) {
|
|
143
|
-
requestOptions.tools = toolDefs;
|
|
144
|
-
}
|
|
145
|
-
const llmResult = await this.callLLM(messages, requestOptions);
|
|
146
|
-
// Process the LLM response
|
|
147
|
-
if (llmResult.toolCalls.length > 0) {
|
|
148
|
-
// LLM wants to call tools
|
|
149
|
-
context.addAssistantToolCalls(llmResult.toolCalls, llmResult.content || undefined);
|
|
150
|
-
// Execute all tool calls
|
|
151
|
-
for (const toolCall of llmResult.toolCalls) {
|
|
152
|
-
const record = await this.executeToolCall(toolCall, subagentDepth, subagentResults);
|
|
153
|
-
toolCallsExecuted.push(record);
|
|
154
|
-
// Add tool result to context
|
|
155
|
-
context.addToolResult(toolCall.id, record.output);
|
|
156
|
-
}
|
|
157
|
-
// Continue the loop — LLM needs to see tool results
|
|
158
|
-
continue;
|
|
159
|
-
}
|
|
160
|
-
// No tool calls — this is the final response
|
|
161
|
-
finalResponse = llmResult.content;
|
|
162
|
-
this.observer?.onLLMResponse?.(agent.id, finalResponse);
|
|
163
|
-
if (finalResponse) {
|
|
164
|
-
context.addAssistantMessage(finalResponse);
|
|
165
|
-
}
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
// Check if we hit the iteration limit
|
|
169
|
-
if (iterations >= this.maxIterations && !finalResponse) {
|
|
170
|
-
finalResponse = `[Agent reached maximum iterations (${this.maxIterations}). Last response may be incomplete.]`;
|
|
171
|
-
context.addAssistantMessage(finalResponse);
|
|
172
|
-
}
|
|
173
|
-
return {
|
|
174
|
-
response: finalResponse,
|
|
175
|
-
agentId: agent.id,
|
|
176
|
-
routeReason: routeResult.reason,
|
|
177
|
-
toolCallsExecuted,
|
|
178
|
-
handoff: handoffResult,
|
|
179
|
-
subagentResults,
|
|
180
|
-
iterations,
|
|
181
|
-
injectedSkills,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Execute a handoff to a different agent.
|
|
186
|
-
*
|
|
187
|
-
* @param toAgentId - Target agent ID
|
|
188
|
-
* @param prompt - Message to the new agent
|
|
189
|
-
* @returns The handoff result and potentially a new TurnResult
|
|
190
|
-
*/
|
|
191
|
-
async executeHandoff(toAgentId, prompt) {
|
|
192
|
-
const currentAgent = this.router.resolveAgent(this.activeAgentId);
|
|
193
|
-
if (!currentAgent) {
|
|
194
|
-
return {
|
|
195
|
-
handoff: {
|
|
196
|
-
executed: false,
|
|
197
|
-
reason: `Current agent "${this.activeAgentId}" not found`,
|
|
198
|
-
request: {
|
|
199
|
-
fromAgentId: this.activeAgentId,
|
|
200
|
-
toAgentId,
|
|
201
|
-
prompt,
|
|
202
|
-
label: 'Handoff',
|
|
203
|
-
autoSend: false,
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
const currentContext = this.contexts.get(this.activeAgentId);
|
|
209
|
-
const request = this.handoffs.prepareHandoff(currentAgent, toAgentId, prompt, currentContext);
|
|
210
|
-
if (!request) {
|
|
211
|
-
return {
|
|
212
|
-
handoff: {
|
|
213
|
-
executed: false,
|
|
214
|
-
reason: `Target agent "${toAgentId}" not found`,
|
|
215
|
-
request: {
|
|
216
|
-
fromAgentId: this.activeAgentId,
|
|
217
|
-
toAgentId,
|
|
218
|
-
prompt,
|
|
219
|
-
label: 'Handoff',
|
|
220
|
-
autoSend: false,
|
|
221
|
-
},
|
|
222
|
-
},
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
this.observer?.onHandoff?.(request);
|
|
226
|
-
const handoffResult = this.handoffs.executeHandoff(request);
|
|
227
|
-
if (!handoffResult.executed || !handoffResult.targetAgent) {
|
|
228
|
-
return { handoff: handoffResult };
|
|
229
|
-
}
|
|
230
|
-
// Switch to the new agent
|
|
231
|
-
this.activeAgentId = handoffResult.targetAgent.id;
|
|
232
|
-
// Create new context for the target agent with handoff context
|
|
233
|
-
const newContext = this.getOrCreateContext(handoffResult.targetAgent);
|
|
234
|
-
const handoffContext = this.handoffs.buildHandoffContext(request);
|
|
235
|
-
newContext.addContext(handoffContext);
|
|
236
|
-
// If auto-send, process the prompt immediately
|
|
237
|
-
if (request.autoSend && request.prompt) {
|
|
238
|
-
const turnResult = await this.processMessage(request.prompt);
|
|
239
|
-
return { handoff: handoffResult, turnResult };
|
|
240
|
-
}
|
|
241
|
-
return { handoff: handoffResult };
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Get the currently active agent ID.
|
|
245
|
-
*/
|
|
246
|
-
getActiveAgentId() {
|
|
247
|
-
return this.activeAgentId;
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Get the conversation context for the active agent.
|
|
251
|
-
*/
|
|
252
|
-
getActiveContext() {
|
|
253
|
-
return this.contexts.get(this.activeAgentId);
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Get the router for external agent queries.
|
|
257
|
-
*/
|
|
258
|
-
getRouter() {
|
|
259
|
-
return this.router;
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Get the handoff manager.
|
|
263
|
-
*/
|
|
264
|
-
getHandoffManager() {
|
|
265
|
-
return this.handoffs;
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Reset all conversation state.
|
|
269
|
-
*/
|
|
270
|
-
reset() {
|
|
271
|
-
this.contexts.clear();
|
|
272
|
-
this.handoffs.clearHistory();
|
|
273
|
-
const defaultAgent = this.router.getDefaultAgent();
|
|
274
|
-
this.activeAgentId = defaultAgent.id;
|
|
275
|
-
}
|
|
276
|
-
// ===========================================================================
|
|
277
|
-
// Internal: LLM Communication
|
|
278
|
-
// ===========================================================================
|
|
279
|
-
/**
|
|
280
|
-
* Call the LLM and collect the full response.
|
|
281
|
-
* Uses streaming internally for reliability, collects into a single result.
|
|
282
|
-
*/
|
|
283
|
-
async callLLM(messages, options) {
|
|
284
|
-
// Use non-streaming chat for simplicity and reliability
|
|
285
|
-
const response = await this.provider.chat(messages, options);
|
|
286
|
-
const choice = response.choices[0];
|
|
287
|
-
if (!choice) {
|
|
288
|
-
return { content: '', toolCalls: [] };
|
|
289
|
-
}
|
|
290
|
-
return {
|
|
291
|
-
content: choice.message.content ?? '',
|
|
292
|
-
toolCalls: choice.message.tool_calls ?? [],
|
|
293
|
-
};
|
|
294
|
-
}
|
|
295
|
-
// ===========================================================================
|
|
296
|
-
// Internal: Tool Execution
|
|
297
|
-
// ===========================================================================
|
|
298
|
-
/**
|
|
299
|
-
* Execute a single tool call and return a record.
|
|
300
|
-
*/
|
|
301
|
-
async executeToolCall(toolCall, subagentDepth, subagentResults) {
|
|
302
|
-
const toolName = toolCall.function.name;
|
|
303
|
-
this.observer?.onToolCallStart?.(toolName, toolCall.function.arguments);
|
|
304
|
-
// Look up the tool
|
|
305
|
-
const tool = this.toolRegistry.get(toolName);
|
|
306
|
-
if (!tool) {
|
|
307
|
-
const record = {
|
|
308
|
-
id: toolCall.id,
|
|
309
|
-
name: toolName,
|
|
310
|
-
success: false,
|
|
311
|
-
output: `Tool "${toolName}" not found in registry`,
|
|
312
|
-
};
|
|
313
|
-
this.observer?.onToolCallEnd?.(record);
|
|
314
|
-
return record;
|
|
315
|
-
}
|
|
316
|
-
try {
|
|
317
|
-
// Parse arguments
|
|
318
|
-
let args;
|
|
319
|
-
try {
|
|
320
|
-
args = JSON.parse(toolCall.function.arguments);
|
|
321
|
-
}
|
|
322
|
-
catch {
|
|
323
|
-
const record = {
|
|
324
|
-
id: toolCall.id,
|
|
325
|
-
name: toolName,
|
|
326
|
-
success: false,
|
|
327
|
-
output: `Invalid JSON arguments: ${toolCall.function.arguments.slice(0, 200)}`,
|
|
328
|
-
};
|
|
329
|
-
this.observer?.onToolCallEnd?.(record);
|
|
330
|
-
return record;
|
|
331
|
-
}
|
|
332
|
-
// Execute the tool
|
|
333
|
-
const result = await tool.execute(args, this.toolContext);
|
|
334
|
-
// Check for subagent requests
|
|
335
|
-
if (isSubagentRequest(result)) {
|
|
336
|
-
const subResult = await this.handleSubagentRequest(result, subagentDepth, subagentResults);
|
|
337
|
-
const record = {
|
|
338
|
-
id: toolCall.id,
|
|
339
|
-
name: toolName,
|
|
340
|
-
success: subResult.success,
|
|
341
|
-
output: subResult.response,
|
|
342
|
-
};
|
|
343
|
-
this.observer?.onToolCallEnd?.(record);
|
|
344
|
-
return record;
|
|
345
|
-
}
|
|
346
|
-
const record = {
|
|
347
|
-
id: toolCall.id,
|
|
348
|
-
name: toolName,
|
|
349
|
-
success: result.success,
|
|
350
|
-
output: result.output,
|
|
351
|
-
};
|
|
352
|
-
this.observer?.onToolCallEnd?.(record);
|
|
353
|
-
return record;
|
|
354
|
-
}
|
|
355
|
-
catch (error) {
|
|
356
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
357
|
-
const record = {
|
|
358
|
-
id: toolCall.id,
|
|
359
|
-
name: toolName,
|
|
360
|
-
success: false,
|
|
361
|
-
output: `Tool execution error: ${errorMessage}`,
|
|
362
|
-
};
|
|
363
|
-
this.observer?.onToolCallEnd?.(record);
|
|
364
|
-
return record;
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* Handle a subagent request from a tool call.
|
|
369
|
-
*/
|
|
370
|
-
async handleSubagentRequest(toolResult, currentDepth, subagentResults) {
|
|
371
|
-
const metadata = toolResult.metadata;
|
|
372
|
-
const agentName = metadata.agentName;
|
|
373
|
-
const prompt = metadata.prompt;
|
|
374
|
-
// Check depth limit
|
|
375
|
-
if (currentDepth >= this.maxSubagentDepth) {
|
|
376
|
-
const result = {
|
|
377
|
-
agentId: agentName,
|
|
378
|
-
prompt,
|
|
379
|
-
response: `Subagent depth limit (${this.maxSubagentDepth}) reached. Cannot spawn "${agentName}".`,
|
|
380
|
-
success: false,
|
|
381
|
-
};
|
|
382
|
-
subagentResults.push(result);
|
|
383
|
-
return result;
|
|
384
|
-
}
|
|
385
|
-
// Verify the target agent exists
|
|
386
|
-
const targetAgent = this.router.resolveAgent(agentName);
|
|
387
|
-
if (!targetAgent) {
|
|
388
|
-
const result = {
|
|
389
|
-
agentId: agentName,
|
|
390
|
-
prompt,
|
|
391
|
-
response: `Agent "${agentName}" not found. Available agents: ${this.router.getAgents().map((a) => a.id).join(', ')}`,
|
|
392
|
-
success: false,
|
|
393
|
-
};
|
|
394
|
-
subagentResults.push(result);
|
|
395
|
-
return result;
|
|
396
|
-
}
|
|
397
|
-
this.observer?.onSubagentStart?.(agentName, prompt);
|
|
398
|
-
try {
|
|
399
|
-
// Create a fresh orchestrator context for the subagent
|
|
400
|
-
// This runs a full agent loop in a nested context
|
|
401
|
-
const subContext = new ConversationContext(targetAgent, this.contextOptions);
|
|
402
|
-
subContext.addUserMessage(prompt);
|
|
403
|
-
// Run a mini agent loop for the subagent
|
|
404
|
-
const subResult = await this.runSubagentLoop(targetAgent, subContext, currentDepth + 1);
|
|
405
|
-
const result = {
|
|
406
|
-
agentId: agentName,
|
|
407
|
-
prompt,
|
|
408
|
-
response: subResult,
|
|
409
|
-
success: true,
|
|
410
|
-
};
|
|
411
|
-
this.observer?.onSubagentEnd?.(result);
|
|
412
|
-
subagentResults.push(result);
|
|
413
|
-
return result;
|
|
414
|
-
}
|
|
415
|
-
catch (error) {
|
|
416
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
417
|
-
const result = {
|
|
418
|
-
agentId: agentName,
|
|
419
|
-
prompt,
|
|
420
|
-
response: `Subagent "${agentName}" failed: ${errorMessage}`,
|
|
421
|
-
success: false,
|
|
422
|
-
};
|
|
423
|
-
this.observer?.onSubagentEnd?.(result);
|
|
424
|
-
subagentResults.push(result);
|
|
425
|
-
return result;
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
/**
|
|
429
|
-
* Run a mini agent loop for a subagent.
|
|
430
|
-
* Returns the final text response.
|
|
431
|
-
*/
|
|
432
|
-
async runSubagentLoop(agent, context, depth) {
|
|
433
|
-
const subagentResults = [];
|
|
434
|
-
let iterations = 0;
|
|
435
|
-
while (iterations < this.maxIterations) {
|
|
436
|
-
iterations++;
|
|
437
|
-
const messages = context.getMessages();
|
|
438
|
-
const toolDefs = this.getToolDefinitions(agent);
|
|
439
|
-
const requestOptions = {};
|
|
440
|
-
if (toolDefs.length > 0) {
|
|
441
|
-
requestOptions.tools = toolDefs;
|
|
442
|
-
}
|
|
443
|
-
const llmResult = await this.callLLM(messages, requestOptions);
|
|
444
|
-
if (llmResult.toolCalls.length > 0) {
|
|
445
|
-
context.addAssistantToolCalls(llmResult.toolCalls, llmResult.content || undefined);
|
|
446
|
-
for (const toolCall of llmResult.toolCalls) {
|
|
447
|
-
const record = await this.executeToolCall(toolCall, depth, subagentResults);
|
|
448
|
-
context.addToolResult(toolCall.id, record.output);
|
|
449
|
-
}
|
|
450
|
-
continue;
|
|
451
|
-
}
|
|
452
|
-
// Final response
|
|
453
|
-
return llmResult.content;
|
|
454
|
-
}
|
|
455
|
-
return `[Subagent ${agent.id} reached maximum iterations (${this.maxIterations})]`;
|
|
456
|
-
}
|
|
457
|
-
// ===========================================================================
|
|
458
|
-
// Internal: Context & Tools
|
|
459
|
-
// ===========================================================================
|
|
460
|
-
/**
|
|
461
|
-
* Get or create a ConversationContext for an agent.
|
|
462
|
-
*/
|
|
463
|
-
getOrCreateContext(agent) {
|
|
464
|
-
let context = this.contexts.get(agent.id);
|
|
465
|
-
if (!context) {
|
|
466
|
-
context = new ConversationContext(agent, this.contextOptions);
|
|
467
|
-
this.contexts.set(agent.id, context);
|
|
468
|
-
}
|
|
469
|
-
return context;
|
|
470
|
-
}
|
|
471
|
-
/**
|
|
472
|
-
* Get tool definitions for an agent based on its allowed tools.
|
|
473
|
-
*
|
|
474
|
-
* Filters the full tool registry to only include tools the agent
|
|
475
|
-
* is allowed to use (from its frontmatter.tools list).
|
|
476
|
-
*/
|
|
477
|
-
getToolDefinitions(agent) {
|
|
478
|
-
const allowedTools = agent.frontmatter.tools;
|
|
479
|
-
if (!allowedTools || allowedTools.length === 0) {
|
|
480
|
-
// No tool restrictions — agent gets all tools
|
|
481
|
-
return this.toolRegistry.getDefinitions();
|
|
482
|
-
}
|
|
483
|
-
// Map agent tool names to registry tool names
|
|
484
|
-
// Agent tools use names like 'readFile', 'editFiles', 'runSubagent'
|
|
485
|
-
// Registry tools use names like 'readFile', 'editFile', 'subagent'
|
|
486
|
-
const toolNameMap = {
|
|
487
|
-
editFiles: 'editFile',
|
|
488
|
-
runSubagent: 'subagent',
|
|
489
|
-
runInTerminal: 'terminal',
|
|
490
|
-
getTerminalOutput: 'terminal', // Same tool handles both
|
|
491
|
-
};
|
|
492
|
-
const definitions = [];
|
|
493
|
-
const seen = new Set();
|
|
494
|
-
for (const agentToolName of allowedTools) {
|
|
495
|
-
const registryName = toolNameMap[agentToolName] ?? agentToolName;
|
|
496
|
-
if (seen.has(registryName))
|
|
497
|
-
continue;
|
|
498
|
-
seen.add(registryName);
|
|
499
|
-
const tool = this.toolRegistry.get(registryName);
|
|
500
|
-
if (tool) {
|
|
501
|
-
definitions.push({
|
|
502
|
-
type: 'function',
|
|
503
|
-
function: {
|
|
504
|
-
name: tool.name,
|
|
505
|
-
description: tool.description,
|
|
506
|
-
parameters: tool.inputSchema,
|
|
507
|
-
},
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
return definitions;
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.test.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|