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
package/dist/index.mjs DELETED
@@ -1,478 +0,0 @@
1
- // src/client.ts
2
- import { spawn } from "child_process";
3
- import { EventEmitter } from "events";
4
- var CognitiveCoreClient = class extends EventEmitter {
5
- process = null;
6
- buffer = "";
7
- pendingRequests = /* @__PURE__ */ new Map();
8
- requestId = 0;
9
- options;
10
- constructor(options = {}) {
11
- super();
12
- this.options = {
13
- pythonPath: options.pythonPath ?? "python",
14
- cwd: options.cwd ?? process.cwd(),
15
- env: options.env ?? {},
16
- timeout: options.timeout ?? 3e4
17
- };
18
- }
19
- /**
20
- * Start the Python subprocess.
21
- */
22
- async start() {
23
- if (this.process) {
24
- throw new Error("Client already started");
25
- }
26
- return new Promise((resolve2, reject) => {
27
- this.process = spawn(
28
- this.options.pythonPath,
29
- ["-m", "cognitive_core.cli", "--json"],
30
- {
31
- cwd: this.options.cwd,
32
- env: { ...process.env, ...this.options.env },
33
- stdio: ["pipe", "pipe", "pipe"]
34
- }
35
- );
36
- this.process.on("error", (error) => {
37
- this.emit("error", error);
38
- reject(error);
39
- });
40
- this.process.on("exit", (code, signal) => {
41
- this.emit("exit", { code, signal });
42
- this.cleanup();
43
- });
44
- this.process.stdout?.on("data", (data) => {
45
- this.handleData(data.toString());
46
- });
47
- this.process.stderr?.on("data", (data) => {
48
- this.emit("stderr", data.toString());
49
- });
50
- setTimeout(async () => {
51
- try {
52
- const response = await this.execute("version");
53
- if (response.version) {
54
- this.emit("ready", response);
55
- resolve2();
56
- } else {
57
- reject(new Error("Failed to verify Python process"));
58
- }
59
- } catch (error) {
60
- reject(error);
61
- }
62
- }, 100);
63
- });
64
- }
65
- /**
66
- * Stop the Python subprocess.
67
- */
68
- async stop() {
69
- if (!this.process) {
70
- return;
71
- }
72
- return new Promise((resolve2) => {
73
- if (this.process) {
74
- this.process.once("exit", () => {
75
- this.cleanup();
76
- resolve2();
77
- });
78
- this.process.stdin?.end();
79
- this.process.kill("SIGTERM");
80
- setTimeout(() => {
81
- if (this.process) {
82
- this.process.kill("SIGKILL");
83
- }
84
- resolve2();
85
- }, 5e3);
86
- } else {
87
- resolve2();
88
- }
89
- });
90
- }
91
- /**
92
- * Execute a command on the Python process.
93
- *
94
- * @param command - Command to execute (e.g., "memory.search", "env.reset")
95
- * @param args - Command arguments
96
- * @returns Command result
97
- */
98
- async execute(command, args = {}) {
99
- if (!this.process?.stdin) {
100
- throw new Error("Client not started. Call start() first.");
101
- }
102
- const request = { command, args };
103
- const response = await this.sendRequest(request);
104
- if (!response.success) {
105
- throw new Error(response.error ?? "Unknown error");
106
- }
107
- return response.result;
108
- }
109
- /**
110
- * Check if the client is running.
111
- */
112
- get isRunning() {
113
- return this.process !== null && !this.process.killed;
114
- }
115
- sendRequest(request) {
116
- return new Promise((resolve2, reject) => {
117
- const id = this.requestId++;
118
- const json = JSON.stringify(request);
119
- const timeout = setTimeout(() => {
120
- this.pendingRequests.delete(id);
121
- reject(new Error(`Command timed out: ${request.command}`));
122
- }, this.options.timeout);
123
- this.pendingRequests.set(id, { resolve: resolve2, reject, timeout });
124
- this.process?.stdin?.write(json + "\n");
125
- });
126
- }
127
- handleData(data) {
128
- this.buffer += data;
129
- const lines = this.buffer.split("\n");
130
- this.buffer = lines.pop() ?? "";
131
- for (const line of lines) {
132
- if (line.trim()) {
133
- try {
134
- const response = JSON.parse(line);
135
- this.handleResponse(response);
136
- } catch (error) {
137
- this.emit("parseError", { line, error });
138
- }
139
- }
140
- }
141
- }
142
- handleResponse(response) {
143
- const [id, pending] = this.pendingRequests.entries().next().value ?? [
144
- null,
145
- null
146
- ];
147
- if (id !== null && pending) {
148
- clearTimeout(pending.timeout);
149
- this.pendingRequests.delete(id);
150
- pending.resolve(response);
151
- }
152
- }
153
- cleanup() {
154
- for (const [id, pending] of this.pendingRequests) {
155
- clearTimeout(pending.timeout);
156
- pending.reject(new Error("Process terminated"));
157
- }
158
- this.pendingRequests.clear();
159
- this.process = null;
160
- this.buffer = "";
161
- }
162
- };
163
-
164
- // src/setup.ts
165
- import { spawn as spawn2, execSync } from "child_process";
166
- import { existsSync, mkdirSync } from "fs";
167
- import { join, resolve } from "path";
168
- import { platform } from "os";
169
- function findPython(preferredPath) {
170
- const candidates = preferredPath ? [preferredPath] : platform() === "win32" ? ["python", "python3", "py"] : ["python3", "python"];
171
- for (const cmd of candidates) {
172
- try {
173
- execSync(`${cmd} --version`, { stdio: "pipe" });
174
- return cmd;
175
- } catch {
176
- continue;
177
- }
178
- }
179
- throw new Error(
180
- "Python not found. Please install Python 3.10+ and ensure it's in your PATH.\nDownload from: https://www.python.org/downloads/"
181
- );
182
- }
183
- function getVenvPaths(venvDir) {
184
- const isWindows = platform() === "win32";
185
- const binDir = isWindows ? "Scripts" : "bin";
186
- const ext = isWindows ? ".exe" : "";
187
- return {
188
- python: join(venvDir, binDir, `python${ext}`),
189
- pip: join(venvDir, binDir, `pip${ext}`)
190
- };
191
- }
192
- function runCommand(command, args, options = {}) {
193
- return new Promise((resolve2, reject) => {
194
- const proc = spawn2(command, args, {
195
- cwd: options.cwd,
196
- stdio: options.verbose ? "inherit" : "pipe",
197
- shell: platform() === "win32"
198
- });
199
- let output = "";
200
- if (!options.verbose) {
201
- proc.stdout?.on("data", (data) => {
202
- output += data.toString();
203
- });
204
- proc.stderr?.on("data", (data) => {
205
- output += data.toString();
206
- });
207
- }
208
- proc.on("error", reject);
209
- proc.on("close", (code) => {
210
- if (code === 0) {
211
- resolve2(output);
212
- } else {
213
- reject(new Error(`Command failed with code ${code}: ${command} ${args.join(" ")}
214
- ${output}`));
215
- }
216
- });
217
- });
218
- }
219
- async function getInstalledVersion(pythonPath) {
220
- try {
221
- const output = await runCommand(pythonPath, [
222
- "-c",
223
- "import cognitive_core; print(cognitive_core.__version__)"
224
- ]);
225
- return output.trim();
226
- } catch {
227
- return null;
228
- }
229
- }
230
- async function setup(options = {}) {
231
- const {
232
- venvDir = ".cognitive-core",
233
- pythonPath: preferredPython,
234
- version,
235
- extras = [],
236
- verbose = true
237
- } = options;
238
- const venvPath = resolve(venvDir);
239
- const log = verbose ? console.log.bind(console) : () => {
240
- };
241
- log("\u{1F50D} Finding Python...");
242
- const systemPython = findPython(preferredPython);
243
- log(` Found: ${systemPython}`);
244
- const versionOutput = execSync(`${systemPython} --version`, { encoding: "utf-8" });
245
- const versionMatch = versionOutput.match(/Python (\d+)\.(\d+)/);
246
- if (versionMatch) {
247
- const [, major, minor] = versionMatch;
248
- if (parseInt(major) < 3 || parseInt(major) === 3 && parseInt(minor) < 10) {
249
- throw new Error(
250
- `Python 3.10+ required, found ${versionOutput.trim()}.
251
- Please upgrade Python: https://www.python.org/downloads/`
252
- );
253
- }
254
- }
255
- const venvPaths = getVenvPaths(venvPath);
256
- const venvExists = existsSync(venvPaths.python);
257
- let created = false;
258
- if (!venvExists) {
259
- log("\u{1F4E6} Creating virtual environment...");
260
- mkdirSync(venvPath, { recursive: true });
261
- await runCommand(systemPython, ["-m", "venv", venvPath], { verbose });
262
- created = true;
263
- log(` Created: ${venvPath}`);
264
- } else {
265
- log(`\u{1F4E6} Using existing virtual environment: ${venvPath}`);
266
- }
267
- let installedVersion = await getInstalledVersion(venvPaths.python);
268
- if (!installedVersion) {
269
- log("\u2B07\uFE0F Installing cognitive-core...");
270
- let packageSpec = "cognitive-core";
271
- if (version) {
272
- packageSpec += `==${version}`;
273
- }
274
- if (extras.length > 0) {
275
- packageSpec += `[${extras.join(",")}]`;
276
- }
277
- await runCommand(
278
- venvPaths.pip,
279
- ["install", "--upgrade", "pip"],
280
- { verbose }
281
- );
282
- await runCommand(
283
- venvPaths.pip,
284
- ["install", packageSpec],
285
- { verbose }
286
- );
287
- installedVersion = await getInstalledVersion(venvPaths.python);
288
- log(` Installed: cognitive-core ${installedVersion}`);
289
- } else {
290
- log(`\u2705 cognitive-core ${installedVersion} already installed`);
291
- }
292
- log("");
293
- log("\u{1F389} Setup complete!");
294
- log(` Python: ${venvPaths.python}`);
295
- log(` Version: ${installedVersion}`);
296
- log("");
297
- return {
298
- venvPath,
299
- pythonPath: venvPaths.python,
300
- pipPath: venvPaths.pip,
301
- created,
302
- version: installedVersion ?? "unknown"
303
- };
304
- }
305
- function isSetUp(venvDir = ".cognitive-core") {
306
- const venvPath = resolve(venvDir);
307
- const venvPaths = getVenvPaths(venvPath);
308
- return existsSync(venvPaths.python);
309
- }
310
- function getPythonPath(venvDir = ".cognitive-core") {
311
- const venvPath = resolve(venvDir);
312
- const venvPaths = getVenvPaths(venvPath);
313
- return existsSync(venvPaths.python) ? venvPaths.python : null;
314
- }
315
-
316
- // src/index.ts
317
- var EnvironmentAPI = class {
318
- constructor(client) {
319
- this.client = client;
320
- }
321
- /**
322
- * Create a new environment.
323
- */
324
- async create(domain = "passthrough") {
325
- const result = await this.client.execute(
326
- "env.create",
327
- { domain }
328
- );
329
- return { envId: result.env_id, domain: result.domain };
330
- }
331
- /**
332
- * Reset an environment with a task.
333
- */
334
- async reset(envId, task) {
335
- const result = await this.client.execute(
336
- "env.reset",
337
- { env_id: envId, task }
338
- );
339
- return { envId: result.env_id, observation: result.observation };
340
- }
341
- /**
342
- * Execute an action in the environment.
343
- */
344
- async step(envId, action) {
345
- return this.client.execute("env.step", { env_id: envId, action });
346
- }
347
- /**
348
- * Verify a solution.
349
- */
350
- async verify(envId, solution) {
351
- const result = await this.client.execute("env.verify", { env_id: envId, solution });
352
- return {
353
- success: result.success,
354
- partialScore: result.partial_score,
355
- verificationDetails: result.details
356
- };
357
- }
358
- };
359
- var MemoryAPI = class {
360
- constructor(client) {
361
- this.client = client;
362
- }
363
- /**
364
- * Search for similar experiences.
365
- */
366
- async searchExperiences(query, k = 5) {
367
- const result = await this.client.execute(
368
- "memory.search",
369
- { query, k, type: "experience" }
370
- );
371
- return result.experiences ?? [];
372
- }
373
- /**
374
- * Search for relevant strategies.
375
- */
376
- async searchStrategies(query, k = 5) {
377
- const result = await this.client.execute(
378
- "memory.search",
379
- { query, k, type: "strategy" }
380
- );
381
- return result.strategies ?? [];
382
- }
383
- /**
384
- * Search for relevant concepts.
385
- */
386
- async searchConcepts(query, k = 5) {
387
- const result = await this.client.execute(
388
- "memory.search",
389
- { query, k, type: "concept" }
390
- );
391
- return result.concepts ?? [];
392
- }
393
- /**
394
- * Store a trajectory in memory.
395
- */
396
- async store(trajectory) {
397
- return this.client.execute("memory.store", { trajectory });
398
- }
399
- };
400
- var SearchAPI = class {
401
- constructor(client) {
402
- this.client = client;
403
- }
404
- /**
405
- * Solve a task using the configured search strategy.
406
- */
407
- async solve(task) {
408
- return this.client.execute("search.solve", { task });
409
- }
410
- };
411
- var CognitiveCore = class {
412
- client;
413
- /**
414
- * Environment operations (create, reset, step, verify)
415
- */
416
- env;
417
- /**
418
- * Memory operations (search, store)
419
- */
420
- memory;
421
- /**
422
- * Search operations (solve)
423
- */
424
- search;
425
- constructor(options = {}) {
426
- let pythonPath = options.pythonPath;
427
- if (!pythonPath) {
428
- const venvPython = getPythonPath();
429
- if (venvPython) {
430
- pythonPath = venvPython;
431
- }
432
- }
433
- this.client = new CognitiveCoreClient({ ...options, pythonPath });
434
- this.env = new EnvironmentAPI(this.client);
435
- this.memory = new MemoryAPI(this.client);
436
- this.search = new SearchAPI(this.client);
437
- }
438
- /**
439
- * Start the Python subprocess.
440
- */
441
- async start() {
442
- await this.client.start();
443
- }
444
- /**
445
- * Stop the Python subprocess.
446
- */
447
- async stop() {
448
- await this.client.stop();
449
- }
450
- /**
451
- * Get the version of the Python cognitive-core package.
452
- */
453
- async version() {
454
- const result = await this.client.execute("version");
455
- return result.version;
456
- }
457
- /**
458
- * Check if the client is running.
459
- */
460
- get isRunning() {
461
- return this.client.isRunning;
462
- }
463
- /**
464
- * Access the underlying client for advanced usage.
465
- */
466
- get rawClient() {
467
- return this.client;
468
- }
469
- };
470
- var index_default = CognitiveCore;
471
- export {
472
- CognitiveCore,
473
- CognitiveCoreClient,
474
- index_default as default,
475
- getPythonPath,
476
- isSetUp,
477
- setup
478
- };