cognitive-core 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +302 -116
- package/SKILL.md +193 -0
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +5 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/mock-provider.d.ts +23 -0
- package/dist/agents/mock-provider.d.ts.map +1 -0
- package/dist/agents/mock-provider.js +71 -0
- package/dist/agents/mock-provider.js.map +1 -0
- package/dist/agents/types.d.ts +98 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +44 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/atlas.d.ts +196 -0
- package/dist/atlas.d.ts.map +1 -0
- package/dist/atlas.js +373 -0
- package/dist/atlas.js.map +1 -0
- package/dist/bin/cognitive-core.d.ts +18 -0
- package/dist/bin/cognitive-core.d.ts.map +1 -0
- package/dist/bin/cognitive-core.js +419 -0
- package/dist/bin/cognitive-core.js.map +1 -0
- package/dist/embeddings/bm25.d.ts +104 -0
- package/dist/embeddings/bm25.d.ts.map +1 -0
- package/dist/embeddings/bm25.js +264 -0
- package/dist/embeddings/bm25.js.map +1 -0
- package/dist/embeddings/index.d.ts +12 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +16 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/manager.d.ts +112 -0
- package/dist/embeddings/manager.d.ts.map +1 -0
- package/dist/embeddings/manager.js +215 -0
- package/dist/embeddings/manager.js.map +1 -0
- package/dist/embeddings/provider.d.ts +101 -0
- package/dist/embeddings/provider.d.ts.map +1 -0
- package/dist/embeddings/provider.js +232 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/embeddings/vector-store.d.ts +101 -0
- package/dist/embeddings/vector-store.d.ts.map +1 -0
- package/dist/embeddings/vector-store.js +256 -0
- package/dist/embeddings/vector-store.js.map +1 -0
- package/dist/factory.d.ts +193 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +109 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +30 -453
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -509
- package/dist/index.js.map +1 -0
- package/dist/learning/analyzer.d.ts +110 -0
- package/dist/learning/analyzer.d.ts.map +1 -0
- package/dist/learning/analyzer.js +213 -0
- package/dist/learning/analyzer.js.map +1 -0
- package/dist/learning/effectiveness.d.ts +158 -0
- package/dist/learning/effectiveness.d.ts.map +1 -0
- package/dist/learning/effectiveness.js +251 -0
- package/dist/learning/effectiveness.js.map +1 -0
- package/dist/learning/index.d.ts +8 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +11 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/llm-extractor.d.ts +88 -0
- package/dist/learning/llm-extractor.d.ts.map +1 -0
- package/dist/learning/llm-extractor.js +372 -0
- package/dist/learning/llm-extractor.js.map +1 -0
- package/dist/learning/meta-learner.d.ts +80 -0
- package/dist/learning/meta-learner.d.ts.map +1 -0
- package/dist/learning/meta-learner.js +355 -0
- package/dist/learning/meta-learner.js.map +1 -0
- package/dist/learning/pipeline.d.ts +65 -0
- package/dist/learning/pipeline.d.ts.map +1 -0
- package/dist/learning/pipeline.js +170 -0
- package/dist/learning/pipeline.js.map +1 -0
- package/dist/learning/playbook-extractor.d.ts +113 -0
- package/dist/learning/playbook-extractor.d.ts.map +1 -0
- package/dist/learning/playbook-extractor.js +523 -0
- package/dist/learning/playbook-extractor.js.map +1 -0
- package/dist/learning/usage-inference.d.ts +82 -0
- package/dist/learning/usage-inference.d.ts.map +1 -0
- package/dist/learning/usage-inference.js +261 -0
- package/dist/learning/usage-inference.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/playbook-server.d.ts +120 -0
- package/dist/mcp/playbook-server.d.ts.map +1 -0
- package/dist/mcp/playbook-server.js +427 -0
- package/dist/mcp/playbook-server.js.map +1 -0
- package/dist/memory/curated-loader.d.ts +62 -0
- package/dist/memory/curated-loader.d.ts.map +1 -0
- package/dist/memory/curated-loader.js +106 -0
- package/dist/memory/curated-loader.js.map +1 -0
- package/dist/memory/experience.d.ts +122 -0
- package/dist/memory/experience.d.ts.map +1 -0
- package/dist/memory/experience.js +392 -0
- package/dist/memory/experience.js.map +1 -0
- package/dist/memory/index.d.ts +6 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +9 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/meta.d.ts +90 -0
- package/dist/memory/meta.d.ts.map +1 -0
- package/dist/memory/meta.js +362 -0
- package/dist/memory/meta.js.map +1 -0
- package/dist/memory/playbook.d.ts +133 -0
- package/dist/memory/playbook.d.ts.map +1 -0
- package/dist/memory/playbook.js +357 -0
- package/dist/memory/playbook.js.map +1 -0
- package/dist/memory/system.d.ts +167 -0
- package/dist/memory/system.d.ts.map +1 -0
- package/dist/memory/system.js +383 -0
- package/dist/memory/system.js.map +1 -0
- package/dist/runtime/backends/acp.d.ts +67 -0
- package/dist/runtime/backends/acp.d.ts.map +1 -0
- package/dist/runtime/backends/acp.js +290 -0
- package/dist/runtime/backends/acp.js.map +1 -0
- package/dist/runtime/backends/index.d.ts +5 -0
- package/dist/runtime/backends/index.d.ts.map +1 -0
- package/dist/runtime/backends/index.js +6 -0
- package/dist/runtime/backends/index.js.map +1 -0
- package/dist/runtime/backends/mock.d.ts +67 -0
- package/dist/runtime/backends/mock.d.ts.map +1 -0
- package/dist/runtime/backends/mock.js +153 -0
- package/dist/runtime/backends/mock.js.map +1 -0
- package/dist/runtime/backends/subprocess.d.ts +56 -0
- package/dist/runtime/backends/subprocess.d.ts.map +1 -0
- package/dist/runtime/backends/subprocess.js +260 -0
- package/dist/runtime/backends/subprocess.js.map +1 -0
- package/dist/runtime/flows/learning.d.ts +73 -0
- package/dist/runtime/flows/learning.d.ts.map +1 -0
- package/dist/runtime/flows/learning.js +116 -0
- package/dist/runtime/flows/learning.js.map +1 -0
- package/dist/runtime/flows/validation.d.ts +122 -0
- package/dist/runtime/flows/validation.d.ts.map +1 -0
- package/dist/runtime/flows/validation.js +223 -0
- package/dist/runtime/flows/validation.js.map +1 -0
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/manager.d.ts +116 -0
- package/dist/runtime/manager.d.ts.map +1 -0
- package/dist/runtime/manager.js +416 -0
- package/dist/runtime/manager.js.map +1 -0
- package/dist/runtime/types.d.ts +138 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/search/evaluator.d.ts +102 -0
- package/dist/search/evaluator.d.ts.map +1 -0
- package/dist/search/evaluator.js +352 -0
- package/dist/search/evaluator.js.map +1 -0
- package/dist/search/index.d.ts +7 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +11 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/refinement-loop.d.ts +73 -0
- package/dist/search/refinement-loop.d.ts.map +1 -0
- package/dist/search/refinement-loop.js +245 -0
- package/dist/search/refinement-loop.js.map +1 -0
- package/dist/search/refinement-types.d.ts +154 -0
- package/dist/search/refinement-types.d.ts.map +1 -0
- package/dist/search/refinement-types.js +99 -0
- package/dist/search/refinement-types.js.map +1 -0
- package/dist/search/router.d.ts +61 -0
- package/dist/search/router.d.ts.map +1 -0
- package/dist/search/router.js +197 -0
- package/dist/search/router.js.map +1 -0
- package/dist/search/solver.d.ts +75 -0
- package/dist/search/solver.d.ts.map +1 -0
- package/dist/search/solver.js +216 -0
- package/dist/search/solver.js.map +1 -0
- package/dist/search/verification-runner.d.ts +125 -0
- package/dist/search/verification-runner.d.ts.map +1 -0
- package/dist/search/verification-runner.js +440 -0
- package/dist/search/verification-runner.js.map +1 -0
- package/dist/surfacing/index.d.ts +2 -0
- package/dist/surfacing/index.d.ts.map +1 -0
- package/dist/surfacing/index.js +2 -0
- package/dist/surfacing/index.js.map +1 -0
- package/dist/surfacing/skill-library.d.ts +158 -0
- package/dist/surfacing/skill-library.d.ts.map +1 -0
- package/dist/surfacing/skill-library.js +429 -0
- package/dist/surfacing/skill-library.js.map +1 -0
- package/dist/types/config.d.ts +1113 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +274 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +14 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/memory.d.ts +339 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +207 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/meta.d.ts +146 -0
- package/dist/types/meta.d.ts.map +1 -0
- package/dist/types/meta.js +51 -0
- package/dist/types/meta.js.map +1 -0
- package/dist/types/outcome.d.ts +42 -0
- package/dist/types/outcome.d.ts.map +1 -0
- package/dist/types/outcome.js +50 -0
- package/dist/types/outcome.js.map +1 -0
- package/dist/types/playbook.d.ts +119 -0
- package/dist/types/playbook.d.ts.map +1 -0
- package/dist/types/playbook.js +71 -0
- package/dist/types/playbook.js.map +1 -0
- package/dist/types/step.d.ts +44 -0
- package/dist/types/step.d.ts.map +1 -0
- package/dist/types/step.js +32 -0
- package/dist/types/step.js.map +1 -0
- package/dist/types/task.d.ts +91 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +39 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/trajectory.d.ts +221 -0
- package/dist/types/trajectory.d.ts.map +1 -0
- package/dist/types/trajectory.js +60 -0
- package/dist/types/trajectory.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/similarity.d.ts +31 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +107 -0
- package/dist/utils/similarity.js.map +1 -0
- package/dist/utils/storage.d.ts +106 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +203 -0
- package/dist/utils/storage.js.map +1 -0
- package/dist/utils/validation.d.ts +129 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +171 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +50 -34
- package/scripts/migrate-to-playbooks.ts +307 -0
- package/src/agents/index.ts +14 -0
- package/src/agents/mock-provider.ts +93 -0
- package/src/agents/types.ts +137 -0
- package/src/atlas.ts +560 -0
- package/src/bin/cognitive-core.ts +470 -0
- package/src/embeddings/bm25.ts +337 -0
- package/src/embeddings/index.ts +39 -0
- package/src/embeddings/manager.ts +288 -0
- package/src/embeddings/provider.ts +311 -0
- package/src/embeddings/vector-store.ts +353 -0
- package/src/factory.ts +263 -0
- package/src/index.ts +246 -0
- package/src/learning/analyzer.ts +335 -0
- package/src/learning/effectiveness.ts +428 -0
- package/src/learning/index.ts +58 -0
- package/src/learning/llm-extractor.ts +542 -0
- package/src/learning/meta-learner.ts +516 -0
- package/src/learning/pipeline.ts +244 -0
- package/src/learning/playbook-extractor.ts +702 -0
- package/src/learning/usage-inference.ts +372 -0
- package/src/mcp/index.ts +12 -0
- package/src/mcp/playbook-server.ts +565 -0
- package/src/memory/curated-loader.ts +160 -0
- package/src/memory/experience.ts +515 -0
- package/src/memory/index.ts +27 -0
- package/src/memory/meta.ts +506 -0
- package/src/memory/playbook.ts +493 -0
- package/src/memory/system.ts +551 -0
- package/src/runtime/backends/acp.ts +378 -0
- package/src/runtime/backends/index.ts +24 -0
- package/src/runtime/backends/mock.ts +218 -0
- package/src/runtime/backends/subprocess.ts +356 -0
- package/src/runtime/flows/learning.ts +183 -0
- package/src/runtime/flows/validation.ts +381 -0
- package/src/runtime/index.ts +53 -0
- package/src/runtime/manager.ts +541 -0
- package/src/runtime/types.ts +157 -0
- package/src/search/evaluator.ts +474 -0
- package/src/search/index.ts +59 -0
- package/src/search/refinement-loop.ts +363 -0
- package/src/search/refinement-types.ts +159 -0
- package/src/search/router.ts +261 -0
- package/src/search/solver.ts +303 -0
- package/src/search/verification-runner.ts +570 -0
- package/src/surfacing/index.ts +6 -0
- package/src/surfacing/skill-library.ts +594 -0
- package/src/types/config.ts +333 -0
- package/src/types/index.ts +130 -0
- package/src/types/memory.ts +270 -0
- package/src/types/meta.ts +218 -0
- package/src/types/outcome.ts +66 -0
- package/src/types/playbook.ts +196 -0
- package/src/types/step.ts +40 -0
- package/src/types/task.ts +52 -0
- package/src/types/trajectory.ts +80 -0
- package/src/utils/index.ts +38 -0
- package/src/utils/similarity.ts +139 -0
- package/src/utils/storage.ts +249 -0
- package/src/utils/validation.ts +286 -0
- package/tests/embeddings/bm25.test.ts +130 -0
- package/tests/embeddings/manager.test.ts +205 -0
- package/tests/integration/atlas.test.ts +266 -0
- package/tests/integration/e2e.test.ts +929 -0
- package/tests/learning/analyzer.test.ts +426 -0
- package/tests/learning/effectiveness.test.ts +542 -0
- package/tests/learning/pipeline.test.ts +176 -0
- package/tests/learning/playbook-extractor-provenance.test.ts +114 -0
- package/tests/learning/usage-inference.test.ts +254 -0
- package/tests/mcp/playbook-server.test.ts +252 -0
- package/tests/memory/experience.test.ts +198 -0
- package/tests/memory/playbook.test.ts +338 -0
- package/tests/memory/provenance.test.ts +639 -0
- package/tests/memory/system.test.ts +325 -0
- package/tests/runtime/agent-manager.test.ts +512 -0
- package/tests/runtime/mock-backend.test.ts +248 -0
- package/tests/search/refinement-loop.test.ts +468 -0
- package/tests/search/refinement.test.ts +267 -0
- package/tests/search/router.test.ts +427 -0
- package/tests/surfacing/skill-library.test.ts +292 -0
- package/tests/types/outcome.test.ts +147 -0
- package/tests/types/step.test.ts +133 -0
- package/tests/types/task.test.ts +158 -0
- package/tests/types/trajectory.test.ts +253 -0
- package/tests/utils/similarity.test.ts +188 -0
- package/tests/utils/validation.test.ts +252 -0
- package/tsconfig.json +25 -0
- package/vitest.config.ts +22 -0
- package/dist/index.d.mts +0 -466
- package/dist/index.mjs +0 -478
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACP Backend using acp-factory
|
|
3
|
+
*
|
|
4
|
+
* This backend uses the acp-factory package to spawn and manage ACP-compatible
|
|
5
|
+
* agents like Claude Code, providing a clean interface for Atlas integration.
|
|
6
|
+
*/
|
|
7
|
+
import { AgentFactory, } from 'acp-factory';
|
|
8
|
+
/**
|
|
9
|
+
* ACP Backend
|
|
10
|
+
* Uses acp-factory to spawn and manage ACP-compatible agents
|
|
11
|
+
*/
|
|
12
|
+
export class ACPBackend {
|
|
13
|
+
name = 'acp';
|
|
14
|
+
supportedTypes;
|
|
15
|
+
sessions = new Map();
|
|
16
|
+
handles = new Map();
|
|
17
|
+
constructor(configs) {
|
|
18
|
+
this.supportedTypes = Object.keys(configs);
|
|
19
|
+
// Register all agent configs with AgentFactory
|
|
20
|
+
for (const [name, config] of Object.entries(configs)) {
|
|
21
|
+
AgentFactory.register(name, {
|
|
22
|
+
command: config.command,
|
|
23
|
+
args: config.args,
|
|
24
|
+
env: config.env,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async isAvailable() {
|
|
29
|
+
return this.supportedTypes.length > 0;
|
|
30
|
+
}
|
|
31
|
+
async spawn(config) {
|
|
32
|
+
const atlasSessionId = crypto.randomUUID();
|
|
33
|
+
// Create Atlas session tracking
|
|
34
|
+
const atlasSession = {
|
|
35
|
+
id: atlasSessionId,
|
|
36
|
+
agentType: config.agentType,
|
|
37
|
+
task: config.task,
|
|
38
|
+
state: 'running',
|
|
39
|
+
messages: [],
|
|
40
|
+
toolCalls: [],
|
|
41
|
+
startTime: new Date(),
|
|
42
|
+
metadata: {
|
|
43
|
+
injectedKnowledge: !!config.injectedKnowledge,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
try {
|
|
47
|
+
// Spawn the agent
|
|
48
|
+
const spawnOptions = {
|
|
49
|
+
permissionMode: 'auto-approve', // Auto-approve for automated learning
|
|
50
|
+
env: config.env,
|
|
51
|
+
};
|
|
52
|
+
const agentHandle = await AgentFactory.spawn(config.agentType, spawnOptions);
|
|
53
|
+
this.handles.set(atlasSessionId, agentHandle);
|
|
54
|
+
// Store capabilities
|
|
55
|
+
atlasSession.metadata.capabilities = agentHandle.capabilities;
|
|
56
|
+
// Create a session with the agent
|
|
57
|
+
const cwd = config.cwd ?? process.cwd();
|
|
58
|
+
const acpSession = await agentHandle.createSession(cwd);
|
|
59
|
+
// Store session state
|
|
60
|
+
const state = {
|
|
61
|
+
atlasSession,
|
|
62
|
+
agentHandle,
|
|
63
|
+
acpSession,
|
|
64
|
+
};
|
|
65
|
+
this.sessions.set(atlasSessionId, state);
|
|
66
|
+
// Build prompt content with knowledge injection
|
|
67
|
+
let promptContent = config.task.description;
|
|
68
|
+
if (config.systemPromptAdditions) {
|
|
69
|
+
promptContent = `## Context from Atlas Memory\n\n${config.systemPromptAdditions}\n\n---\n\n${promptContent}`;
|
|
70
|
+
}
|
|
71
|
+
if (Object.keys(config.task.context).length > 0) {
|
|
72
|
+
promptContent += `\n\n## Additional Context\n\`\`\`json\n${JSON.stringify(config.task.context, null, 2)}\n\`\`\``;
|
|
73
|
+
}
|
|
74
|
+
// Send prompt and collect updates
|
|
75
|
+
await this.runPrompt(state, promptContent, config);
|
|
76
|
+
return atlasSession;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
atlasSession.state = 'failed';
|
|
80
|
+
atlasSession.error = error instanceof Error ? error.message : 'Unknown error';
|
|
81
|
+
atlasSession.endTime = new Date();
|
|
82
|
+
console.error(`[ACPBackend] Session ${atlasSessionId} spawn failed:`, error instanceof Error ? error.message : String(error));
|
|
83
|
+
return atlasSession;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Run a prompt and collect all updates
|
|
88
|
+
*/
|
|
89
|
+
async runPrompt(state, promptContent, config) {
|
|
90
|
+
const { atlasSession, acpSession } = state;
|
|
91
|
+
try {
|
|
92
|
+
// Stream updates from the agent
|
|
93
|
+
for await (const update of acpSession.prompt(promptContent)) {
|
|
94
|
+
this.processUpdate(atlasSession, update, config);
|
|
95
|
+
}
|
|
96
|
+
// Mark as completed
|
|
97
|
+
atlasSession.state = 'completed';
|
|
98
|
+
atlasSession.endTime = new Date();
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
atlasSession.state = 'failed';
|
|
102
|
+
atlasSession.error = error instanceof Error ? error.message : 'Unknown error';
|
|
103
|
+
atlasSession.endTime = new Date();
|
|
104
|
+
console.error(`[ACPBackend] Session ${atlasSession.id} prompt execution failed:`, error instanceof Error ? error.message : String(error));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Process a session update from the agent
|
|
109
|
+
* Uses defensive typing since ACP types can vary
|
|
110
|
+
*/
|
|
111
|
+
processUpdate(session, update, config) {
|
|
112
|
+
// Cast to any for flexible property access since ACP types are complex unions
|
|
113
|
+
const u = update;
|
|
114
|
+
const updateType = u.sessionUpdate;
|
|
115
|
+
switch (updateType) {
|
|
116
|
+
case 'agent_message_chunk':
|
|
117
|
+
case 'user_message_chunk':
|
|
118
|
+
case 'agent_thought_chunk': {
|
|
119
|
+
// ContentChunk has a single 'content' field (ContentBlock)
|
|
120
|
+
const content = u.content;
|
|
121
|
+
if (content && content.type === 'text' && typeof content.text === 'string') {
|
|
122
|
+
const message = {
|
|
123
|
+
role: updateType === 'user_message_chunk' ? 'user' : 'assistant',
|
|
124
|
+
content: content.text,
|
|
125
|
+
timestamp: new Date(),
|
|
126
|
+
};
|
|
127
|
+
session.messages.push(message);
|
|
128
|
+
config.onMessage?.(message);
|
|
129
|
+
}
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
case 'tool_call': {
|
|
133
|
+
// ToolCall has toolCallId, title, rawInput, status, content, etc.
|
|
134
|
+
const toolCallId = u.toolCallId ?? crypto.randomUUID();
|
|
135
|
+
const title = u.title ?? 'unknown';
|
|
136
|
+
const rawInput = u.rawInput;
|
|
137
|
+
const toolCall = {
|
|
138
|
+
id: toolCallId,
|
|
139
|
+
name: title,
|
|
140
|
+
input: rawInput,
|
|
141
|
+
startTime: new Date(),
|
|
142
|
+
};
|
|
143
|
+
session.toolCalls.push(toolCall);
|
|
144
|
+
config.onToolCall?.(toolCall);
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
case 'tool_call_update': {
|
|
148
|
+
// ToolCallUpdate has toolCallId, status, content, etc.
|
|
149
|
+
const toolCallId = u.toolCallId;
|
|
150
|
+
const status = u.status;
|
|
151
|
+
const content = u.content;
|
|
152
|
+
const existingTc = session.toolCalls.find((t) => t.id === toolCallId);
|
|
153
|
+
if (existingTc) {
|
|
154
|
+
if (status === 'completed' || status === 'failed') {
|
|
155
|
+
existingTc.endTime = new Date();
|
|
156
|
+
}
|
|
157
|
+
if (content && Array.isArray(content)) {
|
|
158
|
+
// Extract text from content blocks
|
|
159
|
+
const outputs = [];
|
|
160
|
+
for (const block of content) {
|
|
161
|
+
if (block.type === 'text' && typeof block.text === 'string') {
|
|
162
|
+
outputs.push(block.text);
|
|
163
|
+
}
|
|
164
|
+
else if (block.type === 'diff' && typeof block.diff === 'string') {
|
|
165
|
+
outputs.push(block.diff);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (outputs.length > 0) {
|
|
169
|
+
existingTc.output = outputs.join('\n');
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (status === 'failed') {
|
|
173
|
+
existingTc.error = 'Tool call failed';
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case 'permission_request': {
|
|
179
|
+
// In auto-approve mode, this shouldn't happen, but log it
|
|
180
|
+
session.messages.push({
|
|
181
|
+
role: 'system',
|
|
182
|
+
content: `Permission requested: ${JSON.stringify(update)}`,
|
|
183
|
+
timestamp: new Date(),
|
|
184
|
+
});
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
case 'plan': {
|
|
188
|
+
// Agent shared its plan
|
|
189
|
+
const plan = u.plan;
|
|
190
|
+
session.messages.push({
|
|
191
|
+
role: 'assistant',
|
|
192
|
+
content: `[Plan] ${JSON.stringify(plan)}`,
|
|
193
|
+
timestamp: new Date(),
|
|
194
|
+
});
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
default:
|
|
198
|
+
// Log other updates for debugging
|
|
199
|
+
session.metadata.lastUpdate = update;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async getSession(sessionId) {
|
|
203
|
+
return this.sessions.get(sessionId)?.atlasSession;
|
|
204
|
+
}
|
|
205
|
+
async sendMessage(sessionId, message) {
|
|
206
|
+
const state = this.sessions.get(sessionId);
|
|
207
|
+
if (!state) {
|
|
208
|
+
throw new Error('Session not found');
|
|
209
|
+
}
|
|
210
|
+
// Send additional prompt
|
|
211
|
+
for await (const update of state.acpSession.prompt(message)) {
|
|
212
|
+
this.processUpdate(state.atlasSession, update, {
|
|
213
|
+
agentType: state.atlasSession.agentType,
|
|
214
|
+
task: state.atlasSession.task,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
async terminate(sessionId) {
|
|
219
|
+
const state = this.sessions.get(sessionId);
|
|
220
|
+
if (!state)
|
|
221
|
+
return;
|
|
222
|
+
try {
|
|
223
|
+
// Cancel any running prompt
|
|
224
|
+
await state.acpSession.cancel();
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
// Log cancellation errors but don't throw
|
|
228
|
+
console.error(`[ACPBackend] Session ${sessionId} cancel error:`, error instanceof Error ? error.message : String(error));
|
|
229
|
+
}
|
|
230
|
+
try {
|
|
231
|
+
// Close the agent handle
|
|
232
|
+
await state.agentHandle.close();
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
// Log close errors but don't throw
|
|
236
|
+
console.error(`[ACPBackend] Session ${sessionId} close error:`, error instanceof Error ? error.message : String(error));
|
|
237
|
+
}
|
|
238
|
+
state.atlasSession.state = 'failed';
|
|
239
|
+
state.atlasSession.error = 'Terminated';
|
|
240
|
+
state.atlasSession.endTime = new Date();
|
|
241
|
+
this.sessions.delete(sessionId);
|
|
242
|
+
this.handles.delete(sessionId);
|
|
243
|
+
}
|
|
244
|
+
async listSessions() {
|
|
245
|
+
return Array.from(this.sessions.values()).map((s) => s.atlasSession);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get a raw ACP session for advanced usage
|
|
249
|
+
*/
|
|
250
|
+
getACPSession(sessionId) {
|
|
251
|
+
return this.sessions.get(sessionId)?.acpSession;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get a raw agent handle for advanced usage
|
|
255
|
+
*/
|
|
256
|
+
getAgentHandle(sessionId) {
|
|
257
|
+
return this.sessions.get(sessionId)?.agentHandle;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Create an ACP backend with agent configurations
|
|
262
|
+
*/
|
|
263
|
+
export function createACPBackend(configs) {
|
|
264
|
+
return new ACPBackend(configs);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Pre-configured Claude Code agent via claude-code-acp
|
|
268
|
+
*/
|
|
269
|
+
export const claudeCodeACPConfig = {
|
|
270
|
+
command: 'npx',
|
|
271
|
+
args: ['claude-code-acp'],
|
|
272
|
+
displayName: 'Claude Code (ACP)',
|
|
273
|
+
};
|
|
274
|
+
/**
|
|
275
|
+
* Pre-configured Claude direct (requires --print mode)
|
|
276
|
+
* Note: This may not support full ACP protocol
|
|
277
|
+
*/
|
|
278
|
+
export const claudeCodeDirectConfig = {
|
|
279
|
+
command: 'claude',
|
|
280
|
+
args: ['--print'],
|
|
281
|
+
displayName: 'Claude (Direct)',
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* Helper to register common agents
|
|
285
|
+
*/
|
|
286
|
+
export function registerCommonAgents() {
|
|
287
|
+
AgentFactory.register('claude-code', claudeCodeACPConfig);
|
|
288
|
+
AgentFactory.register('claude-code-acp', claudeCodeACPConfig);
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=acp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../../src/runtime/backends/acp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { SubprocessBackend, createSubprocessBackend, claudeCodeConfig, type SubprocessAgentConfig, } from './subprocess.js';
|
|
2
|
+
export { MockBackend, createMockBackend, type MockAgentBehavior, } from './mock.js';
|
|
3
|
+
export { ACPBackend, createACPBackend, claudeCodeACPConfig, claudeCodeDirectConfig, registerCommonAgents, type ACPAgentConfig, } from './acp.js';
|
|
4
|
+
export { AgentFactory } from 'acp-factory';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/backends/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { SubprocessBackend, createSubprocessBackend, claudeCodeConfig, } from './subprocess.js';
|
|
2
|
+
export { MockBackend, createMockBackend, } from './mock.js';
|
|
3
|
+
export { ACPBackend, createACPBackend, claudeCodeACPConfig, claudeCodeDirectConfig, registerCommonAgents, } from './acp.js';
|
|
4
|
+
// Re-export useful types from acp-factory
|
|
5
|
+
export { AgentFactory } from 'acp-factory';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/backends/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,iBAAiB,GAElB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GAErB,MAAM,UAAU,CAAC;AAElB,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { AgentBackend, AgentSpawnConfig, AgentSession } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Mock agent behavior definition
|
|
4
|
+
*/
|
|
5
|
+
export interface MockAgentBehavior {
|
|
6
|
+
/** Simulated tool calls */
|
|
7
|
+
toolCalls?: Array<{
|
|
8
|
+
name: string;
|
|
9
|
+
input: unknown;
|
|
10
|
+
output: unknown;
|
|
11
|
+
delayMs?: number;
|
|
12
|
+
}>;
|
|
13
|
+
/** Messages to emit */
|
|
14
|
+
messages?: Array<{
|
|
15
|
+
role: 'assistant' | 'user';
|
|
16
|
+
content: string;
|
|
17
|
+
delayMs?: number;
|
|
18
|
+
}>;
|
|
19
|
+
/** Final result */
|
|
20
|
+
result?: unknown;
|
|
21
|
+
/** Should the agent succeed? */
|
|
22
|
+
success?: boolean;
|
|
23
|
+
/** Error message if failing */
|
|
24
|
+
error?: string;
|
|
25
|
+
/** Total duration in ms */
|
|
26
|
+
durationMs?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Mock backend for testing
|
|
30
|
+
*/
|
|
31
|
+
export declare class MockBackend implements AgentBackend {
|
|
32
|
+
readonly name = "mock";
|
|
33
|
+
readonly supportedTypes: string[];
|
|
34
|
+
private sessions;
|
|
35
|
+
private behaviors;
|
|
36
|
+
private defaultBehavior;
|
|
37
|
+
constructor(defaultBehavior?: MockAgentBehavior);
|
|
38
|
+
/**
|
|
39
|
+
* Set behavior for a specific task description
|
|
40
|
+
*/
|
|
41
|
+
setBehavior(taskDescription: string, behavior: MockAgentBehavior): void;
|
|
42
|
+
/**
|
|
43
|
+
* Set default behavior for all tasks
|
|
44
|
+
*/
|
|
45
|
+
setDefaultBehavior(behavior: MockAgentBehavior): void;
|
|
46
|
+
isAvailable(): Promise<boolean>;
|
|
47
|
+
spawn(config: AgentSpawnConfig): Promise<AgentSession>;
|
|
48
|
+
private simulateExecution;
|
|
49
|
+
private delay;
|
|
50
|
+
getSession(sessionId: string): Promise<AgentSession | undefined>;
|
|
51
|
+
sendMessage(sessionId: string, _message: string): Promise<void>;
|
|
52
|
+
terminate(sessionId: string): Promise<void>;
|
|
53
|
+
listSessions(): Promise<AgentSession[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Get all sessions (for testing assertions)
|
|
56
|
+
*/
|
|
57
|
+
getAllSessions(): AgentSession[];
|
|
58
|
+
/**
|
|
59
|
+
* Clear all sessions
|
|
60
|
+
*/
|
|
61
|
+
clear(): void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create a mock backend
|
|
65
|
+
*/
|
|
66
|
+
export declare function createMockBackend(defaultBehavior?: MockAgentBehavior): MockBackend;
|
|
67
|
+
//# sourceMappingURL=mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/runtime/backends/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EAGb,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,uBAAuB;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,mBAAmB;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,cAAc,WAAoB;IAE3C,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,eAAe,CAAoB;gBAE/B,eAAe,CAAC,EAAE,iBAAiB;IAQ/C;;OAEG;IACH,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIvE;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI/C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;YA+B9C,iBAAiB;IA8D/B,OAAO,CAAC,KAAK;IAIP,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAIhE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3C,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAI7C;;OAEG;IACH,cAAc,IAAI,YAAY,EAAE;IAIhC;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,CAAC,EAAE,iBAAiB,GAClC,WAAW,CAEb"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock backend for testing
|
|
3
|
+
*/
|
|
4
|
+
export class MockBackend {
|
|
5
|
+
name = 'mock';
|
|
6
|
+
supportedTypes = ['mock', 'test'];
|
|
7
|
+
sessions = new Map();
|
|
8
|
+
behaviors = new Map();
|
|
9
|
+
defaultBehavior;
|
|
10
|
+
constructor(defaultBehavior) {
|
|
11
|
+
this.defaultBehavior = defaultBehavior ?? {
|
|
12
|
+
success: true,
|
|
13
|
+
result: 'Mock result',
|
|
14
|
+
durationMs: 100,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Set behavior for a specific task description
|
|
19
|
+
*/
|
|
20
|
+
setBehavior(taskDescription, behavior) {
|
|
21
|
+
this.behaviors.set(taskDescription, behavior);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Set default behavior for all tasks
|
|
25
|
+
*/
|
|
26
|
+
setDefaultBehavior(behavior) {
|
|
27
|
+
this.defaultBehavior = behavior;
|
|
28
|
+
}
|
|
29
|
+
async isAvailable() {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
async spawn(config) {
|
|
33
|
+
const sessionId = crypto.randomUUID();
|
|
34
|
+
const behavior = this.behaviors.get(config.task.description) ?? this.defaultBehavior;
|
|
35
|
+
const session = {
|
|
36
|
+
id: sessionId,
|
|
37
|
+
agentType: config.agentType,
|
|
38
|
+
task: config.task,
|
|
39
|
+
state: 'running',
|
|
40
|
+
messages: [],
|
|
41
|
+
toolCalls: [],
|
|
42
|
+
startTime: new Date(),
|
|
43
|
+
metadata: {
|
|
44
|
+
injectedKnowledge: !!config.injectedKnowledge,
|
|
45
|
+
hasSystemPromptAdditions: !!config.systemPromptAdditions,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
this.sessions.set(sessionId, session);
|
|
49
|
+
// Simulate execution asynchronously
|
|
50
|
+
this.simulateExecution(session, behavior, config).catch((error) => {
|
|
51
|
+
session.state = 'failed';
|
|
52
|
+
session.error = error.message;
|
|
53
|
+
session.endTime = new Date();
|
|
54
|
+
});
|
|
55
|
+
return session;
|
|
56
|
+
}
|
|
57
|
+
async simulateExecution(session, behavior, config) {
|
|
58
|
+
const startTime = Date.now();
|
|
59
|
+
// Emit messages
|
|
60
|
+
if (behavior.messages) {
|
|
61
|
+
for (const msg of behavior.messages) {
|
|
62
|
+
if (msg.delayMs) {
|
|
63
|
+
await this.delay(msg.delayMs);
|
|
64
|
+
}
|
|
65
|
+
const message = {
|
|
66
|
+
role: msg.role,
|
|
67
|
+
content: msg.content,
|
|
68
|
+
timestamp: new Date(),
|
|
69
|
+
};
|
|
70
|
+
session.messages.push(message);
|
|
71
|
+
config.onMessage?.(message);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Emit tool calls
|
|
75
|
+
if (behavior.toolCalls) {
|
|
76
|
+
for (const tc of behavior.toolCalls) {
|
|
77
|
+
if (tc.delayMs) {
|
|
78
|
+
await this.delay(tc.delayMs);
|
|
79
|
+
}
|
|
80
|
+
const toolCall = {
|
|
81
|
+
id: crypto.randomUUID(),
|
|
82
|
+
name: tc.name,
|
|
83
|
+
input: tc.input,
|
|
84
|
+
output: tc.output,
|
|
85
|
+
startTime: new Date(),
|
|
86
|
+
endTime: new Date(),
|
|
87
|
+
};
|
|
88
|
+
session.toolCalls.push(toolCall);
|
|
89
|
+
config.onToolCall?.(toolCall);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Wait for remaining duration
|
|
93
|
+
const elapsed = Date.now() - startTime;
|
|
94
|
+
const remaining = (behavior.durationMs ?? 100) - elapsed;
|
|
95
|
+
if (remaining > 0) {
|
|
96
|
+
await this.delay(remaining);
|
|
97
|
+
}
|
|
98
|
+
// Complete
|
|
99
|
+
session.endTime = new Date();
|
|
100
|
+
if (behavior.success ?? true) {
|
|
101
|
+
session.state = 'completed';
|
|
102
|
+
session.result = behavior.result;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
session.state = 'failed';
|
|
106
|
+
session.error = behavior.error ?? 'Mock failure';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
delay(ms) {
|
|
110
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
111
|
+
}
|
|
112
|
+
async getSession(sessionId) {
|
|
113
|
+
return this.sessions.get(sessionId);
|
|
114
|
+
}
|
|
115
|
+
async sendMessage(sessionId, _message) {
|
|
116
|
+
const session = this.sessions.get(sessionId);
|
|
117
|
+
if (!session) {
|
|
118
|
+
throw new Error('Session not found');
|
|
119
|
+
}
|
|
120
|
+
// Mock doesn't process additional messages
|
|
121
|
+
}
|
|
122
|
+
async terminate(sessionId) {
|
|
123
|
+
const session = this.sessions.get(sessionId);
|
|
124
|
+
if (!session)
|
|
125
|
+
return;
|
|
126
|
+
session.state = 'failed';
|
|
127
|
+
session.error = 'Terminated';
|
|
128
|
+
session.endTime = new Date();
|
|
129
|
+
}
|
|
130
|
+
async listSessions() {
|
|
131
|
+
return Array.from(this.sessions.values());
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get all sessions (for testing assertions)
|
|
135
|
+
*/
|
|
136
|
+
getAllSessions() {
|
|
137
|
+
return Array.from(this.sessions.values());
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Clear all sessions
|
|
141
|
+
*/
|
|
142
|
+
clear() {
|
|
143
|
+
this.sessions.clear();
|
|
144
|
+
this.behaviors.clear();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Create a mock backend
|
|
149
|
+
*/
|
|
150
|
+
export function createMockBackend(defaultBehavior) {
|
|
151
|
+
return new MockBackend(defaultBehavior);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../../src/runtime/backends/mock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { AgentBackend, AgentSpawnConfig, AgentSession, AgentMessage, ToolCall } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for subprocess-based agents
|
|
4
|
+
*/
|
|
5
|
+
export interface SubprocessAgentConfig {
|
|
6
|
+
/** Command to run the agent */
|
|
7
|
+
command: string;
|
|
8
|
+
/** Arguments for the command */
|
|
9
|
+
args?: string[];
|
|
10
|
+
/** How to pass the task to the agent */
|
|
11
|
+
taskPassingMode: 'stdin' | 'arg' | 'env' | 'file';
|
|
12
|
+
/** Environment variable name for task (if taskPassingMode is 'env') */
|
|
13
|
+
taskEnvVar?: string;
|
|
14
|
+
/** How to pass knowledge injection */
|
|
15
|
+
knowledgePassingMode: 'stdin' | 'env' | 'file' | 'system-prompt';
|
|
16
|
+
/** Environment variable name for knowledge (if knowledgePassingMode is 'env') */
|
|
17
|
+
knowledgeEnvVar?: string;
|
|
18
|
+
/** Parser for agent output to extract tool calls */
|
|
19
|
+
outputParser?: (output: string) => {
|
|
20
|
+
messages: AgentMessage[];
|
|
21
|
+
toolCalls: ToolCall[];
|
|
22
|
+
result?: unknown;
|
|
23
|
+
isComplete: boolean;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Subprocess-based agent backend
|
|
28
|
+
* Spawns agents as child processes (e.g., Claude Code CLI, custom scripts)
|
|
29
|
+
*/
|
|
30
|
+
export declare class SubprocessBackend implements AgentBackend {
|
|
31
|
+
readonly name = "subprocess";
|
|
32
|
+
readonly supportedTypes: string[];
|
|
33
|
+
private configs;
|
|
34
|
+
private sessions;
|
|
35
|
+
constructor(configs: Record<string, SubprocessAgentConfig>);
|
|
36
|
+
isAvailable(): Promise<boolean>;
|
|
37
|
+
spawn(config: AgentSpawnConfig): Promise<AgentSession>;
|
|
38
|
+
getSession(sessionId: string): Promise<AgentSession | undefined>;
|
|
39
|
+
sendMessage(sessionId: string, message: string): Promise<void>;
|
|
40
|
+
terminate(sessionId: string): Promise<void>;
|
|
41
|
+
listSessions(): Promise<AgentSession[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Default parser for agent output
|
|
44
|
+
* Override with custom parser for specific agent formats
|
|
45
|
+
*/
|
|
46
|
+
private defaultParser;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a subprocess backend with common agent configurations
|
|
50
|
+
*/
|
|
51
|
+
export declare function createSubprocessBackend(configs: Record<string, SubprocessAgentConfig>): SubprocessBackend;
|
|
52
|
+
/**
|
|
53
|
+
* Pre-configured Claude Code agent
|
|
54
|
+
*/
|
|
55
|
+
export declare const claudeCodeConfig: SubprocessAgentConfig;
|
|
56
|
+
//# sourceMappingURL=subprocess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subprocess.d.ts","sourceRoot":"","sources":["../../../src/runtime/backends/subprocess.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,QAAQ,EACT,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,wCAAwC;IACxC,eAAe,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAClD,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,oBAAoB,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,eAAe,CAAC;IACjE,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK;QACjC,QAAQ,EAAE,YAAY,EAAE,CAAC;QACzB,SAAS,EAAE,QAAQ,EAAE,CAAC;QACtB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AAYD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAElC,OAAO,CAAC,OAAO,CAAiD;IAChE,OAAO,CAAC,QAAQ,CAA6C;gBAEjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAOpD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAM/B,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IA4JtD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAIhE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9D,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAI7C;;;OAGG;IACH,OAAO,CAAC,aAAa;CA+BtB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAC7C,iBAAiB,CAEnB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,qBAsD9B,CAAC"}
|