@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,597 @@
1
+ import { Observable } from "rxjs";
2
+ import { ZodSchema } from "zod";
3
+ import {
4
+ BaseMemoryType,
5
+ Checkpoint,
6
+ CreateMemoryInput,
7
+ GraphContext,
8
+ GraphEvent,
9
+ GraphNodeConfig,
10
+ ScheduledRequest,
11
+ SchemaType,
12
+ } from "../types";
13
+
14
+ /* ======================== EMBEDDING SERVICE ======================== */
15
+
16
+ /**
17
+ * Interface for an embedding service that processes text into vector representations.
18
+ */
19
+ export interface EmbeddingModule {
20
+ /**
21
+ * Generates an embedding for a single text.
22
+ * @param {string} text - The input text to embed.
23
+ * @returns {Promise<number[]>} - A vector representation of the text.
24
+ */
25
+ embedText(text: string): Promise<number[]>;
26
+
27
+ /**
28
+ * Generates embeddings for multiple texts at once.
29
+ * @param {string[]} texts - The array of texts to embed.
30
+ * @returns {Promise<number[][]>} - A list of vector representations.
31
+ */
32
+ embedMany(texts: string[]): Promise<number[][]>;
33
+
34
+ /**
35
+ * Calculates the similarity between two embeddings.
36
+ * @param {number[]} embedding1 - First vector.
37
+ * @param {number[]} embedding2 - Second vector.
38
+ * @returns {number} - A similarity score between the two vectors.
39
+ */
40
+ calculateSimilarity(embedding1: number[], embedding2: number[]): number;
41
+ }
42
+
43
+ /* ======================== MEMORY SERVICE ======================== */
44
+
45
+ /**
46
+ * Interface for managing memory storage and retrieval.
47
+ */
48
+ export interface BaseMemoryService {
49
+ /**
50
+ * Initializes the memory storage connection.
51
+ * @returns {Promise<void>} - Resolves when initialization is complete.
52
+ */
53
+ initializeConnection(): Promise<void>;
54
+
55
+ /**
56
+ * Stores a new memory entry.
57
+ * @param {BaseMemoryType} memory - The memory data to store.
58
+ * @param {number} [ttl] - Optional time-to-live in seconds.
59
+ * @returns {Promise<void>}
60
+ */
61
+ createMemory(memory: BaseMemoryType, ttl?: number): Promise<void>;
62
+
63
+ /**
64
+ * Retrieves a memory entry by its unique ID.
65
+ * @param {string} id - The memory entry identifier.
66
+ * @returns {Promise<BaseMemoryType | null>} - The found memory or null.
67
+ */
68
+ getMemoryById(id: string): Promise<BaseMemoryType | null>;
69
+
70
+ /**
71
+ * Searches for memory entries based on a query and optional constraints.
72
+ * @param {string} query - The search query.
73
+ * @param {Object} options - Search options.
74
+ * @param {string} options.roomId - The room identifier.
75
+ * @param {number} [options.limit] - Maximum number of results (optional).
76
+ * @returns {Promise<BaseMemoryType[]>} - A list of matched memory entries.
77
+ */
78
+ getMemoryByIndex(
79
+ query: string,
80
+ options: {
81
+ roomId: string;
82
+ limit?: number;
83
+ }
84
+ ): Promise<BaseMemoryType[]>;
85
+
86
+ /**
87
+ * Retrieves all stored memory entries.
88
+ * @returns {Promise<BaseMemoryType[]>} - A list of all memory entries.
89
+ */
90
+ getAllMemories(): Promise<BaseMemoryType[]>;
91
+
92
+ /**
93
+ * Deletes a memory entry by its unique ID.
94
+ * @param {string} id - The memory entry identifier.
95
+ * @returns {Promise<void>}
96
+ */
97
+ clearMemoryById(id: string): Promise<void>;
98
+
99
+ /**
100
+ * Clears all stored memory entries.
101
+ * @returns {Promise<void>}
102
+ */
103
+ clearAllMemories(): Promise<void>;
104
+ }
105
+
106
+ /**
107
+ * Extended interface for memory service operations
108
+ * @interface
109
+ */
110
+ export interface IMemoryService {
111
+ /**
112
+ * Initializes the memory service
113
+ * @returns {Promise<void>}
114
+ */
115
+ init(): Promise<void>;
116
+
117
+ /**
118
+ * Creates a new memory entry with optional embedding
119
+ * @param {CreateMemoryInput & { embedding?: number[] }} input - Memory data with optional embedding
120
+ * @returns {Promise<BaseMemoryType | undefined>} Created memory or undefined
121
+ */
122
+ createMemory(
123
+ input: CreateMemoryInput & { embedding?: number[] }
124
+ ): Promise<BaseMemoryType | undefined>;
125
+
126
+ /**
127
+ * Retrieves a memory by ID and room ID
128
+ * @param {string} id - Memory identifier
129
+ * @param {string} roomId - Room identifier
130
+ * @returns {Promise<BaseMemoryType | null>} Memory entry or null if not found
131
+ */
132
+ getMemoryById(id: string, roomId: string): Promise<BaseMemoryType | null>;
133
+
134
+ /**
135
+ * Searches for memories based on query and options
136
+ * @param {string} query - Search query
137
+ * @param {Object} options - Search options
138
+ * @returns {Promise<BaseMemoryType[]>} Array of matching memories
139
+ */
140
+ getMemoryByIndex(
141
+ query: string,
142
+ options: { roomId: string; limit?: number }
143
+ ): Promise<BaseMemoryType[]>;
144
+
145
+ /**
146
+ * Retrieves all memories for a specific room
147
+ * @param {string} roomId - Room identifier
148
+ * @returns {Promise<BaseMemoryType[]>} Array of all memories
149
+ */
150
+ getAllMemories(roomId: string): Promise<BaseMemoryType[]>;
151
+
152
+ /**
153
+ * Deletes a specific memory
154
+ * @param {string} id - Memory identifier
155
+ * @param {string} roomId - Room identifier
156
+ * @returns {Promise<void>}
157
+ */
158
+ clearMemoryById(id: string, roomId: string): Promise<void>;
159
+
160
+ /**
161
+ * Clears all memories
162
+ * @returns {Promise<void>}
163
+ */
164
+ clearAllMemories(): Promise<void>;
165
+
166
+ saveJob(id: string, job: any): Promise<void>;
167
+ saveRequest(id: string, request: any): Promise<void>;
168
+ getJob(id: string): Promise<any>;
169
+ getRequest(id: string): Promise<any>;
170
+ deleteJob(id: string): Promise<void>;
171
+ deleteRequest(id: string): Promise<void>;
172
+ getAllRequests(): Promise<any[]>;
173
+ clear(): Promise<void>;
174
+ }
175
+
176
+ /**
177
+ * Interface for memory adapter implementations
178
+ * @interface
179
+ */
180
+ export interface IMemoryAdapter {
181
+ /**
182
+ * Initializes the memory adapter for a specific room
183
+ * @param {string} roomId - Room identifier
184
+ * @returns {Promise<void>}
185
+ */
186
+ init(roomId?: string): Promise<void>;
187
+
188
+ /**
189
+ * Creates a new memory entry in the adapter
190
+ * @param {CreateMemoryInput & { embedding?: number[] }} input - Memory data with optional embedding
191
+ * @returns {Promise<BaseMemoryType | undefined>} Created memory or undefined
192
+ */
193
+ createMemory(
194
+ input: CreateMemoryInput & { embedding?: number[] }
195
+ ): Promise<BaseMemoryType | undefined>;
196
+
197
+ /**
198
+ * Stores a job in the adapter
199
+ * @param {string} id - Job identifier
200
+ * @param {ICronJob} job - Cron job instance
201
+ * @returns {Promise<void>}
202
+ */
203
+ saveJob?(id: string, job: ICronJob): Promise<void>;
204
+
205
+ /**
206
+ * Stores a scheduled request in the adapter
207
+ * @param {string} id - Request identifier
208
+ * @param {ScheduledRequest} request - Scheduled request data
209
+ * @returns {Promise<void>}
210
+ */
211
+ saveRequest?(id: string, request: ScheduledRequest): Promise<void>;
212
+
213
+ /**
214
+ * Retrieves a job by ID
215
+ * @param {string} id - Job identifier
216
+ * @returns {Promise<ICronJob | undefined>}
217
+ */
218
+ getJob?(id: string): Promise<ICronJob | undefined>;
219
+
220
+ /**
221
+ * Retrieves a scheduled request by ID
222
+ * @param {string} id - Request identifier
223
+ * @returns {Promise<ScheduledRequest | undefined>}
224
+ */
225
+ getRequest?(id: string): Promise<ScheduledRequest | undefined>;
226
+
227
+ /**
228
+ * Deletes a job by ID
229
+ * @param {string} id - Job identifier
230
+ * @returns {Promise<void>}
231
+ */
232
+ deleteJob?(id: string): Promise<void>;
233
+
234
+ /**
235
+ * Deletes a scheduled request by ID
236
+ * @param {string} id - Request identifier
237
+ * @returns {Promise<void>}
238
+ */
239
+ deleteRequest?(id: string): Promise<void>;
240
+
241
+ /**
242
+ * Retrieves all scheduled requests
243
+ * @returns {Promise<ScheduledRequest[]>}
244
+ */
245
+ getAllRequests?(): Promise<ScheduledRequest[]>;
246
+
247
+ /**
248
+ * Retrieves a memory by ID and room ID from the adapter
249
+ * @param {string} id - Memory identifier
250
+ * @param {string} roomId - Room identifier
251
+ * @returns {Promise<BaseMemoryType | null>} Memory entry or null if not found
252
+ */
253
+ getMemoryById(id: string, roomId: string): Promise<BaseMemoryType | null>;
254
+
255
+ /**
256
+ * Searches for memories in the adapter
257
+ * @param {string} query - Search query
258
+ * @param {Object} options - Search options
259
+ * @returns {Promise<BaseMemoryType[]>} Array of matching memories
260
+ */
261
+ getMemoryByIndex(
262
+ query: string,
263
+ options: { roomId: string; limit?: number }
264
+ ): Promise<BaseMemoryType[]>;
265
+
266
+ /**
267
+ * Retrieves all memories for a room from the adapter
268
+ * @param {string} roomId - Room identifier
269
+ * @returns {Promise<BaseMemoryType[]>} Array of all memories
270
+ */
271
+ getAllMemories(roomId: string): Promise<BaseMemoryType[]>;
272
+
273
+ /**
274
+ * Deletes a specific memory from the adapter
275
+ * @param {string} id - Memory identifier
276
+ * @param {string} roomId - Room identifier
277
+ * @returns {Promise<void>}
278
+ */
279
+ clearMemoryById(id: string, roomId: string): Promise<void>;
280
+
281
+ /**
282
+ * Clears all memories from the adapter
283
+ * @returns {Promise<void>}
284
+ */
285
+ clearAllMemories(): Promise<void>;
286
+
287
+ /**
288
+ * Clears all jobs and requests
289
+ * @returns {Promise<void>}
290
+ */
291
+ clear?(): Promise<void>;
292
+ }
293
+
294
+ /**
295
+ * Abstract base class for memory implementations
296
+ * @abstract
297
+ */
298
+ export abstract class BaseMemory implements IMemoryService {
299
+ /**
300
+ * Creates an instance of BaseMemory
301
+ * @param {IMemoryAdapter} adapter - Memory adapter implementation
302
+ */
303
+ constructor(protected readonly adapter: IMemoryAdapter) {}
304
+
305
+ abstract init(): Promise<void>;
306
+ abstract createMemory(
307
+ input: CreateMemoryInput & { embedding?: number[] }
308
+ ): Promise<BaseMemoryType | undefined>;
309
+ abstract getMemoryById(
310
+ id: string,
311
+ roomId: string
312
+ ): Promise<BaseMemoryType | null>;
313
+ abstract getMemoryByIndex(
314
+ query: string,
315
+ options: { roomId: string; limit?: number }
316
+ ): Promise<BaseMemoryType[]>;
317
+ abstract getAllMemories(roomId: string): Promise<BaseMemoryType[]>;
318
+ abstract clearMemoryById(id: string, roomId: string): Promise<void>;
319
+ abstract clearAllMemories(): Promise<void>;
320
+
321
+ async saveJob(id: string, job: any): Promise<void> {
322
+ await this.adapter.saveJob?.(id, job);
323
+ }
324
+
325
+ async saveRequest(id: string, request: any): Promise<void> {
326
+ await this.adapter.saveRequest?.(id, request);
327
+ }
328
+
329
+ async getJob(id: string): Promise<any> {
330
+ return this.adapter.getJob?.(id);
331
+ }
332
+
333
+ async getRequest(id: string): Promise<any> {
334
+ return this.adapter.getRequest?.(id);
335
+ }
336
+
337
+ async deleteJob(id: string): Promise<void> {
338
+ await this.adapter.deleteJob?.(id);
339
+ }
340
+
341
+ async deleteRequest(id: string): Promise<void> {
342
+ await this.adapter.deleteRequest?.(id);
343
+ }
344
+
345
+ async getAllRequests(): Promise<any[]> {
346
+ return this.adapter.getAllRequests?.() || [];
347
+ }
348
+
349
+ async clear(): Promise<void> {
350
+ await this.adapter.clear?.();
351
+ }
352
+ }
353
+
354
+ /**
355
+ * Interface for event emitter functionality
356
+ * @interface
357
+ */
358
+ export interface IEventEmitter {
359
+ /**
360
+ * Emits an event with optional arguments
361
+ * @param {string} event - Event name
362
+ * @param {...any[]} args - Event arguments
363
+ * @returns {boolean} Whether the event had listeners
364
+ */
365
+ emit(event: string, ...args: any[]): boolean;
366
+
367
+ /**
368
+ * Registers an event listener
369
+ * @param {string} event - Event name
370
+ * @param {Function} listener - Event handler
371
+ */
372
+ on(event: string, listener: (...args: any[]) => void): void;
373
+
374
+ /**
375
+ * Removes all listeners for an event
376
+ * @param {string} [event] - Optional event name
377
+ */
378
+ removeAllListeners(event?: string): void;
379
+
380
+ /**
381
+ * Returns raw listeners for an event
382
+ * @param {string} event - Event name
383
+ * @returns {Function[]} Array of listener functions
384
+ */
385
+ rawListeners(event: string): Function[];
386
+
387
+ /**
388
+ * Registers an event listener that will be called only once
389
+ * @param {string} event - Event name
390
+ * @param {Function} listener - Event handler
391
+ */
392
+ once(event: string, listener: (...args: any[]) => void): void;
393
+
394
+ /**
395
+ * Removes a specific listener for an event
396
+ * @param {string} event - Event name
397
+ * @param {Function} listener - Event handler
398
+ */
399
+ removeListener(event: string, listener: (...args: any[]) => void): void;
400
+ }
401
+
402
+ /**
403
+ * Interface for cron service functionality
404
+ * @interface
405
+ */
406
+ export interface ICronService {
407
+ /**
408
+ * Schedules a job using cron expression
409
+ * @param {string} expression - Cron expression
410
+ * @param {Function} callback - Job callback
411
+ * @returns {ICronJob} Cron job instance
412
+ */
413
+ schedule(expression: string, callback: () => void): ICronJob;
414
+ }
415
+
416
+ /**
417
+ * Interface for cron job control
418
+ * @interface
419
+ */
420
+ export interface ICronJob {
421
+ /**
422
+ * Starts the cron job
423
+ */
424
+ start(): void;
425
+
426
+ /**
427
+ * Stops the cron job
428
+ */
429
+ stop(): void;
430
+ }
431
+
432
+ /**
433
+ * Interface for embedding model operations
434
+ * @interface
435
+ */
436
+ export interface IEmbeddingModel {
437
+ /**
438
+ * Embeds a single text
439
+ * @param {string} text - Text to embed
440
+ * @returns {Promise<number[]>} Vector embedding
441
+ */
442
+ embed(text: string): Promise<number[]>;
443
+
444
+ /**
445
+ * Embeds multiple texts
446
+ * @param {string[]} texts - Array of texts to embed
447
+ * @returns {Promise<number[][]>} Array of vector embeddings
448
+ */
449
+ embedMany(texts: string[]): Promise<number[][]>;
450
+ }
451
+
452
+ /**
453
+ * Interface for similarity calculations
454
+ * @interface
455
+ */
456
+ export interface ISimilarityCalculator {
457
+ /**
458
+ * Calculates similarity between two embeddings
459
+ * @param {number[]} embedding1 - First embedding
460
+ * @param {number[]} embedding2 - Second embedding
461
+ * @returns {number} Similarity score
462
+ */
463
+ calculate(embedding1: number[], embedding2: number[]): number;
464
+ }
465
+
466
+ /**
467
+ * Interface for embedding module operations
468
+ * @interface
469
+ */
470
+ export interface IEmbeddingModule {
471
+ /**
472
+ * Embeds a single text
473
+ * @param {string} text - Text to embed
474
+ * @returns {Promise<number[]>} Vector embedding
475
+ */
476
+ embedText(text: string): Promise<number[]>;
477
+
478
+ /**
479
+ * Embeds multiple texts
480
+ * @param {string[]} texts - Array of texts to embed
481
+ * @returns {Promise<number[][]>} Array of vector embeddings
482
+ */
483
+ embedMany(texts: string[]): Promise<number[][]>;
484
+
485
+ /**
486
+ * Calculates similarity between two embeddings
487
+ * @param {number[]} embedding1 - First embedding
488
+ * @param {number[]} embedding2 - Second embedding
489
+ * @returns {number} Similarity score
490
+ */
491
+ calculateSimilarity(embedding1: number[], embedding2: number[]): number;
492
+ }
493
+
494
+ export interface IJobStorage {
495
+ saveJob(id: string, job: ICronJob): Promise<void>;
496
+ saveRequest(id: string, request: ScheduledRequest): Promise<void>;
497
+ getJob(id: string): Promise<ICronJob | undefined>;
498
+ getRequest(id: string): Promise<ScheduledRequest | undefined>;
499
+ deleteJob(id: string): Promise<void>;
500
+ deleteRequest(id: string): Promise<void>;
501
+ getAllRequests(): Promise<ScheduledRequest[]>;
502
+ clear(): Promise<void>;
503
+ }
504
+
505
+ /**
506
+ * Interface defining the extended functionality of a graph observable
507
+ * @template T - The Zod schema type that defines the structure of the graph data
508
+ */
509
+ export interface GraphObservable<T extends ZodSchema> extends Observable<any> {
510
+ /**
511
+ * Observes the entire graph state
512
+ */
513
+ state(): Observable<GraphContext<T>>;
514
+
515
+ /**
516
+ * Observes a specific node's state
517
+ * @param nodeName - The name of the node to observe
518
+ */
519
+ node(nodeName: string): Observable<any>;
520
+
521
+ /**
522
+ * Observes multiple nodes' states
523
+ * @param nodeNames - Array of node names to observe
524
+ */
525
+ nodes(nodeNames: string[]): Observable<any>;
526
+
527
+ /**
528
+ * Observes specific properties of the graph context
529
+ * @param prop - Property or array of properties to observe
530
+ */
531
+ property(
532
+ prop: keyof SchemaType<T> | Array<keyof SchemaType<T>>
533
+ ): Observable<any>;
534
+
535
+ /**
536
+ * Observes specific events in the graph
537
+ * @param eventName - The name of the event to observe
538
+ */
539
+ event(eventName: string): Observable<GraphEvent<T>>;
540
+
541
+ /**
542
+ * Waits for a specific condition to be met
543
+ * @param observable - The observable to watch
544
+ * @param predicate - Function that determines when the condition is met
545
+ */
546
+ until(
547
+ observable: Observable<any>,
548
+ predicate: (state: any) => boolean
549
+ ): Promise<any>;
550
+ }
551
+
552
+ export interface NLPNodeConfig<T extends ZodSchema>
553
+ extends Omit<GraphNodeConfig<T>, "execute"> {
554
+ nlpConfig: {
555
+ corpus?: any;
556
+ responses?: Record<string, any>;
557
+ entities?: Record<string, any>;
558
+ language?: string;
559
+ };
560
+ intentHandlers?: Record<string, (data: any) => Promise<any>>;
561
+ }
562
+
563
+ /* ======================== CHECKPOINT ======================== */
564
+
565
+ /**
566
+ * Interface for checkpoint persistence adapters
567
+ */
568
+ export interface ICheckpointAdapter {
569
+ save(checkpoint: Checkpoint): Promise<void>;
570
+ load(id: string): Promise<Checkpoint | null>;
571
+ list(graphName: string): Promise<Checkpoint[]>;
572
+ delete(id: string): Promise<void>;
573
+ clear(graphName?: string): Promise<void>;
574
+ }
575
+
576
+ export interface MemoryRelation {
577
+ fromId: string;
578
+ toId: string;
579
+ type: string;
580
+ properties?: Record<string, any>;
581
+ roomId: string;
582
+ }
583
+
584
+ export interface IGraphMemoryAdapter extends IMemoryAdapter {
585
+ addRelation(relation: MemoryRelation): Promise<void>;
586
+ removeRelation(fromId: string, toId: string, type: string, roomId: string): Promise<void>;
587
+ getRelated(
588
+ id: string,
589
+ options: {
590
+ roomId: string;
591
+ relationTypes?: string[];
592
+ direction?: "in" | "out" | "both";
593
+ depth?: number;
594
+ limit?: number;
595
+ }
596
+ ): Promise<Array<{ memory: BaseMemoryType; relationPath: string[] }>>;
597
+ }
@@ -0,0 +1,25 @@
1
+ import cron from "node-cron";
2
+ import { ICronJob, ICronService } from "../../../../interfaces";
3
+
4
+ /**
5
+ * @module NodeCronAdapter
6
+ * @description Adapter implementation for node-cron service.
7
+ * Provides a bridge between the application's scheduling interface and the node-cron library.
8
+ * @implements {ICronService}
9
+ */
10
+ export class NodeCronAdapter implements ICronService {
11
+ /**
12
+ * Schedules a new cron job
13
+ * @param {string} expression - Cron expression defining the schedule
14
+ * @param {Function} callback - Function to be executed when the schedule triggers
15
+ * @returns {ICronJob} Interface for controlling the scheduled job
16
+ */
17
+ schedule(expression: string, callback: () => void): ICronJob {
18
+ const job = cron.schedule(expression, callback);
19
+
20
+ return {
21
+ start: () => job.start(),
22
+ stop: () => job.stop(),
23
+ };
24
+ }
25
+ }