@adhd/agent-engine-orchestrator 2.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.
Files changed (173) hide show
  1. package/package.json +64 -0
  2. package/src/clients/http-client.d.ts +24 -0
  3. package/src/clients/http-client.d.ts.map +1 -0
  4. package/src/clients/http-client.js +96 -0
  5. package/src/clients/http-client.js.map +1 -0
  6. package/src/clients/in-process.d.ts +19 -0
  7. package/src/clients/in-process.d.ts.map +1 -0
  8. package/src/clients/in-process.js +25 -0
  9. package/src/clients/in-process.js.map +1 -0
  10. package/src/clients/index.d.ts +9 -0
  11. package/src/clients/index.d.ts.map +1 -0
  12. package/src/clients/index.js +6 -0
  13. package/src/clients/index.js.map +1 -0
  14. package/src/clients/registry.d.ts +30 -0
  15. package/src/clients/registry.d.ts.map +1 -0
  16. package/src/clients/registry.js +173 -0
  17. package/src/clients/registry.js.map +1 -0
  18. package/src/clients/stdio-client.d.ts +19 -0
  19. package/src/clients/stdio-client.d.ts.map +1 -0
  20. package/src/clients/stdio-client.js +91 -0
  21. package/src/clients/stdio-client.js.map +1 -0
  22. package/src/clients/tool-naming.d.ts +8 -0
  23. package/src/clients/tool-naming.d.ts.map +1 -0
  24. package/src/clients/tool-naming.js +26 -0
  25. package/src/clients/tool-naming.js.map +1 -0
  26. package/src/clients/types.d.ts +7 -0
  27. package/src/clients/types.d.ts.map +1 -0
  28. package/src/clients/types.js +2 -0
  29. package/src/clients/types.js.map +1 -0
  30. package/src/engine/context-window.d.ts +74 -0
  31. package/src/engine/context-window.d.ts.map +1 -0
  32. package/src/engine/context-window.js +156 -0
  33. package/src/engine/context-window.js.map +1 -0
  34. package/src/engine/dag-engine.d.ts +69 -0
  35. package/src/engine/dag-engine.d.ts.map +1 -0
  36. package/src/engine/dag-engine.js +103 -0
  37. package/src/engine/dag-engine.js.map +1 -0
  38. package/src/engine/hooks.d.ts +10 -0
  39. package/src/engine/hooks.d.ts.map +1 -0
  40. package/src/engine/hooks.js +39 -0
  41. package/src/engine/hooks.js.map +1 -0
  42. package/src/engine/orchestrator.d.ts +59 -0
  43. package/src/engine/orchestrator.d.ts.map +1 -0
  44. package/src/engine/orchestrator.js +665 -0
  45. package/src/engine/orchestrator.js.map +1 -0
  46. package/src/engine/policy.d.ts +22 -0
  47. package/src/engine/policy.d.ts.map +1 -0
  48. package/src/engine/policy.js +73 -0
  49. package/src/engine/policy.js.map +1 -0
  50. package/src/engine/prompt-resolver.d.ts +24 -0
  51. package/src/engine/prompt-resolver.d.ts.map +1 -0
  52. package/src/engine/prompt-resolver.js +55 -0
  53. package/src/engine/prompt-resolver.js.map +1 -0
  54. package/src/engine/queue.d.ts +12 -0
  55. package/src/engine/queue.d.ts.map +1 -0
  56. package/src/engine/queue.js +31 -0
  57. package/src/engine/queue.js.map +1 -0
  58. package/src/engine/tool-advertisement.d.ts +5 -0
  59. package/src/engine/tool-advertisement.d.ts.map +1 -0
  60. package/src/engine/tool-advertisement.js +70 -0
  61. package/src/engine/tool-advertisement.js.map +1 -0
  62. package/src/index.d.ts +50 -0
  63. package/src/index.d.ts.map +1 -0
  64. package/src/index.js +39 -0
  65. package/src/index.js.map +1 -0
  66. package/src/interfaces.d.ts +70 -0
  67. package/src/interfaces.d.ts.map +1 -0
  68. package/src/interfaces.js +9 -0
  69. package/src/interfaces.js.map +1 -0
  70. package/src/plugins/index.d.ts +4 -0
  71. package/src/plugins/index.d.ts.map +1 -0
  72. package/src/plugins/index.js +3 -0
  73. package/src/plugins/index.js.map +1 -0
  74. package/src/plugins/loader.d.ts +47 -0
  75. package/src/plugins/loader.d.ts.map +1 -0
  76. package/src/plugins/loader.js +174 -0
  77. package/src/plugins/loader.js.map +1 -0
  78. package/src/plugins/usage-plugin.d.ts +15 -0
  79. package/src/plugins/usage-plugin.d.ts.map +1 -0
  80. package/src/plugins/usage-plugin.js +140 -0
  81. package/src/plugins/usage-plugin.js.map +1 -0
  82. package/src/providers/anthropic.d.ts +35 -0
  83. package/src/providers/anthropic.d.ts.map +1 -0
  84. package/src/providers/anthropic.js +244 -0
  85. package/src/providers/anthropic.js.map +1 -0
  86. package/src/providers/claudecli.d.ts +36 -0
  87. package/src/providers/claudecli.d.ts.map +1 -0
  88. package/src/providers/claudecli.js +324 -0
  89. package/src/providers/claudecli.js.map +1 -0
  90. package/src/providers/factory.d.ts +5 -0
  91. package/src/providers/factory.d.ts.map +1 -0
  92. package/src/providers/factory.js +18 -0
  93. package/src/providers/factory.js.map +1 -0
  94. package/src/providers/index.d.ts +6 -0
  95. package/src/providers/index.d.ts.map +1 -0
  96. package/src/providers/index.js +5 -0
  97. package/src/providers/index.js.map +1 -0
  98. package/src/providers/openai.d.ts +30 -0
  99. package/src/providers/openai.d.ts.map +1 -0
  100. package/src/providers/openai.js +177 -0
  101. package/src/providers/openai.js.map +1 -0
  102. package/src/providers/types.d.ts +22 -0
  103. package/src/providers/types.d.ts.map +1 -0
  104. package/src/providers/types.js +2 -0
  105. package/src/providers/types.js.map +1 -0
  106. package/src/tools/agent-crud.d.ts +29 -0
  107. package/src/tools/agent-crud.d.ts.map +1 -0
  108. package/src/tools/agent-crud.js +28 -0
  109. package/src/tools/agent-crud.js.map +1 -0
  110. package/src/tools/session.d.ts +35 -0
  111. package/src/tools/session.d.ts.map +1 -0
  112. package/src/tools/session.js +52 -0
  113. package/src/tools/session.js.map +1 -0
  114. package/src/tools/task.d.ts +94 -0
  115. package/src/tools/task.d.ts.map +1 -0
  116. package/src/tools/task.js +336 -0
  117. package/src/tools/task.js.map +1 -0
  118. package/src/tools/usage.d.ts +19 -0
  119. package/src/tools/usage.d.ts.map +1 -0
  120. package/src/tools/usage.js +152 -0
  121. package/src/tools/usage.js.map +1 -0
  122. package/src/utils/ids.d.ts +2 -0
  123. package/src/utils/ids.d.ts.map +1 -0
  124. package/src/utils/ids.js +5 -0
  125. package/src/utils/ids.js.map +1 -0
  126. package/src/utils/timestamps.d.ts +2 -0
  127. package/src/utils/timestamps.d.ts.map +1 -0
  128. package/src/utils/timestamps.js +4 -0
  129. package/src/utils/timestamps.js.map +1 -0
  130. package/src/validation/agent.d.ts +556 -0
  131. package/src/validation/agent.d.ts.map +1 -0
  132. package/src/validation/agent.js +175 -0
  133. package/src/validation/agent.js.map +1 -0
  134. package/src/validation/agents.d.ts +2 -0
  135. package/src/validation/agents.d.ts.map +1 -0
  136. package/src/validation/agents.js +3 -0
  137. package/src/validation/agents.js.map +1 -0
  138. package/src/validation/errors.d.ts +32 -0
  139. package/src/validation/errors.d.ts.map +1 -0
  140. package/src/validation/errors.js +34 -0
  141. package/src/validation/errors.js.map +1 -0
  142. package/src/validation/execution.d.ts +101 -0
  143. package/src/validation/execution.d.ts.map +1 -0
  144. package/src/validation/execution.js +14 -0
  145. package/src/validation/execution.js.map +1 -0
  146. package/src/validation/index.d.ts +9 -0
  147. package/src/validation/index.d.ts.map +1 -0
  148. package/src/validation/index.js +9 -0
  149. package/src/validation/index.js.map +1 -0
  150. package/src/validation/mcp.d.ts +54 -0
  151. package/src/validation/mcp.d.ts.map +1 -0
  152. package/src/validation/mcp.js +33 -0
  153. package/src/validation/mcp.js.map +1 -0
  154. package/src/validation/message.d.ts +43 -0
  155. package/src/validation/message.d.ts.map +1 -0
  156. package/src/validation/message.js +28 -0
  157. package/src/validation/message.js.map +1 -0
  158. package/src/validation/session.d.ts +49 -0
  159. package/src/validation/session.d.ts.map +1 -0
  160. package/src/validation/session.js +32 -0
  161. package/src/validation/session.js.map +1 -0
  162. package/src/validation/task.d.ts +156 -0
  163. package/src/validation/task.d.ts.map +1 -0
  164. package/src/validation/task.js +84 -0
  165. package/src/validation/task.js.map +1 -0
  166. package/src/validation/tasks.d.ts +2 -0
  167. package/src/validation/tasks.d.ts.map +1 -0
  168. package/src/validation/tasks.js +3 -0
  169. package/src/validation/tasks.js.map +1 -0
  170. package/src/validation/usage.d.ts +75 -0
  171. package/src/validation/usage.d.ts.map +1 -0
  172. package/src/validation/usage.js +51 -0
  173. package/src/validation/usage.js.map +1 -0
@@ -0,0 +1,244 @@
1
+ import Anthropic from "@anthropic-ai/sdk";
2
+ import pRetry from "p-retry";
3
+ import { generateId } from "../utils/ids.js";
4
+ import { nowIso } from "../utils/timestamps.js";
5
+ import { resolveToolCallName } from "../clients/tool-naming.js";
6
+ import { ToolError } from "../validation/errors.js";
7
+ // ─── Model max-output token table ────────────────────────────────────────────
8
+ const MODEL_MAX_TOKENS = [
9
+ ["claude-fable-5", 128_000],
10
+ ["claude-mythos-5", 128_000],
11
+ ["claude-opus-4-8", 128_000],
12
+ ["claude-opus-4-7", 128_000],
13
+ ["claude-opus-4-6", 128_000],
14
+ ["claude-opus-4-5", 64_000],
15
+ ["claude-opus-4-1", 32_000],
16
+ ["claude-opus-4-0", 32_000],
17
+ ["claude-opus-4", 128_000],
18
+ ["claude-sonnet-4", 64_000],
19
+ ["claude-haiku-4", 64_000],
20
+ ["claude-3-5-sonnet", 8_192],
21
+ ["claude-3-5-haiku", 8_192],
22
+ ["claude-3-opus", 4_096],
23
+ ["claude-3-sonnet", 4_096],
24
+ ["claude-3-haiku", 4_096],
25
+ ];
26
+ /**
27
+ * Anthropic is the ONE provider whose headline `input_tokens` EXCLUDES cached tokens —
28
+ * it reports only the uncached tail after the last cache breakpoint. OpenAI, DeepSeek and
29
+ * Gemini all report an INCLUSIVE headline.
30
+ *
31
+ * So the true total input Anthropic processed is:
32
+ * input_tokens + cache_read_input_tokens + cache_creation_input_tokens
33
+ *
34
+ * Storing the raw `input_tokens` in the same column as the other providers' inclusive
35
+ * headline systematically UNDER-COUNTS Anthropic spend (on a cache-warm run most input
36
+ * lives in cache_read) and makes budget caps bite openai-provider agents far sooner than
37
+ * anthropic ones for identical real usage. See BUG-ORCH-010.
38
+ */
39
+ export function normaliseAnthropicUsage(sdkUsage, stopReason, maxTokens) {
40
+ const cacheRead = sdkUsage.cache_read_input_tokens ?? 0;
41
+ const cacheWrite = sdkUsage.cache_creation_input_tokens ?? 0;
42
+ const uncached = sdkUsage.input_tokens;
43
+ return {
44
+ // Reconstruct the true total — do NOT pass Anthropic's headline through directly.
45
+ inputTokens: uncached + cacheRead + cacheWrite,
46
+ outputTokens: sdkUsage.output_tokens,
47
+ uncachedInputTokens: uncached,
48
+ cacheReadTokens: cacheRead,
49
+ cacheCreationTokens: cacheWrite,
50
+ stopReason,
51
+ maxTokens,
52
+ };
53
+ }
54
+ function defaultMaxTokens(model, config) {
55
+ for (const [prefix, maxTokens] of MODEL_MAX_TOKENS) {
56
+ if (model.startsWith(prefix))
57
+ return maxTokens;
58
+ }
59
+ return config.server.defaultMaxTokens;
60
+ }
61
+ function buildAnthropicClient(secret, timeoutMs) {
62
+ if (secret.startsWith("sk-ant-api")) {
63
+ return {
64
+ client: new Anthropic({ apiKey: secret, timeout: timeoutMs }),
65
+ useOauthIdentity: false,
66
+ };
67
+ }
68
+ const isOauth = secret.startsWith("sk-ant-oat");
69
+ return {
70
+ client: new Anthropic({
71
+ authToken: secret,
72
+ timeout: timeoutMs,
73
+ ...(isOauth ? { defaultHeaders: { "anthropic-beta": "oauth-2025-04-20" } } : {}),
74
+ }),
75
+ useOauthIdentity: isOauth,
76
+ };
77
+ }
78
+ function toAnthropicTools(tools) {
79
+ if (!tools)
80
+ return undefined;
81
+ return tools.map(tool => ({
82
+ name: tool.name,
83
+ description: tool.description || "",
84
+ input_schema: (tool.inputSchema || {
85
+ type: "object",
86
+ properties: {},
87
+ }),
88
+ }));
89
+ }
90
+ function toAnthropicMessages(messages) {
91
+ const nonSystem = messages.filter(m => m.role !== "system");
92
+ return nonSystem.map((message) => {
93
+ if (message.role === "tool") {
94
+ const toolResult = message.toolResults?.[0];
95
+ if (!toolResult) {
96
+ throw new Error("Tool message missing tool result");
97
+ }
98
+ return {
99
+ role: "user",
100
+ content: [
101
+ {
102
+ type: "tool_result",
103
+ tool_use_id: toolResult.toolCallId,
104
+ content: JSON.stringify(toolResult.result),
105
+ is_error: toolResult.isError,
106
+ },
107
+ ],
108
+ };
109
+ }
110
+ if (message.role === "assistant" && message.toolCalls?.length) {
111
+ const contentBlocks = [];
112
+ if (message.content) {
113
+ contentBlocks.push({ type: "text", text: message.content });
114
+ }
115
+ for (const tc of message.toolCalls) {
116
+ contentBlocks.push({
117
+ type: "tool_use",
118
+ id: tc.id,
119
+ name: tc.tool,
120
+ input: tc.arguments,
121
+ });
122
+ }
123
+ return { role: "assistant", content: contentBlocks };
124
+ }
125
+ if (message.role === "assistant") {
126
+ return { role: "assistant", content: message.content || "" };
127
+ }
128
+ if (message.role === "user") {
129
+ return { role: "user", content: message.content || "" };
130
+ }
131
+ throw new Error(`Unsupported message role for Anthropic: ${message.role}`);
132
+ });
133
+ }
134
+ const CLAUDE_CODE_IDENTITY = "You are Claude Code, Anthropic's official CLI for Claude.";
135
+ export class AnthropicProvider {
136
+ client;
137
+ providerConfig;
138
+ useOauthIdentity;
139
+ logger;
140
+ config;
141
+ constructor(providerConfig, config, logger) {
142
+ this.providerConfig = providerConfig;
143
+ this.config = config;
144
+ this.logger = logger;
145
+ const resolved = config.getProviderConfig({
146
+ provider: "anthropic",
147
+ secret: providerConfig.env?.secret,
148
+ model: providerConfig.env?.model,
149
+ inlineModel: providerConfig.model,
150
+ });
151
+ if (!resolved.secret) {
152
+ throw new ToolError("PROVIDER_AUTH_ERROR", `Anthropic requires a credential. ` +
153
+ `Set ADHD_AGENT_ANTHROPIC_SECRET in your ~/.adhd/.env ` +
154
+ `(run \`claude setup-token\` to obtain an OAuth access token, ` +
155
+ `or use your console.anthropic.com API key).`);
156
+ }
157
+ const { client, useOauthIdentity } = buildAnthropicClient(resolved.secret, providerConfig.timeoutMs);
158
+ this.client = client;
159
+ this.useOauthIdentity = useOauthIdentity;
160
+ }
161
+ async chat(request) {
162
+ const retryConfig = this.providerConfig.retryConfig;
163
+ const systemMessages = request.messages.filter(m => m.role === "system");
164
+ const systemPrompt = systemMessages.map(m => m.content || "").join("\n") || undefined;
165
+ const run = async () => {
166
+ const effectiveSystem = this.useOauthIdentity
167
+ ? [
168
+ { type: "text", text: CLAUDE_CODE_IDENTITY },
169
+ ...(systemPrompt
170
+ ? [{ type: "text", text: systemPrompt }]
171
+ : []),
172
+ ]
173
+ : systemPrompt;
174
+ const effectiveModel = this.providerConfig.model ?? "";
175
+ if (!effectiveModel) {
176
+ this.logger.warn("AnthropicProvider: no model configured; API will likely reject");
177
+ }
178
+ const stream = this.client.messages.stream({
179
+ model: effectiveModel,
180
+ system: effectiveSystem,
181
+ temperature: this.providerConfig.temperature,
182
+ max_tokens: this.providerConfig.maxTokens ?? defaultMaxTokens(effectiveModel, this.config),
183
+ messages: toAnthropicMessages(request.messages),
184
+ tools: toAnthropicTools(request.tools),
185
+ }, { signal: request.signal });
186
+ const response = await stream.finalMessage();
187
+ const toolCalls = [];
188
+ const contentParts = [];
189
+ for (const block of response.content) {
190
+ if (block.type === "text") {
191
+ contentParts.push(block.text);
192
+ }
193
+ if (block.type === "tool_use") {
194
+ const { server, tool } = resolveToolCallName(block.name, (request.tools ?? []).map((t) => t.name));
195
+ toolCalls.push({
196
+ id: block.id,
197
+ server,
198
+ tool,
199
+ arguments: block.input,
200
+ });
201
+ }
202
+ }
203
+ const message = {
204
+ id: generateId(),
205
+ sessionId: "",
206
+ role: "assistant",
207
+ content: contentParts.length > 0 ? contentParts.join("\n") : undefined,
208
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
209
+ createdAt: nowIso(),
210
+ };
211
+ const sdkUsage = response.usage;
212
+ const STOP_REASON = {
213
+ end_turn: "stop", max_tokens: "length", tool_use: "tool_calls",
214
+ };
215
+ const normalisedStopReason = STOP_REASON[response.stop_reason ?? ""] ?? "unknown";
216
+ return {
217
+ message,
218
+ stopReason: toolCalls.length > 0 ? "tool_calls" : "completed",
219
+ rawUsage: sdkUsage,
220
+ usage: normaliseAnthropicUsage(sdkUsage, normalisedStopReason, this.providerConfig.maxTokens ?? defaultMaxTokens(effectiveModel, this.config)),
221
+ };
222
+ };
223
+ if (retryConfig) {
224
+ return pRetry(run, {
225
+ retries: retryConfig.retries,
226
+ minTimeout: retryConfig.minTimeout,
227
+ maxTimeout: retryConfig.maxTimeout,
228
+ factor: retryConfig.factor,
229
+ onFailedAttempt: error => {
230
+ if (request.signal?.aborted) {
231
+ throw error;
232
+ }
233
+ if ("status" in error && error.status === 401) {
234
+ throw new ToolError("PROVIDER_AUTH_ERROR", `Anthropic authentication failed. ` +
235
+ `Check ADHD_AGENT_ANTHROPIC_SECRET in your ~/.adhd/.env ` +
236
+ `(run \`claude setup-token\` to obtain a fresh OAuth access token).`);
237
+ }
238
+ },
239
+ });
240
+ }
241
+ return run();
242
+ }
243
+ }
244
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../../../packages/agent/agent-engine-orchestrator/src/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { LLMProvider, ProviderChatRequest, ProviderChatResponse } from "./types.js";
2
+ import type { McpServerConfig, ProviderConfig } from "../validation/index.js";
3
+ import type { EngineLogger, EngineConfig } from "../interfaces.js";
4
+ type ClaudeCliConfig = Extract<ProviderConfig, {
5
+ type: "claudecli";
6
+ }>;
7
+ /**
8
+ * Compute the effective allowed built-in set and the `--disallowedTools` argv
9
+ * entries that must be passed to the `claude` CLI subprocess.
10
+ */
11
+ export declare function computeClaudeBuiltinArgs(params: {
12
+ compiledTools: string[] | undefined;
13
+ allowedBuiltinTools: string[] | undefined;
14
+ }): {
15
+ effectiveAllowed: string[];
16
+ disallowedArgv: string[];
17
+ };
18
+ export declare function extractAgentSpecName(md: string): string | undefined;
19
+ export declare function normalizeAgentSpec(md: string): {
20
+ content: string;
21
+ agentName: string;
22
+ };
23
+ export declare class ClaudeCliProvider implements LLMProvider {
24
+ private readonly providerConfig;
25
+ private readonly mcpServers;
26
+ private readonly compiledTools;
27
+ private readonly logger;
28
+ private readonly config;
29
+ constructor(config: ClaudeCliConfig, mcpServers?: Record<string, McpServerConfig>, compiledTools?: string[], engineConfig?: EngineConfig, engineLogger?: EngineLogger);
30
+ private buildSubprocessEnv;
31
+ private writeMcpConfigFile;
32
+ private writeAgentSpecDir;
33
+ chat(request: ProviderChatRequest): Promise<ProviderChatResponse>;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=claudecli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudecli.d.ts","sourceRoot":"","sources":["../../../../../../packages/agent/agent-engine-orchestrator/src/providers/claudecli.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAW,MAAM,wBAAwB,CAAC;AAEvF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEnE,KAAK,eAAe,GAAG,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAmGtE;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC7C,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACpC,mBAAmB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7C,GAAG;IAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAe3D;AAOD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMnE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAgBrF;AAID,qBAAa,iBAAkB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAC7D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAGlC,MAAM,EAAE,eAAe,EACvB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAM,EAChD,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,YAAY,CAAC,EAAE,YAAY,EAC3B,YAAY,CAAC,EAAE,YAAY;IAS/B,OAAO,CAAC,kBAAkB;YAWZ,kBAAkB;YA8BlB,iBAAiB;IAUzB,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAqM1E"}
@@ -0,0 +1,324 @@
1
+ import { spawn } from "child_process";
2
+ import readline from "readline";
3
+ import { writeFile, unlink, mkdtemp, mkdir, rm } from "fs/promises";
4
+ import { tmpdir } from "os";
5
+ import { join } from "path";
6
+ import { generateId } from "../utils/ids.js";
7
+ import { nowIso } from "../utils/timestamps.js";
8
+ import { resolveToolCallName } from "../clients/tool-naming.js";
9
+ import { ToolError } from "../validation/errors.js";
10
+ // ─── history encoding ────────────────────────────────────────────────────────
11
+ function buildUserMessage(messages) {
12
+ const nonSystem = messages.filter(m => m.role !== "system");
13
+ if (nonSystem.length === 0)
14
+ return "";
15
+ if (nonSystem.length === 1)
16
+ return nonSystem[0].content ?? "";
17
+ const history = nonSystem.slice(0, -1);
18
+ const last = nonSystem[nonSystem.length - 1];
19
+ const lines = ["[Conversation history]"];
20
+ for (const msg of history) {
21
+ let label;
22
+ if (msg.role === "user") {
23
+ label = "User";
24
+ }
25
+ else if (msg.role === "assistant") {
26
+ label = "Assistant";
27
+ }
28
+ else if (msg.role === "tool") {
29
+ label = "Tool result";
30
+ }
31
+ else {
32
+ label = "System";
33
+ }
34
+ const body = msg.content ??
35
+ (msg.toolCalls ? `[called tools: ${msg.toolCalls.map(tc => tc.tool).join(", ")}]` : "");
36
+ lines.push(`${label}: ${body}`);
37
+ }
38
+ lines.push("", "[Current message]", last.content ?? "");
39
+ return lines.join("\n");
40
+ }
41
+ // ─── built-in tool list ──────────────────────────────────────────────────────
42
+ const CLAUDE_CODE_BUILTIN_TOOLS = [
43
+ "Bash",
44
+ "Edit",
45
+ "MultiEdit",
46
+ "Read",
47
+ "Write",
48
+ "Glob",
49
+ "Grep",
50
+ "LS",
51
+ "WebFetch",
52
+ "WebSearch",
53
+ "TodoRead",
54
+ "TodoWrite",
55
+ "NotebookRead",
56
+ "NotebookEdit",
57
+ "Task",
58
+ ];
59
+ /**
60
+ * Compute the effective allowed built-in set and the `--disallowedTools` argv
61
+ * entries that must be passed to the `claude` CLI subprocess.
62
+ */
63
+ export function computeClaudeBuiltinArgs(params) {
64
+ const effectiveAllowed = params.compiledTools !== undefined
65
+ ? params.compiledTools
66
+ : (params.allowedBuiltinTools ?? []);
67
+ const allowed = new Set(effectiveAllowed);
68
+ const disallowed = CLAUDE_CODE_BUILTIN_TOOLS.filter(t => !allowed.has(t));
69
+ const disallowedArgv = [];
70
+ for (const tool of disallowed) {
71
+ disallowedArgv.push("--disallowedTools", tool);
72
+ }
73
+ return { effectiveAllowed, disallowedArgv };
74
+ }
75
+ // ─── agent-spec helpers ──────────────────────────────────────────────────────
76
+ const FALLBACK_SPEC_AGENT_NAME = "agent-mcp-runner";
77
+ const FALLBACK_SPEC_DESCRIPTION = "agent-mcp delegated agent";
78
+ export function extractAgentSpecName(md) {
79
+ const block = /^\uFEFF?---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)/.exec(md);
80
+ if (!block)
81
+ return undefined;
82
+ const nameLine = /^[ \t]*name:[ \t]*(.+?)[ \t]*$/m.exec(block[1]);
83
+ if (!nameLine)
84
+ return undefined;
85
+ return nameLine[1].replace(/^["']|["']$/g, "").trim() || undefined;
86
+ }
87
+ export function normalizeAgentSpec(md) {
88
+ const existing = extractAgentSpecName(md);
89
+ if (existing)
90
+ return { content: md, agentName: existing };
91
+ const hasFrontmatter = /^\uFEFF?---[ \t]*\r?\n/.test(md);
92
+ if (hasFrontmatter) {
93
+ const content = md.replace(/^(\uFEFF?---[ \t]*\r?\n)/, `$1name: ${FALLBACK_SPEC_AGENT_NAME}\n`);
94
+ return { content, agentName: FALLBACK_SPEC_AGENT_NAME };
95
+ }
96
+ const content = `---\nname: ${FALLBACK_SPEC_AGENT_NAME}\n` +
97
+ `description: ${FALLBACK_SPEC_DESCRIPTION}\n---\n${md}`;
98
+ return { content, agentName: FALLBACK_SPEC_AGENT_NAME };
99
+ }
100
+ // ─── provider ────────────────────────────────────────────────────────────────
101
+ export class ClaudeCliProvider {
102
+ providerConfig;
103
+ mcpServers;
104
+ compiledTools;
105
+ logger;
106
+ config;
107
+ constructor(config, mcpServers = {}, compiledTools, engineConfig, engineLogger) {
108
+ this.providerConfig = config;
109
+ this.mcpServers = mcpServers;
110
+ this.compiledTools = compiledTools;
111
+ this.config = engineConfig ?? {};
112
+ this.logger = engineLogger ?? { info: () => { }, warn: () => { }, error: () => { }, debug: () => { } };
113
+ }
114
+ buildSubprocessEnv() {
115
+ const result = {};
116
+ for (const [k, v] of Object.entries(process.env)) {
117
+ if (v !== undefined)
118
+ result[k] = v;
119
+ }
120
+ for (const [k, v] of Object.entries(this.config.subprocessEnv())) {
121
+ result[k] = v;
122
+ }
123
+ return result;
124
+ }
125
+ async writeMcpConfigFile() {
126
+ const entries = Object.entries(this.mcpServers);
127
+ if (entries.length === 0)
128
+ return undefined;
129
+ const mapped = {};
130
+ for (const [name, cfg] of entries) {
131
+ if (cfg.transport === "stdio") {
132
+ const entry = {
133
+ type: "stdio",
134
+ command: cfg.command,
135
+ };
136
+ if (cfg.args?.length)
137
+ entry.args = cfg.args;
138
+ if (cfg.env && Object.keys(cfg.env).length)
139
+ entry.env = cfg.env;
140
+ mapped[name] = entry;
141
+ }
142
+ else if (cfg.transport === "http" || cfg.transport === "sse") {
143
+ const entry = {
144
+ type: cfg.transport,
145
+ url: cfg.url,
146
+ };
147
+ if (cfg.headers && Object.keys(cfg.headers).length)
148
+ entry.headers = cfg.headers;
149
+ mapped[name] = entry;
150
+ }
151
+ }
152
+ const filePath = join(tmpdir(), `agent-mcp-claudecli-${Date.now()}.json`);
153
+ await writeFile(filePath, JSON.stringify({ mcpServers: mapped }), "utf8");
154
+ return filePath;
155
+ }
156
+ async writeAgentSpecDir(md) {
157
+ const { content, agentName } = normalizeAgentSpec(md);
158
+ const dir = await mkdtemp(join(tmpdir(), "agent-mcp-spec-"));
159
+ const agentsDir = join(dir, ".claude", "agents");
160
+ await mkdir(agentsDir, { recursive: true });
161
+ const safeFile = `${agentName.replace(/[^a-zA-Z0-9_-]/g, "_") || "agent"}.md`;
162
+ await writeFile(join(agentsDir, safeFile), content, "utf8");
163
+ return { dir, agentName };
164
+ }
165
+ async chat(request) {
166
+ const claudePath = this.providerConfig.claudePath ?? "claude";
167
+ const systemMessages = request.messages.filter(m => m.role === "system");
168
+ const systemPrompt = systemMessages.map(m => m.content ?? "").join("\n") || undefined;
169
+ const userMessage = buildUserMessage(request.messages);
170
+ const mcpConfigPath = await this.writeMcpConfigFile();
171
+ const specMode = this.providerConfig.systemPromptIsAgentSpec === true && !!systemPrompt;
172
+ let agentSpecDir;
173
+ let agentSpecName;
174
+ if (specMode && systemPrompt) {
175
+ const written = await this.writeAgentSpecDir(systemPrompt);
176
+ agentSpecDir = written.dir;
177
+ agentSpecName = written.agentName;
178
+ }
179
+ const { disallowedArgv } = computeClaudeBuiltinArgs({
180
+ compiledTools: this.compiledTools,
181
+ allowedBuiltinTools: this.providerConfig.allowedBuiltinTools,
182
+ });
183
+ const args = [
184
+ "-p",
185
+ "--dangerously-skip-permissions",
186
+ "--input-format", "stream-json",
187
+ "--output-format", "stream-json",
188
+ "--verbose",
189
+ ];
190
+ if (specMode && agentSpecDir && agentSpecName) {
191
+ args.push("--add-dir", agentSpecDir, "--setting-sources", "project", "--agent", agentSpecName);
192
+ if (this.providerConfig.allowedBuiltinTools?.length) {
193
+ this.logger.warn({ agent: agentSpecName }, "claudecli: allowedBuiltinTools is ignored when systemPromptIsAgentSpec is set; the agent spec's `tools:` header governs tool access");
194
+ }
195
+ }
196
+ else {
197
+ args.push(...disallowedArgv);
198
+ if (systemPrompt)
199
+ args.push("--system-prompt", systemPrompt);
200
+ }
201
+ if (this.providerConfig.model)
202
+ args.push("--model", this.providerConfig.model);
203
+ if (mcpConfigPath) {
204
+ args.push("--mcp-config", mcpConfigPath, "--strict-mcp-config");
205
+ }
206
+ const subEnv = this.buildSubprocessEnv();
207
+ const proc = spawn(claudePath, args, {
208
+ stdio: ["pipe", "pipe", "pipe"],
209
+ env: subEnv,
210
+ });
211
+ if (!proc.stdout)
212
+ throw new Error('stdout not available');
213
+ if (!proc.stdin)
214
+ throw new Error('stdin not available');
215
+ const rl = readline.createInterface({
216
+ input: proc.stdout,
217
+ crlfDelay: Infinity,
218
+ });
219
+ const onAbort = () => { proc.kill("SIGTERM"); };
220
+ request.signal?.addEventListener("abort", onAbort, { once: true });
221
+ try {
222
+ proc.stdin.write(JSON.stringify({
223
+ type: "user",
224
+ message: { role: "user", content: userMessage },
225
+ }) + "\n");
226
+ let procError;
227
+ proc.on("error", (err) => { procError = err; });
228
+ let finalResult = "";
229
+ for await (const line of rl) {
230
+ if (request.signal?.aborted) {
231
+ throw new Error("PROVIDER_ERROR: request aborted");
232
+ }
233
+ if (procError) {
234
+ throw new Error(`PROVIDER_ERROR: claude CLI error: ${procError.message}`);
235
+ }
236
+ let event;
237
+ try {
238
+ event = JSON.parse(line);
239
+ }
240
+ catch {
241
+ continue;
242
+ }
243
+ if (event.type === "result") {
244
+ const r = event;
245
+ if (r.is_error) {
246
+ throw new Error(`PROVIDER_ERROR: claude CLI returned error: ${r.result ?? "(no message)"}`);
247
+ }
248
+ finalResult = r.result ?? "";
249
+ break;
250
+ }
251
+ if (event.type === "assistant") {
252
+ const assistantEvent = event;
253
+ const toolUseBlocks = (assistantEvent.message?.content ?? []).filter((b) => b.type === "tool_use");
254
+ for (const block of toolUseBlocks) {
255
+ let toolResultText;
256
+ let isError = false;
257
+ if (request.executeTool) {
258
+ let qualifiedName = block.name;
259
+ if (qualifiedName.startsWith("mcp__")) {
260
+ qualifiedName = qualifiedName.slice(5);
261
+ }
262
+ try {
263
+ const { server, tool } = resolveToolCallName(qualifiedName, (request.tools ?? []).map((t) => t.name));
264
+ const { result, isError: err } = await request.executeTool(server, tool, block.input);
265
+ toolResultText = typeof result === "string"
266
+ ? result
267
+ : JSON.stringify(result);
268
+ isError = err;
269
+ }
270
+ catch (err) {
271
+ toolResultText = err instanceof Error ? err.message : String(err);
272
+ isError = true;
273
+ }
274
+ }
275
+ else {
276
+ toolResultText = "Tool execution not available (no executeTool callback)";
277
+ isError = true;
278
+ }
279
+ proc.stdin.write(JSON.stringify({
280
+ type: "user",
281
+ message: {
282
+ role: "user",
283
+ content: [{
284
+ type: "tool_result",
285
+ tool_use_id: block.id,
286
+ content: [{ type: "text", text: toolResultText }],
287
+ is_error: isError,
288
+ }],
289
+ },
290
+ }) + "\n");
291
+ }
292
+ }
293
+ }
294
+ proc.stdin.end();
295
+ if (!finalResult) {
296
+ throw new ToolError("PROVIDER_AUTH_ERROR", "Claude CLI returned empty result. " +
297
+ "Ensure `claude auth status` shows a valid login. " +
298
+ "To use the Anthropic API instead, set ADHD_AGENT_ANTHROPIC_SECRET in your ~/.adhd/.env.");
299
+ }
300
+ const message = {
301
+ id: generateId(),
302
+ sessionId: "",
303
+ role: "assistant",
304
+ content: finalResult,
305
+ createdAt: nowIso(),
306
+ };
307
+ return { message, stopReason: "completed" };
308
+ }
309
+ finally {
310
+ request.signal?.removeEventListener("abort", onAbort);
311
+ rl.close();
312
+ if (proc.exitCode === null && !proc.killed) {
313
+ proc.kill("SIGTERM");
314
+ }
315
+ if (mcpConfigPath) {
316
+ unlink(mcpConfigPath).catch(() => { });
317
+ }
318
+ if (agentSpecDir) {
319
+ rm(agentSpecDir, { recursive: true, force: true }).catch(() => { });
320
+ }
321
+ }
322
+ }
323
+ }
324
+ //# sourceMappingURL=claudecli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudecli.js","sourceRoot":"","sources":["../../../../../../packages/agent/agent-engine-orchestrator/src/providers/claudecli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { EngineConfig, EngineLogger } from "../interfaces.js";
2
+ import type { McpServerConfig, ProviderConfig } from "../validation/index.js";
3
+ import type { LLMProvider } from "./types.js";
4
+ export declare function createProvider(providerConfig: ProviderConfig, mcpServers?: Record<string, McpServerConfig>, engineConfig?: EngineConfig, engineLogger?: EngineLogger): LLMProvider;
5
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/agent/agent-engine-orchestrator/src/providers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,cAAc,CAC1B,cAAc,EAAE,cAAc,EAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC5C,YAAY,CAAC,EAAE,YAAY,EAC3B,YAAY,CAAC,EAAE,YAAY,GAC5B,WAAW,CAab"}