cognitive-core 0.0.1 → 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.
Files changed (329) hide show
  1. package/README.md +363 -2
  2. package/SKILL.md +193 -0
  3. package/dist/agents/index.d.ts +3 -0
  4. package/dist/agents/index.d.ts.map +1 -0
  5. package/dist/agents/index.js +5 -0
  6. package/dist/agents/index.js.map +1 -0
  7. package/dist/agents/mock-provider.d.ts +23 -0
  8. package/dist/agents/mock-provider.d.ts.map +1 -0
  9. package/dist/agents/mock-provider.js +71 -0
  10. package/dist/agents/mock-provider.js.map +1 -0
  11. package/dist/agents/types.d.ts +98 -0
  12. package/dist/agents/types.d.ts.map +1 -0
  13. package/dist/agents/types.js +44 -0
  14. package/dist/agents/types.js.map +1 -0
  15. package/dist/atlas.d.ts +196 -0
  16. package/dist/atlas.d.ts.map +1 -0
  17. package/dist/atlas.js +373 -0
  18. package/dist/atlas.js.map +1 -0
  19. package/dist/bin/cognitive-core.d.ts +18 -0
  20. package/dist/bin/cognitive-core.d.ts.map +1 -0
  21. package/dist/bin/cognitive-core.js +419 -0
  22. package/dist/bin/cognitive-core.js.map +1 -0
  23. package/dist/embeddings/bm25.d.ts +104 -0
  24. package/dist/embeddings/bm25.d.ts.map +1 -0
  25. package/dist/embeddings/bm25.js +264 -0
  26. package/dist/embeddings/bm25.js.map +1 -0
  27. package/dist/embeddings/index.d.ts +12 -0
  28. package/dist/embeddings/index.d.ts.map +1 -0
  29. package/dist/embeddings/index.js +16 -0
  30. package/dist/embeddings/index.js.map +1 -0
  31. package/dist/embeddings/manager.d.ts +112 -0
  32. package/dist/embeddings/manager.d.ts.map +1 -0
  33. package/dist/embeddings/manager.js +215 -0
  34. package/dist/embeddings/manager.js.map +1 -0
  35. package/dist/embeddings/provider.d.ts +101 -0
  36. package/dist/embeddings/provider.d.ts.map +1 -0
  37. package/dist/embeddings/provider.js +232 -0
  38. package/dist/embeddings/provider.js.map +1 -0
  39. package/dist/embeddings/vector-store.d.ts +101 -0
  40. package/dist/embeddings/vector-store.d.ts.map +1 -0
  41. package/dist/embeddings/vector-store.js +256 -0
  42. package/dist/embeddings/vector-store.js.map +1 -0
  43. package/dist/factory.d.ts +193 -0
  44. package/dist/factory.d.ts.map +1 -0
  45. package/dist/factory.js +109 -0
  46. package/dist/factory.js.map +1 -0
  47. package/dist/index.d.ts +43 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +84 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/learning/analyzer.d.ts +110 -0
  52. package/dist/learning/analyzer.d.ts.map +1 -0
  53. package/dist/learning/analyzer.js +213 -0
  54. package/dist/learning/analyzer.js.map +1 -0
  55. package/dist/learning/effectiveness.d.ts +158 -0
  56. package/dist/learning/effectiveness.d.ts.map +1 -0
  57. package/dist/learning/effectiveness.js +251 -0
  58. package/dist/learning/effectiveness.js.map +1 -0
  59. package/dist/learning/index.d.ts +8 -0
  60. package/dist/learning/index.d.ts.map +1 -0
  61. package/dist/learning/index.js +11 -0
  62. package/dist/learning/index.js.map +1 -0
  63. package/dist/learning/llm-extractor.d.ts +88 -0
  64. package/dist/learning/llm-extractor.d.ts.map +1 -0
  65. package/dist/learning/llm-extractor.js +372 -0
  66. package/dist/learning/llm-extractor.js.map +1 -0
  67. package/dist/learning/meta-learner.d.ts +80 -0
  68. package/dist/learning/meta-learner.d.ts.map +1 -0
  69. package/dist/learning/meta-learner.js +355 -0
  70. package/dist/learning/meta-learner.js.map +1 -0
  71. package/dist/learning/pipeline.d.ts +65 -0
  72. package/dist/learning/pipeline.d.ts.map +1 -0
  73. package/dist/learning/pipeline.js +170 -0
  74. package/dist/learning/pipeline.js.map +1 -0
  75. package/dist/learning/playbook-extractor.d.ts +113 -0
  76. package/dist/learning/playbook-extractor.d.ts.map +1 -0
  77. package/dist/learning/playbook-extractor.js +523 -0
  78. package/dist/learning/playbook-extractor.js.map +1 -0
  79. package/dist/learning/usage-inference.d.ts +82 -0
  80. package/dist/learning/usage-inference.d.ts.map +1 -0
  81. package/dist/learning/usage-inference.js +261 -0
  82. package/dist/learning/usage-inference.js.map +1 -0
  83. package/dist/mcp/index.d.ts +6 -0
  84. package/dist/mcp/index.d.ts.map +1 -0
  85. package/dist/mcp/index.js +6 -0
  86. package/dist/mcp/index.js.map +1 -0
  87. package/dist/mcp/playbook-server.d.ts +120 -0
  88. package/dist/mcp/playbook-server.d.ts.map +1 -0
  89. package/dist/mcp/playbook-server.js +427 -0
  90. package/dist/mcp/playbook-server.js.map +1 -0
  91. package/dist/memory/curated-loader.d.ts +62 -0
  92. package/dist/memory/curated-loader.d.ts.map +1 -0
  93. package/dist/memory/curated-loader.js +106 -0
  94. package/dist/memory/curated-loader.js.map +1 -0
  95. package/dist/memory/experience.d.ts +122 -0
  96. package/dist/memory/experience.d.ts.map +1 -0
  97. package/dist/memory/experience.js +392 -0
  98. package/dist/memory/experience.js.map +1 -0
  99. package/dist/memory/index.d.ts +6 -0
  100. package/dist/memory/index.d.ts.map +1 -0
  101. package/dist/memory/index.js +9 -0
  102. package/dist/memory/index.js.map +1 -0
  103. package/dist/memory/meta.d.ts +90 -0
  104. package/dist/memory/meta.d.ts.map +1 -0
  105. package/dist/memory/meta.js +362 -0
  106. package/dist/memory/meta.js.map +1 -0
  107. package/dist/memory/playbook.d.ts +133 -0
  108. package/dist/memory/playbook.d.ts.map +1 -0
  109. package/dist/memory/playbook.js +357 -0
  110. package/dist/memory/playbook.js.map +1 -0
  111. package/dist/memory/system.d.ts +167 -0
  112. package/dist/memory/system.d.ts.map +1 -0
  113. package/dist/memory/system.js +383 -0
  114. package/dist/memory/system.js.map +1 -0
  115. package/dist/runtime/backends/acp.d.ts +67 -0
  116. package/dist/runtime/backends/acp.d.ts.map +1 -0
  117. package/dist/runtime/backends/acp.js +290 -0
  118. package/dist/runtime/backends/acp.js.map +1 -0
  119. package/dist/runtime/backends/index.d.ts +5 -0
  120. package/dist/runtime/backends/index.d.ts.map +1 -0
  121. package/dist/runtime/backends/index.js +6 -0
  122. package/dist/runtime/backends/index.js.map +1 -0
  123. package/dist/runtime/backends/mock.d.ts +67 -0
  124. package/dist/runtime/backends/mock.d.ts.map +1 -0
  125. package/dist/runtime/backends/mock.js +153 -0
  126. package/dist/runtime/backends/mock.js.map +1 -0
  127. package/dist/runtime/backends/subprocess.d.ts +56 -0
  128. package/dist/runtime/backends/subprocess.d.ts.map +1 -0
  129. package/dist/runtime/backends/subprocess.js +260 -0
  130. package/dist/runtime/backends/subprocess.js.map +1 -0
  131. package/dist/runtime/flows/learning.d.ts +73 -0
  132. package/dist/runtime/flows/learning.d.ts.map +1 -0
  133. package/dist/runtime/flows/learning.js +116 -0
  134. package/dist/runtime/flows/learning.js.map +1 -0
  135. package/dist/runtime/flows/validation.d.ts +122 -0
  136. package/dist/runtime/flows/validation.d.ts.map +1 -0
  137. package/dist/runtime/flows/validation.js +223 -0
  138. package/dist/runtime/flows/validation.js.map +1 -0
  139. package/dist/runtime/index.d.ts +6 -0
  140. package/dist/runtime/index.d.ts.map +1 -0
  141. package/dist/runtime/index.js +8 -0
  142. package/dist/runtime/index.js.map +1 -0
  143. package/dist/runtime/manager.d.ts +116 -0
  144. package/dist/runtime/manager.d.ts.map +1 -0
  145. package/dist/runtime/manager.js +416 -0
  146. package/dist/runtime/manager.js.map +1 -0
  147. package/dist/runtime/types.d.ts +138 -0
  148. package/dist/runtime/types.d.ts.map +1 -0
  149. package/dist/runtime/types.js +2 -0
  150. package/dist/runtime/types.js.map +1 -0
  151. package/dist/search/evaluator.d.ts +102 -0
  152. package/dist/search/evaluator.d.ts.map +1 -0
  153. package/dist/search/evaluator.js +352 -0
  154. package/dist/search/evaluator.js.map +1 -0
  155. package/dist/search/index.d.ts +7 -0
  156. package/dist/search/index.d.ts.map +1 -0
  157. package/dist/search/index.js +11 -0
  158. package/dist/search/index.js.map +1 -0
  159. package/dist/search/refinement-loop.d.ts +73 -0
  160. package/dist/search/refinement-loop.d.ts.map +1 -0
  161. package/dist/search/refinement-loop.js +245 -0
  162. package/dist/search/refinement-loop.js.map +1 -0
  163. package/dist/search/refinement-types.d.ts +154 -0
  164. package/dist/search/refinement-types.d.ts.map +1 -0
  165. package/dist/search/refinement-types.js +99 -0
  166. package/dist/search/refinement-types.js.map +1 -0
  167. package/dist/search/router.d.ts +61 -0
  168. package/dist/search/router.d.ts.map +1 -0
  169. package/dist/search/router.js +197 -0
  170. package/dist/search/router.js.map +1 -0
  171. package/dist/search/solver.d.ts +75 -0
  172. package/dist/search/solver.d.ts.map +1 -0
  173. package/dist/search/solver.js +216 -0
  174. package/dist/search/solver.js.map +1 -0
  175. package/dist/search/verification-runner.d.ts +125 -0
  176. package/dist/search/verification-runner.d.ts.map +1 -0
  177. package/dist/search/verification-runner.js +440 -0
  178. package/dist/search/verification-runner.js.map +1 -0
  179. package/dist/surfacing/index.d.ts +2 -0
  180. package/dist/surfacing/index.d.ts.map +1 -0
  181. package/dist/surfacing/index.js +2 -0
  182. package/dist/surfacing/index.js.map +1 -0
  183. package/dist/surfacing/skill-library.d.ts +158 -0
  184. package/dist/surfacing/skill-library.d.ts.map +1 -0
  185. package/dist/surfacing/skill-library.js +429 -0
  186. package/dist/surfacing/skill-library.js.map +1 -0
  187. package/dist/types/config.d.ts +1113 -0
  188. package/dist/types/config.d.ts.map +1 -0
  189. package/dist/types/config.js +274 -0
  190. package/dist/types/config.js.map +1 -0
  191. package/dist/types/index.d.ts +9 -0
  192. package/dist/types/index.d.ts.map +1 -0
  193. package/dist/types/index.js +14 -0
  194. package/dist/types/index.js.map +1 -0
  195. package/dist/types/memory.d.ts +339 -0
  196. package/dist/types/memory.d.ts.map +1 -0
  197. package/dist/types/memory.js +207 -0
  198. package/dist/types/memory.js.map +1 -0
  199. package/dist/types/meta.d.ts +146 -0
  200. package/dist/types/meta.d.ts.map +1 -0
  201. package/dist/types/meta.js +51 -0
  202. package/dist/types/meta.js.map +1 -0
  203. package/dist/types/outcome.d.ts +42 -0
  204. package/dist/types/outcome.d.ts.map +1 -0
  205. package/dist/types/outcome.js +50 -0
  206. package/dist/types/outcome.js.map +1 -0
  207. package/dist/types/playbook.d.ts +119 -0
  208. package/dist/types/playbook.d.ts.map +1 -0
  209. package/dist/types/playbook.js +71 -0
  210. package/dist/types/playbook.js.map +1 -0
  211. package/dist/types/step.d.ts +44 -0
  212. package/dist/types/step.d.ts.map +1 -0
  213. package/dist/types/step.js +32 -0
  214. package/dist/types/step.js.map +1 -0
  215. package/dist/types/task.d.ts +91 -0
  216. package/dist/types/task.d.ts.map +1 -0
  217. package/dist/types/task.js +39 -0
  218. package/dist/types/task.js.map +1 -0
  219. package/dist/types/trajectory.d.ts +221 -0
  220. package/dist/types/trajectory.d.ts.map +1 -0
  221. package/dist/types/trajectory.js +60 -0
  222. package/dist/types/trajectory.js.map +1 -0
  223. package/dist/utils/index.d.ts +4 -0
  224. package/dist/utils/index.d.ts.map +1 -0
  225. package/dist/utils/index.js +4 -0
  226. package/dist/utils/index.js.map +1 -0
  227. package/dist/utils/similarity.d.ts +31 -0
  228. package/dist/utils/similarity.d.ts.map +1 -0
  229. package/dist/utils/similarity.js +107 -0
  230. package/dist/utils/similarity.js.map +1 -0
  231. package/dist/utils/storage.d.ts +106 -0
  232. package/dist/utils/storage.d.ts.map +1 -0
  233. package/dist/utils/storage.js +203 -0
  234. package/dist/utils/storage.js.map +1 -0
  235. package/dist/utils/validation.d.ts +129 -0
  236. package/dist/utils/validation.d.ts.map +1 -0
  237. package/dist/utils/validation.js +171 -0
  238. package/dist/utils/validation.js.map +1 -0
  239. package/package.json +61 -9
  240. package/scripts/migrate-to-playbooks.ts +307 -0
  241. package/src/agents/index.ts +14 -0
  242. package/src/agents/mock-provider.ts +93 -0
  243. package/src/agents/types.ts +137 -0
  244. package/src/atlas.ts +560 -0
  245. package/src/bin/cognitive-core.ts +470 -0
  246. package/src/embeddings/bm25.ts +337 -0
  247. package/src/embeddings/index.ts +39 -0
  248. package/src/embeddings/manager.ts +288 -0
  249. package/src/embeddings/provider.ts +311 -0
  250. package/src/embeddings/vector-store.ts +353 -0
  251. package/src/factory.ts +263 -0
  252. package/src/index.ts +246 -0
  253. package/src/learning/analyzer.ts +335 -0
  254. package/src/learning/effectiveness.ts +428 -0
  255. package/src/learning/index.ts +58 -0
  256. package/src/learning/llm-extractor.ts +542 -0
  257. package/src/learning/meta-learner.ts +516 -0
  258. package/src/learning/pipeline.ts +244 -0
  259. package/src/learning/playbook-extractor.ts +702 -0
  260. package/src/learning/usage-inference.ts +372 -0
  261. package/src/mcp/index.ts +12 -0
  262. package/src/mcp/playbook-server.ts +565 -0
  263. package/src/memory/curated-loader.ts +160 -0
  264. package/src/memory/experience.ts +515 -0
  265. package/src/memory/index.ts +27 -0
  266. package/src/memory/meta.ts +506 -0
  267. package/src/memory/playbook.ts +493 -0
  268. package/src/memory/system.ts +551 -0
  269. package/src/runtime/backends/acp.ts +378 -0
  270. package/src/runtime/backends/index.ts +24 -0
  271. package/src/runtime/backends/mock.ts +218 -0
  272. package/src/runtime/backends/subprocess.ts +356 -0
  273. package/src/runtime/flows/learning.ts +183 -0
  274. package/src/runtime/flows/validation.ts +381 -0
  275. package/src/runtime/index.ts +53 -0
  276. package/src/runtime/manager.ts +541 -0
  277. package/src/runtime/types.ts +157 -0
  278. package/src/search/evaluator.ts +474 -0
  279. package/src/search/index.ts +59 -0
  280. package/src/search/refinement-loop.ts +363 -0
  281. package/src/search/refinement-types.ts +159 -0
  282. package/src/search/router.ts +261 -0
  283. package/src/search/solver.ts +303 -0
  284. package/src/search/verification-runner.ts +570 -0
  285. package/src/surfacing/index.ts +6 -0
  286. package/src/surfacing/skill-library.ts +594 -0
  287. package/src/types/config.ts +333 -0
  288. package/src/types/index.ts +130 -0
  289. package/src/types/memory.ts +270 -0
  290. package/src/types/meta.ts +218 -0
  291. package/src/types/outcome.ts +66 -0
  292. package/src/types/playbook.ts +196 -0
  293. package/src/types/step.ts +40 -0
  294. package/src/types/task.ts +52 -0
  295. package/src/types/trajectory.ts +80 -0
  296. package/src/utils/index.ts +38 -0
  297. package/src/utils/similarity.ts +139 -0
  298. package/src/utils/storage.ts +249 -0
  299. package/src/utils/validation.ts +286 -0
  300. package/tests/embeddings/bm25.test.ts +130 -0
  301. package/tests/embeddings/manager.test.ts +205 -0
  302. package/tests/integration/atlas.test.ts +266 -0
  303. package/tests/integration/e2e.test.ts +929 -0
  304. package/tests/learning/analyzer.test.ts +426 -0
  305. package/tests/learning/effectiveness.test.ts +542 -0
  306. package/tests/learning/pipeline.test.ts +176 -0
  307. package/tests/learning/playbook-extractor-provenance.test.ts +114 -0
  308. package/tests/learning/usage-inference.test.ts +254 -0
  309. package/tests/mcp/playbook-server.test.ts +252 -0
  310. package/tests/memory/experience.test.ts +198 -0
  311. package/tests/memory/playbook.test.ts +338 -0
  312. package/tests/memory/provenance.test.ts +639 -0
  313. package/tests/memory/system.test.ts +325 -0
  314. package/tests/runtime/agent-manager.test.ts +512 -0
  315. package/tests/runtime/mock-backend.test.ts +248 -0
  316. package/tests/search/refinement-loop.test.ts +468 -0
  317. package/tests/search/refinement.test.ts +267 -0
  318. package/tests/search/router.test.ts +427 -0
  319. package/tests/surfacing/skill-library.test.ts +292 -0
  320. package/tests/types/outcome.test.ts +147 -0
  321. package/tests/types/step.test.ts +133 -0
  322. package/tests/types/task.test.ts +158 -0
  323. package/tests/types/trajectory.test.ts +253 -0
  324. package/tests/utils/similarity.test.ts +188 -0
  325. package/tests/utils/validation.test.ts +252 -0
  326. package/tsconfig.json +25 -0
  327. package/vitest.config.ts +22 -0
  328. package/index.d.ts +0 -4
  329. package/index.js +0 -4
@@ -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":"AAAA;;;;;GAKG;AACH,OAAO,EACL,YAAY,GAMb,MAAM,aAAa,CAAC;AA0BrB;;;GAGG;AACH,MAAM,OAAO,UAAU;IACZ,IAAI,GAAG,KAAK,CAAC;IACb,cAAc,CAAW;IAE1B,QAAQ,GAAiC,IAAI,GAAG,EAAE,CAAC;IACnD,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAEtD,YAAY,OAAuC;QACjD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3C,+CAA+C;QAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAwB;QAClC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAE3C,gCAAgC;QAChC,MAAM,YAAY,GAAiB;YACjC,EAAE,EAAE,cAAc;YAClB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ,EAAE;gBACR,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB;aAC9C;SACF,CAAC;QAEF,IAAI,CAAC;YACH,kBAAkB;YAClB,MAAM,YAAY,GAAiB;gBACjC,cAAc,EAAE,cAAc,EAAE,sCAAsC;gBACtE,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;YAEF,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAC7E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAE9C,qBAAqB;YACrB,YAAY,CAAC,QAAQ,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;YAE9D,kCAAkC;YAClC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAExD,sBAAsB;YACtB,MAAM,KAAK,GAAoB;gBAC7B,YAAY;gBACZ,WAAW;gBACX,UAAU;aACX,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAEzC,gDAAgD;YAChD,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAC5C,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBACjC,aAAa,GAAG,mCAAmC,MAAM,CAAC,qBAAqB,cAAc,aAAa,EAAE,CAAC;YAC/G,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,aAAa,IAAI,0CAA0C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC;YACpH,CAAC;YAED,kCAAkC;YAClC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;YAEnD,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC9B,YAAY,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,YAAY,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CACX,wBAAwB,cAAc,gBAAgB,EACtD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;YACF,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CACrB,KAAsB,EACtB,aAAqB,EACrB,MAAwB;QAExB,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAE3C,IAAI,CAAC;YACH,gCAAgC;YAChC,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC;YAED,oBAAoB;YACpB,YAAY,CAAC,KAAK,GAAG,WAAW,CAAC;YACjC,YAAY,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC9B,YAAY,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,YAAY,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CACX,wBAAwB,YAAY,CAAC,EAAE,2BAA2B,EAClE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,aAAa,CACnB,OAAqB,EACrB,MAA6B,EAC7B,MAAwB;QAExB,8EAA8E;QAC9E,MAAM,CAAC,GAAG,MAAiC,CAAC;QAC5C,MAAM,UAAU,GAAG,CAAC,CAAC,aAAuB,CAAC;QAE7C,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,qBAAqB,CAAC;YAC3B,KAAK,oBAAoB,CAAC;YAC1B,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,2DAA2D;gBAC3D,MAAM,OAAO,GAAG,CAAC,CAAC,OAA8C,CAAC;gBACjE,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3E,MAAM,OAAO,GAAiB;wBAC5B,IAAI,EAAE,UAAU,KAAK,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;wBAChE,OAAO,EAAE,OAAO,CAAC,IAAI;wBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;qBACtB,CAAC;oBACF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,kEAAkE;gBAClE,MAAM,UAAU,GAAI,CAAC,CAAC,UAAqB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACnE,MAAM,KAAK,GAAI,CAAC,CAAC,KAAgB,IAAI,SAAS,CAAC;gBAC/C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAE5B,MAAM,QAAQ,GAAa;oBACzB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,QAAQ;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC;gBACF,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAC9B,MAAM;YACR,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,uDAAuD;gBACvD,MAAM,UAAU,GAAG,CAAC,CAAC,UAAoB,CAAC;gBAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAC;gBAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAqD,CAAC;gBAExE,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;gBACtE,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAClD,UAAU,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;oBAClC,CAAC;oBACD,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;wBACtC,mCAAmC;wBACnC,MAAM,OAAO,GAAa,EAAE,CAAC;wBAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;4BAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gCAC5D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC3B,CAAC;iCAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gCACnE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC3B,CAAC;wBACH,CAAC;wBACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACvB,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;oBACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;wBACxB,UAAU,CAAC,KAAK,GAAG,kBAAkB,CAAC;oBACxC,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,0DAA0D;gBAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACpB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBAC1D,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,wBAAwB;gBACxB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;gBACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACpB,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBACzC,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED;gBACE,kCAAkC;gBAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,OAAe;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,yBAAyB;QACzB,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE;gBAC7C,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,SAAS;gBACvC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0CAA0C;YAC1C,OAAO,CAAC,KAAK,CACX,wBAAwB,SAAS,gBAAgB,EACjD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mCAAmC;YACnC,OAAO,CAAC,KAAK,CACX,wBAAwB,SAAS,eAAe,EAChD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC;QACpC,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC;QACxC,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAExC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,SAAiB;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;IACnD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAuC;IAEvC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,CAAC,iBAAiB,CAAC;IACzB,WAAW,EAAE,mBAAmB;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAmB;IACpD,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,CAAC,SAAS,CAAC;IACjB,WAAW,EAAE,iBAAiB;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAC1D,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;AAChE,CAAC"}
@@ -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"}