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.
Files changed (329) hide show
  1. package/README.md +302 -116
  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 +30 -453
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +84 -509
  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 +50 -34
  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/dist/index.d.mts +0 -466
  329. package/dist/index.mjs +0 -478
@@ -0,0 +1,260 @@
1
+ import { spawn } from 'child_process';
2
+ import { EventEmitter } from 'events';
3
+ /**
4
+ * Subprocess-based agent backend
5
+ * Spawns agents as child processes (e.g., Claude Code CLI, custom scripts)
6
+ */
7
+ export class SubprocessBackend {
8
+ name = 'subprocess';
9
+ supportedTypes;
10
+ configs = new Map();
11
+ sessions = new Map();
12
+ constructor(configs) {
13
+ this.supportedTypes = Object.keys(configs);
14
+ for (const [type, config] of Object.entries(configs)) {
15
+ this.configs.set(type, config);
16
+ }
17
+ }
18
+ async isAvailable() {
19
+ // Check if at least one configured command exists
20
+ // For now, just return true
21
+ return true;
22
+ }
23
+ async spawn(config) {
24
+ const agentConfig = this.configs.get(config.agentType);
25
+ if (!agentConfig) {
26
+ const error = new Error(`Unknown agent type: ${config.agentType}`);
27
+ console.error('[SubprocessBackend] Spawn failed:', error.message);
28
+ throw error;
29
+ }
30
+ const sessionId = crypto.randomUUID();
31
+ const session = {
32
+ id: sessionId,
33
+ agentType: config.agentType,
34
+ task: config.task,
35
+ state: 'running',
36
+ messages: [],
37
+ toolCalls: [],
38
+ startTime: new Date(),
39
+ metadata: {},
40
+ };
41
+ // Build environment (filter out undefined values from process.env)
42
+ const env = Object.fromEntries(Object.entries({ ...process.env, ...config.env }).filter((entry) => entry[1] !== undefined));
43
+ // Pass task via env if configured
44
+ if (agentConfig.taskPassingMode === 'env' && agentConfig.taskEnvVar) {
45
+ env[agentConfig.taskEnvVar] = config.task.description;
46
+ }
47
+ // Pass knowledge via env if configured
48
+ if (agentConfig.knowledgePassingMode === 'env' &&
49
+ agentConfig.knowledgeEnvVar &&
50
+ config.systemPromptAdditions) {
51
+ env[agentConfig.knowledgeEnvVar] = config.systemPromptAdditions;
52
+ }
53
+ // Build arguments
54
+ const args = [...(agentConfig.args ?? [])];
55
+ if (agentConfig.taskPassingMode === 'arg') {
56
+ args.push(config.task.description);
57
+ }
58
+ // Spawn the process
59
+ const childProcess = spawn(agentConfig.command, args, {
60
+ cwd: config.cwd,
61
+ env,
62
+ stdio: ['pipe', 'pipe', 'pipe'],
63
+ });
64
+ const emitter = new EventEmitter();
65
+ const subSession = {
66
+ session,
67
+ process: childProcess,
68
+ outputBuffer: '',
69
+ emitter,
70
+ };
71
+ this.sessions.set(sessionId, subSession);
72
+ // Pass task via stdin if configured
73
+ if (agentConfig.taskPassingMode === 'stdin') {
74
+ let input = config.task.description;
75
+ if (config.systemPromptAdditions) {
76
+ input = `${config.systemPromptAdditions}\n\n${input}`;
77
+ }
78
+ childProcess.stdin?.write(input);
79
+ childProcess.stdin?.end();
80
+ }
81
+ // Handle output
82
+ const parser = agentConfig.outputParser ?? this.defaultParser;
83
+ childProcess.stdout?.on('data', (data) => {
84
+ const output = data.toString();
85
+ subSession.outputBuffer += output;
86
+ // Parse and emit events
87
+ const parsed = parser(subSession.outputBuffer);
88
+ // Add new messages
89
+ for (const msg of parsed.messages) {
90
+ if (!session.messages.some((m) => m.timestamp === msg.timestamp)) {
91
+ session.messages.push(msg);
92
+ config.onMessage?.(msg);
93
+ }
94
+ }
95
+ // Add new tool calls
96
+ for (const tc of parsed.toolCalls) {
97
+ if (!session.toolCalls.some((t) => t.id === tc.id)) {
98
+ session.toolCalls.push(tc);
99
+ config.onToolCall?.(tc);
100
+ }
101
+ }
102
+ if (parsed.isComplete) {
103
+ session.result = parsed.result;
104
+ }
105
+ });
106
+ childProcess.stderr?.on('data', (data) => {
107
+ const error = data.toString();
108
+ session.messages.push({
109
+ role: 'system',
110
+ content: `[stderr] ${error}`,
111
+ timestamp: new Date(),
112
+ });
113
+ });
114
+ // Handle exit
115
+ childProcess.on('close', (code) => {
116
+ session.endTime = new Date();
117
+ session.state = code === 0 ? 'completed' : 'failed';
118
+ if (code !== 0) {
119
+ session.error = `Process exited with code ${code}`;
120
+ console.error(`[SubprocessBackend] Session ${sessionId} failed: exit code ${code}`);
121
+ }
122
+ emitter.emit('complete', session);
123
+ });
124
+ childProcess.on('error', (error) => {
125
+ session.endTime = new Date();
126
+ session.state = 'failed';
127
+ session.error = error.message;
128
+ console.error(`[SubprocessBackend] Session ${sessionId} process error:`, error.message);
129
+ emitter.emit('complete', session);
130
+ });
131
+ // Set up timeout
132
+ if (config.timeout) {
133
+ setTimeout(() => {
134
+ if (session.state === 'running') {
135
+ console.error(`[SubprocessBackend] Session ${sessionId} timed out after ${config.timeout}ms`);
136
+ childProcess.kill('SIGTERM');
137
+ session.state = 'failed';
138
+ session.error = 'Timeout';
139
+ session.endTime = new Date();
140
+ }
141
+ }, config.timeout);
142
+ }
143
+ return session;
144
+ }
145
+ async getSession(sessionId) {
146
+ return this.sessions.get(sessionId)?.session;
147
+ }
148
+ async sendMessage(sessionId, message) {
149
+ const subSession = this.sessions.get(sessionId);
150
+ if (!subSession || subSession.session.state !== 'running') {
151
+ throw new Error('Session not found or not running');
152
+ }
153
+ subSession.process.stdin?.write(message + '\n');
154
+ }
155
+ async terminate(sessionId) {
156
+ const subSession = this.sessions.get(sessionId);
157
+ if (!subSession)
158
+ return;
159
+ subSession.process.kill('SIGTERM');
160
+ subSession.session.state = 'failed';
161
+ subSession.session.error = 'Terminated';
162
+ subSession.session.endTime = new Date();
163
+ }
164
+ async listSessions() {
165
+ return Array.from(this.sessions.values()).map((s) => s.session);
166
+ }
167
+ /**
168
+ * Default parser for agent output
169
+ * Override with custom parser for specific agent formats
170
+ */
171
+ defaultParser(output) {
172
+ const messages = [];
173
+ const toolCalls = [];
174
+ let result;
175
+ let isComplete = false;
176
+ // Simple line-based parsing
177
+ const lines = output.split('\n');
178
+ for (const line of lines) {
179
+ if (line.trim()) {
180
+ messages.push({
181
+ role: 'assistant',
182
+ content: line,
183
+ timestamp: new Date(),
184
+ });
185
+ }
186
+ // Look for completion markers
187
+ if (line.includes('DONE:') || line.includes('COMPLETE:')) {
188
+ isComplete = true;
189
+ result = line.split(':').slice(1).join(':').trim();
190
+ }
191
+ }
192
+ return { messages, toolCalls, result, isComplete };
193
+ }
194
+ }
195
+ /**
196
+ * Create a subprocess backend with common agent configurations
197
+ */
198
+ export function createSubprocessBackend(configs) {
199
+ return new SubprocessBackend(configs);
200
+ }
201
+ /**
202
+ * Pre-configured Claude Code agent
203
+ */
204
+ export const claudeCodeConfig = {
205
+ command: 'claude',
206
+ args: ['--print', '--output-format', 'json'],
207
+ taskPassingMode: 'arg',
208
+ knowledgePassingMode: 'system-prompt',
209
+ outputParser: (output) => {
210
+ const messages = [];
211
+ const toolCalls = [];
212
+ let result;
213
+ let isComplete = false;
214
+ // Try to parse JSON lines (Claude Code output format)
215
+ const lines = output.split('\n');
216
+ for (const line of lines) {
217
+ if (!line.trim())
218
+ continue;
219
+ try {
220
+ const parsed = JSON.parse(line);
221
+ if (parsed.type === 'assistant') {
222
+ messages.push({
223
+ role: 'assistant',
224
+ content: parsed.content ?? '',
225
+ timestamp: new Date(parsed.timestamp ?? Date.now()),
226
+ });
227
+ }
228
+ else if (parsed.type === 'tool_use') {
229
+ toolCalls.push({
230
+ id: parsed.id ?? crypto.randomUUID(),
231
+ name: parsed.name,
232
+ input: parsed.input,
233
+ startTime: new Date(parsed.timestamp ?? Date.now()),
234
+ });
235
+ }
236
+ else if (parsed.type === 'tool_result') {
237
+ const tc = toolCalls.find((t) => t.id === parsed.tool_use_id);
238
+ if (tc) {
239
+ tc.output = parsed.content;
240
+ tc.endTime = new Date(parsed.timestamp ?? Date.now());
241
+ }
242
+ }
243
+ else if (parsed.type === 'result') {
244
+ isComplete = true;
245
+ result = parsed.result;
246
+ }
247
+ }
248
+ catch {
249
+ // Not JSON, treat as plain text
250
+ messages.push({
251
+ role: 'assistant',
252
+ content: line,
253
+ timestamp: new Date(),
254
+ });
255
+ }
256
+ }
257
+ return { messages, toolCalls, result, isComplete };
258
+ },
259
+ };
260
+ //# sourceMappingURL=subprocess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../../src/runtime/backends/subprocess.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import type { Task } from '../../types/index.js';
2
+ import type { MemorySystem } from '../../memory/system.js';
3
+ import type { LearningPipeline, ProcessResult, BatchResult } from '../../learning/index.js';
4
+ import type { AgentManager } from '../manager.js';
5
+ import type { AgentResult, AgentSession, AgentObserverCallbacks } from '../types.js';
6
+ /**
7
+ * Configuration for the learning flow
8
+ */
9
+ export interface LearningFlowConfig {
10
+ /** Agent type to use for execution */
11
+ agentType: string;
12
+ /** Minimum trajectories before running batch learning */
13
+ batchThreshold?: number;
14
+ /** Whether to auto-run batch learning when threshold is reached */
15
+ autoBatch?: boolean;
16
+ /** Observer callbacks for real-time monitoring */
17
+ observer?: AgentObserverCallbacks;
18
+ }
19
+ /**
20
+ * Result of a learning flow execution
21
+ */
22
+ export interface LearningFlowResult {
23
+ /** The agent result */
24
+ agentResult: AgentResult;
25
+ /** Processing result from learning pipeline */
26
+ processResult: ProcessResult;
27
+ /** Batch result if batch learning was triggered */
28
+ batchResult?: BatchResult;
29
+ }
30
+ /**
31
+ * Learning Flow
32
+ * Orchestrates: Agent execution → Trajectory capture → Playbook extraction → Memory storage
33
+ *
34
+ * This flow is for the "observation" direction:
35
+ * - Watch agents solve tasks
36
+ * - Extract learning signals from their trajectories
37
+ * - Store playbooks for future guidance
38
+ */
39
+ export declare class LearningFlow {
40
+ private manager;
41
+ private pipeline;
42
+ private config;
43
+ constructor(manager: AgentManager, pipeline: LearningPipeline, _memory: MemorySystem, config: LearningFlowConfig);
44
+ /**
45
+ * Run a single task through the learning flow
46
+ */
47
+ run(task: Task): Promise<LearningFlowResult>;
48
+ /**
49
+ * Run multiple tasks through the learning flow
50
+ */
51
+ runBatch(tasks: Task[]): Promise<LearningFlowResult[]>;
52
+ /**
53
+ * Observe an external session and learn from it
54
+ * Use this when another system provides the session
55
+ */
56
+ observeExternal(session: AgentSession, task: Task): Promise<LearningFlowResult>;
57
+ /**
58
+ * Force batch learning
59
+ */
60
+ runBatchLearning(): Promise<BatchResult>;
61
+ /**
62
+ * Get learning statistics
63
+ */
64
+ getStats(): {
65
+ pendingTrajectories: number;
66
+ batchThreshold: number;
67
+ };
68
+ }
69
+ /**
70
+ * Create a learning flow
71
+ */
72
+ export declare function createLearningFlow(manager: AgentManager, pipeline: LearningPipeline, memory: MemorySystem, config: LearningFlowConfig): LearningFlow;
73
+ //# sourceMappingURL=learning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../../src/runtime/flows/learning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,+CAA+C;IAC/C,aAAa,EAAE,aAAa,CAAC;IAC7B,mDAAmD;IACnD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAqB;gBAGjC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,kBAAkB;IAgB5B;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6BlD;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAS5D;;;OAGG;IACG,eAAe,CACnB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,kBAAkB,CAAC;IAkC9B;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAI9C;;OAEG;IACH,QAAQ,IAAI;QACV,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,MAAM,CAAC;KACxB;CAMF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,kBAAkB,GACzB,YAAY,CAEd"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Learning Flow
3
+ * Orchestrates: Agent execution → Trajectory capture → Playbook extraction → Memory storage
4
+ *
5
+ * This flow is for the "observation" direction:
6
+ * - Watch agents solve tasks
7
+ * - Extract learning signals from their trajectories
8
+ * - Store playbooks for future guidance
9
+ */
10
+ export class LearningFlow {
11
+ manager;
12
+ pipeline;
13
+ config;
14
+ constructor(manager, pipeline, _memory, config) {
15
+ this.manager = manager;
16
+ this.pipeline = pipeline;
17
+ this.config = {
18
+ batchThreshold: 10,
19
+ autoBatch: true,
20
+ ...config,
21
+ };
22
+ // Register observer if provided
23
+ if (config.observer) {
24
+ this.manager.addObserver(config.observer);
25
+ }
26
+ }
27
+ /**
28
+ * Run a single task through the learning flow
29
+ */
30
+ async run(task) {
31
+ // 1. Spawn agent and get result (WITHOUT knowledge injection for pure learning)
32
+ const agentResult = await this.manager.spawnBaseline({
33
+ agentType: this.config.agentType,
34
+ task,
35
+ captureToolCalls: true,
36
+ });
37
+ // 2. Process trajectory through learning pipeline
38
+ const processResult = await this.pipeline.processTrajectory(agentResult.trajectory);
39
+ // 3. Run batch learning if threshold reached
40
+ let batchResult;
41
+ if (this.config.autoBatch &&
42
+ this.pipeline.getAccumulatedCount() >= (this.config.batchThreshold ?? 10)) {
43
+ batchResult = await this.pipeline.runBatchLearning();
44
+ }
45
+ return {
46
+ agentResult,
47
+ processResult,
48
+ batchResult,
49
+ };
50
+ }
51
+ /**
52
+ * Run multiple tasks through the learning flow
53
+ */
54
+ async runBatch(tasks) {
55
+ const results = [];
56
+ for (const task of tasks) {
57
+ const result = await this.run(task);
58
+ results.push(result);
59
+ }
60
+ return results;
61
+ }
62
+ /**
63
+ * Observe an external session and learn from it
64
+ * Use this when another system provides the session
65
+ */
66
+ async observeExternal(session, task) {
67
+ // Extract trajectory from session
68
+ const trajectory = await this.manager.observeAndLearn(session, task);
69
+ // Process through learning pipeline
70
+ const processResult = await this.pipeline.processTrajectory(trajectory);
71
+ // Check for batch learning
72
+ let batchResult;
73
+ if (this.config.autoBatch &&
74
+ this.pipeline.getAccumulatedCount() >= (this.config.batchThreshold ?? 10)) {
75
+ batchResult = await this.pipeline.runBatchLearning();
76
+ }
77
+ return {
78
+ agentResult: {
79
+ session,
80
+ trajectory,
81
+ success: session.state === 'completed',
82
+ metrics: {
83
+ totalTime: session.endTime
84
+ ? session.endTime.getTime() - session.startTime.getTime()
85
+ : 0,
86
+ toolCallCount: session.toolCalls.length,
87
+ messageCount: session.messages.length,
88
+ },
89
+ },
90
+ processResult,
91
+ batchResult,
92
+ };
93
+ }
94
+ /**
95
+ * Force batch learning
96
+ */
97
+ async runBatchLearning() {
98
+ return this.pipeline.runBatchLearning();
99
+ }
100
+ /**
101
+ * Get learning statistics
102
+ */
103
+ getStats() {
104
+ return {
105
+ pendingTrajectories: this.pipeline.getAccumulatedCount(),
106
+ batchThreshold: this.config.batchThreshold ?? 10,
107
+ };
108
+ }
109
+ }
110
+ /**
111
+ * Create a learning flow
112
+ */
113
+ export function createLearningFlow(manager, pipeline, memory, config) {
114
+ return new LearningFlow(manager, pipeline, memory, config);
115
+ }
116
+ //# sourceMappingURL=learning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning.js","sourceRoot":"","sources":["../../../src/runtime/flows/learning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import type { Task } from '../../types/index.js';
2
+ import type { MemorySystem } from '../../memory/system.js';
3
+ import type { AgentManager } from '../manager.js';
4
+ import type { AgentResult } from '../types.js';
5
+ /**
6
+ * Configuration for the validation flow
7
+ */
8
+ export interface ValidationFlowConfig {
9
+ /** Agent type to use for execution */
10
+ agentType: string;
11
+ /** Number of runs per task for statistical significance */
12
+ runsPerTask?: number;
13
+ /** Whether to run comparison (with vs without knowledge) */
14
+ runComparison?: boolean;
15
+ /** Timeout per task in ms */
16
+ taskTimeout?: number;
17
+ }
18
+ /**
19
+ * Metrics for measuring improvement
20
+ */
21
+ export interface ValidationMetrics {
22
+ /** Success rate (0-1) */
23
+ successRate: number;
24
+ /** Average execution time in ms */
25
+ avgTime: number;
26
+ /** Average tool calls per task */
27
+ avgToolCalls: number;
28
+ /** Standard deviation of time */
29
+ timeStdDev: number;
30
+ /** Total tasks run */
31
+ totalRuns: number;
32
+ }
33
+ /**
34
+ * Comparison result between with/without knowledge
35
+ */
36
+ export interface ComparisonResult {
37
+ /** Metrics with knowledge injection */
38
+ withKnowledge: ValidationMetrics;
39
+ /** Metrics without knowledge (baseline) */
40
+ baseline: ValidationMetrics;
41
+ /** Improvement metrics */
42
+ improvement: {
43
+ successRateDelta: number;
44
+ timeDeltaPercent: number;
45
+ toolCallDeltaPercent: number;
46
+ /** Statistical significance (p-value approximation) */
47
+ isSignificant: boolean;
48
+ };
49
+ }
50
+ /**
51
+ * Result of validation flow
52
+ */
53
+ export interface ValidationFlowResult {
54
+ /** Results for each task */
55
+ taskResults: Array<{
56
+ task: Task;
57
+ results: AgentResult[];
58
+ metrics: ValidationMetrics;
59
+ }>;
60
+ /** Aggregate metrics */
61
+ aggregateMetrics: ValidationMetrics;
62
+ /** Comparison if runComparison was true */
63
+ comparison?: ComparisonResult;
64
+ }
65
+ /**
66
+ * Validation Flow
67
+ * Orchestrates: Knowledge injection → Agent execution → Performance measurement
68
+ *
69
+ * This flow is for the "injection" direction:
70
+ * - Test how well learning is working
71
+ * - Compare performance with vs without knowledge
72
+ * - Measure improvement over time
73
+ */
74
+ export declare class ValidationFlow {
75
+ private manager;
76
+ private config;
77
+ constructor(manager: AgentManager, _memory: MemorySystem, // Reserved for future memory state tracking
78
+ config: ValidationFlowConfig);
79
+ /**
80
+ * Validate on a single task
81
+ */
82
+ validateTask(task: Task): Promise<{
83
+ task: Task;
84
+ results: AgentResult[];
85
+ metrics: ValidationMetrics;
86
+ comparison?: ComparisonResult;
87
+ }>;
88
+ /**
89
+ * Validate on multiple tasks
90
+ */
91
+ validate(tasks: Task[]): Promise<ValidationFlowResult>;
92
+ /**
93
+ * Quick validation - single run per task, with comparison
94
+ */
95
+ quickValidate(tasks: Task[]): Promise<{
96
+ successRateWithKnowledge: number;
97
+ successRateBaseline: number;
98
+ improvement: number;
99
+ details: Array<{
100
+ task: Task;
101
+ withKnowledge: boolean;
102
+ baseline: boolean;
103
+ }>;
104
+ }>;
105
+ /**
106
+ * Calculate metrics from results
107
+ */
108
+ private calculateMetrics;
109
+ /**
110
+ * Calculate comparison between two sets of metrics
111
+ */
112
+ private calculateComparison;
113
+ /**
114
+ * Generate a validation report
115
+ */
116
+ generateReport(result: ValidationFlowResult): string;
117
+ }
118
+ /**
119
+ * Create a validation flow
120
+ */
121
+ export declare function createValidationFlow(manager: AgentManager, memory: MemorySystem, config: ValidationFlowConfig): ValidationFlow;
122
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/runtime/flows/validation.ts"],"names":[],"mappings":"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"}