beth-copilot 1.0.15 → 1.0.16

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.
Files changed (136) hide show
  1. package/README.md +197 -77
  2. package/bin/cli.js +47 -0
  3. package/dist/core/context.d.ts +171 -0
  4. package/dist/core/context.d.ts.map +1 -0
  5. package/dist/core/context.js +353 -0
  6. package/dist/core/context.js.map +1 -0
  7. package/dist/core/context.test.d.ts +8 -0
  8. package/dist/core/context.test.d.ts.map +1 -0
  9. package/dist/core/context.test.js +253 -0
  10. package/dist/core/context.test.js.map +1 -0
  11. package/dist/core/handoffs.d.ts +151 -0
  12. package/dist/core/handoffs.d.ts.map +1 -0
  13. package/dist/core/handoffs.js +220 -0
  14. package/dist/core/handoffs.js.map +1 -0
  15. package/dist/core/handoffs.test.d.ts +8 -0
  16. package/dist/core/handoffs.test.d.ts.map +1 -0
  17. package/dist/core/handoffs.test.js +231 -0
  18. package/dist/core/handoffs.test.js.map +1 -0
  19. package/dist/core/orchestrator.d.ts +246 -0
  20. package/dist/core/orchestrator.d.ts.map +1 -0
  21. package/dist/core/orchestrator.js +514 -0
  22. package/dist/core/orchestrator.js.map +1 -0
  23. package/dist/core/orchestrator.test.d.ts +8 -0
  24. package/dist/core/orchestrator.test.d.ts.map +1 -0
  25. package/dist/core/orchestrator.test.js +517 -0
  26. package/dist/core/orchestrator.test.js.map +1 -0
  27. package/dist/core/router.d.ts +102 -0
  28. package/dist/core/router.d.ts.map +1 -0
  29. package/dist/core/router.js +178 -0
  30. package/dist/core/router.js.map +1 -0
  31. package/dist/core/router.test.d.ts +8 -0
  32. package/dist/core/router.test.d.ts.map +1 -0
  33. package/dist/core/router.test.js +215 -0
  34. package/dist/core/router.test.js.map +1 -0
  35. package/dist/index.d.ts +9 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +7 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/tools/cli/beads.d.ts +27 -0
  40. package/dist/tools/cli/beads.d.ts.map +1 -0
  41. package/dist/tools/cli/beads.js +172 -0
  42. package/dist/tools/cli/beads.js.map +1 -0
  43. package/dist/tools/cli/beads.test.d.ts +8 -0
  44. package/dist/tools/cli/beads.test.d.ts.map +1 -0
  45. package/dist/tools/cli/beads.test.js +264 -0
  46. package/dist/tools/cli/beads.test.js.map +1 -0
  47. package/dist/tools/cli/editFile.d.ts +17 -0
  48. package/dist/tools/cli/editFile.d.ts.map +1 -0
  49. package/dist/tools/cli/editFile.js +125 -0
  50. package/dist/tools/cli/editFile.js.map +1 -0
  51. package/dist/tools/cli/editFile.test.d.ts +8 -0
  52. package/dist/tools/cli/editFile.test.d.ts.map +1 -0
  53. package/dist/tools/cli/editFile.test.js +177 -0
  54. package/dist/tools/cli/editFile.test.js.map +1 -0
  55. package/dist/tools/cli/readFile.d.ts +25 -0
  56. package/dist/tools/cli/readFile.d.ts.map +1 -0
  57. package/dist/tools/cli/readFile.js +118 -0
  58. package/dist/tools/cli/readFile.js.map +1 -0
  59. package/dist/tools/cli/readFile.test.d.ts +8 -0
  60. package/dist/tools/cli/readFile.test.d.ts.map +1 -0
  61. package/dist/tools/cli/readFile.test.js +194 -0
  62. package/dist/tools/cli/readFile.test.js.map +1 -0
  63. package/dist/tools/cli/search.d.ts +16 -0
  64. package/dist/tools/cli/search.d.ts.map +1 -0
  65. package/dist/tools/cli/search.js +261 -0
  66. package/dist/tools/cli/search.js.map +1 -0
  67. package/dist/tools/cli/search.test.d.ts +8 -0
  68. package/dist/tools/cli/search.test.d.ts.map +1 -0
  69. package/dist/tools/cli/search.test.js +172 -0
  70. package/dist/tools/cli/search.test.js.map +1 -0
  71. package/dist/tools/cli/subagent.d.ts +43 -0
  72. package/dist/tools/cli/subagent.d.ts.map +1 -0
  73. package/dist/tools/cli/subagent.js +99 -0
  74. package/dist/tools/cli/subagent.js.map +1 -0
  75. package/dist/tools/cli/subagent.test.d.ts +8 -0
  76. package/dist/tools/cli/subagent.test.d.ts.map +1 -0
  77. package/dist/tools/cli/subagent.test.js +190 -0
  78. package/dist/tools/cli/subagent.test.js.map +1 -0
  79. package/dist/tools/cli/terminal.d.ts +19 -0
  80. package/dist/tools/cli/terminal.d.ts.map +1 -0
  81. package/dist/tools/cli/terminal.js +164 -0
  82. package/dist/tools/cli/terminal.js.map +1 -0
  83. package/dist/tools/cli/terminal.test.d.ts +8 -0
  84. package/dist/tools/cli/terminal.test.d.ts.map +1 -0
  85. package/dist/tools/cli/terminal.test.js +161 -0
  86. package/dist/tools/cli/terminal.test.js.map +1 -0
  87. package/dist/tools/index.d.ts +25 -0
  88. package/dist/tools/index.d.ts.map +1 -0
  89. package/dist/tools/index.js +41 -0
  90. package/dist/tools/index.js.map +1 -0
  91. package/dist/tools/interface.d.ts +64 -0
  92. package/dist/tools/interface.d.ts.map +1 -0
  93. package/dist/tools/interface.js +37 -0
  94. package/dist/tools/interface.js.map +1 -0
  95. package/dist/tools/interface.test.d.ts +7 -0
  96. package/dist/tools/interface.test.d.ts.map +1 -0
  97. package/dist/tools/interface.test.js +179 -0
  98. package/dist/tools/interface.test.js.map +1 -0
  99. package/dist/tools/mcp/bridge.d.ts +48 -0
  100. package/dist/tools/mcp/bridge.d.ts.map +1 -0
  101. package/dist/tools/mcp/bridge.js +128 -0
  102. package/dist/tools/mcp/bridge.js.map +1 -0
  103. package/dist/tools/mcp/bridge.test.d.ts +8 -0
  104. package/dist/tools/mcp/bridge.test.d.ts.map +1 -0
  105. package/dist/tools/mcp/bridge.test.js +300 -0
  106. package/dist/tools/mcp/bridge.test.js.map +1 -0
  107. package/dist/tools/mcp/client.d.ts +135 -0
  108. package/dist/tools/mcp/client.d.ts.map +1 -0
  109. package/dist/tools/mcp/client.js +263 -0
  110. package/dist/tools/mcp/client.js.map +1 -0
  111. package/dist/tools/mcp/client.test.d.ts +8 -0
  112. package/dist/tools/mcp/client.test.d.ts.map +1 -0
  113. package/dist/tools/mcp/client.test.js +390 -0
  114. package/dist/tools/mcp/client.test.js.map +1 -0
  115. package/dist/tools/registry.d.ts +82 -0
  116. package/dist/tools/registry.d.ts.map +1 -0
  117. package/dist/tools/registry.js +99 -0
  118. package/dist/tools/registry.js.map +1 -0
  119. package/dist/tools/registry.test.d.ts +7 -0
  120. package/dist/tools/registry.test.d.ts.map +1 -0
  121. package/dist/tools/registry.test.js +199 -0
  122. package/dist/tools/registry.test.js.map +1 -0
  123. package/dist/tools/suite.test.d.ts +11 -0
  124. package/dist/tools/suite.test.d.ts.map +1 -0
  125. package/dist/tools/suite.test.js +119 -0
  126. package/dist/tools/suite.test.js.map +1 -0
  127. package/dist/tools/types.d.ts +75 -0
  128. package/dist/tools/types.d.ts.map +1 -0
  129. package/dist/tools/types.js +30 -0
  130. package/dist/tools/types.js.map +1 -0
  131. package/dist/tools/types.test.d.ts +7 -0
  132. package/dist/tools/types.test.d.ts.map +1 -0
  133. package/dist/tools/types.test.js +178 -0
  134. package/dist/tools/types.test.js.map +1 -0
  135. package/package.json +2 -2
  136. package/sbom.json +209 -209
@@ -0,0 +1,246 @@
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 type { LLMProviderBase } from '../providers/interface.js';
22
+ import type { ToolRegistry } from '../tools/registry.js';
23
+ import type { ToolContext } from '../tools/types.js';
24
+ import type { AgentLoadResult } from './agents/types.js';
25
+ import type { SkillLoadResult } from './skills/types.js';
26
+ import { ConversationContext } from './context.js';
27
+ import type { ConversationContextOptions } from './context.js';
28
+ import { AgentRouter } from './router.js';
29
+ import type { RouteResult } from './router.js';
30
+ import { HandoffManager } from './handoffs.js';
31
+ import type { HandoffRequest, HandoffResult } from './handoffs.js';
32
+ /**
33
+ * Configuration for the Orchestrator.
34
+ */
35
+ export interface OrchestratorConfig {
36
+ /** Loaded agent definitions */
37
+ agents: AgentLoadResult;
38
+ /** Loaded skill definitions */
39
+ skills: SkillLoadResult;
40
+ /** LLM provider for chat completions */
41
+ provider: LLMProviderBase;
42
+ /** Tool registry with all available tools */
43
+ toolRegistry: ToolRegistry;
44
+ /** Tool execution context (working dir, permissions) */
45
+ toolContext: ToolContext;
46
+ /** Default agent ID (default: 'beth') */
47
+ defaultAgentId?: string;
48
+ /** Maximum tool-calling iterations per turn (default: 25) */
49
+ maxIterations?: number;
50
+ /** Maximum subagent depth (default: 3) */
51
+ maxSubagentDepth?: number;
52
+ /** Maximum handoff depth (default: 10) */
53
+ maxHandoffDepth?: number;
54
+ /** Options for conversation contexts */
55
+ contextOptions?: ConversationContextOptions;
56
+ }
57
+ /**
58
+ * The result of processing a single user turn.
59
+ */
60
+ export interface TurnResult {
61
+ /** The final text response from the agent */
62
+ response: string;
63
+ /** The agent that produced this response */
64
+ agentId: string;
65
+ /** How the agent was selected */
66
+ routeReason: RouteResult['reason'];
67
+ /** Tool calls that were executed during this turn */
68
+ toolCallsExecuted: ToolCallRecord[];
69
+ /** Any handoff that occurred */
70
+ handoff?: HandoffResult;
71
+ /** Any subagent results that were collected */
72
+ subagentResults: SubagentResult[];
73
+ /** Number of LLM iterations used */
74
+ iterations: number;
75
+ /** Skills that were injected for this turn */
76
+ injectedSkills: string[];
77
+ }
78
+ /**
79
+ * Record of a tool call execution.
80
+ */
81
+ export interface ToolCallRecord {
82
+ /** Tool call ID */
83
+ id: string;
84
+ /** Tool name */
85
+ name: string;
86
+ /** Whether the tool executed successfully */
87
+ success: boolean;
88
+ /** Brief output or error */
89
+ output: string;
90
+ }
91
+ /**
92
+ * Result from a subagent invocation.
93
+ */
94
+ export interface SubagentResult {
95
+ /** The subagent's ID */
96
+ agentId: string;
97
+ /** The prompt sent to the subagent */
98
+ prompt: string;
99
+ /** The subagent's response */
100
+ response: string;
101
+ /** Whether the subagent completed successfully */
102
+ success: boolean;
103
+ }
104
+ /**
105
+ * Callback for observing orchestrator events.
106
+ * Useful for logging, UI updates, and debugging.
107
+ */
108
+ export interface OrchestratorObserver {
109
+ /** Called when routing is decided */
110
+ onRoute?: (result: RouteResult) => void;
111
+ /** Called before each LLM call */
112
+ onLLMCall?: (agentId: string, messageCount: number) => void;
113
+ /** Called when the LLM responds with text */
114
+ onLLMResponse?: (agentId: string, content: string) => void;
115
+ /** Called when a tool call starts */
116
+ onToolCallStart?: (toolName: string, args: string) => void;
117
+ /** Called when a tool call completes */
118
+ onToolCallEnd?: (record: ToolCallRecord) => void;
119
+ /** Called when a handoff is initiated */
120
+ onHandoff?: (request: HandoffRequest) => void;
121
+ /** Called when a subagent starts */
122
+ onSubagentStart?: (agentId: string, prompt: string) => void;
123
+ /** Called when a subagent completes */
124
+ onSubagentEnd?: (result: SubagentResult) => void;
125
+ /** Called when an iteration completes */
126
+ onIteration?: (iteration: number, agentId: string) => void;
127
+ }
128
+ /**
129
+ * The Orchestrator — Beth's brain.
130
+ *
131
+ * Manages the full agent loop: routing → LLM → tool calls → response.
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const orchestrator = new Orchestrator({
136
+ * agents: loadAgents('.github/agents'),
137
+ * skills: loadSkills('.github/skills'),
138
+ * provider: new AzureOpenAIProvider(config),
139
+ * toolRegistry: createDefaultRegistry(),
140
+ * toolContext: { workingDir: process.cwd(), permissions: { ... } },
141
+ * });
142
+ *
143
+ * const result = await orchestrator.processMessage('Implement the login page');
144
+ * console.log(result.response);
145
+ * ```
146
+ */
147
+ export declare class Orchestrator {
148
+ private readonly router;
149
+ private readonly handoffs;
150
+ private readonly provider;
151
+ private readonly toolRegistry;
152
+ private readonly toolContext;
153
+ private readonly maxIterations;
154
+ private readonly maxSubagentDepth;
155
+ private readonly contextOptions?;
156
+ /** Active conversation contexts by agent ID */
157
+ private readonly contexts;
158
+ /** Currently active agent ID */
159
+ private activeAgentId;
160
+ /** Observer for event callbacks */
161
+ private observer?;
162
+ constructor(config: OrchestratorConfig);
163
+ /**
164
+ * Set an observer for orchestrator events.
165
+ */
166
+ setObserver(observer: OrchestratorObserver): void;
167
+ /**
168
+ * Process a user message through the full agent loop.
169
+ *
170
+ * This is the main entry point. It:
171
+ * 1. Routes the message to the appropriate agent
172
+ * 2. Injects any matching skills
173
+ * 3. Runs the agent loop (LLM → tools → LLM → ...)
174
+ * 4. Returns the final response
175
+ *
176
+ * @param userMessage - The user's input
177
+ * @returns The complete turn result
178
+ */
179
+ processMessage(userMessage: string): Promise<TurnResult>;
180
+ /**
181
+ * Process a message at a specific subagent depth.
182
+ * Used internally for subagent chains.
183
+ */
184
+ private processMessageAtDepth;
185
+ /**
186
+ * Execute a handoff to a different agent.
187
+ *
188
+ * @param toAgentId - Target agent ID
189
+ * @param prompt - Message to the new agent
190
+ * @returns The handoff result and potentially a new TurnResult
191
+ */
192
+ executeHandoff(toAgentId: string, prompt: string): Promise<{
193
+ handoff: HandoffResult;
194
+ turnResult?: TurnResult;
195
+ }>;
196
+ /**
197
+ * Get the currently active agent ID.
198
+ */
199
+ getActiveAgentId(): string;
200
+ /**
201
+ * Get the conversation context for the active agent.
202
+ */
203
+ getActiveContext(): ConversationContext | undefined;
204
+ /**
205
+ * Get the router for external agent queries.
206
+ */
207
+ getRouter(): AgentRouter;
208
+ /**
209
+ * Get the handoff manager.
210
+ */
211
+ getHandoffManager(): HandoffManager;
212
+ /**
213
+ * Reset all conversation state.
214
+ */
215
+ reset(): void;
216
+ /**
217
+ * Call the LLM and collect the full response.
218
+ * Uses streaming internally for reliability, collects into a single result.
219
+ */
220
+ private callLLM;
221
+ /**
222
+ * Execute a single tool call and return a record.
223
+ */
224
+ private executeToolCall;
225
+ /**
226
+ * Handle a subagent request from a tool call.
227
+ */
228
+ private handleSubagentRequest;
229
+ /**
230
+ * Run a mini agent loop for a subagent.
231
+ * Returns the final text response.
232
+ */
233
+ private runSubagentLoop;
234
+ /**
235
+ * Get or create a ConversationContext for an agent.
236
+ */
237
+ private getOrCreateContext;
238
+ /**
239
+ * Get tool definitions for an agent based on its allowed tools.
240
+ *
241
+ * Filters the full tool registry to only include tools the agent
242
+ * is allowed to use (from its frontmatter.tools list).
243
+ */
244
+ private getToolDefinitions;
245
+ }
246
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}