@ai.ntellect/core 1.0.0 → 1.1.1

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 +363 -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,425 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.CortexFlowOrchestrator = void 0;
16
+ const index_1 = require("./index");
17
+ const registry_1 = require("../execution/registry");
18
+ const zod_1 = require("zod");
19
+ const compiler_1 = require("../execution/compiler");
20
+ const logger_1 = __importDefault(require("../utils/logger"));
21
+ class CortexFlowOrchestrator {
22
+ constructor(name, toolRegistry) {
23
+ this.sessions = new Map();
24
+ this.confidenceThreshold = 0.6;
25
+ this.petriNet = new index_1.PetriNet(name);
26
+ this.toolRegistry = toolRegistry || new registry_1.ToolRegistry();
27
+ }
28
+ setFallbackLLM(fn) {
29
+ this.fallbackLLM = fn;
30
+ }
31
+ setConfidenceThreshold(threshold) {
32
+ this.confidenceThreshold = threshold;
33
+ }
34
+ getConfidenceThreshold() {
35
+ return this.confidenceThreshold;
36
+ }
37
+ get petri() {
38
+ return this.petriNet;
39
+ }
40
+ setPetriCheckpointAdapter(adapter) {
41
+ this.petriCheckpointAdapter = adapter;
42
+ }
43
+ savePetriState(sessionId) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const session = this.sessions.get(sessionId);
46
+ if (!session || !this.petriCheckpointAdapter)
47
+ return null;
48
+ try {
49
+ const checkpointId = yield this.petriCheckpointAdapter.save(session.petriNet, session);
50
+ logger_1.default.info({ sessionId, checkpointId }, 'Petri state saved');
51
+ return checkpointId;
52
+ }
53
+ catch (error) {
54
+ logger_1.default.error({ sessionId, error }, 'Failed to save Petri state');
55
+ return null;
56
+ }
57
+ });
58
+ }
59
+ restorePetriState(checkpointId) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ if (!this.petriCheckpointAdapter)
62
+ return null;
63
+ try {
64
+ const result = yield this.petriCheckpointAdapter.load(checkpointId);
65
+ if (!result)
66
+ return null;
67
+ const { net, session: restoredSession } = result;
68
+ if (restoredSession) {
69
+ this.sessions.set(restoredSession.id, restoredSession);
70
+ return restoredSession.id;
71
+ }
72
+ const newSessionId = `session_${Date.now()}`;
73
+ const newSession = {
74
+ id: newSessionId,
75
+ petriNet: net,
76
+ context: {},
77
+ history: [],
78
+ createdAt: Date.now(),
79
+ traceId: `trace_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
80
+ };
81
+ this.sessions.set(newSessionId, newSession);
82
+ return newSessionId;
83
+ }
84
+ catch (error) {
85
+ logger_1.default.error({ checkpointId, error }, 'Failed to restore Petri state');
86
+ return null;
87
+ }
88
+ });
89
+ }
90
+ listPetriCheckpoints() {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ if (!this.petriCheckpointAdapter)
93
+ return [];
94
+ return this.petriCheckpointAdapter.list();
95
+ });
96
+ }
97
+ setIntentClassifier(classifier, instance) {
98
+ this.intentClassifier = classifier;
99
+ this.intentClassifierInstance = instance;
100
+ }
101
+ setLLMCall(llmCall) {
102
+ this.llmCall = llmCall;
103
+ this.petriNet.setLLMExecutor((prompt, ctx) => __awaiter(this, void 0, void 0, function* () {
104
+ const result = yield llmCall(`You are a guard evaluator. Context: ${JSON.stringify(ctx)}. ${prompt} Answer only 'yes' or 'no'.`);
105
+ return result.toLowerCase().includes('yes');
106
+ }));
107
+ }
108
+ classifyIntent(message, sessionId) {
109
+ return __awaiter(this, void 0, void 0, function* () {
110
+ if (!this.intentClassifier) {
111
+ return { intent: 'UNKNOWN', confidence: 0, entities: {} };
112
+ }
113
+ const session = sessionId ? this.sessions.get(sessionId) : undefined;
114
+ const turnHistory = (session === null || session === void 0 ? void 0 : session.history) || [];
115
+ return this.intentClassifier(message, { turnHistory });
116
+ });
117
+ }
118
+ startSession(sessionId) {
119
+ const id = sessionId || `session_${Date.now()}`;
120
+ const traceId = `trace_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
121
+ const net = new index_1.PetriNet(this.petriNet.name);
122
+ net.places = new Map(this.petriNet.places);
123
+ net.transitions = new Map(this.petriNet.transitions);
124
+ net.state = {
125
+ marking: new Map(Array.from(this.petriNet.state.marking.entries()).map(([k, v]) => [
126
+ k,
127
+ v.map(t => (Object.assign({}, t))),
128
+ ])),
129
+ history: [],
130
+ };
131
+ this.sessions.set(id, {
132
+ id,
133
+ petriNet: net,
134
+ context: {},
135
+ history: [],
136
+ createdAt: Date.now(),
137
+ traceId,
138
+ });
139
+ logger_1.default.info({ sessionId: id, traceId }, 'Session started');
140
+ return id;
141
+ }
142
+ getSession(sessionId) {
143
+ return this.sessions.get(sessionId);
144
+ }
145
+ fire(transitionId, sessionId, tokenData) {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ var _a;
148
+ const session = this.sessions.get(sessionId);
149
+ if (!session)
150
+ throw new Error(`Session ${sessionId} not found`);
151
+ const log = logger_1.default.child({ sessionId, traceId: session.traceId });
152
+ const transition = session.petriNet.transitions.get(transitionId);
153
+ if (!transition)
154
+ throw new Error(`Transition ${transitionId} not found`);
155
+ log.info({ transitionId }, 'Firing transition');
156
+ const result = yield session.petriNet.fireTransition(transitionId, tokenData);
157
+ if (!result.success) {
158
+ log.warn({ transitionId, result }, 'Transition failed');
159
+ return result;
160
+ }
161
+ if (transition.action) {
162
+ try {
163
+ log.info({ transitionId, actionType: (_a = transition.action) === null || _a === void 0 ? void 0 : _a.type }, 'Executing action');
164
+ const actionResult = yield this.executeAction(transition.action, tokenData || session.context, session);
165
+ log.info({ transitionId, actionResult }, 'Action completed');
166
+ return Object.assign(Object.assign({}, result), { actionResult });
167
+ }
168
+ catch (error) {
169
+ log.error({ transitionId, error }, 'Action failed');
170
+ return Object.assign(Object.assign({}, result), { success: false, error: error.message, actionResult: undefined });
171
+ }
172
+ }
173
+ return result;
174
+ });
175
+ }
176
+ executeAction(action, context, session) {
177
+ return __awaiter(this, void 0, void 0, function* () {
178
+ if (action.type === 'graphflow')
179
+ return this.executeGraphFlowAction(action, context, session);
180
+ if (action.type === 'dynamic')
181
+ return this.executeDynamicAction(action, context, session);
182
+ return undefined;
183
+ });
184
+ }
185
+ executeGraphFlowAction(action, context, session) {
186
+ return __awaiter(this, void 0, void 0, function* () {
187
+ if (!action.name)
188
+ throw new Error('GraphFlow action missing tool name');
189
+ const tool = this.toolRegistry.get(action.name);
190
+ if (!tool)
191
+ throw new Error(`Tool ${action.name} not registered`);
192
+ const flowContext = action.contextMapper ? action.contextMapper(context) : context;
193
+ const timeoutMs = action.timeout || 30000;
194
+ const maxSteps = action.maxSteps || 10;
195
+ let steps = 0;
196
+ const originalExecute = tool.graph.execute.bind(tool.graph);
197
+ const wrappedExecute = (startNode, ctx) => __awaiter(this, void 0, void 0, function* () {
198
+ steps++;
199
+ if (steps > maxSteps)
200
+ throw new Error(`GraphFlow exceeded max steps: ${maxSteps}`);
201
+ return originalExecute(startNode, ctx);
202
+ });
203
+ const timeoutPromise = new Promise((_, reject) => {
204
+ setTimeout(() => reject(new Error(`GraphFlow timeout after ${timeoutMs}ms`)), timeoutMs);
205
+ });
206
+ try {
207
+ const result = yield Promise.race([wrappedExecute(tool.startNode, flowContext), timeoutPromise]);
208
+ session.context = Object.assign(Object.assign({}, session.context), result);
209
+ return result;
210
+ }
211
+ catch (error) {
212
+ session.context = Object.assign(Object.assign({}, session.context), { lastError: error.message });
213
+ throw error;
214
+ }
215
+ });
216
+ }
217
+ executeDynamicAction(action, context, session) {
218
+ return __awaiter(this, void 0, void 0, function* () {
219
+ if (!this.llmCall)
220
+ throw new Error('LLM call not configured for dynamic action');
221
+ if (!action.prompt)
222
+ throw new Error('Dynamic action missing prompt');
223
+ const maxSteps = action.maxSteps || 5;
224
+ const plan = yield this.generateDynamicPlan(action.prompt, context, maxSteps, session.traceId);
225
+ const { graph, startNode } = this.compilePlan(plan);
226
+ const timeoutMs = action.timeout || 30000;
227
+ let steps = 0;
228
+ const originalExecute = graph.execute.bind(graph);
229
+ const wrappedExecute = (startNode, ctx) => __awaiter(this, void 0, void 0, function* () {
230
+ steps++;
231
+ if (steps > maxSteps)
232
+ throw new Error(`Dynamic plan exceeded max steps: ${maxSteps}`);
233
+ return originalExecute(startNode, ctx);
234
+ });
235
+ const timeoutPromise = new Promise((_, reject) => {
236
+ setTimeout(() => reject(new Error(`Dynamic action timeout after ${timeoutMs}ms`)), timeoutMs);
237
+ });
238
+ try {
239
+ const result = yield Promise.race([wrappedExecute(startNode, context), timeoutPromise]);
240
+ session.context = Object.assign(Object.assign({}, session.context), result);
241
+ return result;
242
+ }
243
+ catch (error) {
244
+ session.context = Object.assign(Object.assign({}, session.context), { lastError: error.message });
245
+ logger_1.default.warn({ traceId: session.traceId, error }, 'Dynamic action failed');
246
+ throw error;
247
+ }
248
+ });
249
+ }
250
+ generateDynamicPlan(prompt, context, maxSteps, traceId) {
251
+ return __awaiter(this, void 0, void 0, function* () {
252
+ if (!this.llmCall)
253
+ throw new Error('LLM call not configured');
254
+ const availableTools = this.toolRegistry.list();
255
+ const log = logger_1.default.child({ traceId });
256
+ const llmPrompt = `You are a workflow planner. Generate a structured plan as JSON with "goal" (string) and "steps" (array of { node: string, params?: Record<string, any> }).
257
+ Only use tools from the available list. Max ${maxSteps} steps.
258
+
259
+ Available tools:
260
+ ${availableTools.map(t => `- ${t.name}: ${t.description}`).join('\n')}
261
+
262
+ User intent: ${prompt}
263
+ Context: ${JSON.stringify(context)}
264
+
265
+ Respond with valid JSON only.`;
266
+ const response = yield this.llmCall(llmPrompt);
267
+ const rawPlan = JSON.parse(response);
268
+ const PlanSchema = zod_1.z.object({
269
+ goal: zod_1.z.string(),
270
+ steps: zod_1.z.array(zod_1.z.object({
271
+ node: zod_1.z.string(),
272
+ params: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
273
+ })),
274
+ });
275
+ try {
276
+ const plan = PlanSchema.parse(rawPlan);
277
+ if (plan.steps.length > maxSteps)
278
+ throw new Error(`Plan exceeds max steps: ${plan.steps.length} > ${maxSteps}`);
279
+ log.info({ plan }, 'Dynamic plan validated successfully');
280
+ return { goal: plan.goal || prompt, steps: plan.steps };
281
+ }
282
+ catch (error) {
283
+ log.warn({ rawPlan, error, prompt }, 'Dynamic plan rejected by Zod validation');
284
+ throw error;
285
+ }
286
+ });
287
+ }
288
+ compilePlan(plan) {
289
+ return (0, compiler_1.compilePlan)(plan, this.toolRegistry);
290
+ }
291
+ orchestrate(message, sessionId) {
292
+ return __awaiter(this, void 0, void 0, function* () {
293
+ const session = sessionId ? this.sessions.get(sessionId) : undefined;
294
+ const resolvedSessionId = session ? session.id : this.startSession(sessionId);
295
+ const sessionObj = this.sessions.get(resolvedSessionId);
296
+ const log = logger_1.default.child({ sessionId: resolvedSessionId, traceId: sessionObj.traceId });
297
+ log.info({ message }, 'Orchestration started');
298
+ if (sessionObj.inFallbackMode && this.fallbackLLM) {
299
+ return this.handleFallbackMode(message, resolvedSessionId, sessionObj, log);
300
+ }
301
+ const intent = yield this.classifyIntent(message, resolvedSessionId);
302
+ sessionObj.history.push(message);
303
+ log.info({ intent }, 'Intent classified');
304
+ const threshold = this.confidenceThreshold;
305
+ if (intent.confidence < threshold || intent.intent === 'UNKNOWN') {
306
+ log.warn({ intent, threshold }, 'Low confidence or UNKNOWN, entering fallback mode');
307
+ if (this.fallbackLLM) {
308
+ return this.enterFallbackMode(message, resolvedSessionId, sessionObj, intent, log);
309
+ }
310
+ let clarificationQuestion;
311
+ if (this.intentClassifierInstance) {
312
+ try {
313
+ clarificationQuestion = yield this.intentClassifierInstance.generateClarification(message);
314
+ sessionObj.clarificationQuestion = clarificationQuestion;
315
+ }
316
+ catch (error) {
317
+ log.warn({ error }, 'Failed to generate clarification question');
318
+ }
319
+ }
320
+ return { intent, sessionId: resolvedSessionId, needsClarification: true, clarificationQuestion };
321
+ }
322
+ let intentsToExecute = intent.intents && intent.intents.length > 0
323
+ ? [...intent.intents]
324
+ : [];
325
+ const mainIntent = { intent: intent.intent, confidence: intent.confidence, entities: intent.entities };
326
+ if (!intentsToExecute.some(i => i.intent === mainIntent.intent)) {
327
+ intentsToExecute.unshift(mainIntent);
328
+ }
329
+ const results = [];
330
+ for (let i = 0; i < intentsToExecute.length; i++) {
331
+ const subIntent = intentsToExecute[i];
332
+ if (i > 0) {
333
+ log.info('Resetting Petri net for next sub-intent');
334
+ sessionObj.petriNet.state.marking.clear();
335
+ sessionObj.petriNet.state.marking.set('idle', [{
336
+ id: `reset_${Date.now()}`,
337
+ data: { resetForMultiIntent: true },
338
+ createdAt: Date.now(),
339
+ }]);
340
+ sessionObj.petriNet.state.history = [];
341
+ }
342
+ const enabledTransitions = sessionObj.petriNet.getEnabledTransitions(Object.assign({ intent: subIntent.intent, confidence: subIntent.confidence }, (subIntent.entities || {})));
343
+ if (enabledTransitions.length === 0) {
344
+ log.warn({ subIntent }, 'No enabled transitions for sub-intent');
345
+ if (this.fallbackLLM && intentsToExecute.length === 1) {
346
+ return this.enterFallbackMode(message, resolvedSessionId, sessionObj, intent, log);
347
+ }
348
+ if (intentsToExecute.length === 1) {
349
+ let clarificationQuestion;
350
+ if (this.intentClassifierInstance) {
351
+ try {
352
+ clarificationQuestion = yield this.intentClassifierInstance.generateClarification(message);
353
+ sessionObj.clarificationQuestion = clarificationQuestion;
354
+ }
355
+ catch (error) {
356
+ log.warn({ error }, 'Failed to generate clarification question');
357
+ }
358
+ }
359
+ return { intent, sessionId: resolvedSessionId, needsClarification: true, clarificationQuestion };
360
+ }
361
+ continue;
362
+ }
363
+ const transitionId = enabledTransitions[0];
364
+ log.info({ transitionId, subIntent }, 'Firing enabled transition for sub-intent');
365
+ const result = yield this.fire(transitionId, resolvedSessionId, Object.assign(Object.assign({ intent: subIntent.intent }, (subIntent.entities || {})), { traceId: sessionObj.traceId }));
366
+ results.push(result);
367
+ log.info({ result }, 'Sub-intent transition completed');
368
+ }
369
+ log.info({ results }, 'Orchestration completed');
370
+ return {
371
+ intent,
372
+ transitionResult: results.length > 0 ? results[results.length - 1] : undefined,
373
+ sessionId: resolvedSessionId,
374
+ needsClarification: false,
375
+ };
376
+ });
377
+ }
378
+ enterFallbackMode(message, sessionId, sessionObj, intent, log) {
379
+ return __awaiter(this, void 0, void 0, function* () {
380
+ sessionObj.inFallbackMode = true;
381
+ if (!sessionObj.fallbackContext) {
382
+ sessionObj.fallbackContext = {
383
+ conversationHistory: [...sessionObj.history],
384
+ };
385
+ }
386
+ const fallbackResult = yield this.fallbackLLM(message, sessionObj, this.toolRegistry);
387
+ sessionObj.fallbackContext.lastFallbackResponse = fallbackResult.response;
388
+ sessionObj.fallbackContext.conversationHistory.push(message, fallbackResult.response);
389
+ log.info({ fallbackResult }, 'Fallback LLM responded');
390
+ if (fallbackResult.shouldReenterPetri && fallbackResult.reinterpretMessage) {
391
+ log.info({ reinterpretMessage: fallbackResult.reinterpretMessage }, 'Reinterpreting message via fallback');
392
+ sessionObj.inFallbackMode = false;
393
+ return this.orchestrate(fallbackResult.reinterpretMessage, sessionId);
394
+ }
395
+ return {
396
+ intent,
397
+ sessionId,
398
+ fallbackResponse: fallbackResult.response,
399
+ shouldReenterPetri: false,
400
+ };
401
+ });
402
+ }
403
+ handleFallbackMode(message, sessionId, sessionObj, log) {
404
+ return __awaiter(this, void 0, void 0, function* () {
405
+ const intent = { intent: 'UNKNOWN', confidence: 0, entities: {} };
406
+ const fallbackResult = yield this.fallbackLLM(message, sessionObj, this.toolRegistry);
407
+ sessionObj.fallbackContext.lastFallbackResponse = fallbackResult.response;
408
+ sessionObj.fallbackContext.conversationHistory.push(message, fallbackResult.response);
409
+ log.info({ fallbackResult }, 'Fallback LLM continued');
410
+ if (fallbackResult.shouldReenterPetri && fallbackResult.reinterpretMessage) {
411
+ log.info({ reinterpretMessage: fallbackResult.reinterpretMessage }, 'Reinterpreting message via fallback');
412
+ sessionObj.inFallbackMode = false;
413
+ return this.orchestrate(fallbackResult.reinterpretMessage, sessionId);
414
+ }
415
+ return {
416
+ intent,
417
+ sessionId,
418
+ fallbackResponse: fallbackResult.response,
419
+ shouldReenterPetri: false,
420
+ };
421
+ });
422
+ }
423
+ }
424
+ exports.CortexFlowOrchestrator = CortexFlowOrchestrator;
425
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../routing/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { PetriNet } from './index';
2
+ import { Session } from './orchestrator';
3
+ import { IPetriCheckpointAdapter } from './checkpoint-adapter';
4
+ export interface PostgresCheckpointAdapterOptions {
5
+ connectionString: string;
6
+ tableName?: string;
7
+ }
8
+ export declare class PostgresPetriCheckpointAdapter implements IPetriCheckpointAdapter {
9
+ private connectionString;
10
+ private tableName;
11
+ private pool;
12
+ private initialized;
13
+ constructor(options: PostgresCheckpointAdapterOptions);
14
+ private initPool;
15
+ save(net: PetriNet, session?: Session): Promise<string>;
16
+ load(checkpointId: string): Promise<{
17
+ net: PetriNet;
18
+ session?: Session;
19
+ } | null>;
20
+ list(): Promise<Array<{
21
+ id: string;
22
+ timestamp: number;
23
+ sessionId?: string;
24
+ }>>;
25
+ delete(checkpointId: string): Promise<void>;
26
+ listBySession(sessionId: string): Promise<Array<{
27
+ id: string;
28
+ timestamp: number;
29
+ }>>;
30
+ close(): Promise<void>;
31
+ }
32
+ //# sourceMappingURL=postgres-checkpoint-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-checkpoint-adapter.d.ts","sourceRoot":"","sources":["../../routing/postgres-checkpoint-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,gCAAgC;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,8BAA+B,YAAW,uBAAuB;IAC5E,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,EAAE,gCAAgC;YAKvC,QAAQ;IAiChB,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCvD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,QAAQ,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAiChF,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAgB7E,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAgBnF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PostgresPetriCheckpointAdapter = void 0;
13
+ const index_1 = require("./index");
14
+ class PostgresPetriCheckpointAdapter {
15
+ constructor(options) {
16
+ this.pool = null;
17
+ this.initialized = false;
18
+ this.connectionString = options.connectionString;
19
+ this.tableName = options.tableName || 'petri_checkpoints';
20
+ }
21
+ initPool() {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ if (this.initialized)
24
+ return;
25
+ try {
26
+ const pg = yield Function('moduleName', 'return import(moduleName)')('pg');
27
+ const { Pool } = pg;
28
+ this.pool = new Pool({ connectionString: this.connectionString });
29
+ const client = yield this.pool.connect();
30
+ try {
31
+ yield client.query(`
32
+ CREATE TABLE IF NOT EXISTS ${this.tableName} (
33
+ id VARCHAR(255) PRIMARY KEY,
34
+ timestamp BIGINT NOT NULL,
35
+ session_id VARCHAR(255),
36
+ data JSONB NOT NULL,
37
+ created_at TIMESTAMP DEFAULT NOW()
38
+ );
39
+ CREATE INDEX IF NOT EXISTS idx_${this.tableName}_session ON ${this.tableName}(session_id);
40
+ CREATE INDEX IF NOT EXISTS idx_${this.tableName}_timestamp ON ${this.tableName}(timestamp DESC);
41
+ `);
42
+ }
43
+ finally {
44
+ client.release();
45
+ }
46
+ this.initialized = true;
47
+ }
48
+ catch (error) {
49
+ throw new Error('PostgreSQL adapter requires "pg" package. Install it with: pnpm add pg @types/pg');
50
+ }
51
+ });
52
+ }
53
+ save(net, session) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ yield this.initPool();
56
+ const checkpointId = `petri-cp-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
57
+ const marking = net.state.marking;
58
+ const serializedMarking = [];
59
+ for (const [pid, tokens] of marking) {
60
+ serializedMarking.push({
61
+ placeId: pid,
62
+ tokens: tokens.map((t) => ({ id: t.id, data: t.data, createdAt: t.createdAt })),
63
+ });
64
+ }
65
+ const checkpoint = {
66
+ id: checkpointId,
67
+ timestamp: Date.now(),
68
+ sessionId: session === null || session === void 0 ? void 0 : session.id,
69
+ marking: serializedMarking,
70
+ history: net.state.history || [],
71
+ sessionContext: session === null || session === void 0 ? void 0 : session.context,
72
+ sessionTraceId: session === null || session === void 0 ? void 0 : session.traceId,
73
+ sessionCreatedAt: session === null || session === void 0 ? void 0 : session.createdAt,
74
+ sessionHistory: (session === null || session === void 0 ? void 0 : session.history) || [],
75
+ };
76
+ const sql = `
77
+ INSERT INTO ${this.tableName} (id, timestamp, session_id, data)
78
+ VALUES ($1, $2, $3, $4)
79
+ `;
80
+ yield this.pool.query(sql, [
81
+ checkpointId,
82
+ checkpoint.timestamp,
83
+ checkpoint.sessionId || null,
84
+ JSON.stringify(checkpoint),
85
+ ]);
86
+ return checkpointId;
87
+ });
88
+ }
89
+ load(checkpointId) {
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ yield this.initPool();
92
+ const sql = `SELECT data FROM ${this.tableName} WHERE id = $1`;
93
+ const result = yield this.pool.query(sql, [checkpointId]);
94
+ if (result.rows.length === 0)
95
+ return null;
96
+ const cp = result.rows[0].data;
97
+ const net = new index_1.PetriNet(cp.id);
98
+ const marking = net.state.marking;
99
+ for (const item of cp.marking) {
100
+ marking.set(item.placeId, item.tokens.map((t) => (Object.assign({}, t))));
101
+ }
102
+ net.state.history = [...cp.history];
103
+ let session;
104
+ if (cp.sessionId) {
105
+ session = {
106
+ id: cp.sessionId,
107
+ petriNet: net,
108
+ context: cp.sessionContext || {},
109
+ history: cp.sessionHistory || [],
110
+ createdAt: cp.sessionCreatedAt || cp.timestamp,
111
+ traceId: cp.sessionTraceId || `trace-restored-${Date.now()}`,
112
+ };
113
+ }
114
+ return { net, session };
115
+ });
116
+ }
117
+ list() {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ yield this.initPool();
120
+ const sql = `
121
+ SELECT id, timestamp, session_id as "sessionId"
122
+ FROM ${this.tableName}
123
+ ORDER BY timestamp DESC
124
+ `;
125
+ const result = yield this.pool.query(sql);
126
+ return result.rows.map((row) => ({
127
+ id: row.id,
128
+ timestamp: parseInt(row.timestamp),
129
+ sessionId: row.sessionId,
130
+ }));
131
+ });
132
+ }
133
+ delete(checkpointId) {
134
+ return __awaiter(this, void 0, void 0, function* () {
135
+ yield this.initPool();
136
+ const sql = `DELETE FROM ${this.tableName} WHERE id = $1`;
137
+ yield this.pool.query(sql, [checkpointId]);
138
+ });
139
+ }
140
+ listBySession(sessionId) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ yield this.initPool();
143
+ const sql = `
144
+ SELECT id, timestamp
145
+ FROM ${this.tableName}
146
+ WHERE session_id = $1
147
+ ORDER BY timestamp DESC
148
+ `;
149
+ const result = yield this.pool.query(sql, [sessionId]);
150
+ return result.rows.map((row) => ({
151
+ id: row.id,
152
+ timestamp: parseInt(row.timestamp),
153
+ }));
154
+ });
155
+ }
156
+ close() {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ if (this.pool) {
159
+ yield this.pool.end();
160
+ this.pool = null;
161
+ this.initialized = false;
162
+ }
163
+ });
164
+ }
165
+ }
166
+ exports.PostgresPetriCheckpointAdapter = PostgresPetriCheckpointAdapter;
167
+ //# sourceMappingURL=postgres-checkpoint-adapter.js.map