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
package/README.md CHANGED
@@ -1,3 +1,364 @@
1
- # cognitive-core
1
+ # Atlas
2
2
 
3
- > Coming soon
3
+ **Adaptive Trajectory Learning and Abstraction System**
4
+
5
+ A TypeScript-native cognitive core for building AI agents that learn from experience. Atlas extracts strategies, concepts, and skills from problem-solving trajectories to improve future performance.
6
+
7
+ ## Features
8
+
9
+ - **Memory System**: Four complementary memory types for different abstraction levels
10
+ - **Experience Memory** (ReMem-style): Task-level retrieval of similar past experiences
11
+ - **Concept Library** (Stitch/LILO-style): Reusable code patterns and abstractions
12
+ - **Strategy Bank** (ArcMemo-style): High-level reasoning patterns
13
+ - **Skill Store** (Claudeception-inspired): Actionable skills with specific triggers
14
+
15
+ - **Learning Engine**: Automatic extraction of knowledge from trajectories
16
+ - Credit assignment for identifying key steps
17
+ - Pattern extraction using text analysis or LLM agents
18
+ - Deduplication to prevent redundant learning
19
+
20
+ - **Agent-Based Extractors**: LLM-powered extraction of:
21
+ - Strategies (when/what rules)
22
+ - Code concepts (reusable patterns)
23
+ - Skills (concrete solutions with triggers)
24
+
25
+ - **Task Router**: Smart routing based on memory similarity
26
+ - **Lightweight Persistence**: JSON file-based storage
27
+
28
+ ## Installation
29
+
30
+ ```bash
31
+ npm install cognitive-core
32
+ ```
33
+
34
+ ## Quick Start
35
+
36
+ ### Using with Agent Backends (Recommended)
37
+
38
+ ```typescript
39
+ import { createAtlasWithAgents, createTask, createMockBackend } from 'cognitive-core';
40
+
41
+ // Create Atlas with agent backends
42
+ const atlas = createAtlasWithAgents(
43
+ [createMockBackend()], // Use mock backend for testing
44
+ { storage: { baseDir: '.atlas' } }
45
+ );
46
+
47
+ // Initialize (loads persisted data)
48
+ await atlas.init();
49
+
50
+ // Create and solve a task
51
+ const task = createTask({
52
+ domain: 'code',
53
+ description: 'Write a function that checks if a number is prime',
54
+ });
55
+
56
+ const result = await atlas.solve(task);
57
+ console.log('Success:', result.trajectory.outcome.success);
58
+ console.log('Routing strategy:', result.routing?.strategy);
59
+ console.log('Used refinement:', !!result.refinement);
60
+
61
+ // Get stats
62
+ const stats = await atlas.getStats();
63
+ console.log('Memory stats:', stats.memory);
64
+ console.log('Backends:', stats.execution?.backends);
65
+
66
+ // Close (persists data)
67
+ await atlas.close();
68
+ ```
69
+
70
+ ### Setting Up Real Agent Backends
71
+
72
+ ```typescript
73
+ import {
74
+ createAtlasWithAgents,
75
+ createSubprocessBackend,
76
+ createTask
77
+ } from 'cognitive-core';
78
+
79
+ // Create a subprocess backend for Claude Code or other CLI agents
80
+ const claudeBackend = createSubprocessBackend({
81
+ name: 'claude-code',
82
+ command: 'claude',
83
+ args: ['--print'],
84
+ supportedTypes: ['claude-code', 'default'],
85
+ });
86
+
87
+ // Create Atlas with real backends
88
+ const atlas = createAtlasWithAgents([claudeBackend], {
89
+ storage: { baseDir: '.atlas' },
90
+ execution: {
91
+ defaultAgentType: 'claude-code',
92
+ maxExecutionTime: 300, // 5 minutes
93
+ captureToolCalls: true,
94
+ },
95
+ refinement: {
96
+ useAgentEvaluation: true,
97
+ maxIterations: 3,
98
+ },
99
+ });
100
+
101
+ await atlas.init();
102
+
103
+ // Solve with memory-augmented context
104
+ const result = await atlas.solve(createTask({
105
+ domain: 'code',
106
+ description: 'Fix the TypeScript compilation error in auth.ts',
107
+ }));
108
+ ```
109
+
110
+ ## Architecture
111
+
112
+ ```
113
+ Atlas
114
+ ├── Memory System
115
+ │ ├── ExperienceMemory # Task-level retrieval (k=4)
116
+ │ ├── PlaybookLibrary # Actionable playbooks with triggers
117
+ │ └── MetaMemory # Meta-learning observations
118
+
119
+ ├── Learning Engine
120
+ │ ├── TrajectoryAnalyzer # Credit assignment
121
+ │ ├── PlaybookExtractor # Pattern discovery & playbook creation
122
+ │ ├── MetaLearner # Adaptive routing improvements
123
+ │ ├── UsageInference # Track playbook effectiveness
124
+ │ └── LearningPipeline # Batch learning orchestration
125
+
126
+ ├── Surfacing
127
+ │ ├── SkillLibrary # Tiered skill management (core/domain/contextual)
128
+ │ └── PlaybookMCPServer # MCP protocol for on-demand access
129
+
130
+ ├── Runtime
131
+ │ ├── AgentManager # Spawn and observe agents
132
+ │ ├── Backends # Mock, Subprocess, ACP backends
133
+ │ └── KnowledgeInjector # Format memory for agent context
134
+
135
+ ├── Search/Routing
136
+ │ ├── TaskRouter # Smart routing with meta-learning
137
+ │ ├── RefinementLoop # Iterative solution improvement
138
+ │ └── SolutionEvaluator # Quality assessment
139
+
140
+ └── Integration
141
+ └── skill-tree # Federated skill library management
142
+ ```
143
+
144
+ ## Core Types
145
+
146
+ ### Task
147
+ ```typescript
148
+ interface Task {
149
+ id: string;
150
+ domain: string; // e.g., 'code', 'reasoning', 'arc'
151
+ description: string;
152
+ context: Record<string, unknown>;
153
+ verification?: VerificationSpec;
154
+ }
155
+ ```
156
+
157
+ ### Trajectory
158
+ ```typescript
159
+ interface Trajectory {
160
+ id: string;
161
+ task: Task;
162
+ steps: Step[]; // ReAct-style steps
163
+ outcome: Outcome;
164
+ agentId: string;
165
+ llmCalls: number;
166
+ totalTokens: number;
167
+ wallTimeSeconds: number;
168
+ }
169
+ ```
170
+
171
+ ### Strategy
172
+ ```typescript
173
+ interface Strategy {
174
+ situation: string; // When to apply
175
+ suggestion: string; // What to do
176
+ parameters: Parameter[];
177
+ confidence: number;
178
+ successRate: number;
179
+ }
180
+ ```
181
+
182
+ ### Skill
183
+ ```typescript
184
+ interface Skill {
185
+ name: string;
186
+ description: string; // Rich, for semantic matching
187
+ problem: string;
188
+ triggers: string[]; // Specific conditions
189
+ solution: string[]; // Step-by-step
190
+ verification?: string;
191
+ }
192
+ ```
193
+
194
+ ## Agent Backend System
195
+
196
+ Atlas uses an agent backend system for real execution. Backends handle spawning, managing, and extracting trajectories from agents.
197
+
198
+ ### Creating Custom Backends
199
+
200
+ Implement the `AgentBackend` interface:
201
+
202
+ ```typescript
203
+ import type { AgentBackend, AgentSpawnConfig, AgentSession } from 'cognitive-core';
204
+
205
+ class MyAgentBackend implements AgentBackend {
206
+ readonly name = 'my-agent';
207
+ readonly supportedTypes = ['my-agent', 'custom'];
208
+
209
+ async isAvailable(): Promise<boolean> {
210
+ // Check if agent is available
211
+ return true;
212
+ }
213
+
214
+ async spawn(config: AgentSpawnConfig): Promise<AgentSession> {
215
+ // Spawn the agent with task and injected knowledge
216
+ const session = await launchMyAgent({
217
+ task: config.task,
218
+ systemPrompt: config.systemPromptAdditions,
219
+ timeout: config.timeout,
220
+ });
221
+ return session;
222
+ }
223
+
224
+ async getSession(sessionId: string): Promise<AgentSession | undefined> {
225
+ // Get session status
226
+ return this.sessions.get(sessionId);
227
+ }
228
+
229
+ async terminate(sessionId: string): Promise<void> {
230
+ // Terminate a running session
231
+ await this.sessions.get(sessionId)?.kill();
232
+ }
233
+ }
234
+
235
+ // Register with Atlas
236
+ const atlas = createAtlasWithAgents([new MyAgentBackend()]);
237
+ ```
238
+
239
+ ### Using the AgentManager Directly
240
+
241
+ ```typescript
242
+ const manager = atlas.getAgentManager();
243
+
244
+ // Add observers for monitoring
245
+ manager.addObserver({
246
+ onSessionStart: (session) => console.log('Started:', session.id),
247
+ onToolCall: (session, toolCall) => console.log('Tool:', toolCall.name),
248
+ onSessionEnd: (session, trajectory) => console.log('Done:', trajectory.outcome.success),
249
+ });
250
+
251
+ // Compare with/without memory augmentation
252
+ const comparison = await manager.compareWithKnowledge({
253
+ agentType: 'claude-code',
254
+ task: createTask({ domain: 'code', description: 'Fix the bug' }),
255
+ });
256
+
257
+ console.log('Time saved:', comparison.improvement.timeDelta, 'ms');
258
+ console.log('Fewer tool calls:', comparison.improvement.toolCallDelta);
259
+ ```
260
+
261
+ ### Legacy: LLM Provider (Deprecated)
262
+
263
+ > **Note**: The `setProvider()` API is deprecated. Use `createAtlasWithAgents()` instead.
264
+
265
+ For simple testing without real agent execution:
266
+
267
+ ```typescript
268
+ import type { LLMProvider, Message, CompletionOptions } from 'cognitive-core';
269
+
270
+ class MyProvider implements LLMProvider {
271
+ readonly name = 'my-provider';
272
+
273
+ async complete(
274
+ messages: Message[],
275
+ options?: CompletionOptions
276
+ ): Promise<string> {
277
+ const response = await myLLMAPI.chat({
278
+ messages,
279
+ temperature: options?.temperature,
280
+ max_tokens: options?.maxTokens,
281
+ });
282
+ return response.content;
283
+ }
284
+ }
285
+
286
+ // Deprecated - prefer createAtlasWithAgents()
287
+ atlas.setProvider(new MyProvider());
288
+ ```
289
+
290
+ ## Processing External Trajectories
291
+
292
+ You can feed trajectories from other agents:
293
+
294
+ ```typescript
295
+ import { createTrajectory, createTask, createStep, successOutcome } from 'cognitive-core';
296
+
297
+ const trajectory = createTrajectory({
298
+ task: createTask({
299
+ domain: 'code',
300
+ description: 'Fix the authentication bug',
301
+ }),
302
+ steps: [
303
+ createStep({
304
+ thought: 'Need to check the token validation',
305
+ action: 'Read auth.ts',
306
+ observation: 'Found expired token check missing',
307
+ }),
308
+ createStep({
309
+ thought: 'Adding expiry validation',
310
+ action: 'Edit auth.ts to add token.exp check',
311
+ observation: 'Token validation added',
312
+ }),
313
+ ],
314
+ outcome: successOutcome('Fixed by adding token expiry check'),
315
+ agentId: 'external-agent',
316
+ });
317
+
318
+ // Process for learning
319
+ const result = await atlas.processTrajectory(trajectory);
320
+ console.log('Abstractable:', result.abstractable);
321
+ console.log('Strategy extracted:', result.strategyExtracted);
322
+ ```
323
+
324
+ ## Configuration
325
+
326
+ ```typescript
327
+ const atlas = createAtlas({
328
+ learning: {
329
+ creditStrategy: 'simple', // 'simple' | 'llm' | 'counterfactual'
330
+ patternExtractor: 'llm', // 'llm' | 'text' | 'both'
331
+ minTrajectories: 10, // Before batch learning
332
+ deduplicationThreshold: 0.9,
333
+ },
334
+ router: {
335
+ similarityThreshold: 0.85,
336
+ useDomainRouting: true,
337
+ },
338
+ memory: {
339
+ maxExperiences: 4, // ReMem paper default
340
+ maxStrategies: 3,
341
+ maxConcepts: 5,
342
+ maxSkills: 3,
343
+ },
344
+ storage: {
345
+ baseDir: '.atlas',
346
+ persistenceEnabled: true,
347
+ },
348
+ });
349
+ ```
350
+
351
+ ## References
352
+
353
+ This implementation draws from several research papers:
354
+
355
+ - **ArcMemo**: Concept-level memory beats instance-level at all compute scales
356
+ - **ReMem**: Experience retrieval with k=4, refinement loop
357
+ - **Stitch**: Library learning via compression
358
+ - **LILO**: AutoDoc for concept naming
359
+ - **Voyager**: Ever-growing skill libraries
360
+ - **Claudeception**: Lightweight skill persistence for Claude Code
361
+
362
+ ## License
363
+
364
+ MIT
package/SKILL.md ADDED
@@ -0,0 +1,193 @@
1
+ # Cognitive Core Skill
2
+
3
+ Use this skill when the user asks you to leverage learned strategies, playbooks, or experience-based knowledge to solve problems more effectively.
4
+
5
+ ## Overview
6
+
7
+ Cognitive Core (Atlas) is a learning system that helps agents solve problems by:
8
+ - Storing successful problem-solving trajectories
9
+ - Extracting reusable playbooks from those trajectories
10
+ - Providing relevant strategies and tactics for new problems
11
+
12
+ ## When to Use This Skill
13
+
14
+ Activate this skill when:
15
+ - You need guidance on how to approach a complex problem
16
+ - You want to check if there are established strategies for a task domain
17
+ - You've successfully solved a problem and want to record the approach
18
+ - The user explicitly asks about learned strategies or playbooks
19
+
20
+ ## CLI Commands
21
+
22
+ The cognitive-core CLI provides access to the learning system:
23
+
24
+ ### Search for Relevant Playbooks
25
+
26
+ ```bash
27
+ cognitive-core search "<your problem description>"
28
+ cognitive-core search "fix typescript errors" --domain code
29
+ cognitive-core search "write unit tests" --limit 3
30
+ cognitive-core search "refactor function" --json
31
+ ```
32
+
33
+ Use search when you need guidance. The system returns:
34
+ - Strategy: High-level approach to the problem
35
+ - Tactics: Specific techniques to apply
36
+ - Success indicators: How to know if you succeeded
37
+ - Confidence: How reliable this playbook is
38
+
39
+ ### Get Playbook Details
40
+
41
+ ```bash
42
+ cognitive-core get <playbook-id>
43
+ cognitive-core get playbook-abc123 --json
44
+ ```
45
+
46
+ Use this to get full details including steps, when-to-use conditions, and failure patterns to avoid.
47
+
48
+ ### List Available Domains
49
+
50
+ ```bash
51
+ cognitive-core domains
52
+ cognitive-core domains --json
53
+ ```
54
+
55
+ Shows all problem domains that have playbooks available.
56
+
57
+ ### Check System Stats
58
+
59
+ ```bash
60
+ cognitive-core stats
61
+ cognitive-core stats --json
62
+ ```
63
+
64
+ Shows how many experiences and playbooks are stored.
65
+
66
+ ### Store a Trajectory
67
+
68
+ ```bash
69
+ cognitive-core store ./trajectory.json
70
+ ```
71
+
72
+ Store a problem-solving trajectory to help the system learn.
73
+
74
+ ## Trajectory Format
75
+
76
+ When storing trajectories, use this JSON format:
77
+
78
+ ```json
79
+ {
80
+ "id": "unique-trajectory-id",
81
+ "task": {
82
+ "domain": "code",
83
+ "description": "Fix the null pointer exception in user service",
84
+ "context": {
85
+ "file": "src/services/user.ts",
86
+ "error": "TypeError: Cannot read property 'id' of null"
87
+ }
88
+ },
89
+ "steps": [
90
+ {
91
+ "thought": "First, I need to understand where the null value is coming from",
92
+ "action": "read src/services/user.ts",
93
+ "observation": "Found the function getUserById which doesn't handle missing users"
94
+ },
95
+ {
96
+ "thought": "The function should check if user exists before accessing properties",
97
+ "action": "edit src/services/user.ts to add null check",
98
+ "observation": "Added guard clause: if (!user) return null"
99
+ }
100
+ ],
101
+ "outcome": {
102
+ "success": true,
103
+ "solution": "Added null check in getUserById function"
104
+ },
105
+ "agentId": "your-agent-id"
106
+ }
107
+ ```
108
+
109
+ ## Workflow Integration
110
+
111
+ ### Before Starting a Task
112
+
113
+ 1. Search for relevant playbooks:
114
+ ```bash
115
+ cognitive-core search "description of your task"
116
+ ```
117
+
118
+ 2. If playbooks are found, review the strategy and tactics
119
+
120
+ 3. Apply the suggested approach, adapting as needed
121
+
122
+ ### After Completing a Task
123
+
124
+ 1. If the solution was novel or particularly effective, store it:
125
+ - Create a trajectory JSON file documenting your steps
126
+ - Store it: `cognitive-core store ./my-trajectory.json`
127
+
128
+ 2. This helps the system learn from your experience
129
+
130
+ ## Best Practices
131
+
132
+ 1. **Search First**: Before tackling complex problems, check if there are existing strategies
133
+
134
+ 2. **Be Specific**: More specific queries get better matches
135
+ - Good: "fix TypeScript null reference error in async function"
136
+ - Less Good: "fix error"
137
+
138
+ 3. **Use Domains**: Filter by domain for more relevant results
139
+ - `--domain code` for programming tasks
140
+ - `--domain testing` for test-related tasks
141
+ - `--domain refactoring` for code restructuring
142
+
143
+ 4. **Record Success**: Store trajectories for:
144
+ - Problems that were particularly tricky
145
+ - Novel solutions you discovered
146
+ - Patterns you want to remember
147
+
148
+ 5. **Include Context**: When storing trajectories, include:
149
+ - Your reasoning (thoughts)
150
+ - The specific actions taken
151
+ - What you observed at each step
152
+
153
+ ## Example Session
154
+
155
+ ```bash
156
+ # User asks: "Help me fix this failing test"
157
+
158
+ # 1. Search for relevant strategies
159
+ cognitive-core search "fix failing test" --domain testing
160
+
161
+ # Output shows:
162
+ # ## Debug Test Failures
163
+ # Strategy: Systematically isolate and identify the cause of test failures
164
+ # Tactics:
165
+ # - Read the full error message and stack trace
166
+ # - Check if the test worked before recent changes
167
+ # - Isolate the failing assertion
168
+ # - Verify test data and mocks are correct
169
+
170
+ # 2. Apply the strategy while working on the problem
171
+ # ... work through the tactics ...
172
+
173
+ # 3. If you found a novel approach, store it
174
+ cognitive-core store ./test-fix-trajectory.json
175
+ ```
176
+
177
+ ## Configuration
178
+
179
+ The CLI uses `.cognitive-core` directory in the current working directory by default. Override with:
180
+
181
+ ```bash
182
+ cognitive-core search "query" --dir /path/to/memory
183
+ ```
184
+
185
+ ## JSON Output
186
+
187
+ For programmatic access, use `--json` or `--format json`:
188
+
189
+ ```bash
190
+ cognitive-core search "typescript error" --json | jq '.results[0].strategy'
191
+ ```
192
+
193
+ This returns structured data suitable for parsing.
@@ -0,0 +1,3 @@
1
+ export { Agent, type LLMProvider, type Message, type CompletionOptions, type AgentConfig, type ToolDefinition, type ToolCall, type ToolAgent, } from './types.js';
2
+ export { MockLLMProvider, createMockProvider } from './mock-provider.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Types and base classes
2
+ export { Agent, } from './types.js';
3
+ // Mock provider for testing
4
+ export { MockLLMProvider, createMockProvider } from './mock-provider.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EACL,KAAK,GAQN,MAAM,YAAY,CAAC;AAEpB,4BAA4B;AAC5B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { LLMProvider, Message, CompletionOptions } from './types.js';
2
+ /**
3
+ * Mock LLM provider for testing
4
+ * Returns predefined responses based on input patterns
5
+ */
6
+ export declare class MockLLMProvider implements LLMProvider {
7
+ readonly name = "mock";
8
+ private responses;
9
+ constructor();
10
+ /**
11
+ * Add a custom response pattern
12
+ */
13
+ addResponse(pattern: RegExp, response: string): void;
14
+ /**
15
+ * Generate a completion (mock)
16
+ */
17
+ complete(messages: Message[], _options?: CompletionOptions): Promise<string>;
18
+ }
19
+ /**
20
+ * Create a mock provider for testing
21
+ */
22
+ export declare function createMockProvider(): MockLLMProvider;
23
+ //# sourceMappingURL=mock-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-provider.d.ts","sourceRoot":"","sources":["../../src/agents/mock-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;GAGG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,SAAS,CAAkC;;IA8CnD;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIpD;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,OAAO,CAAC,MAAM,CAAC;CAiBnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Mock LLM provider for testing
3
+ * Returns predefined responses based on input patterns
4
+ */
5
+ export class MockLLMProvider {
6
+ name = 'mock';
7
+ responses = new Map();
8
+ constructor() {
9
+ // Default mock responses
10
+ this.addResponse(/extract.*strateg/i, `STRATEGY:
11
+ - Situation: When facing a debugging task with unclear error messages
12
+ - Suggestion: Start by reproducing the issue, then use binary search to isolate the problem
13
+ - Parameters: error_message, codebase_size
14
+ - Confidence: 0.7`);
15
+ this.addResponse(/extract.*concept/i, `CONCEPT:
16
+ - Name: error-handler
17
+ - Description: Generic error handling wrapper function
18
+ - Code: \`\`\`typescript
19
+ function handleError<T>(fn: () => T): T | null {
20
+ try {
21
+ return fn();
22
+ } catch (e) {
23
+ console.error(e);
24
+ return null;
25
+ }
26
+ }
27
+ \`\`\`
28
+ - Signature: (() => T) -> T | null`);
29
+ this.addResponse(/extract.*skill|codify.*skill/i, `SKILL:
30
+ - Name: fix-typescript-import-error
31
+ - Problem: Resolve TypeScript module import errors
32
+ - Triggers: Cannot find module, Module not found, TS2307
33
+ - Steps:
34
+ 1. Check if the module is installed in package.json
35
+ 2. Verify the import path is correct
36
+ 3. Check tsconfig.json module resolution settings
37
+ 4. Run npm install or yarn if module is missing
38
+ - Verification: Run tsc --noEmit to verify no import errors`);
39
+ }
40
+ /**
41
+ * Add a custom response pattern
42
+ */
43
+ addResponse(pattern, response) {
44
+ this.responses.set(pattern, response);
45
+ }
46
+ /**
47
+ * Generate a completion (mock)
48
+ */
49
+ async complete(messages, _options) {
50
+ // Get the last user message
51
+ const lastMessage = messages.filter((m) => m.role === 'user').pop();
52
+ if (!lastMessage) {
53
+ return 'No user message found.';
54
+ }
55
+ // Check patterns
56
+ for (const [pattern, response] of this.responses) {
57
+ if (pattern.test(lastMessage.content)) {
58
+ return response;
59
+ }
60
+ }
61
+ // Default response
62
+ return 'No matching pattern found for this request.';
63
+ }
64
+ }
65
+ /**
66
+ * Create a mock provider for testing
67
+ */
68
+ export function createMockProvider() {
69
+ return new MockLLMProvider();
70
+ }
71
+ //# sourceMappingURL=mock-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-provider.js","sourceRoot":"","sources":["../../src/agents/mock-provider.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,MAAM,CAAC;IAEf,SAAS,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEnD;QACE,yBAAyB;QACzB,IAAI,CAAC,WAAW,CACd,mBAAmB,EACnB;;;;kBAIY,CACb,CAAC;QAEF,IAAI,CAAC,WAAW,CACd,mBAAmB,EACnB;;;;;;;;;;;;;mCAa6B,CAC9B,CAAC;QAEF,IAAI,CAAC,WAAW,CACd,+BAA+B,EAC/B;;;;;;;;;4DASsD,CACvD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe,EAAE,QAAgB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAmB,EACnB,QAA4B;QAE5B,4BAA4B;QAC5B,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QACpE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,wBAAwB,CAAC;QAClC,CAAC;QAED,iBAAiB;QACjB,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,OAAO,6CAA6C,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC"}