@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,393 @@
1
+ import { expect } from "chai";
2
+ import { BehaviorSubject, Subject } from "rxjs";
3
+ import { z } from "zod";
4
+ import { GraphFlow } from "../../execution";
5
+ import { GraphObserver } from "../../execution/observer";
6
+ import { GraphContext, GraphEvent, GraphNodeConfig } from "../../types";
7
+
8
+ /**
9
+ * Test schema definition for observer tests
10
+ * Defines a schema with:
11
+ * - value: numeric value for tracking state changes
12
+ * - status: enum representing node execution status
13
+ */
14
+ const TestSchema = z.object({
15
+ value: z.number().default(0),
16
+ status: z.enum(["pending", "completed", "failed"]).optional(),
17
+ });
18
+
19
+ /**
20
+ * Test suite for the GraphObserver implementation
21
+ * This suite validates the reactive observation capabilities:
22
+ * - State observation (global and node-specific)
23
+ * - Property observation (single and multiple)
24
+ * - Event observation and correlation
25
+ * - Workflow monitoring
26
+ * - Node execution triggers
27
+ */
28
+ describe("GraphObserver", () => {
29
+ let graph: GraphFlow<typeof TestSchema>;
30
+ let eventSubject: Subject<GraphEvent<typeof TestSchema>>;
31
+ let stateSubject: BehaviorSubject<GraphContext<typeof TestSchema>>;
32
+ let destroySubject: Subject<void>;
33
+ let observer: GraphObserver<typeof TestSchema>;
34
+
35
+ beforeEach(() => {
36
+ graph = new GraphFlow({
37
+ name: "TestGraph",
38
+ nodes: [],
39
+ context: { value: 0 },
40
+ schema: TestSchema,
41
+ });
42
+
43
+ // Initialize subjects
44
+ eventSubject = new Subject();
45
+ stateSubject = new BehaviorSubject(graph.getContext());
46
+ destroySubject = new Subject();
47
+
48
+ // Create observer instance
49
+ observer = new GraphObserver(
50
+ graph,
51
+ eventSubject,
52
+ stateSubject,
53
+ destroySubject,
54
+ graph["eventManager"]
55
+ );
56
+ });
57
+
58
+ /**
59
+ * Test suite for state observation functionality
60
+ * Validates the ability to track and react to state changes
61
+ * in the graph context
62
+ */
63
+ describe("State Observation", () => {
64
+ /**
65
+ * Tests sequential state change observation
66
+ * Validates that:
67
+ * - All state changes are captured in order
68
+ * - Multiple state changes in a single node are tracked
69
+ * - Initial state is included in observations
70
+ */
71
+ it("should observe state changes", async () => {
72
+ const states: any[] = [];
73
+ const testNode: GraphNodeConfig<typeof TestSchema> = {
74
+ name: "testNode",
75
+ execute: async (context) => {
76
+ context.value = 1;
77
+ context.value = 2;
78
+ context.value = 3;
79
+ },
80
+ };
81
+
82
+ graph.addNode(testNode);
83
+ const subscription = graph
84
+ .observe()
85
+ .state()
86
+ .subscribe((state) => {
87
+ if (state.value !== undefined) {
88
+ states.push(state.value);
89
+ }
90
+ });
91
+
92
+ await graph.execute("testNode");
93
+ await new Promise((resolve) => setTimeout(resolve, 50));
94
+ subscription.unsubscribe();
95
+
96
+ expect(states).to.deep.equal([0, 1, 2, 3]);
97
+ });
98
+
99
+ /**
100
+ * Tests node-specific state observation
101
+ * Validates that:
102
+ * - State changes for specific nodes are tracked
103
+ * - Status transitions are captured correctly
104
+ * - Async state changes are properly observed
105
+ */
106
+ it("should observe specific node state changes", async () => {
107
+ const states: any[] = [];
108
+ const testNode: GraphNodeConfig<typeof TestSchema> = {
109
+ name: "testNode",
110
+ execute: async (context) => {
111
+ context.status = "pending";
112
+ await new Promise((resolve) => setTimeout(resolve, 10));
113
+ context.status = "completed";
114
+ },
115
+ };
116
+
117
+ graph.addNode(testNode);
118
+ const subscription = graph
119
+ .observe()
120
+ .node("testNode")
121
+ .subscribe((state) => state.status && states.push(state.status));
122
+
123
+ await graph.execute("testNode");
124
+ await new Promise((resolve) => setTimeout(resolve, 50));
125
+ subscription.unsubscribe();
126
+
127
+ expect(states).to.deep.equal(["pending", "completed"]);
128
+ });
129
+
130
+ /**
131
+ * Tests multi-node state observation
132
+ * Validates that:
133
+ * - Multiple nodes can be observed simultaneously
134
+ * - State changes are correctly attributed to nodes
135
+ * - Sequential execution is properly tracked
136
+ */
137
+ it("should observe multiple nodes", async () => {
138
+ const states: any[] = [];
139
+ const node1: GraphNodeConfig<typeof TestSchema> = {
140
+ name: "node1",
141
+ execute: async (context) => {
142
+ context.value = 1;
143
+ },
144
+ };
145
+ const node2: GraphNodeConfig<typeof TestSchema> = {
146
+ name: "node2",
147
+ execute: async (context) => {
148
+ context.value = 2;
149
+ },
150
+ };
151
+
152
+ graph.addNode(node1);
153
+ graph.addNode(node2);
154
+
155
+ const subscription = graph
156
+ .observe()
157
+ .nodes(["node1", "node2"])
158
+ .subscribe((state) => state.value && states.push(state.value));
159
+
160
+ await graph.execute("node1");
161
+ await new Promise((resolve) => setTimeout(resolve, 50));
162
+ await graph.execute("node2");
163
+ await new Promise((resolve) => setTimeout(resolve, 50));
164
+ subscription.unsubscribe();
165
+
166
+ expect(states).to.deep.equal([1, 2]);
167
+ });
168
+ });
169
+
170
+ /**
171
+ * Test suite for property observation functionality
172
+ * Validates the ability to track specific properties
173
+ * of the graph context
174
+ */
175
+ describe("Property Observation", () => {
176
+ /**
177
+ * Tests single property observation
178
+ * Validates that:
179
+ * - Individual property changes are tracked
180
+ * - Initial property value is captured
181
+ * - Property updates trigger observations
182
+ */
183
+ it("should observe single property", async () => {
184
+ const values: any[] = [];
185
+ const testNode: GraphNodeConfig<typeof TestSchema> = {
186
+ name: "testNode",
187
+ execute: async (context) => {
188
+ context.value = 42;
189
+ },
190
+ };
191
+
192
+ graph.addNode(testNode);
193
+ const subscription = graph
194
+ .observe()
195
+ .property("value")
196
+ .subscribe((state) => values.push(state.value));
197
+
198
+ await graph.execute("testNode");
199
+ subscription.unsubscribe();
200
+
201
+ expect(values).to.deep.equal([0, 42]);
202
+ });
203
+
204
+ /**
205
+ * Tests multiple property observation
206
+ * Validates that:
207
+ * - Multiple properties can be tracked simultaneously
208
+ * - Changes to any observed property trigger updates
209
+ * - Final state contains all tracked properties
210
+ */
211
+ it("should observe multiple properties", async () => {
212
+ const values: any[] = [];
213
+ const testNode: GraphNodeConfig<typeof TestSchema> = {
214
+ name: "testNode",
215
+ execute: async (context) => {
216
+ context.value = 42;
217
+ context.status = "completed";
218
+ },
219
+ };
220
+
221
+ graph.addNode(testNode);
222
+ const subscription = graph
223
+ .observe()
224
+ .property(["value", "status"])
225
+ .subscribe((change) => {
226
+ const { name, ...rest } = change;
227
+ values.push(rest);
228
+ });
229
+
230
+ await graph.execute("testNode");
231
+ await new Promise((resolve) => setTimeout(resolve, 50));
232
+ subscription.unsubscribe();
233
+
234
+ expect(values[values.length - 1]).to.deep.equal({
235
+ value: 42,
236
+ status: "completed",
237
+ });
238
+ });
239
+
240
+ /**
241
+ * Tests condition-based observation
242
+ * Validates that:
243
+ * - Multiple conditions can be combined
244
+ * - Observation completes when conditions are met
245
+ * - State reflects all required changes
246
+ */
247
+ it("should wait for multiple conditions", async () => {
248
+ const testNode: GraphNodeConfig<typeof TestSchema> = {
249
+ name: "testNode",
250
+ execute: async (context) => {
251
+ context.value = 42;
252
+ context.status = "completed";
253
+ },
254
+ };
255
+
256
+ graph.addNode(testNode);
257
+ const promise = graph
258
+ .observe()
259
+ .until(
260
+ graph.observe().property(["value", "status"]),
261
+ (state) => state.value === 42 && state.status === "completed"
262
+ );
263
+
264
+ await graph.execute("testNode");
265
+ await promise;
266
+
267
+ const context = graph.getContext();
268
+ expect(context.value).to.equal(42);
269
+ expect(context.status).to.equal("completed");
270
+ });
271
+ });
272
+
273
+ /**
274
+ * Test suite for event observation functionality
275
+ * Validates the handling of events and event correlation
276
+ */
277
+ describe("Event Observation", () => {
278
+ /**
279
+ * Tests specific event observation
280
+ */
281
+ it("should observe specific events", async () => {
282
+ const events: GraphEvent<typeof TestSchema>[] = [];
283
+ const subscription = graph
284
+ .observe()
285
+ .event("testEvent")
286
+ .subscribe((e) => events.push(e));
287
+
288
+ await graph.emit("testEvent", { value: 1 });
289
+ await new Promise((resolve) => setTimeout(resolve, 100));
290
+ subscription.unsubscribe();
291
+
292
+ expect(events.length).to.equal(1);
293
+ expect(events[0].type).to.equal("testEvent");
294
+ });
295
+
296
+ /**
297
+ * Tests debounced event handling
298
+ */
299
+ it("should handle debounced events", async () => {
300
+ const events: GraphEvent<typeof TestSchema>[] = [];
301
+ const subscription = graph
302
+ .observe()
303
+ .event("event1")
304
+ .subscribe((e) => events.push(e));
305
+
306
+ await graph.emit("event1", { value: 1 });
307
+ await graph.emit("event1", { value: 2 });
308
+ await new Promise((resolve) => setTimeout(resolve, 100));
309
+ subscription.unsubscribe();
310
+
311
+ expect(events.length).to.equal(2);
312
+ });
313
+
314
+ /**
315
+ * Tests event correlation functionality
316
+ * Validates that:
317
+ * - Multiple events can be correlated
318
+ * - Correlation conditions are properly evaluated
319
+ * - Timeout handling works correctly
320
+ * - Events are captured in correct order
321
+ */
322
+ it("should wait for correlated events", async () => {
323
+ const promise = observer.waitForCorrelatedEvents(
324
+ ["eventA", "eventB"],
325
+ 1000,
326
+ (events) => events.every((e) => e.payload?.status === "success")
327
+ );
328
+
329
+ // Émettre les événements immédiatement
330
+ eventSubject.next({
331
+ type: "eventA",
332
+ payload: { status: "success" },
333
+ timestamp: Date.now(),
334
+ });
335
+
336
+ eventSubject.next({
337
+ type: "eventB",
338
+ payload: { status: "success" },
339
+ timestamp: Date.now(),
340
+ });
341
+
342
+ const events = await promise;
343
+ expect(events).to.have.length(2);
344
+ expect(events[0].type).to.equal("eventA");
345
+ expect(events[1].type).to.equal("eventB");
346
+ });
347
+
348
+ afterEach(() => {
349
+ destroySubject.next();
350
+ destroySubject.complete();
351
+ eventSubject.complete();
352
+ stateSubject.complete();
353
+ });
354
+ });
355
+
356
+ /**
357
+ * Test suite for workflow observation functionality
358
+ * Validates the ability to monitor complete workflow execution
359
+ */
360
+ describe("Workflow Observation", () => {
361
+ /**
362
+ * Tests complete workflow observation
363
+ * Validates that:
364
+ * - Entire workflow execution is tracked
365
+ * - State transitions are captured
366
+ * - Final state reflects completed workflow
367
+ */
368
+ it("should observe complete workflow", async () => {
369
+ const states: any[] = [];
370
+ const node: GraphNodeConfig<typeof TestSchema> = {
371
+ name: "testNode",
372
+ execute: async (context) => {
373
+ context.status = "pending";
374
+ await new Promise((resolve) => setTimeout(resolve, 10));
375
+ context.status = "completed";
376
+ },
377
+ };
378
+
379
+ graph.addNode(node);
380
+ const subscription = graph
381
+ .observe()
382
+ .node("testNode")
383
+ .subscribe((state) => states.push(state));
384
+
385
+ await graph.execute("testNode");
386
+ await new Promise((resolve) => setTimeout(resolve, 50));
387
+ subscription.unsubscribe();
388
+
389
+ expect(states.length).to.be.greaterThan(0);
390
+ expect(states[states.length - 1].status).to.equal("completed");
391
+ });
392
+ });
393
+ });
@@ -0,0 +1,135 @@
1
+ import { expect } from "chai";
2
+ import { GraphFlow } from "../../execution";
3
+ import { nodeRegistry } from "../../execution/registry";
4
+ import { ParallelNodeConfig } from "../../execution/types.parallel";
5
+ import { GraphContext } from "../../types";
6
+
7
+ describe("Fork-Join Parallelism", () => {
8
+ beforeEach(() => {
9
+ // Nettoyer le registry avant chaque test
10
+ (nodeRegistry as any).executeFunctions.clear();
11
+ (nodeRegistry as any).nodeConfigs.clear();
12
+ });
13
+
14
+ it("should execute branches in parallel with Promise.all", async () => {
15
+ const executionTimes: number[] = [];
16
+ const startTime = Date.now();
17
+
18
+ const nodes: ParallelNodeConfig<any>[] = [
19
+ {
20
+ name: "A",
21
+ execute: async (ctx: any) => {
22
+ ctx.value = 1;
23
+ },
24
+ parallel: { enabled: true, joinNode: "C" },
25
+ next: ["B1", "B2", "B3"],
26
+ },
27
+ {
28
+ name: "B1",
29
+ execute: async (ctx: any) => {
30
+ const start = Date.now();
31
+ await new Promise(r => setTimeout(r, 100));
32
+ executionTimes.push(Date.now() - start);
33
+ ctx.results = [...(ctx.results || []), "B1"];
34
+ },
35
+ },
36
+ {
37
+ name: "B2",
38
+ execute: async (ctx: any) => {
39
+ const start = Date.now();
40
+ await new Promise(r => setTimeout(r, 50));
41
+ executionTimes.push(Date.now() - start);
42
+ ctx.results = [...(ctx.results || []), "B2"];
43
+ },
44
+ },
45
+ {
46
+ name: "B3",
47
+ execute: async (ctx: any) => {
48
+ const start = Date.now();
49
+ await new Promise(r => setTimeout(r, 150));
50
+ executionTimes.push(Date.now() - start);
51
+ ctx.results = [...(ctx.results || []), "B3"];
52
+ },
53
+ },
54
+ {
55
+ name: "C",
56
+ execute: async (ctx: any) => {
57
+ ctx.value = 2;
58
+ },
59
+ },
60
+ ];
61
+
62
+ const graph = new GraphFlow({
63
+ name: "fork-join-test",
64
+ schema: { parse: (ctx: any) => ctx } as any,
65
+ context: { value: 0, results: [] as string[] },
66
+ nodes: nodes,
67
+ entryNode: "A",
68
+ });
69
+
70
+ // Enregistrer les nodes
71
+ nodes.forEach(node => nodeRegistry.registerParallel(node));
72
+
73
+ const context = await graph.execute("A");
74
+
75
+ const totalTime = Date.now() - startTime;
76
+
77
+ expect(context.value).to.equal(2);
78
+ expect(context.results).to.have.length(3);
79
+ expect(context.results).to.include("B1");
80
+ expect(context.results).to.include("B2");
81
+ expect(context.results).to.include("B3");
82
+
83
+ // Le temps total devrait être proche du max(100, 50, 150) = 150ms
84
+ // et non 100+50+150 = 300ms (séquentiel)
85
+ expect(totalTime).to.be.lessThan(250); // Marge de manœuvre
86
+ });
87
+
88
+ it("should merge contexts with deep-merge by default", async () => {
89
+ const nodes: ParallelNodeConfig<any>[] = [
90
+ {
91
+ name: "start",
92
+ execute: async (ctx: any) => {
93
+ ctx.base = "base";
94
+ },
95
+ parallel: { enabled: true, joinNode: "merge" },
96
+ next: ["branch1", "branch2"],
97
+ },
98
+ {
99
+ name: "branch1",
100
+ execute: async (ctx: any) => {
101
+ ctx.fromBranch1 = "value1";
102
+ },
103
+ },
104
+ {
105
+ name: "branch2",
106
+ execute: async (ctx: any) => {
107
+ ctx.fromBranch2 = "value2";
108
+ },
109
+ },
110
+ {
111
+ name: "merge",
112
+ execute: async (ctx: any) => {
113
+ ctx.merged = true;
114
+ },
115
+ },
116
+ ];
117
+
118
+ const graph = new GraphFlow({
119
+ name: "merge-test",
120
+ schema: { parse: (ctx: any) => ctx } as any,
121
+ context: {} as any,
122
+ nodes: nodes,
123
+ entryNode: "start",
124
+ });
125
+
126
+ nodes.forEach(node => nodeRegistry.registerParallel(node));
127
+
128
+ const context = await graph.execute("start");
129
+
130
+ expect(context.base).to.equal("base");
131
+ expect(context.fromBranch1).to.equal("value1");
132
+ expect(context.fromBranch2).to.equal("value2");
133
+ expect(context.merged).to.be.true;
134
+ });
135
+ });