@ai.ntellect/core 1.0.0 → 1.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 (435) hide show
  1. package/.mocharc.json +6 -0
  2. package/AGENTS.md +50 -0
  3. package/ARCHITECTURE.md +58 -0
  4. package/BENCHMARK.md +38 -0
  5. package/CHANGELOG.md +224 -0
  6. package/README.md +411 -142
  7. package/agent/agent-workflow.ts +569 -0
  8. package/agent/agent.ts +183 -0
  9. package/agent/base/executor.ts +103 -0
  10. package/agent/base/index.ts +87 -0
  11. package/agent/entity-resolver/confidence.ts +54 -0
  12. package/agent/entity-resolver/entity-index.ts +241 -0
  13. package/agent/entity-resolver/explore-strategy.ts +82 -0
  14. package/agent/entity-resolver/index.ts +22 -0
  15. package/agent/entity-resolver/resolver.ts +193 -0
  16. package/agent/entity-resolver/scorer.ts +211 -0
  17. package/agent/entity-resolver/types.ts +98 -0
  18. package/agent/generic-executor.ts +713 -0
  19. package/agent/handlers/cognitive-handler.ts +197 -0
  20. package/agent/handlers/index.ts +1 -0
  21. package/agent/handoff.ts +58 -0
  22. package/agent/llm-factory.ts +343 -0
  23. package/agent/orchestrator.ts +45 -0
  24. package/agent/prompt-builder.ts +78 -0
  25. package/agent/registry.ts +64 -0
  26. package/agent/tools/file-system.ts +471 -0
  27. package/agent/tools/index.ts +23 -0
  28. package/agent/tools/logger.ts +105 -0
  29. package/agent/tools/tool-resolver.ts +104 -0
  30. package/benchmark/cortexflow-workflow.ts +182 -0
  31. package/benchmark/langgraph-workflow.ts +201 -0
  32. package/benchmark/llm-client.ts +76 -0
  33. package/benchmark/run-benchmark.ts +222 -0
  34. package/cli-dev.ts +419 -0
  35. package/dist/agent/agent-workflow.d.ts +41 -0
  36. package/dist/agent/agent-workflow.d.ts.map +1 -0
  37. package/dist/agent/agent-workflow.js +560 -0
  38. package/dist/agent/agent-workflow.js.map +1 -0
  39. package/dist/agent/agent.d.ts +38 -0
  40. package/dist/agent/agent.d.ts.map +1 -0
  41. package/dist/agent/agent.js +149 -0
  42. package/dist/agent/agent.js.map +1 -0
  43. package/dist/agent/base/executor.d.ts +51 -0
  44. package/dist/agent/base/executor.d.ts.map +1 -0
  45. package/dist/agent/base/executor.js +69 -0
  46. package/dist/agent/base/executor.js.map +1 -0
  47. package/dist/agent/base/index.d.ts +30 -0
  48. package/dist/agent/base/index.d.ts.map +1 -0
  49. package/dist/agent/base/index.js +88 -0
  50. package/dist/agent/base/index.js.map +1 -0
  51. package/dist/agent/entity-resolver/confidence.d.ts +4 -0
  52. package/dist/agent/entity-resolver/confidence.d.ts.map +1 -0
  53. package/dist/agent/entity-resolver/confidence.js +47 -0
  54. package/dist/agent/entity-resolver/confidence.js.map +1 -0
  55. package/dist/agent/entity-resolver/entity-index.d.ts +40 -0
  56. package/dist/agent/entity-resolver/entity-index.d.ts.map +1 -0
  57. package/dist/agent/entity-resolver/entity-index.js +244 -0
  58. package/dist/agent/entity-resolver/entity-index.js.map +1 -0
  59. package/dist/agent/entity-resolver/explore-strategy.d.ts +13 -0
  60. package/dist/agent/entity-resolver/explore-strategy.d.ts.map +1 -0
  61. package/dist/agent/entity-resolver/explore-strategy.js +109 -0
  62. package/dist/agent/entity-resolver/explore-strategy.js.map +1 -0
  63. package/dist/agent/entity-resolver/index.d.ts +8 -0
  64. package/dist/agent/entity-resolver/index.d.ts.map +1 -0
  65. package/dist/agent/entity-resolver/index.js +16 -0
  66. package/dist/agent/entity-resolver/index.js.map +1 -0
  67. package/dist/agent/entity-resolver/resolver.d.ts +18 -0
  68. package/dist/agent/entity-resolver/resolver.d.ts.map +1 -0
  69. package/dist/agent/entity-resolver/resolver.js +158 -0
  70. package/dist/agent/entity-resolver/resolver.js.map +1 -0
  71. package/dist/agent/entity-resolver/scorer.d.ts +3 -0
  72. package/dist/agent/entity-resolver/scorer.d.ts.map +1 -0
  73. package/dist/agent/entity-resolver/scorer.js +182 -0
  74. package/dist/agent/entity-resolver/scorer.js.map +1 -0
  75. package/dist/agent/entity-resolver/types.d.ts +89 -0
  76. package/dist/agent/entity-resolver/types.d.ts.map +1 -0
  77. package/dist/agent/entity-resolver/types.js +3 -0
  78. package/dist/agent/entity-resolver/types.js.map +1 -0
  79. package/dist/agent/generic-executor.d.ts +68 -0
  80. package/dist/agent/generic-executor.d.ts.map +1 -0
  81. package/dist/agent/generic-executor.js +620 -0
  82. package/dist/agent/generic-executor.js.map +1 -0
  83. package/dist/agent/handlers/cognitive-handler.d.ts +44 -0
  84. package/dist/agent/handlers/cognitive-handler.d.ts.map +1 -0
  85. package/dist/agent/handlers/cognitive-handler.js +172 -0
  86. package/dist/agent/handlers/cognitive-handler.js.map +1 -0
  87. package/dist/agent/handlers/index.d.ts +2 -0
  88. package/dist/agent/handlers/index.d.ts.map +1 -0
  89. package/dist/agent/handlers/index.js +7 -0
  90. package/dist/agent/handlers/index.js.map +1 -0
  91. package/dist/agent/handoff.d.ts +12 -0
  92. package/dist/agent/handoff.d.ts.map +1 -0
  93. package/dist/agent/handoff.js +62 -0
  94. package/dist/agent/handoff.js.map +1 -0
  95. package/dist/agent/llm-factory.d.ts +19 -0
  96. package/dist/agent/llm-factory.d.ts.map +1 -0
  97. package/dist/agent/llm-factory.js +297 -0
  98. package/dist/agent/llm-factory.js.map +1 -0
  99. package/dist/agent/orchestrator.d.ts +18 -0
  100. package/dist/agent/orchestrator.d.ts.map +1 -0
  101. package/dist/agent/orchestrator.js +44 -0
  102. package/dist/agent/orchestrator.js.map +1 -0
  103. package/dist/agent/prompt-builder.d.ts +35 -0
  104. package/dist/agent/prompt-builder.d.ts.map +1 -0
  105. package/dist/agent/prompt-builder.js +76 -0
  106. package/dist/agent/prompt-builder.js.map +1 -0
  107. package/dist/agent/registry.d.ts +19 -0
  108. package/dist/agent/registry.d.ts.map +1 -0
  109. package/dist/agent/registry.js +48 -0
  110. package/dist/agent/registry.js.map +1 -0
  111. package/dist/agent/tools/file-system.d.ts +11 -0
  112. package/dist/agent/tools/file-system.d.ts.map +1 -0
  113. package/dist/agent/tools/file-system.js +528 -0
  114. package/dist/agent/tools/file-system.js.map +1 -0
  115. package/dist/agent/tools/index.d.ts +4 -0
  116. package/dist/agent/tools/index.d.ts.map +1 -0
  117. package/dist/agent/tools/index.js +20 -0
  118. package/dist/agent/tools/index.js.map +1 -0
  119. package/dist/agent/tools/logger.d.ts +33 -0
  120. package/dist/agent/tools/logger.d.ts.map +1 -0
  121. package/dist/agent/tools/logger.js +86 -0
  122. package/dist/agent/tools/logger.js.map +1 -0
  123. package/dist/agent/tools/tool-resolver.d.ts +7 -0
  124. package/dist/agent/tools/tool-resolver.d.ts.map +1 -0
  125. package/dist/agent/tools/tool-resolver.js +122 -0
  126. package/dist/agent/tools/tool-resolver.js.map +1 -0
  127. package/dist/execution/adapters/in-memory-checkpoint.d.ts +11 -0
  128. package/dist/execution/adapters/in-memory-checkpoint.d.ts.map +1 -0
  129. package/dist/execution/adapters/in-memory-checkpoint.js +54 -0
  130. package/dist/execution/adapters/in-memory-checkpoint.js.map +1 -0
  131. package/dist/execution/compiler.d.ts +8 -0
  132. package/dist/execution/compiler.d.ts.map +1 -0
  133. package/dist/execution/compiler.js +50 -0
  134. package/dist/execution/compiler.js.map +1 -0
  135. package/dist/execution/controller.d.ts +30 -0
  136. package/dist/execution/controller.d.ts.map +1 -0
  137. package/dist/execution/controller.js +80 -0
  138. package/dist/execution/controller.js.map +1 -0
  139. package/dist/execution/event-manager.d.ts +29 -0
  140. package/dist/execution/event-manager.d.ts.map +1 -0
  141. package/dist/execution/event-manager.js +264 -0
  142. package/dist/execution/event-manager.js.map +1 -0
  143. package/dist/execution/index.d.ts +221 -0
  144. package/dist/execution/index.d.ts.map +1 -0
  145. package/dist/execution/index.js +638 -0
  146. package/dist/execution/index.js.map +1 -0
  147. package/dist/execution/logger.d.ts +46 -0
  148. package/dist/execution/logger.d.ts.map +1 -0
  149. package/dist/execution/logger.js +69 -0
  150. package/dist/execution/logger.js.map +1 -0
  151. package/dist/execution/node.d.ts +65 -0
  152. package/dist/execution/node.d.ts.map +1 -0
  153. package/dist/execution/node.js +250 -0
  154. package/dist/execution/node.js.map +1 -0
  155. package/dist/execution/observer.d.ts +38 -0
  156. package/dist/execution/observer.d.ts.map +1 -0
  157. package/dist/execution/observer.js +111 -0
  158. package/dist/execution/observer.js.map +1 -0
  159. package/dist/execution/planner.d.ts +14 -0
  160. package/dist/execution/planner.d.ts.map +1 -0
  161. package/dist/execution/planner.js +43 -0
  162. package/dist/execution/planner.js.map +1 -0
  163. package/dist/execution/reducer.d.ts +19 -0
  164. package/dist/execution/reducer.d.ts.map +1 -0
  165. package/dist/execution/reducer.js +61 -0
  166. package/dist/execution/reducer.js.map +1 -0
  167. package/dist/execution/registry.d.ts +38 -0
  168. package/dist/execution/registry.d.ts.map +1 -0
  169. package/dist/execution/registry.js +63 -0
  170. package/dist/execution/registry.js.map +1 -0
  171. package/dist/execution/send-api.d.ts +24 -0
  172. package/dist/execution/send-api.d.ts.map +1 -0
  173. package/dist/execution/send-api.js +52 -0
  174. package/dist/execution/send-api.js.map +1 -0
  175. package/dist/execution/types.parallel.d.ts +61 -0
  176. package/dist/execution/types.parallel.d.ts.map +1 -0
  177. package/dist/execution/types.parallel.js +3 -0
  178. package/dist/execution/types.parallel.js.map +1 -0
  179. package/dist/execution/visualizer.d.ts +35 -0
  180. package/dist/execution/visualizer.d.ts.map +1 -0
  181. package/dist/execution/visualizer.js +131 -0
  182. package/dist/execution/visualizer.js.map +1 -0
  183. package/dist/index.d.ts +47 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +78 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/interfaces/index.d.ts +487 -0
  188. package/dist/interfaces/index.d.ts.map +1 -0
  189. package/dist/interfaces/index.js +75 -0
  190. package/dist/interfaces/index.js.map +1 -0
  191. package/dist/modules/agenda/adapters/node-cron/index.d.ts +17 -0
  192. package/dist/modules/agenda/adapters/node-cron/index.d.ts.map +1 -0
  193. package/dist/modules/agenda/adapters/node-cron/index.js +30 -0
  194. package/dist/modules/agenda/adapters/node-cron/index.js.map +1 -0
  195. package/dist/modules/agenda/index.d.ts +63 -0
  196. package/dist/modules/agenda/index.d.ts.map +1 -0
  197. package/dist/modules/agenda/index.js +141 -0
  198. package/dist/modules/agenda/index.js.map +1 -0
  199. package/dist/modules/cli/index.d.ts +13 -0
  200. package/dist/modules/cli/index.d.ts.map +1 -0
  201. package/dist/modules/cli/index.js +672 -0
  202. package/dist/modules/cli/index.js.map +1 -0
  203. package/dist/modules/embedding/adapters/ai/index.d.ts +29 -0
  204. package/dist/modules/embedding/adapters/ai/index.d.ts.map +1 -0
  205. package/dist/modules/embedding/adapters/ai/index.js +58 -0
  206. package/dist/modules/embedding/adapters/ai/index.js.map +1 -0
  207. package/dist/modules/embedding/index.d.ts +36 -0
  208. package/dist/modules/embedding/index.d.ts.map +1 -0
  209. package/dist/modules/embedding/index.js +60 -0
  210. package/dist/modules/embedding/index.js.map +1 -0
  211. package/dist/modules/nlp/engine.d.ts +126 -0
  212. package/dist/modules/nlp/engine.d.ts.map +1 -0
  213. package/dist/modules/nlp/engine.js +299 -0
  214. package/dist/modules/nlp/engine.js.map +1 -0
  215. package/dist/modules/nlp/index.d.ts +27 -0
  216. package/dist/modules/nlp/index.d.ts.map +1 -0
  217. package/dist/modules/nlp/index.js +56 -0
  218. package/dist/modules/nlp/index.js.map +1 -0
  219. package/dist/persistence/index.d.ts +12 -0
  220. package/dist/persistence/index.d.ts.map +1 -0
  221. package/dist/persistence/index.js +24 -0
  222. package/dist/persistence/index.js.map +1 -0
  223. package/dist/persistence/neo4j/driver.d.ts +26 -0
  224. package/dist/persistence/neo4j/driver.d.ts.map +1 -0
  225. package/dist/persistence/neo4j/driver.js +64 -0
  226. package/dist/persistence/neo4j/driver.js.map +1 -0
  227. package/dist/persistence/neo4j/entity-store.d.ts +15 -0
  228. package/dist/persistence/neo4j/entity-store.d.ts.map +1 -0
  229. package/dist/persistence/neo4j/entity-store.js +136 -0
  230. package/dist/persistence/neo4j/entity-store.js.map +1 -0
  231. package/dist/persistence/neo4j/execution-tracer.d.ts +19 -0
  232. package/dist/persistence/neo4j/execution-tracer.d.ts.map +1 -0
  233. package/dist/persistence/neo4j/execution-tracer.js +166 -0
  234. package/dist/persistence/neo4j/execution-tracer.js.map +1 -0
  235. package/dist/persistence/neo4j/memory-adapter.d.ts +35 -0
  236. package/dist/persistence/neo4j/memory-adapter.d.ts.map +1 -0
  237. package/dist/persistence/neo4j/memory-adapter.js +252 -0
  238. package/dist/persistence/neo4j/memory-adapter.js.map +1 -0
  239. package/dist/persistence/neo4j/petri-checkpoint-adapter.d.ts +22 -0
  240. package/dist/persistence/neo4j/petri-checkpoint-adapter.d.ts.map +1 -0
  241. package/dist/persistence/neo4j/petri-checkpoint-adapter.js +141 -0
  242. package/dist/persistence/neo4j/petri-checkpoint-adapter.js.map +1 -0
  243. package/dist/pipeline/agent-pipeline.d.ts +99 -0
  244. package/dist/pipeline/agent-pipeline.d.ts.map +1 -0
  245. package/dist/pipeline/agent-pipeline.js +356 -0
  246. package/dist/pipeline/agent-pipeline.js.map +1 -0
  247. package/dist/routing/checkpoint-adapter.d.ts +30 -0
  248. package/dist/routing/checkpoint-adapter.d.ts.map +1 -0
  249. package/dist/routing/checkpoint-adapter.js +83 -0
  250. package/dist/routing/checkpoint-adapter.js.map +1 -0
  251. package/dist/routing/documentation-generator.d.ts +47 -0
  252. package/dist/routing/documentation-generator.d.ts.map +1 -0
  253. package/dist/routing/documentation-generator.js +320 -0
  254. package/dist/routing/documentation-generator.js.map +1 -0
  255. package/dist/routing/index.d.ts +38 -0
  256. package/dist/routing/index.d.ts.map +1 -0
  257. package/dist/routing/index.js +375 -0
  258. package/dist/routing/index.js.map +1 -0
  259. package/dist/routing/intent-classifier.d.ts +206 -0
  260. package/dist/routing/intent-classifier.d.ts.map +1 -0
  261. package/dist/routing/intent-classifier.js +267 -0
  262. package/dist/routing/intent-classifier.js.map +1 -0
  263. package/dist/routing/matrix.d.ts +6 -0
  264. package/dist/routing/matrix.d.ts.map +1 -0
  265. package/dist/routing/matrix.js +131 -0
  266. package/dist/routing/matrix.js.map +1 -0
  267. package/dist/routing/orchestrator.d.ts +87 -0
  268. package/dist/routing/orchestrator.d.ts.map +1 -0
  269. package/dist/routing/orchestrator.js +425 -0
  270. package/dist/routing/orchestrator.js.map +1 -0
  271. package/dist/routing/postgres-checkpoint-adapter.d.ts +32 -0
  272. package/dist/routing/postgres-checkpoint-adapter.d.ts.map +1 -0
  273. package/dist/routing/postgres-checkpoint-adapter.js +167 -0
  274. package/dist/routing/postgres-checkpoint-adapter.js.map +1 -0
  275. package/dist/routing/redis-checkpoint-adapter.d.ts +34 -0
  276. package/dist/routing/redis-checkpoint-adapter.d.ts.map +1 -0
  277. package/dist/routing/redis-checkpoint-adapter.js +170 -0
  278. package/dist/routing/redis-checkpoint-adapter.js.map +1 -0
  279. package/dist/routing/types.d.ts +49 -0
  280. package/dist/routing/types.d.ts.map +1 -0
  281. package/dist/routing/types.js +3 -0
  282. package/dist/routing/types.js.map +1 -0
  283. package/dist/types/agent.d.ts +289 -0
  284. package/dist/types/agent.d.ts.map +1 -0
  285. package/dist/types/agent.js +78 -0
  286. package/dist/types/agent.js.map +1 -0
  287. package/dist/types/index.d.ts +343 -0
  288. package/dist/types/index.d.ts.map +1 -0
  289. package/dist/types/index.js +3 -0
  290. package/dist/types/index.js.map +1 -0
  291. package/dist/utils/generate-action-schema.d.ts +4 -0
  292. package/dist/utils/generate-action-schema.d.ts.map +1 -0
  293. package/dist/utils/generate-action-schema.js +46 -0
  294. package/dist/utils/generate-action-schema.js.map +1 -0
  295. package/dist/utils/header-builder.d.ts +12 -0
  296. package/dist/utils/header-builder.d.ts.map +1 -0
  297. package/dist/utils/header-builder.js +35 -0
  298. package/dist/utils/header-builder.js.map +1 -0
  299. package/dist/utils/logger.d.ts +27 -0
  300. package/dist/utils/logger.d.ts.map +1 -0
  301. package/dist/utils/logger.js +45 -0
  302. package/dist/utils/logger.js.map +1 -0
  303. package/docs/.gitbook/assets/image (1).png +0 -0
  304. package/docs/.gitbook/assets/image (2).png +0 -0
  305. package/docs/.gitbook/assets/image (3).png +0 -0
  306. package/docs/.gitbook/assets/image (4).png +0 -0
  307. package/docs/.gitbook/assets/image (5).png +0 -0
  308. package/docs/.gitbook/assets/image (6).png +0 -0
  309. package/docs/.gitbook/assets/image.png +0 -0
  310. package/docs/README.md +57 -0
  311. package/docs/SUMMARY.md +34 -0
  312. package/docs/cas-dusages.md +69 -0
  313. package/docs/cli/README.md +65 -0
  314. package/docs/concepts-cles.md +50 -0
  315. package/docs/core/architecture.md +87 -0
  316. package/docs/core/benchmark.md +59 -0
  317. package/docs/core/checkpoint.md +72 -0
  318. package/docs/core/documentation.md +55 -0
  319. package/docs/core/graphcontroller.md +63 -0
  320. package/docs/core/graphflow.md +137 -0
  321. package/docs/core/introduction.md +41 -0
  322. package/docs/core/les-evenements.md +95 -0
  323. package/docs/modules/agenda/README.md +63 -0
  324. package/docs/modules/agenda/interface-iagenda.md +170 -0
  325. package/docs/modules/agenda/les-adaptateurs/README.md +237 -0
  326. package/docs/modules/agenda/les-adaptateurs/nodecronadapter.md +91 -0
  327. package/docs/modules/introduction.md +55 -0
  328. package/docs/modules/les-adaptateurs.md +52 -0
  329. package/docs/modules/memoire/README.md +68 -0
  330. package/docs/modules/memoire/interface-imemory.md +183 -0
  331. package/docs/modules/memoire/les-adaptateurs/README.md +209 -0
  332. package/docs/modules/memoire/les-adaptateurs/inmemoryadapter.md +110 -0
  333. package/docs/modules/memoire/les-adaptateurs/meilisearchadapter.md +147 -0
  334. package/docs/modules/memoire/les-adaptateurs/redisadapter.md +212 -0
  335. package/docs/modules/nlp/README.md +44 -0
  336. package/docs/philosophie.md +51 -0
  337. package/docs/tutoriels/ajouter-des-conditions.md +150 -0
  338. package/docs/tutoriels/branching.md +194 -0
  339. package/docs/tutoriels/checkpoint-usage.md +99 -0
  340. package/docs/tutoriels/creer-agent-onchain.md +1041 -0
  341. package/docs/tutoriels/creer-un-agent.md +108 -0
  342. package/docs/tutoriels/creer-un-graphe-simple.md +92 -0
  343. package/docs/tutoriels/gerer-les-erreurs.md +124 -0
  344. package/docs/tutoriels/pour-commencer.md +73 -0
  345. package/docs/tutoriels/retry.md +166 -0
  346. package/execution/adapters/in-memory-checkpoint.ts +35 -0
  347. package/execution/compiler.ts +47 -0
  348. package/execution/controller.ts +84 -0
  349. package/execution/event-manager.ts +331 -0
  350. package/execution/index.ts +800 -0
  351. package/execution/logger.ts +70 -0
  352. package/execution/node.ts +315 -0
  353. package/execution/observer.ts +192 -0
  354. package/execution/planner.ts +40 -0
  355. package/execution/reducer.ts +73 -0
  356. package/execution/registry.ts +86 -0
  357. package/execution/send-api.ts +58 -0
  358. package/execution/types.parallel.ts +81 -0
  359. package/execution/visualizer.ts +158 -0
  360. package/index.ts +55 -465
  361. package/interfaces/index.ts +597 -0
  362. package/modules/agenda/adapters/node-cron/index.ts +25 -0
  363. package/modules/agenda/index.ts +146 -0
  364. package/modules/cli/index.ts +580 -0
  365. package/modules/embedding/adapters/ai/index.ts +42 -0
  366. package/modules/embedding/index.ts +45 -0
  367. package/modules/nlp/engine.ts +324 -0
  368. package/modules/nlp/index.ts +45 -0
  369. package/package.json +81 -9
  370. package/persistence/index.ts +27 -0
  371. package/persistence/neo4j/driver.ts +34 -0
  372. package/persistence/neo4j/entity-store.ts +141 -0
  373. package/persistence/neo4j/execution-tracer.ts +194 -0
  374. package/persistence/neo4j/memory-adapter.ts +281 -0
  375. package/persistence/neo4j/petri-checkpoint-adapter.ts +153 -0
  376. package/pipeline/agent-pipeline.ts +426 -0
  377. package/routing/checkpoint-adapter.ts +79 -0
  378. package/routing/documentation-generator.ts +358 -0
  379. package/routing/index.ts +459 -0
  380. package/routing/intent-classifier.ts +360 -0
  381. package/routing/matrix.ts +138 -0
  382. package/routing/orchestrator.ts +498 -0
  383. package/routing/patterns/data-extraction.json +79 -0
  384. package/routing/patterns/human-approval.json +64 -0
  385. package/routing/patterns/rag-search.json +68 -0
  386. package/routing/postgres-checkpoint-adapter.ts +172 -0
  387. package/routing/redis-checkpoint-adapter.ts +187 -0
  388. package/routing/types.ts +59 -0
  389. package/routing/web-server.ts +260 -0
  390. package/scripts/generate-petri-docs.ts +70 -0
  391. package/scripts/get-gmail-token.js +65 -0
  392. package/scripts/get-gmail-token.ts +65 -0
  393. package/test/agent/agent.test.ts +92 -0
  394. package/test/agent/clone.test.ts +143 -0
  395. package/test/agent/cognitive-handler.test.ts +78 -0
  396. package/test/agent/entity-store.test.ts +80 -0
  397. package/test/agent/generic-executor.test.ts +230 -0
  398. package/test/agent/handoff.test.ts +163 -0
  399. package/test/agent/llm-factory.test.ts +40 -0
  400. package/test/agent/orchestrator.test.ts +156 -0
  401. package/test/agent/registry.test.ts +97 -0
  402. package/test/agent/tools.test.ts +267 -0
  403. package/test/execution/checkpoint.test.ts +811 -0
  404. package/test/execution/controller.test.ts +236 -0
  405. package/test/execution/event-manager.test.ts +118 -0
  406. package/test/execution/index.test.ts +690 -0
  407. package/test/execution/node.test.ts +464 -0
  408. package/test/execution/observer.test.ts +393 -0
  409. package/test/execution/parallel.test.ts +135 -0
  410. package/test/execution/plan-llm-integration.test.ts +290 -0
  411. package/test/execution/plan-real-onchain.test.ts +226 -0
  412. package/test/execution/send-api.test.ts +121 -0
  413. package/test/modules/agenda/node-cron.test.ts +307 -0
  414. package/test/modules/cli/index.test.ts +125 -0
  415. package/test/persistence/neo4j-execution-tracer.test.ts +96 -0
  416. package/test/persistence/neo4j-memory-adapter.test.ts +107 -0
  417. package/test/persistence/neo4j-petri-checkpoint.test.ts +89 -0
  418. package/test/pipeline/agent-pipeline.test.ts +118 -0
  419. package/test/routing/checkpoint-persistence.test.ts +58 -0
  420. package/test/routing/documentation-generator.test.ts +76 -0
  421. package/test/routing/integration.test.ts +261 -0
  422. package/test/routing/intent-classifier.test.ts +102 -0
  423. package/test/routing/petri.test.ts +156 -0
  424. package/test/routing/real-llm.test.ts +260 -0
  425. package/test-petri-features.ts +218 -0
  426. package/test-pipeline-api.ts +163 -0
  427. package/tsconfig.json +30 -108
  428. package/types/agent.ts +296 -0
  429. package/types/index.ts +387 -0
  430. package/utils/generate-action-schema.ts +47 -0
  431. package/utils/header-builder.ts +40 -0
  432. package/utils/logger.ts +40 -0
  433. package/package copy.json +0 -21
  434. package/types.ts +0 -62
  435. package/utils/executor.ts +0 -42
@@ -0,0 +1,222 @@
1
+ import { ChatOllama } from '@langchain/ollama';
2
+ import { StateGraph, Annotation } from '@langchain/langgraph';
3
+ import { google } from 'googleapis';
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+
7
+ // Initialize Ollama
8
+ const model = new ChatOllama({
9
+ model: 'llama3:latest',
10
+ baseUrl: 'http://localhost:11434',
11
+ temperature: 0,
12
+ });
13
+
14
+ // Gmail client
15
+ function createGmailClient() {
16
+ const tokenPath = path.join(__dirname, '../gmail_token.json');
17
+ const credentials = JSON.parse(fs.readFileSync(path.join(__dirname, '../client_secret.json'), 'utf8'));
18
+ const token = JSON.parse(fs.readFileSync(tokenPath, 'utf8'));
19
+
20
+ const oauth2Client = new google.auth.OAuth2(
21
+ credentials.web.client_id,
22
+ credentials.web.client_secret,
23
+ 'http://localhost:3000/oauth2callback'
24
+ );
25
+ oauth2Client.setCredentials(token);
26
+ return google.gmail({ version: 'v1', auth: oauth2Client });
27
+ }
28
+
29
+ // Fetch mails
30
+ async function fetchMails(gmail: any, maxResults = 5) {
31
+ console.log(' [Fetch] Fetching mails from Gmail API...');
32
+ const res = await gmail.users.messages.list({
33
+ userId: 'me',
34
+ maxResults,
35
+ q: '',
36
+ });
37
+ const messages = res.data.messages || [];
38
+ const mails: any[] = [];
39
+ for (const msg of messages) {
40
+ const detail = await gmail.users.messages.get({
41
+ userId: 'me',
42
+ id: msg.id!,
43
+ format: 'metadata',
44
+ metadataHeaders: ['Subject', 'From'],
45
+ });
46
+ const headers = detail.data.payload?.headers || [];
47
+ mails.push({
48
+ id: msg.id,
49
+ subject: headers.find((h: any) => h.name === 'Subject')?.value || '(no subject)',
50
+ from: headers.find((h: any) => h.name === 'From')?.value || '(unknown)',
51
+ });
52
+ }
53
+ return mails;
54
+ }
55
+
56
+ // Summarize
57
+ async function summarizeMails(mails: any[]) {
58
+ console.log(' [Summarize] Summarizing with LLM...');
59
+ const mailText = mails.map((m: any) => `From: ${m.from}\nSubject: ${m.subject}`).join('\n\n');
60
+ const prompt = `Summarize these emails in 3 bullet points max:\n\n${mailText}\n\nRespond in JSON: {"summary": "..."}`;
61
+
62
+ const response = await model.invoke([{ role: 'user', content: prompt }]);
63
+ try {
64
+ const parsed = JSON.parse(response.content as string);
65
+ return parsed.summary;
66
+ } catch {
67
+ return response.content;
68
+ }
69
+ }
70
+
71
+ // LangGraph workflow
72
+ const MailState = Annotation.Root({
73
+ messages: Annotation<Array<{ role: 'user' | 'assistant'; content: string }>>({
74
+ reducer: (curr, update) => curr.concat(update),
75
+ }),
76
+ mails: Annotation<any[]>(),
77
+ summary: Annotation<string>(),
78
+ maxMails: Annotation<number>(),
79
+ });
80
+
81
+ const workflow = new StateGraph(MailState)
82
+ .addNode('fetch_mails', async (state) => {
83
+ const gmail = createGmailClient();
84
+ const mails = await fetchMails(gmail, state.maxMails || 5);
85
+ console.log(` [LangGraph] Fetched ${mails.length} mails`);
86
+ return { mails };
87
+ })
88
+ .addNode('summarize', async (state) => {
89
+ const summary = await summarizeMails(state.mails);
90
+ console.log(` [LangGraph] Summary: ${summary}`);
91
+ return { summary };
92
+ })
93
+ .addEdge('__start__', 'fetch_mails')
94
+ .addEdge('fetch_mails', 'summarize')
95
+ .addEdge('summarize', '__end__');
96
+
97
+ const graph = workflow.compile();
98
+
99
+ async function runLangGraph() {
100
+ console.log('\n🚀 Starting LangGraph benchmark...\n');
101
+ const startTime = Date.now();
102
+ const startMemory = process.memoryUsage().heapUsed;
103
+
104
+ const result = await graph.invoke({
105
+ messages: [{ role: 'user', content: 'Fetch 5 mails and summarize' }],
106
+ maxMails: 5,
107
+ });
108
+
109
+ const endTime = Date.now();
110
+ const endMemory = process.memoryUsage().heapUsed;
111
+
112
+ return {
113
+ framework: 'LangGraph',
114
+ totalTime: endTime - startTime,
115
+ llmCalls: 1,
116
+ memoryUsed: endMemory - startMemory,
117
+ summary: result.summary,
118
+ mailsCount: result.mails?.length || 0,
119
+ };
120
+ }
121
+
122
+ // CortexFlow simulation (lightweight)
123
+ async function runCortexFlow() {
124
+ console.log('\n🚀 Starting CortexFlow benchmark...\n');
125
+ const startTime = Date.now();
126
+ const startMemory = process.memoryUsage().heapUsed;
127
+ let llmCalls = 0;
128
+
129
+ const llmCall = async (prompt: string) => {
130
+ llmCalls++;
131
+ const response = await fetch('http://localhost:11434/api/generate', {
132
+ method: 'POST',
133
+ headers: { 'Content-Type': 'application/json' },
134
+ body: JSON.stringify({
135
+ model: 'llama3:latest',
136
+ prompt,
137
+ stream: false,
138
+ format: 'json',
139
+ }),
140
+ signal: AbortSignal.timeout(30000),
141
+ });
142
+ if (!response.ok) throw new Error(`HTTP ${response.status}`);
143
+ const data = await response.json();
144
+ return data.response;
145
+ };
146
+
147
+ const gmail = createGmailClient();
148
+
149
+ // Simulate intent classification
150
+ llmCalls++;
151
+ const intent = await llmCall(`Classify intent: "fetch 5 mails". Possible: FETCH_MAILS, SUMMARIZE. JSON: {"intent": "...", "confidence": 0.9}`);
152
+
153
+ // Fetch mails
154
+ const mails = await fetchMails(gmail, 5);
155
+
156
+ // Summarize
157
+ const summary = await summarizeMails(mails);
158
+
159
+ const endTime = Date.now();
160
+ const endMemory = process.memoryUsage().heapUsed;
161
+
162
+ return {
163
+ framework: 'CortexFlow',
164
+ totalTime: endTime - startTime,
165
+ llmCalls,
166
+ memoryUsed: endMemory - startMemory,
167
+ summary,
168
+ mailsCount: mails.length,
169
+ };
170
+ }
171
+
172
+ // Main benchmark
173
+ async function main() {
174
+ console.log('═══════════════════════════════════════════');
175
+ console.log(' CortexFlow vs LangGraph Benchmark');
176
+ console.log(' Scenario: Fetch 5 Gmail + LLM Summarization');
177
+ console.log('═══════════════════════════════════════════\n');
178
+
179
+ const cortexResult = await runCortexFlow();
180
+ const langGraphResult = await runLangGraph();
181
+
182
+ console.log('\n═══════════════════════════════════════════');
183
+ console.log(' RESULTS');
184
+ console.log('═══════════════════════════════════════════\n');
185
+
186
+ console.log('Framework'.padEnd(20) + 'CortexFlow'.padEnd(20) + 'LangGraph');
187
+ console.log('-'.repeat(60));
188
+ console.log(
189
+ 'Total Time'.padEnd(20) +
190
+ `${cortexResult.totalTime}ms`.padEnd(20) +
191
+ `${langGraphResult.totalTime}ms`
192
+ );
193
+ console.log(
194
+ 'LLM Calls'.padEnd(20) +
195
+ `${cortexResult.llmCalls}`.padEnd(20) +
196
+ `${langGraphResult.llmCalls}`
197
+ );
198
+ console.log(
199
+ 'Memory Used'.padEnd(20) +
200
+ `${(cortexResult.memoryUsed / 1024 / 1024).toFixed(2)}MB`.padEnd(20) +
201
+ `${(langGraphResult.memoryUsed / 1024 / 1024).toFixed(2)}MB`
202
+ );
203
+ console.log(
204
+ 'Mails Fetched'.padEnd(20) +
205
+ `${cortexResult.mailsCount}`.padEnd(20) +
206
+ `${langGraphResult.mailsCount}`
207
+ );
208
+
209
+ console.log('\n─────────────────────────────────────────────');
210
+ console.log('Summary Comparison:');
211
+ console.log('CortexFlow:', cortexResult.summary?.substring(0, 100) + '...');
212
+ console.log('LangGraph:', langGraphResult.summary?.substring(0, 100) + '...');
213
+
214
+ if (langGraphResult.totalTime > 0) {
215
+ const speedup = (langGraphResult.totalTime / cortexResult.totalTime).toFixed(2);
216
+ console.log(`\n⚡ CortexFlow is ${speedup}x faster than LangGraph`);
217
+ }
218
+
219
+ console.log('\n═══════════════════════════════════════════\n');
220
+ }
221
+
222
+ main().catch(console.error);
package/cli-dev.ts ADDED
@@ -0,0 +1,419 @@
1
+ /**
2
+ * @file cli-dev.ts
3
+ * @description CortexFlow interactive development REPL.
4
+ *
5
+ * Provides a lightweight command-line debugger for Petri Net workflows.
6
+ * Load a JSON workflow definition, inspect token state, fire transitions manually
7
+ * or automatically, inject tokens, and export the graph to DOT format — all
8
+ * without writing a single line of test code.
9
+ *
10
+ * Usage:
11
+ * ```sh
12
+ * npx ts-node cli-dev.ts [workflow.json]
13
+ * ```
14
+ *
15
+ * Commands available at the prompt:
16
+ * - `load <file.json>` — Load a workflow definition from disk
17
+ * - `show [placeId]` — Display current token marking (optionally filtered to one place)
18
+ * - `enabled` — List all currently enabled transitions
19
+ * - `step <transitionId>` — Fire a single transition
20
+ * - `auto` — Auto-fire transitions until the net is blocked (max 100 steps)
21
+ * - `inject <placeId> [json]` — Inject a token into a place
22
+ * - `history` — Show the ordered transition fire history
23
+ * - `dot` — Print a Graphviz DOT representation of the net
24
+ * - `reset` — Reset marking to the initial state
25
+ * - `help` — Print this command reference
26
+ * - `exit` — Quit the REPL
27
+ */
28
+
29
+ import * as readline from 'readline';
30
+ import { PetriNet, TransitionResult } from './routing/index';
31
+ import * as fs from 'fs';
32
+ import * as path from 'path';
33
+
34
+ // ---------------------------------------------------------------------------
35
+ // Types
36
+ // ---------------------------------------------------------------------------
37
+
38
+ /**
39
+ * JSON schema for a workflow definition file loaded by the `load` command.
40
+ *
41
+ * Example file:
42
+ * ```json
43
+ * {
44
+ * "name": "approval_flow",
45
+ * "places": [
46
+ * { "id": "idle", "type": "initial", "tokens": [{ "id": "start" }] },
47
+ * { "id": "pending", "type": "normal" },
48
+ * { "id": "approved", "type": "final" }
49
+ * ],
50
+ * "transitions": [
51
+ * { "id": "submit", "from": ["idle"], "to": "pending" },
52
+ * { "id": "approve", "from": ["pending"], "to": "approved" }
53
+ * ]
54
+ * }
55
+ * ```
56
+ */
57
+ interface WorkflowDefinition {
58
+ name: string;
59
+ places: Array<{
60
+ id: string;
61
+ type: 'initial' | 'normal' | 'final';
62
+ tokens?: Array<{ id: string; data?: any }>;
63
+ }>;
64
+ transitions: Array<{
65
+ id: string;
66
+ from: string[];
67
+ to: string | string[];
68
+ description?: string;
69
+ }>;
70
+ }
71
+
72
+ // ---------------------------------------------------------------------------
73
+ // Helpers
74
+ // ---------------------------------------------------------------------------
75
+
76
+ /**
77
+ * Reads and parses a workflow definition JSON file, building a live `PetriNet`.
78
+ *
79
+ * @param filePath - Path to the JSON file (relative or absolute).
80
+ * @returns A fully configured `PetriNet` instance.
81
+ * @throws If the file does not exist or the JSON is malformed.
82
+ */
83
+ function loadWorkflow(filePath: string): PetriNet {
84
+ const absPath = path.resolve(filePath);
85
+ if (!fs.existsSync(absPath)) {
86
+ throw new Error(`Workflow file not found: ${absPath}`);
87
+ }
88
+
89
+ const def: WorkflowDefinition = JSON.parse(fs.readFileSync(absPath, 'utf8'));
90
+ const net = new PetriNet(def.name || 'loaded');
91
+
92
+ for (const place of def.places) {
93
+ net.addPlace({
94
+ id: place.id,
95
+ type: place.type,
96
+ tokens: place.tokens?.map(t => ({
97
+ id: t.id,
98
+ data: t.data || {},
99
+ createdAt: Date.now(),
100
+ })) || [],
101
+ });
102
+ }
103
+
104
+ for (const transition of def.transitions) {
105
+ net.addTransition({
106
+ id: transition.id,
107
+ from: transition.from,
108
+ to: transition.to,
109
+ description: transition.description,
110
+ });
111
+ }
112
+
113
+ return net;
114
+ }
115
+
116
+ /** Prints the full command reference to stdout. */
117
+ function showHelp(): void {
118
+ console.log(`
119
+ CortexFlow DEV CLI — Interactive Petri Net Debugger
120
+ ════════════════════════════════════════════════════
121
+
122
+ Commands:
123
+ load <file.json> Load a workflow from a JSON file
124
+ show [placeId] Display token marking (all places, or one specific place)
125
+ enabled List currently enabled transitions
126
+ step <transitionId> Fire a specific transition
127
+ auto Auto-fire all enabled transitions until blocked (max 100 steps)
128
+ inject <placeId> [json] Inject a token into a place (optional JSON data)
129
+ history Show the ordered transition fire history
130
+ dot Export the net to Graphviz DOT format
131
+ reset Reset marking to the initial state
132
+ help / ? Show this help message
133
+ exit / quit Quit the REPL
134
+
135
+ Examples:
136
+ load ./examples/approval_flow.json
137
+ show
138
+ show idle
139
+ step submit
140
+ inject pending {"priority":"high"}
141
+ auto
142
+ dot > graph.dot
143
+ `);
144
+ }
145
+
146
+ /**
147
+ * Renders the full token marking of a Petri net to stdout.
148
+ *
149
+ * Each place is prefixed with an icon reflecting its type:
150
+ * - 🟢 initial
151
+ * - 🔴 final
152
+ * - ⚪ normal
153
+ *
154
+ * Up to 3 token payloads are shown inline; excess tokens are summarised.
155
+ *
156
+ * @param net - The `PetriNet` whose marking to display.
157
+ */
158
+ function showMarking(net: PetriNet): void {
159
+ console.log('\n📊 Current Marking:');
160
+ const places = (net as any).places as Map<string, any>;
161
+ const marking = (net as any).state.marking as Map<string, any[]>;
162
+
163
+ for (const [pid, place] of places) {
164
+ const tokens = marking.get(pid) || [];
165
+ const icon = place.type === 'initial' ? '🟢' : place.type === 'final' ? '🔴' : '⚪';
166
+ console.log(` ${icon} ${pid} (${place.type}): ${tokens.length} token(s)`);
167
+
168
+ const preview = tokens.slice(0, 3);
169
+ for (const token of preview) {
170
+ console.log(` - ${token.id}: ${JSON.stringify(token.data || {})}`);
171
+ }
172
+
173
+ if (tokens.length > 3) {
174
+ console.log(` … and ${tokens.length - 3} more`);
175
+ }
176
+ }
177
+ console.log();
178
+ }
179
+
180
+ // ---------------------------------------------------------------------------
181
+ // Main REPL
182
+ // ---------------------------------------------------------------------------
183
+
184
+ async function main(): Promise<void> {
185
+ const rl = readline.createInterface({
186
+ input: process.stdin,
187
+ output: process.stdout,
188
+ });
189
+
190
+ let net: PetriNet | null = null;
191
+ const args = process.argv.slice(2);
192
+
193
+ console.log('\n🚀 CortexFlow DEV CLI\n');
194
+
195
+ if (args.length > 0) {
196
+ try {
197
+ net = loadWorkflow(args[0]);
198
+ console.log(`✅ Loaded workflow: ${net.name}\n`);
199
+ showMarking(net);
200
+ } catch (error) {
201
+ console.error(`❌ Error loading workflow:`, (error as Error).message);
202
+ process.exit(1);
203
+ }
204
+ } else {
205
+ console.log('No workflow file provided. Use "load <file>" to load one.\n');
206
+ }
207
+
208
+ const prompt = () => {
209
+ const prefix = net ? `${net.name}> ` : 'cortex> ';
210
+ rl.question(prefix, async (input) => {
211
+ const parts = input.trim().split(/\s+/);
212
+ const cmd = parts[0]?.toLowerCase();
213
+
214
+ if (!cmd) {
215
+ prompt();
216
+ return;
217
+ }
218
+
219
+ try {
220
+ switch (cmd) {
221
+ // ── load ──────────────────────────────────────────────────────────
222
+ case 'load': {
223
+ if (!parts[1]) { console.log('Usage: load <file.json>'); break; }
224
+ try {
225
+ net = loadWorkflow(parts[1]);
226
+ console.log(`✅ Loaded workflow: ${net.name}\n`);
227
+ showMarking(net);
228
+ } catch (error) {
229
+ console.error(`❌ Error:`, (error as Error).message);
230
+ }
231
+ break;
232
+ }
233
+
234
+ // ── show ──────────────────────────────────────────────────────────
235
+ case 'show': {
236
+ if (!net) { console.log('No workflow loaded. Use "load" first.'); break; }
237
+ if (parts[1]) {
238
+ const marking = (net as any).state.marking as Map<string, any[]>;
239
+ const tokens = marking.get(parts[1]) || [];
240
+ console.log(`Place ${parts[1]}: ${tokens.length} token(s)`);
241
+ tokens.forEach(t => console.log(` - ${t.id}:`, t.data));
242
+ } else {
243
+ showMarking(net);
244
+ }
245
+ break;
246
+ }
247
+
248
+ // ── enabled ───────────────────────────────────────────────────────
249
+ case 'enabled': {
250
+ if (!net) { console.log('No workflow loaded.'); break; }
251
+ const enabled = net.getEnabledTransitions();
252
+ if (enabled.length === 0) {
253
+ console.log('⚠️ No enabled transitions');
254
+ } else {
255
+ console.log('✅ Enabled transitions:');
256
+ enabled.forEach(tid => console.log(` - ${tid}`));
257
+ }
258
+ break;
259
+ }
260
+
261
+ // ── step ──────────────────────────────────────────────────────────
262
+ case 'step': {
263
+ if (!net) { console.log('No workflow loaded.'); break; }
264
+ const tid = parts[1];
265
+ if (!tid) { console.log('Usage: step <transitionId>'); break; }
266
+
267
+ const result: TransitionResult = await net.fireTransition(tid);
268
+ if (result.success) {
269
+ console.log(`✅ Transition "${tid}" fired successfully`);
270
+ if (result.consumedTokens?.length) {
271
+ console.log(` Consumed: ${result.consumedTokens.length} token(s)`);
272
+ }
273
+ if (result.producedTokens?.length) {
274
+ console.log(` Produced: ${result.producedTokens.length} token(s)`);
275
+ }
276
+ showMarking(net);
277
+ } else {
278
+ console.log(`❌ Failed to fire "${tid}": ${result.error || 'Unknown error'}`);
279
+ }
280
+ break;
281
+ }
282
+
283
+ // ── auto ──────────────────────────────────────────────────────────
284
+ case 'auto': {
285
+ if (!net) { console.log('No workflow loaded.'); break; }
286
+ let steps = 0;
287
+ const MAX_AUTO_STEPS = 100;
288
+
289
+ while (true) {
290
+ const enabled = net.getEnabledTransitions();
291
+ if (enabled.length === 0) {
292
+ console.log(`⏹ Blocked after ${steps} step(s)`);
293
+ break;
294
+ }
295
+
296
+ const tid = enabled[0];
297
+ const result = await net.fireTransition(tid);
298
+ if (!result.success) {
299
+ console.log(`❌ Failed at step ${steps + 1} ("${tid}"): ${result.error}`);
300
+ break;
301
+ }
302
+
303
+ steps++;
304
+ process.stdout.write(` Step ${steps}: "${tid}"`);
305
+
306
+ // Inline token counts for the first 10 steps to avoid flooding the terminal.
307
+ if (steps <= 10) {
308
+ const marking = (net as any).state.marking as Map<string, any[]>;
309
+ const nonEmpty = Array.from(marking.entries())
310
+ .filter(([, tokens]) => tokens.length > 0)
311
+ .map(([pid, tokens]) => `${pid}:${tokens.length}`)
312
+ .join(' ');
313
+ process.stdout.write(` [${nonEmpty}]`);
314
+ }
315
+ process.stdout.write('\n');
316
+
317
+ if (steps >= MAX_AUTO_STEPS) {
318
+ console.log(`⚠️ Stopping auto after ${MAX_AUTO_STEPS} steps`);
319
+ break;
320
+ }
321
+ }
322
+
323
+ showMarking(net);
324
+ break;
325
+ }
326
+
327
+ // ── inject ────────────────────────────────────────────────────────
328
+ case 'inject': {
329
+ if (!net) { console.log('No workflow loaded.'); break; }
330
+ const placeId = parts[1];
331
+ if (!placeId) { console.log('Usage: inject <placeId> [jsonData]'); break; }
332
+
333
+ const jsonStr = parts.slice(2).join(' ');
334
+ const data = jsonStr ? JSON.parse(jsonStr) : {};
335
+ const marking = (net as any).state.marking as Map<string, any[]>;
336
+
337
+ if (!marking.has(placeId)) {
338
+ console.log(`❌ Place "${placeId}" not found`);
339
+ break;
340
+ }
341
+
342
+ marking.get(placeId)!.push({
343
+ id: `token_${Date.now()}`,
344
+ data,
345
+ createdAt: Date.now(),
346
+ });
347
+
348
+ console.log(`✅ Token injected into "${placeId}"`);
349
+ showMarking(net);
350
+ break;
351
+ }
352
+
353
+ // ── history ───────────────────────────────────────────────────────
354
+ case 'history': {
355
+ if (!net) { console.log('No workflow loaded.'); break; }
356
+ const history = (net as any).state.history as string[];
357
+ if (history.length === 0) {
358
+ console.log('No transition history yet.');
359
+ } else {
360
+ console.log('📜 Transition History:');
361
+ history.forEach((tid, i) => console.log(` ${i + 1}. ${tid}`));
362
+ }
363
+ break;
364
+ }
365
+
366
+ // ── dot ───────────────────────────────────────────────────────────
367
+ case 'dot': {
368
+ if (!net) { console.log('No workflow loaded.'); break; }
369
+ console.log(net.toDot());
370
+ break;
371
+ }
372
+
373
+ // ── reset ─────────────────────────────────────────────────────────
374
+ case 'reset': {
375
+ if (!net) { console.log('No workflow loaded.'); break; }
376
+ const places = (net as any).places as Map<string, any>;
377
+ const marking = (net as any).state.marking as Map<string, any[]>;
378
+
379
+ for (const [pid, place] of places) {
380
+ if (place.type === 'initial') {
381
+ marking.set(pid, place.tokens.map((t: any) => ({ ...t })));
382
+ } else {
383
+ marking.set(pid, []);
384
+ }
385
+ }
386
+ (net as any).state.history = [];
387
+ console.log('✅ Reset to initial marking\n');
388
+ showMarking(net);
389
+ break;
390
+ }
391
+
392
+ // ── help ──────────────────────────────────────────────────────────
393
+ case 'help':
394
+ case '?':
395
+ showHelp();
396
+ break;
397
+
398
+ // ── exit ──────────────────────────────────────────────────────────
399
+ case 'exit':
400
+ case 'quit':
401
+ console.log('\n👋 Goodbye!\n');
402
+ rl.close();
403
+ process.exit(0);
404
+
405
+ default:
406
+ console.log(`Unknown command: "${cmd}". Type "help" for available commands.`);
407
+ }
408
+ } catch (error) {
409
+ console.error(`❌ Error:`, (error as Error).message);
410
+ }
411
+
412
+ prompt();
413
+ });
414
+ };
415
+
416
+ prompt();
417
+ }
418
+
419
+ main().catch(console.error);
@@ -0,0 +1,41 @@
1
+ import { GraphFlow } from "../execution/index";
2
+ import { AgentContext, AgentContextSchema } from "../types/agent";
3
+ import { AgentLogger } from "./tools/logger";
4
+ import { BaseAgent } from "./base";
5
+ export interface CognitiveNodeContext {
6
+ executor: {
7
+ makeDecision: (context: AgentContext) => Promise<{
8
+ actions: any[];
9
+ response: string;
10
+ thought?: string;
11
+ }>;
12
+ executeActions: (actions: any[], context: AgentContext) => Promise<void>;
13
+ updateDynamicGoal: (context: AgentContext) => Promise<string>;
14
+ reflect: (context: AgentContext) => Promise<{
15
+ learning: string;
16
+ adjustedGoal?: string;
17
+ }>;
18
+ scheduleTask?: (cron: string, request: string) => Promise<string | null>;
19
+ decomposeTask?: (actions: any[], context: AgentContext) => Promise<{
20
+ groups: any[][];
21
+ response: string;
22
+ }>;
23
+ };
24
+ baseAgent: BaseAgent;
25
+ logger: AgentLogger;
26
+ maxIterations: number;
27
+ enableClone?: boolean;
28
+ entityResolver?: {
29
+ resolve: (ctx: any) => any;
30
+ getIndex: () => any;
31
+ };
32
+ exploreStrategy?: {
33
+ plan: (candidates: any[], cwd: string) => {
34
+ type: string;
35
+ path: string;
36
+ reason: string;
37
+ }[];
38
+ };
39
+ }
40
+ export declare function buildAgentWorkflow(ctx: CognitiveNodeContext): GraphFlow<typeof AgentContextSchema>;
41
+ //# sourceMappingURL=agent-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-workflow.d.ts","sourceRoot":"","sources":["../../agent/agent-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAmB,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE;QACR,YAAY,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzG,cAAc,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,iBAAiB,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACzE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC;YAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC3G,CAAC;IACF,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;QAC3B,QAAQ,EAAE,MAAM,GAAG,CAAC;KACrB,CAAC;IACF,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC5F,CAAC;CACH;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,SAAS,CAAC,OAAO,kBAAkB,CAAC,CA4hBlG"}