@studio-foundation/runner 0.4.0-beta → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/__tests__/script-executor.test.js +57 -3
- package/dist/__tests__/script-executor.test.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/anonymization.d.ts +17 -2
- package/dist/middleware/anonymization.d.ts.map +1 -1
- package/dist/middleware/anonymization.js +37 -1
- package/dist/middleware/anonymization.js.map +1 -1
- package/dist/prompt-builder.d.ts +10 -6
- package/dist/prompt-builder.d.ts.map +1 -1
- package/dist/prompt-builder.js +27 -2
- package/dist/prompt-builder.js.map +1 -1
- package/dist/providers/claude-code-mcp-server.d.ts +15 -0
- package/dist/providers/claude-code-mcp-server.d.ts.map +1 -0
- package/dist/providers/claude-code-mcp-server.js +126 -0
- package/dist/providers/claude-code-mcp-server.js.map +1 -0
- package/dist/providers/claude-code-mcp-server.test.d.ts +2 -0
- package/dist/providers/claude-code-mcp-server.test.d.ts.map +1 -0
- package/dist/providers/claude-code-mcp-server.test.js +123 -0
- package/dist/providers/claude-code-mcp-server.test.js.map +1 -0
- package/dist/providers/claude-code.d.ts +23 -0
- package/dist/providers/claude-code.d.ts.map +1 -0
- package/dist/providers/claude-code.js +187 -0
- package/dist/providers/claude-code.js.map +1 -0
- package/dist/providers/claude-code.test.d.ts +2 -0
- package/dist/providers/claude-code.test.d.ts.map +1 -0
- package/dist/providers/claude-code.test.js +259 -0
- package/dist/providers/claude-code.test.js.map +1 -0
- package/dist/providers/registry.d.ts +3 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +4 -0
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/registry.test.d.ts +2 -0
- package/dist/providers/registry.test.d.ts.map +1 -0
- package/dist/providers/registry.test.js +56 -0
- package/dist/providers/registry.test.js.map +1 -0
- package/dist/runner.d.ts +2 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +55 -8
- package/dist/runner.js.map +1 -1
- package/dist/runner.test.js +5 -2
- package/dist/runner.test.js.map +1 -1
- package/dist/script-executor.d.ts.map +1 -1
- package/dist/script-executor.js +16 -2
- package/dist/script-executor.js.map +1 -1
- package/dist/tools/tool-registry.d.ts +21 -4
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +55 -17
- package/dist/tools/tool-registry.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @studio-foundation/runner
|
|
2
2
|
|
|
3
|
-
**Studio** is
|
|
3
|
+
**Studio** is a declarative YAML runtime for AI agents. It orchestrates multi-stage agent workflows with structured output validation and automatic retry. This package is the **runner**: a multi-provider LLM agent runner with tool plugin execution, streaming support, and PII anonymization.
|
|
4
4
|
|
|
5
5
|
It's the only package that knows about Anthropic, OpenAI, or what `repo_manager-write_file` does. Give it an agent config and a task, it builds the prompt, calls the LLM, executes tool calls, and returns the result. It doesn't validate, it doesn't retry — [`ralph`](https://www.npmjs.com/package/@studio-foundation/ralph) handles that loop.
|
|
6
6
|
|
|
@@ -47,11 +47,18 @@ function makeContext(overrides) {
|
|
|
47
47
|
...overrides,
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
+
/** stdin stub that both records write/end and supports .on('error') like a real stream. */
|
|
51
|
+
function makeStdinMock() {
|
|
52
|
+
const stdin = new node_events_1.EventEmitter();
|
|
53
|
+
stdin.write = vitest_1.vi.fn();
|
|
54
|
+
stdin.end = vitest_1.vi.fn();
|
|
55
|
+
return stdin;
|
|
56
|
+
}
|
|
50
57
|
function makeSpawnMock(opts) {
|
|
51
58
|
const proc = new node_events_1.EventEmitter();
|
|
52
59
|
proc.stdout = new node_events_1.EventEmitter();
|
|
53
60
|
proc.stderr = new node_events_1.EventEmitter();
|
|
54
|
-
proc.stdin =
|
|
61
|
+
proc.stdin = makeStdinMock();
|
|
55
62
|
proc.kill = vitest_1.vi.fn();
|
|
56
63
|
vitest_1.vi.mocked(cp.spawn).mockReturnValue(proc);
|
|
57
64
|
// Simulate async process lifecycle
|
|
@@ -113,7 +120,7 @@ function makeSpawnMock(opts) {
|
|
|
113
120
|
const proc = new node_events_1.EventEmitter();
|
|
114
121
|
proc.stdout = new node_events_1.EventEmitter();
|
|
115
122
|
proc.stderr = new node_events_1.EventEmitter();
|
|
116
|
-
proc.stdin =
|
|
123
|
+
proc.stdin = makeStdinMock();
|
|
117
124
|
vitest_1.vi.mocked(cp.spawn).mockReturnValue(proc);
|
|
118
125
|
setTimeout(() => proc.emit('error', new Error('ENOENT: python3 not found')), 10);
|
|
119
126
|
const result = await (0, script_executor_js_1.runScript)({
|
|
@@ -154,7 +161,7 @@ function makeSpawnMock(opts) {
|
|
|
154
161
|
(0, vitest_1.expect)(spawnEnv.PATH).toContain('/project/venv/bin');
|
|
155
162
|
});
|
|
156
163
|
(0, vitest_1.it)('writes context JSON to stdin', async () => {
|
|
157
|
-
const stdinMock =
|
|
164
|
+
const stdinMock = makeStdinMock();
|
|
158
165
|
const proc = new node_events_1.EventEmitter();
|
|
159
166
|
proc.stdout = new node_events_1.EventEmitter();
|
|
160
167
|
proc.stderr = new node_events_1.EventEmitter();
|
|
@@ -169,5 +176,52 @@ function makeSpawnMock(opts) {
|
|
|
169
176
|
(0, vitest_1.expect)(stdinMock.write).toHaveBeenCalledWith(JSON.stringify(ctx));
|
|
170
177
|
(0, vitest_1.expect)(stdinMock.end).toHaveBeenCalled();
|
|
171
178
|
});
|
|
179
|
+
(0, vitest_1.it)('does not crash and surfaces stderr when the child dies before reading stdin (EPIPE)', async () => {
|
|
180
|
+
// Child crashed at startup (e.g. ImportError), then the parent's write to
|
|
181
|
+
// its stdin raises EPIPE. Regression guard for STU-568: this used to become
|
|
182
|
+
// an unhandled 'error' event that crashed the whole CLI.
|
|
183
|
+
const proc = new node_events_1.EventEmitter();
|
|
184
|
+
proc.stdout = new node_events_1.EventEmitter();
|
|
185
|
+
proc.stderr = new node_events_1.EventEmitter();
|
|
186
|
+
proc.kill = vitest_1.vi.fn();
|
|
187
|
+
const stdin = makeStdinMock();
|
|
188
|
+
// Writing to the broken pipe emits an async 'error' on stdin.
|
|
189
|
+
stdin.write.mockImplementation(() => {
|
|
190
|
+
setTimeout(() => stdin.emit('error', Object.assign(new Error('write EPIPE'), { code: 'EPIPE' })), 0);
|
|
191
|
+
return true;
|
|
192
|
+
});
|
|
193
|
+
proc.stdin = stdin;
|
|
194
|
+
vitest_1.vi.mocked(cp.spawn).mockReturnValue(proc);
|
|
195
|
+
setTimeout(() => {
|
|
196
|
+
proc.stderr.emit('data', Buffer.from("ImportError: cannot import name 'EXTRACTION_CONFIG_FILE'"));
|
|
197
|
+
proc.emit('close', 1);
|
|
198
|
+
}, 10);
|
|
199
|
+
const result = await (0, script_executor_js_1.runScript)({
|
|
200
|
+
scriptPath: 'scripts/entity_extraction.py',
|
|
201
|
+
runtime: 'python',
|
|
202
|
+
context: makeContext(),
|
|
203
|
+
});
|
|
204
|
+
// No throw, and the child's real stderr + exit code become the reason.
|
|
205
|
+
(0, vitest_1.expect)(result.output).toBeNull();
|
|
206
|
+
(0, vitest_1.expect)(result.error).toMatch(/exited with code 1/);
|
|
207
|
+
(0, vitest_1.expect)(result.error).toMatch(/ImportError: cannot import name 'EXTRACTION_CONFIG_FILE'/);
|
|
208
|
+
});
|
|
209
|
+
(0, vitest_1.it)('does not crash when stdin.write throws synchronously', async () => {
|
|
210
|
+
const proc = new node_events_1.EventEmitter();
|
|
211
|
+
proc.stdout = new node_events_1.EventEmitter();
|
|
212
|
+
proc.stderr = new node_events_1.EventEmitter();
|
|
213
|
+
proc.kill = vitest_1.vi.fn();
|
|
214
|
+
const stdin = makeStdinMock();
|
|
215
|
+
stdin.write.mockImplementation(() => { throw Object.assign(new Error('write EPIPE'), { code: 'EPIPE' }); });
|
|
216
|
+
proc.stdin = stdin;
|
|
217
|
+
vitest_1.vi.mocked(cp.spawn).mockReturnValue(proc);
|
|
218
|
+
setTimeout(() => {
|
|
219
|
+
proc.stderr.emit('data', Buffer.from('SyntaxError: invalid syntax'));
|
|
220
|
+
proc.emit('close', 1);
|
|
221
|
+
}, 10);
|
|
222
|
+
const result = await (0, script_executor_js_1.runScript)({ scriptPath: 'scripts/broken.py', runtime: 'python', context: makeContext() });
|
|
223
|
+
(0, vitest_1.expect)(result.error).toMatch(/exited with code 1/);
|
|
224
|
+
(0, vitest_1.expect)(result.error).toMatch(/SyntaxError: invalid syntax/);
|
|
225
|
+
});
|
|
172
226
|
});
|
|
173
227
|
//# sourceMappingURL=script-executor.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script-executor.test.js","sourceRoot":"","sources":["../../src/__tests__/script-executor.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAA8D;AAC9D,uDAAyC;AACzC,4CAA8B;AAC9B,6CAA2C;AAE3C,mEAAmE;AACnE,WAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC9B,WAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnB,8DAAkD;AAGlD,SAAS,WAAW,CAAC,SAAiC;IACpD,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,GAAG,SAAS;KACG,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,IAKtB;IACC,MAAM,IAAI,GAAG,IAAI,0BAAY,EAAiC,CAAC;IAC9D,IAAY,CAAC,MAAM,GAAG,IAAI,0BAAY,EAAE,CAAC;IACzC,IAAY,CAAC,MAAM,GAAG,IAAI,0BAAY,EAAE,CAAC;IACzC,IAAY,CAAC,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"script-executor.test.js","sourceRoot":"","sources":["../../src/__tests__/script-executor.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export { OpenAIProvider } from './providers/openai.js';
|
|
|
13
13
|
export { OpenAIResponsesProvider } from './providers/openai-responses.js';
|
|
14
14
|
export { AnthropicProvider } from './providers/anthropic.js';
|
|
15
15
|
export { OllamaProvider } from './providers/ollama.js';
|
|
16
|
+
export { ClaudeCodeProvider } from './providers/claude-code.js';
|
|
16
17
|
export { ProviderRegistry, createDefaultRegistry } from './providers/registry.js';
|
|
17
18
|
export { MockProvider } from './providers/mock.js';
|
|
18
19
|
export type { MockStageConfig } from './providers/mock.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EACV,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAEhG,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACpI,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,YAAY,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EACV,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAEhG,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACpI,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,YAAY,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,sCAAsC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @studio/runner - Multi-provider LLM agent runner with tool execution
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.loadProjectIntegrations = exports.listAvailableIntegrationTemplates = exports.getBundledIntegrationTemplate = exports.validateSkillManifest = exports.loadSkill = exports.loadSkills = exports.StudioOAuthProvider = exports.MCPClient = exports.loadPlugins = exports.AnonymizationMiddleware = exports.BUILTIN_TOOL_NAMES = exports.getBundledToolTemplate = exports.listAvailableToolTemplates = exports.loadProjectTools = exports.WEB_SEARCH_PROMPT_SNIPPET = exports.createWebSearchTools = exports.STUDIO_RUN_PROMPT_SNIPPET = exports.createStudioRunTool = exports.createGitTools = exports.createPatchTools = exports.createSearchTools = exports.createShellTools = exports.createRepoManagerTools = exports.ToolExecutor = exports.ToolRegistry = exports.MockProvider = exports.createDefaultRegistry = exports.ProviderRegistry = exports.OllamaProvider = exports.AnthropicProvider = exports.OpenAIResponsesProvider = exports.OpenAIProvider = exports.isAgentLoopProvider = exports.buildPrompt = exports.runScript = exports.runAgent = void 0;
|
|
6
|
+
exports.loadProjectIntegrations = exports.listAvailableIntegrationTemplates = exports.getBundledIntegrationTemplate = exports.validateSkillManifest = exports.loadSkill = exports.loadSkills = exports.StudioOAuthProvider = exports.MCPClient = exports.loadPlugins = exports.AnonymizationMiddleware = exports.BUILTIN_TOOL_NAMES = exports.getBundledToolTemplate = exports.listAvailableToolTemplates = exports.loadProjectTools = exports.WEB_SEARCH_PROMPT_SNIPPET = exports.createWebSearchTools = exports.STUDIO_RUN_PROMPT_SNIPPET = exports.createStudioRunTool = exports.createGitTools = exports.createPatchTools = exports.createSearchTools = exports.createShellTools = exports.createRepoManagerTools = exports.ToolExecutor = exports.ToolRegistry = exports.MockProvider = exports.createDefaultRegistry = exports.ProviderRegistry = exports.ClaudeCodeProvider = exports.OllamaProvider = exports.AnthropicProvider = exports.OpenAIResponsesProvider = exports.OpenAIProvider = exports.isAgentLoopProvider = exports.buildPrompt = exports.runScript = exports.runAgent = void 0;
|
|
7
7
|
// Main runner function
|
|
8
8
|
var runner_js_1 = require("./runner.js");
|
|
9
9
|
Object.defineProperty(exports, "runAgent", { enumerable: true, get: function () { return runner_js_1.runAgent; } });
|
|
@@ -23,6 +23,8 @@ var anthropic_js_1 = require("./providers/anthropic.js");
|
|
|
23
23
|
Object.defineProperty(exports, "AnthropicProvider", { enumerable: true, get: function () { return anthropic_js_1.AnthropicProvider; } });
|
|
24
24
|
var ollama_js_1 = require("./providers/ollama.js");
|
|
25
25
|
Object.defineProperty(exports, "OllamaProvider", { enumerable: true, get: function () { return ollama_js_1.OllamaProvider; } });
|
|
26
|
+
var claude_code_js_1 = require("./providers/claude-code.js");
|
|
27
|
+
Object.defineProperty(exports, "ClaudeCodeProvider", { enumerable: true, get: function () { return claude_code_js_1.ClaudeCodeProvider; } });
|
|
26
28
|
var registry_js_1 = require("./providers/registry.js");
|
|
27
29
|
Object.defineProperty(exports, "ProviderRegistry", { enumerable: true, get: function () { return registry_js_1.ProviderRegistry; } });
|
|
28
30
|
Object.defineProperty(exports, "createDefaultRegistry", { enumerable: true, get: function () { return registry_js_1.createDefaultRegistry; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uBAAuB;AACvB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAGjB,kBAAkB;AAClB,2DAAiD;AAAxC,+GAAA,SAAS,OAAA;AAGlB,iBAAiB;AACjB,yDAAkD;AAAzC,gHAAA,WAAW,OAAA;AAWpB,uDAA8D;AAArD,kHAAA,mBAAmB,OAAA;AAC5B,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AACvB,uEAA0E;AAAjE,8HAAA,uBAAuB,OAAA;AAChC,yDAA6D;AAApD,iHAAA,iBAAiB,OAAA;AAC1B,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AACvB,uDAAkF;AAAzE,+GAAA,gBAAgB,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAChD,+CAAmD;AAA1C,uGAAA,YAAY,OAAA;AAGrB,QAAQ;AACR,6DAAwD;AAA/C,gHAAA,YAAY,OAAA;AACrB,6DAAwD;AAA/C,gHAAA,YAAY,OAAA;AAGrB,gBAAgB;AAChB,mEAAyE;AAAhE,yHAAA,sBAAsB,OAAA;AAC/B,qDAA4D;AAAnD,4GAAA,gBAAgB,OAAA;AACzB,uDAA8D;AAArD,8GAAA,iBAAiB,OAAA;AAC1B,qDAA4D;AAAnD,4GAAA,gBAAgB,OAAA;AACzB,iDAAwD;AAA/C,wGAAA,cAAc,OAAA;AACvB,+DAA+F;AAAtF,oHAAA,mBAAmB,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AACvD,+DAAgG;AAAvF,qHAAA,oBAAoB,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AAExD,6DAAoI;AAA3H,oHAAA,gBAAgB,OAAA;AAAE,8HAAA,0BAA0B,OAAA;AAAE,0HAAA,sBAAsB,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAGjG,2BAA2B;AAC3B,kEAAwE;AAA/D,2HAAA,uBAAuB,OAAA;AAGhC,mDAAmD;AACnD,+CAAiF;AAAxE,uGAAA,WAAW,OAAA;AAAE,qGAAA,SAAS,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAGpD,eAAe;AACf,kEAA8F;AAArF,6GAAA,UAAU,OAAA;AAAE,4GAAA,SAAS,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAGrD,4BAA4B;AAC5B,8EAI8C;AAH5C,sIAAA,6BAA6B,OAAA;AAC7B,0IAAA,iCAAiC,OAAA;AACjC,gIAAA,uBAAuB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uBAAuB;AACvB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAGjB,kBAAkB;AAClB,2DAAiD;AAAxC,+GAAA,SAAS,OAAA;AAGlB,iBAAiB;AACjB,yDAAkD;AAAzC,gHAAA,WAAW,OAAA;AAWpB,uDAA8D;AAArD,kHAAA,mBAAmB,OAAA;AAC5B,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AACvB,uEAA0E;AAAjE,8HAAA,uBAAuB,OAAA;AAChC,yDAA6D;AAApD,iHAAA,iBAAiB,OAAA;AAC1B,mDAAuD;AAA9C,2GAAA,cAAc,OAAA;AACvB,6DAAgE;AAAvD,oHAAA,kBAAkB,OAAA;AAC3B,uDAAkF;AAAzE,+GAAA,gBAAgB,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAChD,+CAAmD;AAA1C,uGAAA,YAAY,OAAA;AAGrB,QAAQ;AACR,6DAAwD;AAA/C,gHAAA,YAAY,OAAA;AACrB,6DAAwD;AAA/C,gHAAA,YAAY,OAAA;AAGrB,gBAAgB;AAChB,mEAAyE;AAAhE,yHAAA,sBAAsB,OAAA;AAC/B,qDAA4D;AAAnD,4GAAA,gBAAgB,OAAA;AACzB,uDAA8D;AAArD,8GAAA,iBAAiB,OAAA;AAC1B,qDAA4D;AAAnD,4GAAA,gBAAgB,OAAA;AACzB,iDAAwD;AAA/C,wGAAA,cAAc,OAAA;AACvB,+DAA+F;AAAtF,oHAAA,mBAAmB,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AACvD,+DAAgG;AAAvF,qHAAA,oBAAoB,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AAExD,6DAAoI;AAA3H,oHAAA,gBAAgB,OAAA;AAAE,8HAAA,0BAA0B,OAAA;AAAE,0HAAA,sBAAsB,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAGjG,2BAA2B;AAC3B,kEAAwE;AAA/D,2HAAA,uBAAuB,OAAA;AAGhC,mDAAmD;AACnD,+CAAiF;AAAxE,uGAAA,WAAW,OAAA;AAAE,qGAAA,SAAS,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAGpD,eAAe;AACf,kEAA8F;AAArF,6GAAA,UAAU,OAAA;AAAE,4GAAA,SAAS,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAGrD,4BAA4B;AAC5B,8EAI8C;AAH5C,sIAAA,6BAA6B,OAAA;AAC7B,0IAAA,iCAAiC,OAAA;AACjC,gIAAA,uBAAuB,OAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnonymizerOptions } from '@studio-foundation/anonymizer';
|
|
1
|
+
import type { AnonymizerOptions, DetectionProvider } from '@studio-foundation/anonymizer';
|
|
2
2
|
/**
|
|
3
3
|
* Stateful middleware that anonymizes text before sending to LLM
|
|
4
4
|
* and deanonymizes text after receiving from LLM.
|
|
@@ -7,12 +7,27 @@ import type { AnonymizerOptions } from '@studio-foundation/anonymizer';
|
|
|
7
7
|
export declare class AnonymizationMiddleware {
|
|
8
8
|
private keymap;
|
|
9
9
|
private options?;
|
|
10
|
-
|
|
10
|
+
private detector;
|
|
11
|
+
constructor(options?: Omit<AnonymizerOptions, 'seedKeymap'>, detector?: DetectionProvider);
|
|
11
12
|
/**
|
|
12
13
|
* Anonymize text. Accumulated keymap grows with each call.
|
|
13
14
|
* Same PII value always gets the same token (guaranteed by seedKeymap).
|
|
14
15
|
*/
|
|
15
16
|
anonymize(text: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Anonymize named input fields independently, BEFORE prompt assembly. Each
|
|
19
|
+
* in-scope field is detected + tokenized through the injected
|
|
20
|
+
* DetectionProvider, all sharing this instance's run-level keymap — so a PII
|
|
21
|
+
* value appearing in two in-scope fields receives the SAME token.
|
|
22
|
+
*
|
|
23
|
+
* `scope` is an OPAQUE list of field names to anonymize: undefined → all
|
|
24
|
+
* fields (fail-safe); [] → none; ['a'] → only field `a`. Out-of-scope fields
|
|
25
|
+
* are copied byte-for-byte and are NEVER passed to the detector, so their PII
|
|
26
|
+
* cannot enter the keymap and collide with a value tokenized elsewhere.
|
|
27
|
+
* Membership is a set check on opaque names — the kernel never branches on
|
|
28
|
+
* what a name means (INV-04). Async because DetectionProvider.detect is async.
|
|
29
|
+
*/
|
|
30
|
+
anonymizeFields(fields: Record<string, string>, scope?: string[]): Promise<Record<string, string>>;
|
|
16
31
|
/**
|
|
17
32
|
* Deanonymize text using accumulated keymap.
|
|
18
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anonymization.d.ts","sourceRoot":"","sources":["../../src/middleware/anonymization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"anonymization.d.ts","sourceRoot":"","sources":["../../src/middleware/anonymization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAE1F;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,OAAO,CAAC,CAAwC;IACxD,OAAO,CAAC,QAAQ,CAAoB;gBAExB,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,iBAAiB;IAQzF;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO/B;;;;;;;;;;;;OAYG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAmBlC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIjC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGpC"}
|
|
@@ -10,8 +10,13 @@ const anonymizer_1 = require("@studio-foundation/anonymizer");
|
|
|
10
10
|
class AnonymizationMiddleware {
|
|
11
11
|
keymap = {};
|
|
12
12
|
options;
|
|
13
|
-
|
|
13
|
+
detector;
|
|
14
|
+
constructor(options, detector) {
|
|
14
15
|
this.options = options;
|
|
16
|
+
// Default to the in-process regex detector. A run can inject a different
|
|
17
|
+
// DetectionProvider (e.g. a future NER/Presidio provider) without the
|
|
18
|
+
// middleware knowing anything about detection internals.
|
|
19
|
+
this.detector = detector ?? new anonymizer_1.RegexDetector();
|
|
15
20
|
}
|
|
16
21
|
/**
|
|
17
22
|
* Anonymize text. Accumulated keymap grows with each call.
|
|
@@ -23,6 +28,37 @@ class AnonymizationMiddleware {
|
|
|
23
28
|
this.keymap = result.keymap;
|
|
24
29
|
return result.text;
|
|
25
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Anonymize named input fields independently, BEFORE prompt assembly. Each
|
|
33
|
+
* in-scope field is detected + tokenized through the injected
|
|
34
|
+
* DetectionProvider, all sharing this instance's run-level keymap — so a PII
|
|
35
|
+
* value appearing in two in-scope fields receives the SAME token.
|
|
36
|
+
*
|
|
37
|
+
* `scope` is an OPAQUE list of field names to anonymize: undefined → all
|
|
38
|
+
* fields (fail-safe); [] → none; ['a'] → only field `a`. Out-of-scope fields
|
|
39
|
+
* are copied byte-for-byte and are NEVER passed to the detector, so their PII
|
|
40
|
+
* cannot enter the keymap and collide with a value tokenized elsewhere.
|
|
41
|
+
* Membership is a set check on opaque names — the kernel never branches on
|
|
42
|
+
* what a name means (INV-04). Async because DetectionProvider.detect is async.
|
|
43
|
+
*/
|
|
44
|
+
async anonymizeFields(fields, scope) {
|
|
45
|
+
const out = {};
|
|
46
|
+
for (const [name, value] of Object.entries(fields)) {
|
|
47
|
+
// Out of scope → copy verbatim, no detection. Undefined scope = all in.
|
|
48
|
+
if (scope !== undefined && !scope.includes(name)) {
|
|
49
|
+
out[name] = value;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const result = await (0, anonymizer_1.anonymizeWithProvider)(value, this.detector, {
|
|
53
|
+
...this.options,
|
|
54
|
+
seedKeymap: this.keymap,
|
|
55
|
+
});
|
|
56
|
+
// Carry the accumulated keymap forward so the next field reuses tokens.
|
|
57
|
+
this.keymap = result.keymap;
|
|
58
|
+
out[name] = result.text;
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
26
62
|
/**
|
|
27
63
|
* Deanonymize text using accumulated keymap.
|
|
28
64
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anonymization.js","sourceRoot":"","sources":["../../src/middleware/anonymization.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"anonymization.js","sourceRoot":"","sources":["../../src/middleware/anonymization.ts"],"names":[],"mappings":";;;AAAA,8DAA6G;AAG7G;;;;GAIG;AACH,MAAa,uBAAuB;IAC1B,MAAM,GAA2B,EAAE,CAAC;IACpC,OAAO,CAAyC;IAChD,QAAQ,CAAoB;IAEpC,YAAY,OAA+C,EAAE,QAA4B;QACvF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,yEAAyE;QACzE,sEAAsE;QACtE,yDAAyD;QACzD,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,0BAAa,EAAE,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,IAAY;QACpB,MAAM,MAAM,GAAG,IAAA,sBAAS,EAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,oEAAoE;QACpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,eAAe,CACnB,MAA8B,EAC9B,KAAgB;QAEhB,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,wEAAwE;YACxE,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAA,kCAAqB,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;gBAC/D,GAAG,IAAI,CAAC,OAAO;gBACf,UAAU,EAAE,IAAI,CAAC,MAAM;aACxB,CAAC,CAAC;YACH,wEAAwE;YACxE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAA,wBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF;AArED,0DAqEC"}
|
package/dist/prompt-builder.d.ts
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Prompt builder - constructs messages for LLM with retry escalation
|
|
3
3
|
*/
|
|
4
|
-
import type { Message, AgentConfig, OutputContract, ResolvedContextPack, ToolCall } from '@studio-foundation/contracts';
|
|
4
|
+
import type { Message, AgentConfig, OutputContract, ResolvedContextPack, ToolCall, TaskInput } from '@studio-foundation/contracts';
|
|
5
5
|
import type { SkillContent } from './tools/skills/skill-loader.js';
|
|
6
|
+
export type { TaskInput } from '@studio-foundation/contracts';
|
|
7
|
+
/**
|
|
8
|
+
* Whether a task is in structured (field) mode rather than flat-description mode.
|
|
9
|
+
* Single source of truth for the `description` XOR `fields` branch — both the
|
|
10
|
+
* anonymization injection point and prompt assembly call this instead of
|
|
11
|
+
* re-checking `fields && Object.keys(fields).length > 0`. An empty record
|
|
12
|
+
* degrades to flat mode.
|
|
13
|
+
*/
|
|
14
|
+
export declare function hasFields(task: TaskInput): boolean;
|
|
6
15
|
export interface ExecutionContext {
|
|
7
16
|
attempt: number;
|
|
8
17
|
previous_failures?: Array<{
|
|
@@ -10,11 +19,6 @@ export interface ExecutionContext {
|
|
|
10
19
|
tool_calls_count: number;
|
|
11
20
|
}>;
|
|
12
21
|
}
|
|
13
|
-
export interface TaskInput {
|
|
14
|
-
description: string;
|
|
15
|
-
expected_output?: string;
|
|
16
|
-
contract_name?: string;
|
|
17
|
-
}
|
|
18
22
|
export interface GroupFeedbackContext {
|
|
19
23
|
iteration: number;
|
|
20
24
|
max_iterations: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../src/prompt-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../src/prompt-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACnI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAKnE,YAAY,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAElD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,KAAK,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,EAAE,CA+IhE"}
|
package/dist/prompt-builder.js
CHANGED
|
@@ -3,7 +3,18 @@
|
|
|
3
3
|
* Prompt builder - constructs messages for LLM with retry escalation
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.hasFields = hasFields;
|
|
6
7
|
exports.buildPrompt = buildPrompt;
|
|
8
|
+
/**
|
|
9
|
+
* Whether a task is in structured (field) mode rather than flat-description mode.
|
|
10
|
+
* Single source of truth for the `description` XOR `fields` branch — both the
|
|
11
|
+
* anonymization injection point and prompt assembly call this instead of
|
|
12
|
+
* re-checking `fields && Object.keys(fields).length > 0`. An empty record
|
|
13
|
+
* degrades to flat mode.
|
|
14
|
+
*/
|
|
15
|
+
function hasFields(task) {
|
|
16
|
+
return !!task.fields && Object.keys(task.fields).length > 0;
|
|
17
|
+
}
|
|
7
18
|
/**
|
|
8
19
|
* Build prompt messages with retry escalation support
|
|
9
20
|
*/
|
|
@@ -123,8 +134,8 @@ ${task.expected_output || `Provide your response according to the ${task.contrac
|
|
|
123
134
|
if (context.previous_tool_results && Object.keys(context.previous_tool_results).length > 0) {
|
|
124
135
|
userContent += renderToolResults(context.previous_tool_results);
|
|
125
136
|
}
|
|
126
|
-
// Add task description
|
|
127
|
-
userContent +=
|
|
137
|
+
// Add task — from structured fields when present, else the flat description.
|
|
138
|
+
userContent += renderTask(task);
|
|
128
139
|
// Add retry escalation if this is a retry attempt
|
|
129
140
|
if (executionContext && executionContext.attempt > 1) {
|
|
130
141
|
userContent += getRetryEscalationMessage(executionContext);
|
|
@@ -254,6 +265,20 @@ function renderToolResults(previous_tool_results) {
|
|
|
254
265
|
}
|
|
255
266
|
return out;
|
|
256
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Render the `## Task` section. When the input carries named `fields`, render
|
|
270
|
+
* each as its own `### <name>` subsection (the values are already tokenized by
|
|
271
|
+
* the time the prompt is built). Otherwise fall back to the flat description.
|
|
272
|
+
*/
|
|
273
|
+
function renderTask(task) {
|
|
274
|
+
if (hasFields(task)) {
|
|
275
|
+
const sections = Object.entries(task.fields)
|
|
276
|
+
.map(([name, value]) => `### ${name}\n\n${value}`)
|
|
277
|
+
.join('\n\n');
|
|
278
|
+
return `## Task\n\n${sections}`;
|
|
279
|
+
}
|
|
280
|
+
return `## Task\n\n${task.description}`;
|
|
281
|
+
}
|
|
257
282
|
function getFieldTypeHint(field) {
|
|
258
283
|
return FIELD_TYPE_HINTS[field] || 'string';
|
|
259
284
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../src/prompt-builder.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../src/prompt-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ToolDefinition } from '@studio-foundation/contracts';
|
|
2
|
+
import type { AgentLoopResult, ToolCallOutcome } from './provider.js';
|
|
3
|
+
export declare class ClaudeCodeMcpServer {
|
|
4
|
+
private readonly tools;
|
|
5
|
+
private readonly executeTool;
|
|
6
|
+
private server;
|
|
7
|
+
private readonly completedToolCalls;
|
|
8
|
+
constructor(tools: ToolDefinition[], executeTool: (name: string, args: Record<string, unknown>, callId: string) => Promise<ToolCallOutcome>);
|
|
9
|
+
start(): Promise<number>;
|
|
10
|
+
stop(): Promise<void>;
|
|
11
|
+
getToolCalls(): AgentLoopResult['tool_calls'];
|
|
12
|
+
private handleRequest;
|
|
13
|
+
private dispatch;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=claude-code-mcp-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-mcp-server.d.ts","sourceRoot":"","sources":["../../src/providers/claude-code-mcp-server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEtE,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAL9B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqC;gBAGrD,KAAK,EAAE,cAAc,EAAE,EACvB,WAAW,EAAE,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,eAAe,CAAC;IAGzB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAiBxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,YAAY,IAAI,eAAe,CAAC,YAAY,CAAC;YAI/B,aAAa;YA2Bb,QAAQ;CA+DvB"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClaudeCodeMcpServer = void 0;
|
|
4
|
+
const node_http_1 = require("node:http");
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
class ClaudeCodeMcpServer {
|
|
7
|
+
tools;
|
|
8
|
+
executeTool;
|
|
9
|
+
server = null;
|
|
10
|
+
completedToolCalls = [];
|
|
11
|
+
constructor(tools, executeTool) {
|
|
12
|
+
this.tools = tools;
|
|
13
|
+
this.executeTool = executeTool;
|
|
14
|
+
}
|
|
15
|
+
async start() {
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
this.server = (0, node_http_1.createServer)((req, res) => {
|
|
18
|
+
this.handleRequest(req, res).catch(err => {
|
|
19
|
+
res.writeHead(500);
|
|
20
|
+
res.end(JSON.stringify({ error: String(err) }));
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
this.server.listen(0, '127.0.0.1', () => {
|
|
24
|
+
const addr = this.server.address();
|
|
25
|
+
if (!addr || typeof addr === 'string')
|
|
26
|
+
return reject(new Error('Bad address'));
|
|
27
|
+
resolve(addr.port);
|
|
28
|
+
});
|
|
29
|
+
this.server.on('error', reject);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async stop() {
|
|
33
|
+
return new Promise((resolve) => {
|
|
34
|
+
if (!this.server)
|
|
35
|
+
return resolve();
|
|
36
|
+
this.server.close(() => resolve());
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
getToolCalls() {
|
|
40
|
+
return this.completedToolCalls;
|
|
41
|
+
}
|
|
42
|
+
async handleRequest(req, res) {
|
|
43
|
+
if (req.method !== 'POST') {
|
|
44
|
+
res.writeHead(405);
|
|
45
|
+
res.end();
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const body = await readBody(req);
|
|
49
|
+
const rpc = JSON.parse(body);
|
|
50
|
+
// Notifications: no id OR method starts with "notifications/" — respond with null
|
|
51
|
+
if (rpc.id === undefined || rpc.method.startsWith('notifications/')) {
|
|
52
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
53
|
+
res.end('null');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const result = await this.dispatch(rpc.method, rpc.params);
|
|
57
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
58
|
+
res.end(JSON.stringify({ jsonrpc: '2.0', id: rpc.id, ...result }));
|
|
59
|
+
}
|
|
60
|
+
async dispatch(method, params) {
|
|
61
|
+
if (method === 'initialize') {
|
|
62
|
+
return {
|
|
63
|
+
result: {
|
|
64
|
+
protocolVersion: '2024-11-05',
|
|
65
|
+
capabilities: { tools: {} },
|
|
66
|
+
serverInfo: { name: 'studio', version: '1.0' },
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (method === 'tools/list') {
|
|
71
|
+
return {
|
|
72
|
+
result: {
|
|
73
|
+
tools: this.tools.map(t => ({
|
|
74
|
+
name: t.name,
|
|
75
|
+
description: t.description,
|
|
76
|
+
inputSchema: t.parameters,
|
|
77
|
+
})),
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
if (method === 'tools/call') {
|
|
82
|
+
const p = params;
|
|
83
|
+
if (!p?.name || !p?.arguments) {
|
|
84
|
+
return { error: { code: -32602, message: 'Invalid params: name and arguments are required' } };
|
|
85
|
+
}
|
|
86
|
+
const callId = (0, node_crypto_1.randomUUID)();
|
|
87
|
+
let outcome;
|
|
88
|
+
try {
|
|
89
|
+
outcome = await this.executeTool(p.name, p.arguments, callId);
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
outcome = { error: err instanceof Error ? err.message : String(err) };
|
|
93
|
+
}
|
|
94
|
+
this.completedToolCalls.push({
|
|
95
|
+
id: callId,
|
|
96
|
+
name: p.name,
|
|
97
|
+
arguments: p.arguments,
|
|
98
|
+
...(outcome.error ? { error: outcome.error } : { result: outcome.result }),
|
|
99
|
+
});
|
|
100
|
+
if (outcome.error) {
|
|
101
|
+
return {
|
|
102
|
+
result: {
|
|
103
|
+
content: [{ type: 'text', text: `Error: ${outcome.error}` }],
|
|
104
|
+
isError: true,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
result: {
|
|
110
|
+
content: [{ type: 'text', text: JSON.stringify(outcome.result) }],
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return { error: { code: -32601, message: `Method not found: ${method}` } };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.ClaudeCodeMcpServer = ClaudeCodeMcpServer;
|
|
118
|
+
function readBody(req) {
|
|
119
|
+
return new Promise((resolve, reject) => {
|
|
120
|
+
const chunks = [];
|
|
121
|
+
req.on('data', (chunk) => chunks.push(chunk));
|
|
122
|
+
req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
|
|
123
|
+
req.on('error', reject);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=claude-code-mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-mcp-server.js","sourceRoot":"","sources":["../../src/providers/claude-code-mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-mcp-server.test.d.ts","sourceRoot":"","sources":["../../src/providers/claude-code-mcp-server.test.ts"],"names":[],"mappings":""}
|