@nodetool-ai/runtime 0.7.0-rc.11

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 (198) hide show
  1. package/dist/bridge-protocol.d.ts +39 -0
  2. package/dist/bridge-protocol.d.ts.map +1 -0
  3. package/dist/bridge-protocol.js +39 -0
  4. package/dist/bridge-protocol.js.map +1 -0
  5. package/dist/comfy-executor.d.ts +41 -0
  6. package/dist/comfy-executor.d.ts.map +1 -0
  7. package/dist/comfy-executor.js +305 -0
  8. package/dist/comfy-executor.js.map +1 -0
  9. package/dist/context-packer.d.ts +22 -0
  10. package/dist/context-packer.d.ts.map +1 -0
  11. package/dist/context-packer.js +66 -0
  12. package/dist/context-packer.js.map +1 -0
  13. package/dist/context.d.ts +405 -0
  14. package/dist/context.d.ts.map +1 -0
  15. package/dist/context.js +1455 -0
  16. package/dist/context.js.map +1 -0
  17. package/dist/index.d.ts +18 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +15 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/node-executor.d.ts +53 -0
  22. package/dist/node-executor.d.ts.map +1 -0
  23. package/dist/node-executor.js +9 -0
  24. package/dist/node-executor.js.map +1 -0
  25. package/dist/providers/aki-manifest.json +34 -0
  26. package/dist/providers/aki-provider.d.ts +65 -0
  27. package/dist/providers/aki-provider.d.ts.map +1 -0
  28. package/dist/providers/aki-provider.js +517 -0
  29. package/dist/providers/aki-provider.js.map +1 -0
  30. package/dist/providers/anthropic-provider.d.ts +55 -0
  31. package/dist/providers/anthropic-provider.d.ts.map +1 -0
  32. package/dist/providers/anthropic-provider.js +563 -0
  33. package/dist/providers/anthropic-provider.js.map +1 -0
  34. package/dist/providers/base-provider.d.ts +194 -0
  35. package/dist/providers/base-provider.d.ts.map +1 -0
  36. package/dist/providers/base-provider.js +515 -0
  37. package/dist/providers/base-provider.js.map +1 -0
  38. package/dist/providers/cerebras-provider.d.ts +20 -0
  39. package/dist/providers/cerebras-provider.d.ts.map +1 -0
  40. package/dist/providers/cerebras-provider.js +52 -0
  41. package/dist/providers/cerebras-provider.js.map +1 -0
  42. package/dist/providers/claude-agent-provider.d.ts +107 -0
  43. package/dist/providers/claude-agent-provider.d.ts.map +1 -0
  44. package/dist/providers/claude-agent-provider.js +586 -0
  45. package/dist/providers/claude-agent-provider.js.map +1 -0
  46. package/dist/providers/cohere-provider.d.ts +36 -0
  47. package/dist/providers/cohere-provider.d.ts.map +1 -0
  48. package/dist/providers/cohere-provider.js +116 -0
  49. package/dist/providers/cohere-provider.js.map +1 -0
  50. package/dist/providers/cost-calculator.d.ts +109 -0
  51. package/dist/providers/cost-calculator.d.ts.map +1 -0
  52. package/dist/providers/cost-calculator.js +475 -0
  53. package/dist/providers/cost-calculator.js.map +1 -0
  54. package/dist/providers/deepseek-provider.d.ts +25 -0
  55. package/dist/providers/deepseek-provider.d.ts.map +1 -0
  56. package/dist/providers/deepseek-provider.js +58 -0
  57. package/dist/providers/deepseek-provider.js.map +1 -0
  58. package/dist/providers/fake-provider.d.ts +52 -0
  59. package/dist/providers/fake-provider.d.ts.map +1 -0
  60. package/dist/providers/fake-provider.js +107 -0
  61. package/dist/providers/fake-provider.js.map +1 -0
  62. package/dist/providers/fal-provider.d.ts +32 -0
  63. package/dist/providers/fal-provider.d.ts.map +1 -0
  64. package/dist/providers/fal-provider.js +445 -0
  65. package/dist/providers/fal-provider.js.map +1 -0
  66. package/dist/providers/gemini-provider.d.ts +109 -0
  67. package/dist/providers/gemini-provider.d.ts.map +1 -0
  68. package/dist/providers/gemini-provider.js +943 -0
  69. package/dist/providers/gemini-provider.js.map +1 -0
  70. package/dist/providers/groq-provider.d.ts +20 -0
  71. package/dist/providers/groq-provider.d.ts.map +1 -0
  72. package/dist/providers/groq-provider.js +52 -0
  73. package/dist/providers/groq-provider.js.map +1 -0
  74. package/dist/providers/huggingface-provider.d.ts +59 -0
  75. package/dist/providers/huggingface-provider.d.ts.map +1 -0
  76. package/dist/providers/huggingface-provider.js +305 -0
  77. package/dist/providers/huggingface-provider.js.map +1 -0
  78. package/dist/providers/index.d.ts +69 -0
  79. package/dist/providers/index.d.ts.map +1 -0
  80. package/dist/providers/index.js +137 -0
  81. package/dist/providers/index.js.map +1 -0
  82. package/dist/providers/jina-provider.d.ts +37 -0
  83. package/dist/providers/jina-provider.d.ts.map +1 -0
  84. package/dist/providers/jina-provider.js +118 -0
  85. package/dist/providers/jina-provider.js.map +1 -0
  86. package/dist/providers/kie-provider.d.ts +19 -0
  87. package/dist/providers/kie-provider.d.ts.map +1 -0
  88. package/dist/providers/kie-provider.js +118 -0
  89. package/dist/providers/kie-provider.js.map +1 -0
  90. package/dist/providers/llama-provider.d.ts +49 -0
  91. package/dist/providers/llama-provider.d.ts.map +1 -0
  92. package/dist/providers/llama-provider.js +381 -0
  93. package/dist/providers/llama-provider.js.map +1 -0
  94. package/dist/providers/lmstudio-provider.d.ts +22 -0
  95. package/dist/providers/lmstudio-provider.d.ts.map +1 -0
  96. package/dist/providers/lmstudio-provider.js +63 -0
  97. package/dist/providers/lmstudio-provider.js.map +1 -0
  98. package/dist/providers/manifest-models.d.ts +12 -0
  99. package/dist/providers/manifest-models.d.ts.map +1 -0
  100. package/dist/providers/manifest-models.js +96 -0
  101. package/dist/providers/manifest-models.js.map +1 -0
  102. package/dist/providers/meshy-provider.d.ts +53 -0
  103. package/dist/providers/meshy-provider.d.ts.map +1 -0
  104. package/dist/providers/meshy-provider.js +230 -0
  105. package/dist/providers/meshy-provider.js.map +1 -0
  106. package/dist/providers/minimax-provider.d.ts +66 -0
  107. package/dist/providers/minimax-provider.d.ts.map +1 -0
  108. package/dist/providers/minimax-provider.js +531 -0
  109. package/dist/providers/minimax-provider.js.map +1 -0
  110. package/dist/providers/mistral-provider.d.ts +26 -0
  111. package/dist/providers/mistral-provider.d.ts.map +1 -0
  112. package/dist/providers/mistral-provider.js +74 -0
  113. package/dist/providers/mistral-provider.js.map +1 -0
  114. package/dist/providers/moonshot-provider.d.ts +24 -0
  115. package/dist/providers/moonshot-provider.d.ts.map +1 -0
  116. package/dist/providers/moonshot-provider.js +43 -0
  117. package/dist/providers/moonshot-provider.js.map +1 -0
  118. package/dist/providers/ollama-provider.d.ts +71 -0
  119. package/dist/providers/ollama-provider.d.ts.map +1 -0
  120. package/dist/providers/ollama-provider.js +480 -0
  121. package/dist/providers/ollama-provider.js.map +1 -0
  122. package/dist/providers/openai-provider.d.ts +103 -0
  123. package/dist/providers/openai-provider.d.ts.map +1 -0
  124. package/dist/providers/openai-provider.js +917 -0
  125. package/dist/providers/openai-provider.js.map +1 -0
  126. package/dist/providers/openrouter-provider.d.ts +49 -0
  127. package/dist/providers/openrouter-provider.d.ts.map +1 -0
  128. package/dist/providers/openrouter-provider.js +147 -0
  129. package/dist/providers/openrouter-provider.js.map +1 -0
  130. package/dist/providers/provider-registry.d.ts +24 -0
  131. package/dist/providers/provider-registry.d.ts.map +1 -0
  132. package/dist/providers/provider-registry.js +124 -0
  133. package/dist/providers/provider-registry.js.map +1 -0
  134. package/dist/providers/python-provider.d.ts +75 -0
  135. package/dist/providers/python-provider.d.ts.map +1 -0
  136. package/dist/providers/python-provider.js +157 -0
  137. package/dist/providers/python-provider.js.map +1 -0
  138. package/dist/providers/replicate-provider.d.ts +73 -0
  139. package/dist/providers/replicate-provider.d.ts.map +1 -0
  140. package/dist/providers/replicate-provider.js +484 -0
  141. package/dist/providers/replicate-provider.js.map +1 -0
  142. package/dist/providers/rodin-provider.d.ts +41 -0
  143. package/dist/providers/rodin-provider.d.ts.map +1 -0
  144. package/dist/providers/rodin-provider.js +236 -0
  145. package/dist/providers/rodin-provider.js.map +1 -0
  146. package/dist/providers/scripted-provider.d.ts +141 -0
  147. package/dist/providers/scripted-provider.d.ts.map +1 -0
  148. package/dist/providers/scripted-provider.js +246 -0
  149. package/dist/providers/scripted-provider.js.map +1 -0
  150. package/dist/providers/together-provider.d.ts +20 -0
  151. package/dist/providers/together-provider.d.ts.map +1 -0
  152. package/dist/providers/together-provider.js +56 -0
  153. package/dist/providers/together-provider.js.map +1 -0
  154. package/dist/providers/types.d.ts +202 -0
  155. package/dist/providers/types.d.ts.map +1 -0
  156. package/dist/providers/types.js +2 -0
  157. package/dist/providers/types.js.map +1 -0
  158. package/dist/providers/vllm-provider.d.ts +22 -0
  159. package/dist/providers/vllm-provider.d.ts.map +1 -0
  160. package/dist/providers/vllm-provider.js +66 -0
  161. package/dist/providers/vllm-provider.js.map +1 -0
  162. package/dist/providers/voyage-provider.d.ts +37 -0
  163. package/dist/providers/voyage-provider.d.ts.map +1 -0
  164. package/dist/providers/voyage-provider.js +124 -0
  165. package/dist/providers/voyage-provider.js.map +1 -0
  166. package/dist/providers/xai-provider.d.ts +24 -0
  167. package/dist/providers/xai-provider.d.ts.map +1 -0
  168. package/dist/providers/xai-provider.js +57 -0
  169. package/dist/providers/xai-provider.js.map +1 -0
  170. package/dist/python-bridge-types.d.ts +70 -0
  171. package/dist/python-bridge-types.d.ts.map +1 -0
  172. package/dist/python-bridge-types.js +2 -0
  173. package/dist/python-bridge-types.js.map +1 -0
  174. package/dist/python-node-executor.d.ts +20 -0
  175. package/dist/python-node-executor.d.ts.map +1 -0
  176. package/dist/python-node-executor.js +219 -0
  177. package/dist/python-node-executor.js.map +1 -0
  178. package/dist/python-stdio-bridge.d.ts +67 -0
  179. package/dist/python-stdio-bridge.d.ts.map +1 -0
  180. package/dist/python-stdio-bridge.js +704 -0
  181. package/dist/python-stdio-bridge.js.map +1 -0
  182. package/dist/recommended-models.d.ts +17 -0
  183. package/dist/recommended-models.d.ts.map +1 -0
  184. package/dist/recommended-models.js +139 -0
  185. package/dist/recommended-models.js.map +1 -0
  186. package/dist/telemetry.d.ts +61 -0
  187. package/dist/telemetry.d.ts.map +1 -0
  188. package/dist/telemetry.js +128 -0
  189. package/dist/telemetry.js.map +1 -0
  190. package/dist/trace-exporters.d.ts +72 -0
  191. package/dist/trace-exporters.d.ts.map +1 -0
  192. package/dist/trace-exporters.js +216 -0
  193. package/dist/trace-exporters.js.map +1 -0
  194. package/dist/tracing-helpers.d.ts +99 -0
  195. package/dist/tracing-helpers.d.ts.map +1 -0
  196. package/dist/tracing-helpers.js +217 -0
  197. package/dist/tracing-helpers.js.map +1 -0
  198. package/package.json +64 -0
@@ -0,0 +1,586 @@
1
+ /**
2
+ * Claude Agent Provider
3
+ *
4
+ * Uses the Claude Agent SDK (@anthropic-ai/claude-agent-sdk) to interact with
5
+ * Claude through the user's Claude subscription (Claude Pro/Max/Team).
6
+ *
7
+ * Requirements:
8
+ * - Claude Code CLI installed and authenticated (`claude` command available)
9
+ * - Active Claude subscription
10
+ * - @anthropic-ai/claude-agent-sdk package installed
11
+ *
12
+ * This provider does NOT require an ANTHROPIC_API_KEY — it uses the Claude Code
13
+ * session which authenticates through the user's Claude subscription.
14
+ *
15
+ * Tool support: tools are exposed as an in-process MCP server via the SDK's
16
+ * createSdkMcpServer() + tool() helpers. Claude calls tools natively through
17
+ * the MCP protocol; the provider yields ToolCall items for tracking.
18
+ * An onToolCall callback must be supplied for tool execution.
19
+ */
20
+ import { BaseProvider } from "./base-provider.js";
21
+ import { createLogger } from "@nodetool-ai/config";
22
+ import * as sdk from "@anthropic-ai/claude-agent-sdk";
23
+ import { z } from "zod";
24
+ const log = createLogger("nodetool.runtime.providers.claude_agent");
25
+ const MCP_SERVER_NAME = "nodetool-tools";
26
+ /**
27
+ * Error thrown by the Claude Agent provider. Carries a categorised `kind`
28
+ * alongside a user-facing message so callers (UI, CLI) can decide how to
29
+ * render the failure (e.g. show a "Sign in" button for `auth`).
30
+ */
31
+ export class ClaudeAgentError extends Error {
32
+ kind;
33
+ constructor(kind, message, cause) {
34
+ super(message, cause !== undefined ? { cause } : undefined);
35
+ this.name = "ClaudeAgentError";
36
+ this.kind = kind;
37
+ }
38
+ }
39
+ /**
40
+ * Classify a raw error from the Claude Agent SDK (or its child process) into
41
+ * a ClaudeAgentError with an actionable, user-facing message.
42
+ */
43
+ export function classifyClaudeAgentError(error) {
44
+ if (error instanceof ClaudeAgentError)
45
+ return error;
46
+ const original = error instanceof Error ? error.message : String(error);
47
+ const lower = original.toLowerCase();
48
+ // SDK package itself not installed (optional dependency missing).
49
+ if (lower.includes("cannot find module") &&
50
+ lower.includes("claude-agent-sdk")) {
51
+ return new ClaudeAgentError("sdk_not_installed", "The @anthropic-ai/claude-agent-sdk package is not installed. " +
52
+ "The Claude Agent provider requires this optional dependency — install it with " +
53
+ "`npm install @anthropic-ai/claude-agent-sdk`, then restart NodeTool. " +
54
+ `Original error: ${original}`, error);
55
+ }
56
+ // Claude Code CLI binary not on PATH.
57
+ if (lower.includes("enoent") ||
58
+ lower.includes("claude: not found") ||
59
+ lower.includes("command not found: claude") ||
60
+ (lower.includes("spawn") && lower.includes("claude"))) {
61
+ return new ClaudeAgentError("cli_not_found", "Claude Code CLI not found on PATH. The Claude Agent provider spawns the " +
62
+ "`claude` command — install it from https://docs.anthropic.com/claude-code/install " +
63
+ "(or via `npm install -g @anthropic-ai/claude-code`), then run `claude login` to " +
64
+ `authenticate. Original error: ${original}`, error);
65
+ }
66
+ // Running as root — SDK refuses --dangerously-skip-permissions.
67
+ if (lower.includes("dangerously-skip-permissions") ||
68
+ (lower.includes("root") && lower.includes("refus")) ||
69
+ (lower.includes("uid") && lower.includes("0"))) {
70
+ return new ClaudeAgentError("running_as_root", "The Claude Agent SDK refuses to run as root (uid=0) because it passes " +
71
+ "--dangerously-skip-permissions to the Claude CLI. Run NodeTool as a non-root " +
72
+ "user, or switch to the `anthropic` provider which uses ANTHROPIC_API_KEY " +
73
+ `directly. Original error: ${original}`, error);
74
+ }
75
+ // Abort.
76
+ if (lower.includes("abort") ||
77
+ error instanceof Error && error.name === "AbortError") {
78
+ return new ClaudeAgentError("aborted", "Claude Agent request was aborted.", error);
79
+ }
80
+ // Authentication failure.
81
+ if (lower.includes("unauthorized") ||
82
+ lower.includes("401") ||
83
+ lower.includes("403") ||
84
+ lower.includes("forbidden") ||
85
+ lower.includes("not logged in") ||
86
+ lower.includes("not authenticated") ||
87
+ lower.includes("invalid api key") ||
88
+ lower.includes("authentication") ||
89
+ lower.includes("oauth")) {
90
+ return new ClaudeAgentError("auth", "Claude Agent authentication failed. Run `claude login` in a terminal to " +
91
+ "sign in with your Claude subscription, or set ANTHROPIC_API_KEY. " +
92
+ `Original error: ${original}`, error);
93
+ }
94
+ // Rate limit.
95
+ if (lower.includes("429") ||
96
+ lower.includes("rate limit") ||
97
+ lower.includes("too many requests") ||
98
+ lower.includes("quota")) {
99
+ return new ClaudeAgentError("rate_limit", "Claude Agent rate limit reached. Wait a moment and retry, or check your " +
100
+ `Claude subscription usage limits. Original error: ${original}`, error);
101
+ }
102
+ // Context length.
103
+ if (lower.includes("context length") ||
104
+ lower.includes("context window") ||
105
+ lower.includes("token limit") ||
106
+ lower.includes("maximum context") ||
107
+ lower.includes("too long") ||
108
+ lower.includes("prompt is too long")) {
109
+ return new ClaudeAgentError("context_length", "Claude Agent request exceeded the model's context window. Shorten the " +
110
+ "conversation (clear older messages) or switch to a model with a larger " +
111
+ `context window. Original error: ${original}`, error);
112
+ }
113
+ // Invalid / unknown model.
114
+ if (lower.includes("model") &&
115
+ (lower.includes("invalid") ||
116
+ lower.includes("not found") ||
117
+ lower.includes("unknown") ||
118
+ lower.includes("does not exist"))) {
119
+ return new ClaudeAgentError("invalid_model", "Claude Agent could not use the requested model. Check that the model ID " +
120
+ "is valid and available on your Claude subscription. " +
121
+ `Original error: ${original}`, error);
122
+ }
123
+ return new ClaudeAgentError("unknown", `Claude Agent provider error: ${original}`, error);
124
+ }
125
+ const CLAUDE_AGENT_MODELS = [
126
+ {
127
+ id: "claude-opus-4-7",
128
+ name: "Claude Opus 4.7",
129
+ provider: "claude_agent"
130
+ },
131
+ {
132
+ id: "claude-sonnet-4-6",
133
+ name: "Claude Sonnet 4.6",
134
+ provider: "claude_agent"
135
+ },
136
+ {
137
+ id: "claude-haiku-4-5",
138
+ name: "Claude Haiku 4.5",
139
+ provider: "claude_agent"
140
+ }
141
+ ];
142
+ const DISALLOWED_TOOLS = [];
143
+ function extractText(content) {
144
+ if (typeof content === "string")
145
+ return content;
146
+ if (Array.isArray(content)) {
147
+ return content
148
+ .filter((c) => c.type === "text")
149
+ .map((c) => c.text)
150
+ .join("\n");
151
+ }
152
+ return String(content ?? "");
153
+ }
154
+ /**
155
+ * Convert a JSON Schema property to a Zod type.
156
+ * Handles the common subset used by agent tools.
157
+ */
158
+ function jsonSchemaPropertyToZod(prop, z) {
159
+ const type = prop.type;
160
+ const enumValues = prop.enum;
161
+ if (enumValues && Array.isArray(enumValues)) {
162
+ // z.enum requires string literals
163
+ if (enumValues.every((v) => typeof v === "string")) {
164
+ return z.enum(enumValues);
165
+ }
166
+ return z.any();
167
+ }
168
+ switch (type) {
169
+ case "string":
170
+ return z.string();
171
+ case "number":
172
+ case "integer":
173
+ return z.number();
174
+ case "boolean":
175
+ return z.boolean();
176
+ case "array": {
177
+ const items = prop.items;
178
+ if (items) {
179
+ return z.array(jsonSchemaPropertyToZod(items, z));
180
+ }
181
+ return z.array(z.any());
182
+ }
183
+ case "object": {
184
+ const properties = prop.properties;
185
+ if (properties) {
186
+ const shape = {};
187
+ const required = prop.required ?? [];
188
+ for (const [key, val] of Object.entries(properties)) {
189
+ let zodType = jsonSchemaPropertyToZod(val, z);
190
+ if (!required.includes(key)) {
191
+ zodType = zodType.optional();
192
+ }
193
+ shape[key] = zodType;
194
+ }
195
+ return z.object(shape);
196
+ }
197
+ return z.record(z.string(), z.any());
198
+ }
199
+ default:
200
+ return z.any();
201
+ }
202
+ }
203
+ /**
204
+ * Convert a ProviderTool's JSON Schema inputSchema to a Zod raw shape
205
+ * suitable for the SDK's tool() function.
206
+ */
207
+ function jsonSchemaToZodShape(schema, z) {
208
+ if (!schema)
209
+ return {};
210
+ const properties = schema.properties;
211
+ if (!properties)
212
+ return {};
213
+ const required = schema.required ?? [];
214
+ const shape = {};
215
+ for (const [key, prop] of Object.entries(properties)) {
216
+ let zodType = jsonSchemaPropertyToZod(prop, z);
217
+ if (!required.includes(key)) {
218
+ zodType = zodType.optional();
219
+ }
220
+ if (typeof prop.description === "string") {
221
+ zodType = zodType.describe(prop.description);
222
+ }
223
+ shape[key] = zodType;
224
+ }
225
+ return shape;
226
+ }
227
+ export class ClaudeAgentProvider extends BaseProvider {
228
+ static requiredSecrets() {
229
+ return [];
230
+ }
231
+ /**
232
+ * Maps threadId → Claude SDK session ID.
233
+ * Allows resuming conversations across multiple generateMessages() calls.
234
+ */
235
+ _sessions = new Map();
236
+ constructor(_secrets = {}) {
237
+ super("claude_agent");
238
+ }
239
+ async hasToolSupport(_model) {
240
+ return true;
241
+ }
242
+ async getAvailableLanguageModels() {
243
+ return CLAUDE_AGENT_MODELS;
244
+ }
245
+ /**
246
+ * Extract the system prompt and the last user message from the messages array.
247
+ */
248
+ extractPrompt(messages) {
249
+ let systemPrompt = "You are a helpful assistant.";
250
+ let prompt = "";
251
+ for (const msg of messages) {
252
+ if (msg.role === "system") {
253
+ systemPrompt = extractText(msg.content);
254
+ }
255
+ }
256
+ // Walk backwards to find the last user message — that's our prompt.
257
+ for (let i = messages.length - 1; i >= 0; i--) {
258
+ if (messages[i].role === "user") {
259
+ prompt = extractText(messages[i].content);
260
+ break;
261
+ }
262
+ }
263
+ if (!prompt) {
264
+ prompt = "Hello";
265
+ }
266
+ return { systemPrompt, prompt };
267
+ }
268
+ /** Look up an existing Claude session for the given threadId. */
269
+ getSessionId(threadId) {
270
+ if (!threadId)
271
+ return undefined;
272
+ return this._sessions.get(threadId);
273
+ }
274
+ /** Store the Claude session ID for a threadId. */
275
+ setSessionId(threadId, sessionId) {
276
+ this._sessions.set(threadId, sessionId);
277
+ }
278
+ /** Remove a stored session (e.g. when a conversation is closed). */
279
+ clearSession(threadId) {
280
+ this._sessions.delete(threadId);
281
+ }
282
+ /**
283
+ * Build an in-process MCP server from ProviderTool definitions.
284
+ * Each tool's handler calls the onToolCall callback.
285
+ */
286
+ buildMcpServer(tools, onToolCall, sdk, z, toolCallTracker) {
287
+ const mcpTools = tools.map((t) => {
288
+ const zodShape = jsonSchemaToZodShape(t.inputSchema, z);
289
+ return sdk.tool(t.name, t.description ?? "", zodShape, async (args) => {
290
+ // Track the tool call for yielding to the caller
291
+ const toolCall = {
292
+ id: `call_${Date.now()}_${toolCallTracker.length}`,
293
+ name: t.name,
294
+ args
295
+ };
296
+ toolCallTracker.push(toolCall);
297
+ log.debug("MCP tool called", { name: t.name, args });
298
+ try {
299
+ const result = await onToolCall(t.name, args);
300
+ return { content: [{ type: "text", text: result }] };
301
+ }
302
+ catch (e) {
303
+ const errorMsg = `Tool execution error: ${e}`;
304
+ log.error("MCP tool error", { name: t.name, error: errorMsg });
305
+ return {
306
+ content: [{ type: "text", text: errorMsg }],
307
+ isError: true
308
+ };
309
+ }
310
+ });
311
+ });
312
+ return sdk.createSdkMcpServer({
313
+ name: MCP_SERVER_NAME,
314
+ version: "1.0.0",
315
+ tools: mcpTools
316
+ });
317
+ }
318
+ async *generateMessages(args) {
319
+ const toolCount = args.tools?.length ?? 0;
320
+ const hasOnToolCall = !!args.onToolCall;
321
+ const hasTools = toolCount > 0 && hasOnToolCall;
322
+ const { systemPrompt, prompt } = this.extractPrompt(args.messages);
323
+ const threadId = args.threadId ?? null;
324
+ const resumeSessionId = this.getSessionId(threadId);
325
+ // Pre-flight: fail fast with a clear message if running as root, since the
326
+ // SDK always refuses --dangerously-skip-permissions for uid=0. Without this
327
+ // check the underlying error surfaces as an opaque child-process failure.
328
+ if (typeof process.getuid === "function" && process.getuid() === 0) {
329
+ throw new ClaudeAgentError("running_as_root", "The Claude Agent SDK refuses to run as root (uid=0) because it passes " +
330
+ "--dangerously-skip-permissions to the Claude CLI. Run NodeTool as a " +
331
+ "non-root user, or use the `anthropic` provider with ANTHROPIC_API_KEY.");
332
+ }
333
+ log.info("Claude Agent generateMessages called", {
334
+ toolCount,
335
+ hasOnToolCall,
336
+ hasTools,
337
+ toolNames: args.tools?.map((t) => t.name) ?? []
338
+ });
339
+ // Track tool calls made during this query (populated by MCP handlers)
340
+ const toolCallTracker = [];
341
+ // Build MCP server if tools + callback provided
342
+ let mcpServer;
343
+ let allowedTools = [];
344
+ if (hasTools && args.tools && args.onToolCall) {
345
+ mcpServer = this.buildMcpServer(args.tools, args.onToolCall, sdk, z, toolCallTracker);
346
+ allowedTools = args.tools.map((t) => `mcp__${MCP_SERVER_NAME}__${t.name}`);
347
+ log.info("MCP server built", {
348
+ mcpToolCount: args.tools.length,
349
+ allowedTools
350
+ });
351
+ }
352
+ log.info("Claude Agent request", {
353
+ model: args.model,
354
+ promptLength: prompt.length,
355
+ threadId,
356
+ resuming: !!resumeSessionId,
357
+ tools: hasTools ? args.tools.map((t) => t.name) : [],
358
+ mcpEnabled: !!mcpServer
359
+ });
360
+ // Strip all Claude Code env vars to allow running inside a Claude Code session.
361
+ // Just deleting CLAUDECODE/CLAUDE_CODE is not enough — the SDK inherits
362
+ // session IDs, proxy settings, auth tokens, etc. that conflict with
363
+ // spawning a nested Claude Code process.
364
+ const cleanEnv = { ...process.env };
365
+ for (const key of Object.keys(cleanEnv)) {
366
+ if (key === "CLAUDECODE" ||
367
+ key === "CLAUDE_CODE" ||
368
+ key.startsWith("CLAUDE_CODE_") ||
369
+ key.startsWith("CLAUDE_SESSION_") ||
370
+ key.startsWith("CLAUDE_ENABLE_") ||
371
+ key.startsWith("CLAUDE_AFTER_") ||
372
+ key.startsWith("CLAUDE_AUTO_")) {
373
+ delete cleanEnv[key];
374
+ }
375
+ }
376
+ // Bridge AbortSignal → AbortController for the SDK
377
+ let abortController;
378
+ if (args.signal) {
379
+ abortController = new AbortController();
380
+ if (args.signal.aborted) {
381
+ abortController.abort();
382
+ }
383
+ else {
384
+ args.signal.addEventListener("abort", () => abortController.abort(), { once: true });
385
+ }
386
+ }
387
+ let queryHandle;
388
+ try {
389
+ queryHandle = sdk.query({
390
+ prompt,
391
+ options: {
392
+ model: args.model,
393
+ systemPrompt,
394
+ maxTurns: hasTools ? 10 : 1,
395
+ permissionMode: "bypassPermissions",
396
+ allowDangerouslySkipPermissions: true,
397
+ disallowedTools: DISALLOWED_TOOLS,
398
+ allowedTools,
399
+ env: cleanEnv,
400
+ ...(abortController ? { abortController } : {}),
401
+ ...(mcpServer
402
+ ? { mcpServers: { [MCP_SERVER_NAME]: mcpServer } }
403
+ : {}),
404
+ ...(resumeSessionId ? { resume: resumeSessionId } : {})
405
+ }
406
+ });
407
+ }
408
+ catch (err) {
409
+ const classified = classifyClaudeAgentError(err);
410
+ log.error("Claude Agent sdk.query() failed", {
411
+ kind: classified.kind,
412
+ error: classified.message,
413
+ model: args.model
414
+ });
415
+ throw classified;
416
+ }
417
+ // streamedTextLength tracks the text position within the current assistant turn.
418
+ // It resets when a new turn begins (after tool execution in multi-turn MCP queries).
419
+ let streamedTextLength = 0;
420
+ let yieldedToolCallCount = 0;
421
+ // Track whether we already yielded text via stream_event/assistant messages
422
+ // so we can skip the duplicate result event.
423
+ let hasYieldedText = false;
424
+ try {
425
+ for await (const msg of queryHandle) {
426
+ const msgObj = msg;
427
+ const msgType = msgObj.type;
428
+ // Capture session ID from the init event
429
+ if (msgType === "system" &&
430
+ msgObj.subtype === "init" &&
431
+ typeof msgObj.session_id === "string" &&
432
+ threadId) {
433
+ this.setSessionId(threadId, msgObj.session_id);
434
+ log.debug("Claude session initialized", {
435
+ threadId,
436
+ sessionId: msgObj.session_id
437
+ });
438
+ continue;
439
+ }
440
+ // Yield any new tool calls that were tracked by MCP handlers.
441
+ // When tool calls appear, a new assistant turn follows — reset text position.
442
+ if (yieldedToolCallCount < toolCallTracker.length) {
443
+ while (yieldedToolCallCount < toolCallTracker.length) {
444
+ yield toolCallTracker[yieldedToolCallCount++];
445
+ }
446
+ // Reset for the next assistant turn's text
447
+ streamedTextLength = 0;
448
+ }
449
+ // Stream events provide incremental text updates
450
+ if (msgType === "stream_event") {
451
+ const partial = msgObj.message;
452
+ const content = partial?.content;
453
+ if (Array.isArray(content)) {
454
+ const text = content
455
+ .filter((b) => b?.type === "text" && typeof b.text === "string")
456
+ .map((b) => b.text)
457
+ .join("");
458
+ if (text.length > streamedTextLength) {
459
+ const delta = text.slice(streamedTextLength);
460
+ streamedTextLength = text.length;
461
+ hasYieldedText = true;
462
+ yield { type: "chunk", content: delta, done: false };
463
+ }
464
+ }
465
+ continue;
466
+ }
467
+ // Full assistant message — emit any remaining text not covered by stream events
468
+ if (msgType === "assistant") {
469
+ const message = msgObj.message;
470
+ const content = message?.content;
471
+ if (Array.isArray(content)) {
472
+ const text = content
473
+ .filter((b) => b?.type === "text" && typeof b.text === "string")
474
+ .map((b) => b.text)
475
+ .join("");
476
+ if (text.length > streamedTextLength) {
477
+ const delta = text.slice(streamedTextLength);
478
+ streamedTextLength = text.length;
479
+ hasYieldedText = true;
480
+ yield { type: "chunk", content: delta, done: false };
481
+ }
482
+ }
483
+ // Reset for next turn (if multi-turn agentic query)
484
+ streamedTextLength = 0;
485
+ continue;
486
+ }
487
+ // Result event — surface errors and fall back text when nothing was streamed.
488
+ if (msgType === "result") {
489
+ const subtype = msgObj.subtype;
490
+ const isError = msgObj.is_error === true;
491
+ const rawResult = msgObj.result;
492
+ const resultText = typeof rawResult === "string" ? rawResult : undefined;
493
+ if (isError || (subtype && subtype.startsWith("error"))) {
494
+ const detail = resultText ?? this.describeErrorSubtype(subtype);
495
+ const kind = subtype === "error_max_turns"
496
+ ? "max_turns"
497
+ : subtype === "error_during_execution"
498
+ ? "execution"
499
+ : "unknown";
500
+ const message = kind === "max_turns"
501
+ ? `Claude Agent stopped after reaching the max turn limit without ` +
502
+ `finishing. Increase maxTurns, simplify the task, or break it into ` +
503
+ `smaller steps. Detail: ${detail}`
504
+ : kind === "execution"
505
+ ? `Claude Agent execution error: ${detail}`
506
+ : `Claude Agent returned an error result (${subtype ?? "unknown"}): ${detail}`;
507
+ log.error("Claude Agent result error", {
508
+ subtype,
509
+ is_error: isError,
510
+ detail
511
+ });
512
+ throw new ClaudeAgentError(kind, message);
513
+ }
514
+ if (!hasYieldedText && resultText && resultText.length > 0) {
515
+ yield { type: "chunk", content: resultText, done: false };
516
+ }
517
+ }
518
+ }
519
+ }
520
+ catch (err) {
521
+ const classified = classifyClaudeAgentError(err);
522
+ log.error("Claude Agent stream failed", {
523
+ kind: classified.kind,
524
+ error: classified.message,
525
+ model: args.model
526
+ });
527
+ throw classified;
528
+ }
529
+ // Yield any remaining tool calls
530
+ while (yieldedToolCallCount < toolCallTracker.length) {
531
+ yield toolCallTracker[yieldedToolCallCount++];
532
+ }
533
+ // Final done signal
534
+ yield { type: "chunk", content: "", done: true };
535
+ }
536
+ async generateMessage(args) {
537
+ const parts = [];
538
+ const toolCalls = [];
539
+ for await (const item of this.generateMessages(args)) {
540
+ if ("type" in item && item.type === "chunk") {
541
+ const chunk = item;
542
+ if (chunk.content)
543
+ parts.push(chunk.content);
544
+ }
545
+ if ("id" in item && "name" in item && "args" in item) {
546
+ toolCalls.push(item);
547
+ }
548
+ }
549
+ return {
550
+ role: "assistant",
551
+ content: parts.join(""),
552
+ ...(toolCalls.length > 0 ? { toolCalls } : {})
553
+ };
554
+ }
555
+ describeErrorSubtype(subtype) {
556
+ switch (subtype) {
557
+ case "error_max_turns":
558
+ return "agent reached the maximum number of turns";
559
+ case "error_during_execution":
560
+ return "an error occurred during agent execution";
561
+ default:
562
+ return subtype ?? "unknown error";
563
+ }
564
+ }
565
+ isContextLengthError(error) {
566
+ if (error instanceof ClaudeAgentError)
567
+ return error.kind === "context_length";
568
+ const msg = String(error).toLowerCase();
569
+ return (msg.includes("context length") ||
570
+ msg.includes("context window") ||
571
+ msg.includes("token limit") ||
572
+ msg.includes("too long") ||
573
+ msg.includes("maximum context"));
574
+ }
575
+ isAuthError(error) {
576
+ if (error instanceof ClaudeAgentError)
577
+ return error.kind === "auth";
578
+ return super.isAuthError(error);
579
+ }
580
+ isRateLimitError(error) {
581
+ if (error instanceof ClaudeAgentError)
582
+ return error.kind === "rate_limit";
583
+ return super.isRateLimitError(error);
584
+ }
585
+ }
586
+ //# sourceMappingURL=claude-agent-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-agent-provider.js","sourceRoot":"","sources":["../../src/providers/claude-agent-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Cohere Provider — exposes Cohere's `/v2/embed` text embedding API through
3
+ * the standard {@link BaseProvider} interface.
4
+ *
5
+ * API docs: https://docs.cohere.com/reference/embed
6
+ */
7
+ import { BaseProvider } from "./base-provider.js";
8
+ import type { EmbeddingModel, Message, ProviderStreamItem } from "./types.js";
9
+ export interface CohereProviderOptions {
10
+ fetchFn?: typeof fetch;
11
+ /**
12
+ * The Cohere `input_type` parameter. Defaults to `"search_document"` which
13
+ * is appropriate for indexing content into a vector store. Use
14
+ * `"search_query"` when embedding user queries against a document index.
15
+ */
16
+ inputType?: "search_document" | "search_query" | "classification" | "clustering";
17
+ }
18
+ export declare class CohereProvider extends BaseProvider {
19
+ static requiredSecrets(): string[];
20
+ private readonly apiKey;
21
+ private readonly _fetch;
22
+ private readonly inputType;
23
+ constructor(secrets?: {
24
+ COHERE_API_KEY?: string;
25
+ }, options?: CohereProviderOptions);
26
+ getContainerEnv(): Record<string, string>;
27
+ generateMessage(_args: Parameters<BaseProvider["generateMessage"]>[0]): Promise<Message>;
28
+ generateMessages(_args: Parameters<BaseProvider["generateMessages"]>[0]): AsyncGenerator<ProviderStreamItem>;
29
+ getAvailableEmbeddingModels(): Promise<EmbeddingModel[]>;
30
+ generateEmbedding(args: {
31
+ text: string | string[];
32
+ model: string;
33
+ dimensions?: number;
34
+ }): Promise<number[][]>;
35
+ }
36
+ //# sourceMappingURL=cohere-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cohere-provider.d.ts","sourceRoot":"","sources":["../../src/providers/cohere-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EACP,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAuCpB,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,iBAAiB,GAAG,cAAc,GAAG,gBAAgB,GAAG,YAAY,CAAC;CAClF;AAED,qBAAa,cAAe,SAAQ,YAAY;WAC9B,eAAe,IAAI,MAAM,EAAE;IAI3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAGjC,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAO,EACzC,OAAO,GAAE,qBAA0B;IAW5B,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI5C,eAAe,CACnB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,OAAO,CAAC;IAIZ,gBAAgB,CACrB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GACrD,cAAc,CAAC,kBAAkB,CAAC;IAKtB,2BAA2B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIxD,iBAAiB,CAAC,IAAI,EAAE;QACrC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAoDxB"}