@studio-foundation/runner 0.3.0-beta.6 → 0.5.2

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 (53) hide show
  1. package/README.md +30 -10
  2. package/dist/__tests__/script-executor.test.js +57 -3
  3. package/dist/__tests__/script-executor.test.js.map +1 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/middleware/anonymization.d.ts +17 -2
  9. package/dist/middleware/anonymization.d.ts.map +1 -1
  10. package/dist/middleware/anonymization.js +37 -1
  11. package/dist/middleware/anonymization.js.map +1 -1
  12. package/dist/prompt-builder.d.ts +10 -6
  13. package/dist/prompt-builder.d.ts.map +1 -1
  14. package/dist/prompt-builder.js +27 -2
  15. package/dist/prompt-builder.js.map +1 -1
  16. package/dist/providers/claude-code-mcp-server.d.ts +15 -0
  17. package/dist/providers/claude-code-mcp-server.d.ts.map +1 -0
  18. package/dist/providers/claude-code-mcp-server.js +126 -0
  19. package/dist/providers/claude-code-mcp-server.js.map +1 -0
  20. package/dist/providers/claude-code-mcp-server.test.d.ts +2 -0
  21. package/dist/providers/claude-code-mcp-server.test.d.ts.map +1 -0
  22. package/dist/providers/claude-code-mcp-server.test.js +123 -0
  23. package/dist/providers/claude-code-mcp-server.test.js.map +1 -0
  24. package/dist/providers/claude-code.d.ts +23 -0
  25. package/dist/providers/claude-code.d.ts.map +1 -0
  26. package/dist/providers/claude-code.js +187 -0
  27. package/dist/providers/claude-code.js.map +1 -0
  28. package/dist/providers/claude-code.test.d.ts +2 -0
  29. package/dist/providers/claude-code.test.d.ts.map +1 -0
  30. package/dist/providers/claude-code.test.js +259 -0
  31. package/dist/providers/claude-code.test.js.map +1 -0
  32. package/dist/providers/registry.d.ts +3 -0
  33. package/dist/providers/registry.d.ts.map +1 -1
  34. package/dist/providers/registry.js +4 -0
  35. package/dist/providers/registry.js.map +1 -1
  36. package/dist/providers/registry.test.d.ts +2 -0
  37. package/dist/providers/registry.test.d.ts.map +1 -0
  38. package/dist/providers/registry.test.js +56 -0
  39. package/dist/providers/registry.test.js.map +1 -0
  40. package/dist/runner.d.ts +2 -0
  41. package/dist/runner.d.ts.map +1 -1
  42. package/dist/runner.js +55 -8
  43. package/dist/runner.js.map +1 -1
  44. package/dist/runner.test.js +5 -2
  45. package/dist/runner.test.js.map +1 -1
  46. package/dist/script-executor.d.ts.map +1 -1
  47. package/dist/script-executor.js +16 -2
  48. package/dist/script-executor.js.map +1 -1
  49. package/dist/tools/tool-registry.d.ts +21 -4
  50. package/dist/tools/tool-registry.d.ts.map +1 -1
  51. package/dist/tools/tool-registry.js +55 -17
  52. package/dist/tools/tool-registry.js.map +1 -1
  53. package/package.json +4 -4
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const claude_code_js_1 = require("./claude-code.js");
5
+ const node_events_1 = require("node:events");
6
+ const node_stream_1 = require("node:stream");
7
+ const { mockSpawn, MockClaudeCodeMcpServer } = vitest_1.vi.hoisted(() => {
8
+ const mockSpawn = vitest_1.vi.fn();
9
+ function MockClaudeCodeMcpServer() {
10
+ return {
11
+ start: vitest_1.vi.fn().mockResolvedValue(9999),
12
+ stop: vitest_1.vi.fn().mockResolvedValue(undefined),
13
+ getToolCalls: vitest_1.vi.fn().mockReturnValue([]),
14
+ };
15
+ }
16
+ return { mockSpawn, MockClaudeCodeMcpServer };
17
+ });
18
+ vitest_1.vi.mock('node:child_process', () => ({ spawn: mockSpawn }));
19
+ vitest_1.vi.mock('./claude-code-mcp-server.js', () => ({ ClaudeCodeMcpServer: MockClaudeCodeMcpServer }));
20
+ vitest_1.vi.mock('node:fs/promises', () => {
21
+ return {
22
+ writeFile: vitest_1.vi.fn().mockResolvedValue(undefined),
23
+ unlink: vitest_1.vi.fn().mockResolvedValue(undefined),
24
+ };
25
+ });
26
+ function makeFakeProcess(lines, exitCode = 0) {
27
+ const proc = new node_events_1.EventEmitter();
28
+ proc.stdout = new node_stream_1.Readable({ read() { } });
29
+ proc.stderr = new node_stream_1.Readable({ read() { } });
30
+ proc.stdinWritten = '';
31
+ proc.stdin = new node_stream_1.Writable({ write(chunk, _enc, cb) { proc.stdinWritten += String(chunk); cb(); } });
32
+ proc.kill = vitest_1.vi.fn();
33
+ setTimeout(() => {
34
+ for (const line of lines) {
35
+ proc.stdout.push(line + '\n');
36
+ }
37
+ proc.stdout.push(null);
38
+ proc.emit('close', exitCode);
39
+ }, 0);
40
+ return proc;
41
+ }
42
+ const BASE_REQUEST = {
43
+ model: 'claude-sonnet-4-5',
44
+ messages: [
45
+ { role: 'system', content: 'You are helpful.' },
46
+ { role: 'user', content: 'Hello' },
47
+ ],
48
+ };
49
+ (0, vitest_1.describe)('ClaudeCodeProvider', () => {
50
+ (0, vitest_1.beforeEach)(() => {
51
+ vitest_1.vi.clearAllMocks();
52
+ });
53
+ (0, vitest_1.it)('has name "claude-code"', () => {
54
+ const provider = new claude_code_js_1.ClaudeCodeProvider();
55
+ (0, vitest_1.expect)(provider.name).toBe('claude-code');
56
+ });
57
+ (0, vitest_1.it)('runAgentLoop returns content from result event', async () => {
58
+ const lines = [
59
+ JSON.stringify({ type: 'assistant', message: { content: [{ type: 'text', text: '{"summary":"done"}' }] } }),
60
+ JSON.stringify({ type: 'result', subtype: 'success', result: '{"summary":"done"}' }),
61
+ ];
62
+ mockSpawn.mockReturnValueOnce(makeFakeProcess(lines));
63
+ const provider = new claude_code_js_1.ClaudeCodeProvider({ model: 'claude-sonnet-4-5' });
64
+ const result = await provider.runAgentLoop(BASE_REQUEST, vitest_1.vi.fn());
65
+ (0, vitest_1.expect)(result.content).toBe('{"summary":"done"}');
66
+ (0, vitest_1.expect)(result.finish_reason).toBe('stop');
67
+ });
68
+ (0, vitest_1.it)('streams tokens via onToken from assistant events', async () => {
69
+ const lines = [
70
+ JSON.stringify({ type: 'assistant', message: { content: [{ type: 'text', text: 'Hello' }] } }),
71
+ JSON.stringify({ type: 'assistant', message: { content: [{ type: 'text', text: ' world' }] } }),
72
+ JSON.stringify({ type: 'result', subtype: 'success', result: 'Hello world' }),
73
+ ];
74
+ mockSpawn.mockReturnValueOnce(makeFakeProcess(lines));
75
+ const provider = new claude_code_js_1.ClaudeCodeProvider({ model: 'claude-sonnet-4-5' });
76
+ const tokens = [];
77
+ await provider.runAgentLoop(BASE_REQUEST, vitest_1.vi.fn(), t => tokens.push(t));
78
+ (0, vitest_1.expect)(tokens).toEqual(['Hello', ' world']);
79
+ });
80
+ (0, vitest_1.it)('spawns claude with --output-format stream-json, --model, and --mcp-config when tools are present', async () => {
81
+ const lines = [JSON.stringify({ type: 'result', subtype: 'success', result: 'ok' })];
82
+ mockSpawn.mockReturnValueOnce(makeFakeProcess(lines));
83
+ const provider = new claude_code_js_1.ClaudeCodeProvider({ model: 'claude-sonnet-4-5' });
84
+ const requestWithTools = {
85
+ ...BASE_REQUEST,
86
+ tools: [{ name: 'echo', description: 'echo', parameters: { type: 'object', properties: {} } }],
87
+ };
88
+ await provider.runAgentLoop(requestWithTools, vitest_1.vi.fn());
89
+ const [cmd, args] = mockSpawn.mock.calls[0];
90
+ (0, vitest_1.expect)(cmd).toBe('claude');
91
+ (0, vitest_1.expect)(args).toContain('--output-format');
92
+ (0, vitest_1.expect)(args).toContain('stream-json');
93
+ (0, vitest_1.expect)(args).toContain('--model');
94
+ (0, vitest_1.expect)(args).toContain('claude-sonnet-4-5');
95
+ (0, vitest_1.expect)(args).toContain('--mcp-config');
96
+ // --strict-mcp-config pins the spawned claude to ONLY the studio MCP server,
97
+ // ignoring the user's global MCP servers (claude.ai Gmail/Drive/Linear/etc.)
98
+ // whose startup handshake otherwise hangs the subprocess and balloons cost.
99
+ (0, vitest_1.expect)(args).toContain('--strict-mcp-config');
100
+ // --output-format stream-json with --print REQUIRES --verbose; the old
101
+ // --no-verbose flag was removed from the claude CLI and now errors out.
102
+ (0, vitest_1.expect)(args).toContain('--verbose');
103
+ (0, vitest_1.expect)(args).not.toContain('--no-verbose');
104
+ });
105
+ (0, vitest_1.it)('sends the prompt on stdin and closes it, never in argv', async () => {
106
+ const lines = [JSON.stringify({ type: 'result', subtype: 'success', result: 'ok' })];
107
+ const proc = makeFakeProcess(lines);
108
+ mockSpawn.mockReturnValueOnce(proc);
109
+ const provider = new claude_code_js_1.ClaudeCodeProvider({ model: 'claude-sonnet-4-5' });
110
+ await provider.runAgentLoop(BASE_REQUEST, vitest_1.vi.fn());
111
+ const [, args, options] = mockSpawn.mock.calls[0];
112
+ // A positional prompt caps every agent at MAX_ARG_STRLEN and fails with E2BIG
113
+ // before the process exists (STU-561) — the last arg must stay a flag.
114
+ (0, vitest_1.expect)(args.some(arg => arg.includes('Hello'))).toBe(false);
115
+ (0, vitest_1.expect)(args.at(-1)).toBe('--dangerously-skip-permissions');
116
+ (0, vitest_1.expect)(options.stdio[0]).toBe('pipe');
117
+ (0, vitest_1.expect)(proc.stdinWritten).toContain('Hello');
118
+ (0, vitest_1.expect)(proc.stdinWritten).toContain('You are helpful.');
119
+ // claude blocks forever on a pipe nobody closes; end() is what delivers the EOF.
120
+ (0, vitest_1.expect)(proc.stdin.writableEnded).toBe(true);
121
+ });
122
+ (0, vitest_1.it)('a prompt past MAX_ARG_STRLEN reaches a real process on stdin and cannot on argv', async () => {
123
+ // The reason the test above exists, against the real kernel rather than a mock:
124
+ // Linux caps one argv entry at 32 pages, so the old positional prompt made
125
+ // spawn throw E2BIG for any agent whose payload outgrew it (STU-561). This is
126
+ // not a Claude limit and no CLI flag lifts it — stdin is the only way through.
127
+ const { spawn: realSpawn } = await vitest_1.vi.importActual('node:child_process');
128
+ const huge = 'x'.repeat(512 * 1024);
129
+ (0, vitest_1.expect)(() => realSpawn('/bin/cat', [huge], { stdio: 'ignore' })).toThrow(/E2BIG/);
130
+ const received = await new Promise((resolve, reject) => {
131
+ const proc = realSpawn('/bin/cat', [], { stdio: ['pipe', 'pipe', 'ignore'] });
132
+ let out = 0;
133
+ proc.stdout.on('data', (chunk) => { out += chunk.length; });
134
+ proc.on('close', () => resolve(out));
135
+ proc.on('error', reject);
136
+ proc.stdin.end(huge);
137
+ });
138
+ (0, vitest_1.expect)(received).toBe(huge.length);
139
+ });
140
+ (0, vitest_1.it)('honors the per-agent model from request.model over the construction-time default', async () => {
141
+ // STU-429: the construction-time model (from config.claudeCode.model, i.e.
142
+ // defaults.model) is only a FALLBACK. When a stage's agent declares its own
143
+ // model, the engine resolves it into request.model — the provider must spawn
144
+ // claude with THAT model, not the default it was constructed with.
145
+ const lines = [JSON.stringify({ type: 'result', subtype: 'success', result: 'ok' })];
146
+ mockSpawn.mockReturnValueOnce(makeFakeProcess(lines));
147
+ const provider = new claude_code_js_1.ClaudeCodeProvider({ model: 'claude-sonnet-4-5' }); // default
148
+ const requestWithModel = { ...BASE_REQUEST, model: 'claude-opus-4-1' }; // per-agent override
149
+ await provider.runAgentLoop(requestWithModel, vitest_1.vi.fn());
150
+ const [, args] = mockSpawn.mock.calls[0];
151
+ const modelIdx = args.indexOf('--model');
152
+ (0, vitest_1.expect)(modelIdx).toBeGreaterThanOrEqual(0);
153
+ (0, vitest_1.expect)(args[modelIdx + 1]).toBe('claude-opus-4-1');
154
+ });
155
+ (0, vitest_1.it)('falls back to the construction-time default when request.model is absent', async () => {
156
+ // Direct callers (not the runner) may omit model; the construction default
157
+ // still applies as the fallback.
158
+ const lines = [JSON.stringify({ type: 'result', subtype: 'success', result: 'ok' })];
159
+ mockSpawn.mockReturnValueOnce(makeFakeProcess(lines));
160
+ const provider = new claude_code_js_1.ClaudeCodeProvider({ model: 'claude-sonnet-4-5' });
161
+ const requestNoModel = { ...BASE_REQUEST, model: undefined };
162
+ await provider.runAgentLoop(requestNoModel, vitest_1.vi.fn());
163
+ const [, args] = mockSpawn.mock.calls[0];
164
+ const modelIdx = args.indexOf('--model');
165
+ (0, vitest_1.expect)(args[modelIdx + 1]).toBe('claude-sonnet-4-5');
166
+ });
167
+ (0, vitest_1.it)('skips the MCP server and --mcp-config when there are no tools', async () => {
168
+ // Attaching the HTTP MCP server makes the claude CLI hang on the streamable-http
169
+ // handshake; a tool-less agent (e.g. a pure classifier) needs no MCP server.
170
+ const lines = [JSON.stringify({ type: 'result', subtype: 'success', result: 'ok' })];
171
+ mockSpawn.mockReturnValueOnce(makeFakeProcess(lines));
172
+ const provider = new claude_code_js_1.ClaudeCodeProvider({ model: 'claude-sonnet-4-5' });
173
+ const result = await provider.runAgentLoop(BASE_REQUEST, vitest_1.vi.fn()); // BASE_REQUEST has no tools
174
+ const [, args] = mockSpawn.mock.calls[0];
175
+ (0, vitest_1.expect)(args).not.toContain('--mcp-config');
176
+ // No --mcp-config here, but --strict-mcp-config still matters: it stops the
177
+ // CLI from loading the user's global MCP servers, which otherwise inject ~88k
178
+ // tokens of tool defs per call (~15x cost) and can hang on their handshake.
179
+ (0, vitest_1.expect)(args).toContain('--strict-mcp-config');
180
+ (0, vitest_1.expect)(args).toContain('--verbose');
181
+ // built-in tools disabled for a single-turn pure completion (no agentic roaming),
182
+ // and the empty value must sit before a flag so the variadic doesn't eat the prompt.
183
+ const toolsIdx = args.indexOf('--tools');
184
+ (0, vitest_1.expect)(toolsIdx).toBeGreaterThanOrEqual(0);
185
+ (0, vitest_1.expect)(args[toolsIdx + 1]).toBe('');
186
+ (0, vitest_1.expect)(args[toolsIdx + 2]).toMatch(/^--/);
187
+ (0, vitest_1.expect)(result.tool_calls).toEqual([]);
188
+ });
189
+ (0, vitest_1.it)('never leaves claude an open stdin pipe (else --print hangs waiting for EOF)', async () => {
190
+ // ROOT CAUSE of the studio classify hang: an open, non-TTY stdin nobody closes.
191
+ // claude 2.1.37 blocks waiting for its EOF and never emits output, so Studio
192
+ // cancels it (0 tool calls / 0 tokens). The prompt now travels on that pipe, so
193
+ // the guard is no longer stdio[0]='ignore' — it is that the pipe always ends.
194
+ const lines = [JSON.stringify({ type: 'result', subtype: 'success', result: 'ok' })];
195
+ const proc = makeFakeProcess(lines);
196
+ mockSpawn.mockReturnValueOnce(proc);
197
+ await new claude_code_js_1.ClaudeCodeProvider().runAgentLoop(BASE_REQUEST, vitest_1.vi.fn());
198
+ (0, vitest_1.expect)(proc.stdin.writableEnded).toBe(true);
199
+ });
200
+ (0, vitest_1.it)('logs lifecycle to stderr only when STUDIO_LOG_CLAUDE_CODE is set', async () => {
201
+ const lines = [JSON.stringify({ type: 'result', subtype: 'success', result: 'ok' })];
202
+ const writes = [];
203
+ const spy = vitest_1.vi.spyOn(process.stderr, 'write').mockImplementation(((s) => {
204
+ writes.push(String(s));
205
+ return true;
206
+ }));
207
+ try {
208
+ // Off by default: no diagnostic lines.
209
+ delete process.env.STUDIO_LOG_CLAUDE_CODE;
210
+ mockSpawn.mockReturnValueOnce(makeFakeProcess(lines));
211
+ await new claude_code_js_1.ClaudeCodeProvider().runAgentLoop(BASE_REQUEST, vitest_1.vi.fn());
212
+ (0, vitest_1.expect)(writes.some(w => w.includes('[claude-code]'))).toBe(false);
213
+ // On when the env var is set: spawn + close lifecycle lines on stderr.
214
+ process.env.STUDIO_LOG_CLAUDE_CODE = '1';
215
+ mockSpawn.mockReturnValueOnce(makeFakeProcess(lines));
216
+ await new claude_code_js_1.ClaudeCodeProvider().runAgentLoop(BASE_REQUEST, vitest_1.vi.fn());
217
+ (0, vitest_1.expect)(writes.some(w => w.includes('[claude-code] spawn'))).toBe(true);
218
+ (0, vitest_1.expect)(writes.some(w => w.includes('[claude-code] close'))).toBe(true);
219
+ }
220
+ finally {
221
+ delete process.env.STUDIO_LOG_CLAUDE_CODE;
222
+ spy.mockRestore();
223
+ }
224
+ });
225
+ (0, vitest_1.it)('throws when claude exits non-zero with no result event', async () => {
226
+ mockSpawn.mockReturnValueOnce(makeFakeProcess([], 1));
227
+ const provider = new claude_code_js_1.ClaudeCodeProvider();
228
+ await (0, vitest_1.expect)(provider.runAgentLoop(BASE_REQUEST, vitest_1.vi.fn())).rejects.toThrow(/claude -p exited/i);
229
+ });
230
+ (0, vitest_1.it)('aborts child process when signal fires', async () => {
231
+ const controller = new AbortController();
232
+ // Long-running proc that never closes on its own
233
+ const proc = new node_events_1.EventEmitter();
234
+ proc.stdout = new node_stream_1.Readable({ read() { } });
235
+ proc.stderr = new node_stream_1.Readable({ read() { } });
236
+ proc.stdin = new node_stream_1.Writable({ write(_c, _e, cb) { cb(); } });
237
+ proc.kill = vitest_1.vi.fn();
238
+ mockSpawn.mockReturnValueOnce(proc);
239
+ const provider = new claude_code_js_1.ClaudeCodeProvider();
240
+ const promise = provider.runAgentLoop(BASE_REQUEST, vitest_1.vi.fn(), undefined, controller.signal);
241
+ // Wait for spawn to be called and listeners to be set up
242
+ await Promise.resolve();
243
+ await Promise.resolve();
244
+ controller.abort();
245
+ // Simulate OS sending signal back as close event
246
+ proc.emit('close', 130);
247
+ await (0, vitest_1.expect)(promise).rejects.toThrow(/aborted/i);
248
+ (0, vitest_1.expect)(proc.kill).toHaveBeenCalled();
249
+ });
250
+ (0, vitest_1.it)('call() delegates to runAgentLoop and returns LLMResponse shape', async () => {
251
+ const lines = [JSON.stringify({ type: 'result', subtype: 'success', result: '{"answer":42}' })];
252
+ mockSpawn.mockReturnValueOnce(makeFakeProcess(lines));
253
+ const provider = new claude_code_js_1.ClaudeCodeProvider({ model: 'claude-sonnet-4-5' });
254
+ const result = await provider.call(BASE_REQUEST);
255
+ (0, vitest_1.expect)(result.content).toBe('{"answer":42}');
256
+ (0, vitest_1.expect)(result.finish_reason).toBe('stop');
257
+ });
258
+ });
259
+ //# sourceMappingURL=claude-code.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.test.js","sourceRoot":"","sources":["../../src/providers/claude-code.test.ts"],"names":[],"mappings":"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"}
@@ -38,5 +38,8 @@ export declare function createDefaultRegistry(config: {
38
38
  ollama?: {
39
39
  baseUrl?: string;
40
40
  };
41
+ claudeCode?: {
42
+ model?: string;
43
+ };
41
44
  }): ProviderRegistry;
42
45
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAM9C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAoC;IAErD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIlC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAU3B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;CAGjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,eAAe,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/B,GAAG,gBAAgB,CAoBnB"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAoC;IAErD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIlC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAU3B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;CAGjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,eAAe,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC,GAAG,gBAAgB,CAwBnB"}
@@ -9,6 +9,7 @@ const openai_js_1 = require("./openai.js");
9
9
  const anthropic_js_1 = require("./anthropic.js");
10
10
  const openai_responses_js_1 = require("./openai-responses.js");
11
11
  const ollama_js_1 = require("./ollama.js");
12
+ const claude_code_js_1 = require("./claude-code.js");
12
13
  class ProviderRegistry {
13
14
  providers = new Map();
14
15
  /**
@@ -60,6 +61,9 @@ function createDefaultRegistry(config) {
60
61
  if (config.ollama) {
61
62
  registry.register(new ollama_js_1.OllamaProvider(config.ollama.baseUrl));
62
63
  }
64
+ if (config.claudeCode) {
65
+ registry.register(new claude_code_js_1.ClaudeCodeProvider({ model: config.claudeCode.model }));
66
+ }
63
67
  return registry;
64
68
  }
65
69
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAiDH,sDAyBC;AAvED,2CAA6C;AAC7C,iDAAmD;AACnD,+DAAgE;AAChE,2CAA6C;AAE7C,MAAa,gBAAgB;IACnB,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;IAErD;;OAEG;IACH,QAAQ,CAAC,QAAkB;QACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,0BAA0B,MAAM,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AApCD,4CAoCC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,MAKrC;IACC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAExC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,QAAQ,CAAC,IAAI,0BAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC,IAAI,gCAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,6CAAuB,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,QAAQ,CAAC,IAAI,0BAAc,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAkDH,sDA8BC;AA7ED,2CAA6C;AAC7C,iDAAmD;AACnD,+DAAgE;AAChE,2CAA6C;AAC7C,qDAAsD;AAEtD,MAAa,gBAAgB;IACnB,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;IAErD;;OAEG;IACH,QAAQ,CAAC,QAAkB;QACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,0BAA0B,MAAM,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AApCD,4CAoCC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,MAMrC;IACC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAExC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,QAAQ,CAAC,IAAI,0BAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC,IAAI,gCAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,6CAAuB,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,QAAQ,CAAC,IAAI,0BAAc,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,IAAI,mCAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../src/providers/registry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const vitest_1 = require("vitest");
37
+ const registry_js_1 = require("./registry.js");
38
+ vitest_1.vi.mock('./claude-code.js', () => ({
39
+ ClaudeCodeProvider: vitest_1.vi.fn(function () { this.name = 'claude-code'; }),
40
+ }));
41
+ (0, vitest_1.describe)('createDefaultRegistry — claudeCode', () => {
42
+ (0, vitest_1.it)('does not register claude-code when claudeCode config is absent', () => {
43
+ const registry = (0, registry_js_1.createDefaultRegistry)({});
44
+ (0, vitest_1.expect)(registry.has('claude-code')).toBe(false);
45
+ });
46
+ (0, vitest_1.it)('registers claude-code when claudeCode config is present', () => {
47
+ const registry = (0, registry_js_1.createDefaultRegistry)({ claudeCode: {} });
48
+ (0, vitest_1.expect)(registry.has('claude-code')).toBe(true);
49
+ });
50
+ (0, vitest_1.it)('passes model from claudeCode config to ClaudeCodeProvider', async () => {
51
+ const { ClaudeCodeProvider } = await Promise.resolve().then(() => __importStar(require('./claude-code.js')));
52
+ (0, registry_js_1.createDefaultRegistry)({ claudeCode: { model: 'claude-haiku-4-5' } });
53
+ (0, vitest_1.expect)(ClaudeCodeProvider).toHaveBeenCalledWith({ model: 'claude-haiku-4-5' });
54
+ });
55
+ });
56
+ //# sourceMappingURL=registry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/providers/registry.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAkD;AAClD,+CAAsD;AAEtD,WAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,kBAAkB,EAAE,WAAE,CAAC,EAAE,CAAC,cAAoC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;CAC5F,CAAC,CAAC,CAAC;AAEJ,IAAA,iBAAQ,EAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAA,WAAE,EAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,QAAQ,GAAG,IAAA,mCAAqB,EAAC,EAAE,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,QAAQ,GAAG,IAAA,mCAAqB,EAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAA,eAAM,EAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;QAChE,IAAA,mCAAqB,EAAC,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/runner.d.ts CHANGED
@@ -6,6 +6,8 @@ import { type TaskInput, type AgentContext, type ExecutionContext } from './prom
6
6
  import type { ToolRegistry } from './tools/tool-registry.js';
7
7
  import type { ProviderRegistry } from './providers/registry.js';
8
8
  import type { AnonymizationMiddleware } from './middleware/anonymization.js';
9
+ /** Prefix used to identify unauthorized tool calls in error messages. */
10
+ export declare const UNAUTHORIZED_TOOL_ERROR_PREFIX = "Unauthorized tool call:";
9
11
  export interface RunAgentConfig {
10
12
  agent: ResolvedAgentConfig;
11
13
  task: TaskInput;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAW,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACzI,OAAO,EAAe,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,sHAAsH;IACtH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CA6T9E"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAW,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACzI,OAAO,EAA0B,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,yEAAyE;AACzE,eAAO,MAAM,8BAA8B,4BAA4B,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,sHAAsH;IACtH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CA0W9E"}
package/dist/runner.js CHANGED
@@ -3,10 +3,13 @@
3
3
  * Main agent runner function - executes agent with LLM + tools
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UNAUTHORIZED_TOOL_ERROR_PREFIX = void 0;
6
7
  exports.runAgent = runAgent;
7
8
  const prompt_builder_js_1 = require("./prompt-builder.js");
8
9
  const tool_executor_js_1 = require("./tools/tool-executor.js");
9
10
  const provider_js_1 = require("./providers/provider.js");
11
+ /** Prefix used to identify unauthorized tool calls in error messages. */
12
+ exports.UNAUTHORIZED_TOOL_ERROR_PREFIX = 'Unauthorized tool call:';
10
13
  const DEFAULT_MAX_TOOL_CALLS = 20; // Safety limit for tool calling loop
11
14
  /**
12
15
  * Run an agent task with LLM + tool execution
@@ -24,15 +27,24 @@ async function runAgent(config) {
24
27
  const mw = config.anonymizationMiddleware;
25
28
  // Get provider
26
29
  const provider = providerRegistry.get(agent.provider);
27
- // Get allowed tools for this agent (filter if specified)
28
- const allowedTools = agent.tools && agent.tools.length > 0
29
- ? toolRegistry.filter(agent.tools)
30
- : toolRegistry;
30
+ // Strict whitelist: filter to declared tools, or empty registry if tools is absent/empty.
31
+ // tools: ['a', 'b'] only a and b visible to LLM
32
+ // tools: [] → no tools visible
33
+ // tools: undefined → no tools visible (whitelist-by-default)
34
+ const allowedTools = toolRegistry.filter(agent.tools ?? [], { agentName: agent.name });
31
35
  const promptSnippets = allowedTools.getActiveSnippets();
32
- // Injection point 1: Anonymize task input before building prompt
33
- const taskForPrompt = mw
34
- ? { ...task, description: mw.anonymize(task.description) }
35
- : task;
36
+ // Injection point 1: Anonymize task input BEFORE building the prompt — the
37
+ // middleware sees structured fields (or the flat description), never an
38
+ // assembled prompt string.
39
+ let taskForPrompt = task;
40
+ if (mw) {
41
+ if ((0, prompt_builder_js_1.hasFields)(task)) {
42
+ taskForPrompt = { ...task, fields: await mw.anonymizeFields(task.fields, task.anonymize_fields) };
43
+ }
44
+ else {
45
+ taskForPrompt = { ...task, description: mw.anonymize(task.description) };
46
+ }
47
+ }
36
48
  // Build initial prompt
37
49
  const messages = (0, prompt_builder_js_1.buildPrompt)({
38
50
  agent,
@@ -85,6 +97,18 @@ async function runAgent(config) {
85
97
  }
86
98
  const executed = await toolExecutor.execute({ id: callId, name, arguments: args });
87
99
  allToolCalls.push(executed);
100
+ // Hallucination guard: tool not in whitelist → terminal stage error (RALPH fails, not retries)
101
+ if (executed.error?.startsWith('Tool not found:')) {
102
+ const unauthorizedError = `${exports.UNAUTHORIZED_TOOL_ERROR_PREFIX} agent attempted to use '${name}', which is not in its allowed tool list`;
103
+ config.callbacks?.onToolCallComplete?.({
104
+ tool: name,
105
+ result: undefined,
106
+ error: unauthorizedError,
107
+ duration_ms: Date.now() - tcStart,
108
+ timestamp: Date.now(),
109
+ });
110
+ return { result: undefined, error: unauthorizedError };
111
+ }
88
112
  config.callbacks?.onToolCallComplete?.({
89
113
  tool: name,
90
114
  result: executed.result,
@@ -213,6 +237,29 @@ async function runAgent(config) {
213
237
  name: tc.name,
214
238
  arguments: tc.arguments,
215
239
  });
240
+ // Hallucination guard: tool not in whitelist → terminal stage error
241
+ if (executed.error?.startsWith('Tool not found:')) {
242
+ const unauthorizedError = `${exports.UNAUTHORIZED_TOOL_ERROR_PREFIX} agent attempted to use '${tc.name}', which is not in its allowed tool list`;
243
+ executed = { ...executed, error: unauthorizedError };
244
+ allToolCalls.push(executed);
245
+ config.callbacks?.onToolCallComplete?.({
246
+ tool: tc.name,
247
+ result: undefined,
248
+ error: unauthorizedError,
249
+ duration_ms: Date.now() - tcStart,
250
+ timestamp: Date.now(),
251
+ });
252
+ const duration = Date.now() - startTime;
253
+ return {
254
+ output: null,
255
+ tool_calls: allToolCalls,
256
+ tool_calls_count: 0,
257
+ raw_response: lastResponse,
258
+ duration_ms: duration,
259
+ token_usage: tokenAccumulator.total_tokens > 0 ? tokenAccumulator : undefined,
260
+ error: unauthorizedError,
261
+ };
262
+ }
216
263
  }
217
264
  executedToolCalls.push(executed);
218
265
  allToolCalls.push(executed);
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,7 @@ function makeConfig(toolCallName, toolCallArgs) {
56
56
  name: 'test-agent',
57
57
  provider: 'mock',
58
58
  model: 'mock',
59
+ tools: ['repo_manager-write_file'],
59
60
  };
60
61
  return { agent, toolRegistry, providerRegistry, mockExecute };
61
62
  }
@@ -86,7 +87,7 @@ class LoopingProvider {
86
87
  const loopingProvider = new LoopingProvider();
87
88
  const providerRegistry = new registry_js_1.ProviderRegistry();
88
89
  providerRegistry.register(loopingProvider);
89
- const agent = { name: 'test-agent', provider: 'looping-mock', model: 'mock' };
90
+ const agent = { name: 'test-agent', provider: 'looping-mock', model: 'mock', tools: ['repo_manager-write_file'] };
90
91
  const result = await (0, runner_js_1.runAgent)({
91
92
  agent,
92
93
  task: { description: 'write a file' },
@@ -111,7 +112,7 @@ class LoopingProvider {
111
112
  });
112
113
  const providerRegistry = new registry_js_1.ProviderRegistry();
113
114
  providerRegistry.register(new LoopingProvider());
114
- const agent = { name: 'test-agent', provider: 'looping-mock', model: 'mock' };
115
+ const agent = { name: 'test-agent', provider: 'looping-mock', model: 'mock', tools: ['repo_manager-write_file'] };
115
116
  const result = await (0, runner_js_1.runAgent)({
116
117
  agent,
117
118
  task: { description: 'write a file' },
@@ -180,6 +181,7 @@ class LoopingProvider {
180
181
  name: 'test-agent',
181
182
  provider: 'standard-mock',
182
183
  model: 'mock',
184
+ tools: ['repo_manager-write_file'],
183
185
  };
184
186
  const onPreToolUse = vitest_1.vi.fn().mockResolvedValue({ blocked: true, error: 'standard-path blocked' });
185
187
  const result = await (0, runner_js_1.runAgent)({
@@ -256,6 +258,7 @@ class LoopingProvider {
256
258
  name: 'test-agent',
257
259
  provider: 'standard-mock',
258
260
  model: 'mock',
261
+ tools: ['repo_manager-write_file'],
259
262
  };
260
263
  const onPostToolUse = vitest_1.vi.fn().mockResolvedValue({
261
264
  append_message: 'prettier ran and formatted the file',