@ai.ntellect/core 0.8.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/.mocharc.json +2 -1
  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 +413 -199
  7. package/agent/agent-workflow.ts +569 -0
  8. package/agent/agent.ts +183 -0
  9. package/{modules/agent → agent}/base/executor.ts +11 -8
  10. package/{modules/agent → agent}/base/index.ts +2 -14
  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/{modules/agent → agent}/prompt-builder.ts +1 -1
  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/{modules/agent → agent}/base/executor.d.ts +3 -3
  44. package/dist/agent/base/executor.d.ts.map +1 -0
  45. package/dist/{modules/agent → agent}/base/executor.js +8 -5
  46. package/dist/agent/base/executor.js.map +1 -0
  47. package/dist/{modules/agent → agent}/base/index.d.ts +1 -1
  48. package/dist/agent/base/index.d.ts.map +1 -0
  49. package/dist/{modules/agent → agent}/base/index.js +0 -12
  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/{modules/agent → agent}/generic-executor.d.ts +37 -27
  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.map +1 -0
  96. package/dist/agent/llm-factory.js +297 -0
  97. package/dist/agent/llm-factory.js.map +1 -0
  98. package/dist/agent/orchestrator.d.ts +18 -0
  99. package/dist/agent/orchestrator.d.ts.map +1 -0
  100. package/dist/agent/orchestrator.js +44 -0
  101. package/dist/agent/orchestrator.js.map +1 -0
  102. package/dist/{modules/agent → agent}/prompt-builder.d.ts +1 -1
  103. package/dist/agent/prompt-builder.d.ts.map +1 -0
  104. package/dist/agent/prompt-builder.js.map +1 -0
  105. package/dist/agent/registry.d.ts +19 -0
  106. package/dist/agent/registry.d.ts.map +1 -0
  107. package/dist/agent/registry.js +48 -0
  108. package/dist/agent/registry.js.map +1 -0
  109. package/dist/agent/tools/file-system.d.ts +11 -0
  110. package/dist/agent/tools/file-system.d.ts.map +1 -0
  111. package/dist/agent/tools/file-system.js +528 -0
  112. package/dist/agent/tools/file-system.js.map +1 -0
  113. package/dist/agent/tools/index.d.ts +4 -0
  114. package/dist/agent/tools/index.d.ts.map +1 -0
  115. package/dist/agent/tools/index.js +20 -0
  116. package/dist/agent/tools/index.js.map +1 -0
  117. package/dist/agent/tools/logger.d.ts +33 -0
  118. package/dist/agent/tools/logger.d.ts.map +1 -0
  119. package/dist/agent/tools/logger.js +86 -0
  120. package/dist/agent/tools/logger.js.map +1 -0
  121. package/dist/agent/tools/tool-resolver.d.ts +7 -0
  122. package/dist/agent/tools/tool-resolver.d.ts.map +1 -0
  123. package/dist/agent/tools/tool-resolver.js +122 -0
  124. package/dist/agent/tools/tool-resolver.js.map +1 -0
  125. package/dist/execution/adapters/in-memory-checkpoint.d.ts +11 -0
  126. package/dist/execution/adapters/in-memory-checkpoint.d.ts.map +1 -0
  127. package/dist/execution/adapters/in-memory-checkpoint.js +54 -0
  128. package/dist/execution/adapters/in-memory-checkpoint.js.map +1 -0
  129. package/dist/execution/compiler.d.ts +8 -0
  130. package/dist/execution/compiler.d.ts.map +1 -0
  131. package/dist/execution/compiler.js +50 -0
  132. package/dist/execution/compiler.js.map +1 -0
  133. package/dist/execution/controller.d.ts.map +1 -0
  134. package/dist/execution/controller.js.map +1 -0
  135. package/dist/execution/event-manager.d.ts +29 -0
  136. package/dist/execution/event-manager.d.ts.map +1 -0
  137. package/dist/{graph → execution}/event-manager.js +4 -114
  138. package/dist/execution/event-manager.js.map +1 -0
  139. package/dist/{graph → execution}/index.d.ts +50 -2
  140. package/dist/execution/index.d.ts.map +1 -0
  141. package/dist/execution/index.js +638 -0
  142. package/dist/execution/index.js.map +1 -0
  143. package/dist/execution/logger.d.ts.map +1 -0
  144. package/dist/execution/logger.js.map +1 -0
  145. package/dist/{graph → execution}/node.d.ts +6 -1
  146. package/dist/execution/node.d.ts.map +1 -0
  147. package/dist/{graph → execution}/node.js +83 -10
  148. package/dist/execution/node.js.map +1 -0
  149. package/dist/execution/observer.d.ts.map +1 -0
  150. package/dist/execution/observer.js.map +1 -0
  151. package/dist/execution/planner.d.ts +14 -0
  152. package/dist/execution/planner.d.ts.map +1 -0
  153. package/dist/execution/planner.js +43 -0
  154. package/dist/execution/planner.js.map +1 -0
  155. package/dist/execution/reducer.d.ts +19 -0
  156. package/dist/execution/reducer.d.ts.map +1 -0
  157. package/dist/execution/reducer.js +61 -0
  158. package/dist/execution/reducer.js.map +1 -0
  159. package/dist/execution/registry.d.ts +38 -0
  160. package/dist/execution/registry.d.ts.map +1 -0
  161. package/dist/execution/registry.js +63 -0
  162. package/dist/execution/registry.js.map +1 -0
  163. package/dist/execution/send-api.d.ts +24 -0
  164. package/dist/execution/send-api.d.ts.map +1 -0
  165. package/dist/execution/send-api.js +52 -0
  166. package/dist/execution/send-api.js.map +1 -0
  167. package/dist/execution/types.parallel.d.ts +61 -0
  168. package/dist/execution/types.parallel.d.ts.map +1 -0
  169. package/dist/execution/types.parallel.js +3 -0
  170. package/dist/execution/types.parallel.js.map +1 -0
  171. package/dist/execution/visualizer.d.ts.map +1 -0
  172. package/dist/execution/visualizer.js.map +1 -0
  173. package/dist/index.d.ts +27 -8
  174. package/dist/index.d.ts.map +1 -1
  175. package/dist/index.js +42 -8
  176. package/dist/index.js.map +1 -1
  177. package/dist/interfaces/index.d.ts +32 -1
  178. package/dist/interfaces/index.d.ts.map +1 -1
  179. package/dist/interfaces/index.js.map +1 -1
  180. package/dist/modules/cli/index.d.ts +13 -0
  181. package/dist/modules/cli/index.d.ts.map +1 -0
  182. package/dist/modules/cli/index.js +672 -0
  183. package/dist/modules/cli/index.js.map +1 -0
  184. package/dist/modules/nlp/engine.d.ts.map +1 -1
  185. package/dist/modules/nlp/engine.js +0 -1
  186. package/dist/modules/nlp/engine.js.map +1 -1
  187. package/dist/persistence/index.d.ts +12 -0
  188. package/dist/persistence/index.d.ts.map +1 -0
  189. package/dist/persistence/index.js +24 -0
  190. package/dist/persistence/index.js.map +1 -0
  191. package/dist/persistence/neo4j/driver.d.ts +26 -0
  192. package/dist/persistence/neo4j/driver.d.ts.map +1 -0
  193. package/dist/persistence/neo4j/driver.js +64 -0
  194. package/dist/persistence/neo4j/driver.js.map +1 -0
  195. package/dist/persistence/neo4j/entity-store.d.ts +15 -0
  196. package/dist/persistence/neo4j/entity-store.d.ts.map +1 -0
  197. package/dist/persistence/neo4j/entity-store.js +136 -0
  198. package/dist/persistence/neo4j/entity-store.js.map +1 -0
  199. package/dist/persistence/neo4j/execution-tracer.d.ts +19 -0
  200. package/dist/persistence/neo4j/execution-tracer.d.ts.map +1 -0
  201. package/dist/persistence/neo4j/execution-tracer.js +166 -0
  202. package/dist/persistence/neo4j/execution-tracer.js.map +1 -0
  203. package/dist/persistence/neo4j/memory-adapter.d.ts +35 -0
  204. package/dist/persistence/neo4j/memory-adapter.d.ts.map +1 -0
  205. package/dist/persistence/neo4j/memory-adapter.js +252 -0
  206. package/dist/persistence/neo4j/memory-adapter.js.map +1 -0
  207. package/dist/persistence/neo4j/petri-checkpoint-adapter.d.ts +22 -0
  208. package/dist/persistence/neo4j/petri-checkpoint-adapter.d.ts.map +1 -0
  209. package/dist/persistence/neo4j/petri-checkpoint-adapter.js +141 -0
  210. package/dist/persistence/neo4j/petri-checkpoint-adapter.js.map +1 -0
  211. package/dist/pipeline/agent-pipeline.d.ts +99 -0
  212. package/dist/pipeline/agent-pipeline.d.ts.map +1 -0
  213. package/dist/pipeline/agent-pipeline.js +356 -0
  214. package/dist/pipeline/agent-pipeline.js.map +1 -0
  215. package/dist/routing/checkpoint-adapter.d.ts +30 -0
  216. package/dist/routing/checkpoint-adapter.d.ts.map +1 -0
  217. package/dist/routing/checkpoint-adapter.js +83 -0
  218. package/dist/routing/checkpoint-adapter.js.map +1 -0
  219. package/dist/routing/documentation-generator.d.ts +47 -0
  220. package/dist/routing/documentation-generator.d.ts.map +1 -0
  221. package/dist/routing/documentation-generator.js +320 -0
  222. package/dist/routing/documentation-generator.js.map +1 -0
  223. package/dist/routing/index.d.ts +38 -0
  224. package/dist/routing/index.d.ts.map +1 -0
  225. package/dist/routing/index.js +375 -0
  226. package/dist/routing/index.js.map +1 -0
  227. package/dist/routing/intent-classifier.d.ts +206 -0
  228. package/dist/routing/intent-classifier.d.ts.map +1 -0
  229. package/dist/routing/intent-classifier.js +267 -0
  230. package/dist/routing/intent-classifier.js.map +1 -0
  231. package/dist/routing/matrix.d.ts +6 -0
  232. package/dist/routing/matrix.d.ts.map +1 -0
  233. package/dist/routing/matrix.js +131 -0
  234. package/dist/routing/matrix.js.map +1 -0
  235. package/dist/routing/orchestrator.d.ts +87 -0
  236. package/dist/routing/orchestrator.d.ts.map +1 -0
  237. package/dist/routing/orchestrator.js +425 -0
  238. package/dist/routing/orchestrator.js.map +1 -0
  239. package/dist/routing/postgres-checkpoint-adapter.d.ts +32 -0
  240. package/dist/routing/postgres-checkpoint-adapter.d.ts.map +1 -0
  241. package/dist/routing/postgres-checkpoint-adapter.js +167 -0
  242. package/dist/routing/postgres-checkpoint-adapter.js.map +1 -0
  243. package/dist/routing/redis-checkpoint-adapter.d.ts +34 -0
  244. package/dist/routing/redis-checkpoint-adapter.d.ts.map +1 -0
  245. package/dist/routing/redis-checkpoint-adapter.js +170 -0
  246. package/dist/routing/redis-checkpoint-adapter.js.map +1 -0
  247. package/dist/routing/types.d.ts +49 -0
  248. package/dist/routing/types.d.ts.map +1 -0
  249. package/dist/routing/types.js +3 -0
  250. package/dist/routing/types.js.map +1 -0
  251. package/dist/types/agent.d.ts +144 -88
  252. package/dist/types/agent.d.ts.map +1 -1
  253. package/dist/types/agent.js +49 -0
  254. package/dist/types/agent.js.map +1 -1
  255. package/dist/types/index.d.ts +46 -4
  256. package/dist/types/index.d.ts.map +1 -1
  257. package/dist/utils/generate-action-schema.d.ts +2 -3
  258. package/dist/utils/generate-action-schema.d.ts.map +1 -1
  259. package/dist/utils/generate-action-schema.js +3 -1
  260. package/dist/utils/generate-action-schema.js.map +1 -1
  261. package/dist/utils/logger.d.ts +27 -0
  262. package/dist/utils/logger.d.ts.map +1 -0
  263. package/dist/utils/logger.js +45 -0
  264. package/dist/utils/logger.js.map +1 -0
  265. package/docs/.gitbook/assets/image (1).png +0 -0
  266. package/docs/.gitbook/assets/image (2).png +0 -0
  267. package/docs/.gitbook/assets/image (3).png +0 -0
  268. package/docs/.gitbook/assets/image (4).png +0 -0
  269. package/docs/.gitbook/assets/image (5).png +0 -0
  270. package/docs/.gitbook/assets/image (6).png +0 -0
  271. package/docs/.gitbook/assets/image.png +0 -0
  272. package/docs/README.md +57 -0
  273. package/docs/SUMMARY.md +34 -0
  274. package/docs/cas-dusages.md +69 -0
  275. package/docs/cli/README.md +65 -0
  276. package/docs/concepts-cles.md +50 -0
  277. package/docs/core/architecture.md +87 -0
  278. package/docs/core/benchmark.md +59 -0
  279. package/docs/core/checkpoint.md +72 -0
  280. package/docs/core/documentation.md +55 -0
  281. package/docs/core/graphcontroller.md +63 -0
  282. package/docs/core/graphflow.md +137 -0
  283. package/docs/core/introduction.md +41 -0
  284. package/docs/core/les-evenements.md +95 -0
  285. package/docs/modules/agenda/README.md +63 -0
  286. package/docs/modules/agenda/interface-iagenda.md +170 -0
  287. package/docs/modules/agenda/les-adaptateurs/README.md +237 -0
  288. package/docs/modules/agenda/les-adaptateurs/nodecronadapter.md +91 -0
  289. package/docs/modules/introduction.md +55 -0
  290. package/docs/modules/les-adaptateurs.md +52 -0
  291. package/docs/modules/memoire/README.md +68 -0
  292. package/docs/modules/memoire/interface-imemory.md +183 -0
  293. package/docs/modules/memoire/les-adaptateurs/README.md +209 -0
  294. package/docs/modules/memoire/les-adaptateurs/inmemoryadapter.md +110 -0
  295. package/docs/modules/memoire/les-adaptateurs/meilisearchadapter.md +147 -0
  296. package/docs/modules/memoire/les-adaptateurs/redisadapter.md +212 -0
  297. package/docs/modules/nlp/README.md +44 -0
  298. package/docs/philosophie.md +51 -0
  299. package/docs/tutoriels/ajouter-des-conditions.md +150 -0
  300. package/docs/tutoriels/branching.md +194 -0
  301. package/docs/tutoriels/checkpoint-usage.md +99 -0
  302. package/docs/tutoriels/creer-agent-onchain.md +1041 -0
  303. package/docs/tutoriels/creer-un-agent.md +108 -0
  304. package/docs/tutoriels/creer-un-graphe-simple.md +92 -0
  305. package/docs/tutoriels/gerer-les-erreurs.md +124 -0
  306. package/docs/tutoriels/pour-commencer.md +73 -0
  307. package/docs/tutoriels/retry.md +166 -0
  308. package/execution/adapters/in-memory-checkpoint.ts +35 -0
  309. package/execution/compiler.ts +47 -0
  310. package/{graph → execution}/event-manager.ts +4 -117
  311. package/{graph → execution}/index.ts +376 -8
  312. package/{graph → execution}/node.ts +116 -12
  313. package/execution/planner.ts +40 -0
  314. package/execution/reducer.ts +73 -0
  315. package/execution/registry.ts +86 -0
  316. package/execution/send-api.ts +58 -0
  317. package/execution/types.parallel.ts +81 -0
  318. package/index.ts +35 -8
  319. package/interfaces/index.ts +37 -0
  320. package/modules/cli/index.ts +580 -0
  321. package/modules/nlp/engine.ts +0 -1
  322. package/package.json +50 -16
  323. package/persistence/index.ts +27 -0
  324. package/persistence/neo4j/driver.ts +34 -0
  325. package/persistence/neo4j/entity-store.ts +141 -0
  326. package/persistence/neo4j/execution-tracer.ts +194 -0
  327. package/persistence/neo4j/memory-adapter.ts +281 -0
  328. package/persistence/neo4j/petri-checkpoint-adapter.ts +153 -0
  329. package/pipeline/agent-pipeline.ts +426 -0
  330. package/routing/checkpoint-adapter.ts +79 -0
  331. package/routing/documentation-generator.ts +358 -0
  332. package/routing/index.ts +459 -0
  333. package/routing/intent-classifier.ts +360 -0
  334. package/routing/matrix.ts +138 -0
  335. package/routing/orchestrator.ts +498 -0
  336. package/routing/patterns/data-extraction.json +79 -0
  337. package/routing/patterns/human-approval.json +64 -0
  338. package/routing/patterns/rag-search.json +68 -0
  339. package/routing/postgres-checkpoint-adapter.ts +172 -0
  340. package/routing/redis-checkpoint-adapter.ts +187 -0
  341. package/routing/types.ts +59 -0
  342. package/routing/web-server.ts +260 -0
  343. package/scripts/generate-petri-docs.ts +70 -0
  344. package/scripts/get-gmail-token.js +65 -0
  345. package/scripts/get-gmail-token.ts +65 -0
  346. package/test/agent/agent.test.ts +92 -0
  347. package/test/agent/clone.test.ts +143 -0
  348. package/test/agent/cognitive-handler.test.ts +78 -0
  349. package/test/agent/entity-store.test.ts +80 -0
  350. package/test/agent/generic-executor.test.ts +230 -0
  351. package/test/agent/handoff.test.ts +163 -0
  352. package/test/agent/llm-factory.test.ts +40 -0
  353. package/test/agent/orchestrator.test.ts +156 -0
  354. package/test/agent/registry.test.ts +97 -0
  355. package/test/agent/tools.test.ts +267 -0
  356. package/test/execution/checkpoint.test.ts +811 -0
  357. package/test/{graph → execution}/controller.test.ts +2 -2
  358. package/test/{graph → execution}/event-manager.test.ts +1 -1
  359. package/test/{graph → execution}/index.test.ts +24 -15
  360. package/test/{graph → execution}/node.test.ts +3 -3
  361. package/test/{graph → execution}/observer.test.ts +2 -2
  362. package/test/execution/parallel.test.ts +135 -0
  363. package/test/execution/plan-llm-integration.test.ts +290 -0
  364. package/test/execution/plan-real-onchain.test.ts +226 -0
  365. package/test/execution/send-api.test.ts +121 -0
  366. package/test/modules/cli/index.test.ts +125 -0
  367. package/test/persistence/neo4j-execution-tracer.test.ts +96 -0
  368. package/test/persistence/neo4j-memory-adapter.test.ts +107 -0
  369. package/test/persistence/neo4j-petri-checkpoint.test.ts +89 -0
  370. package/test/pipeline/agent-pipeline.test.ts +118 -0
  371. package/test/routing/checkpoint-persistence.test.ts +58 -0
  372. package/test/routing/documentation-generator.test.ts +76 -0
  373. package/test/routing/integration.test.ts +261 -0
  374. package/test/routing/intent-classifier.test.ts +102 -0
  375. package/test/routing/petri.test.ts +156 -0
  376. package/test/routing/real-llm.test.ts +260 -0
  377. package/test-petri-features.ts +218 -0
  378. package/test-pipeline-api.ts +163 -0
  379. package/tsconfig.json +5 -2
  380. package/types/agent.ts +126 -4
  381. package/types/index.ts +66 -5
  382. package/utils/generate-action-schema.ts +5 -4
  383. package/utils/logger.ts +40 -0
  384. package/dist/graph/controller.d.ts.map +0 -1
  385. package/dist/graph/controller.js.map +0 -1
  386. package/dist/graph/event-manager.d.ts +0 -101
  387. package/dist/graph/event-manager.d.ts.map +0 -1
  388. package/dist/graph/event-manager.js.map +0 -1
  389. package/dist/graph/index.d.ts.map +0 -1
  390. package/dist/graph/index.js +0 -340
  391. package/dist/graph/index.js.map +0 -1
  392. package/dist/graph/logger.d.ts.map +0 -1
  393. package/dist/graph/logger.js.map +0 -1
  394. package/dist/graph/node.d.ts.map +0 -1
  395. package/dist/graph/node.js.map +0 -1
  396. package/dist/graph/observer.d.ts.map +0 -1
  397. package/dist/graph/observer.js.map +0 -1
  398. package/dist/graph/visualizer.d.ts.map +0 -1
  399. package/dist/graph/visualizer.js.map +0 -1
  400. package/dist/modules/agent/agent.d.ts +0 -35
  401. package/dist/modules/agent/agent.d.ts.map +0 -1
  402. package/dist/modules/agent/agent.js +0 -103
  403. package/dist/modules/agent/agent.js.map +0 -1
  404. package/dist/modules/agent/base/executor.d.ts.map +0 -1
  405. package/dist/modules/agent/base/executor.js.map +0 -1
  406. package/dist/modules/agent/base/index.d.ts.map +0 -1
  407. package/dist/modules/agent/base/index.js.map +0 -1
  408. package/dist/modules/agent/generic-assistant.d.ts +0 -20
  409. package/dist/modules/agent/generic-assistant.d.ts.map +0 -1
  410. package/dist/modules/agent/generic-assistant.js +0 -89
  411. package/dist/modules/agent/generic-assistant.js.map +0 -1
  412. package/dist/modules/agent/generic-executor.d.ts.map +0 -1
  413. package/dist/modules/agent/generic-executor.js +0 -189
  414. package/dist/modules/agent/generic-executor.js.map +0 -1
  415. package/dist/modules/agent/llm-factory.d.ts.map +0 -1
  416. package/dist/modules/agent/llm-factory.js +0 -56
  417. package/dist/modules/agent/llm-factory.js.map +0 -1
  418. package/dist/modules/agent/prompt-builder.d.ts.map +0 -1
  419. package/dist/modules/agent/prompt-builder.js.map +0 -1
  420. package/dist/modules/memory/adapters/in-memory/index.d.ts +0 -120
  421. package/dist/modules/memory/adapters/in-memory/index.d.ts.map +0 -1
  422. package/dist/modules/memory/adapters/in-memory/index.js +0 -212
  423. package/dist/modules/memory/adapters/in-memory/index.js.map +0 -1
  424. package/dist/modules/memory/adapters/meilisearch/index.d.ts +0 -110
  425. package/dist/modules/memory/adapters/meilisearch/index.d.ts.map +0 -1
  426. package/dist/modules/memory/adapters/meilisearch/index.js +0 -324
  427. package/dist/modules/memory/adapters/meilisearch/index.js.map +0 -1
  428. package/dist/modules/memory/adapters/redis/index.d.ts +0 -82
  429. package/dist/modules/memory/adapters/redis/index.d.ts.map +0 -1
  430. package/dist/modules/memory/adapters/redis/index.js +0 -160
  431. package/dist/modules/memory/adapters/redis/index.js.map +0 -1
  432. package/dist/modules/memory/index.d.ts +0 -67
  433. package/dist/modules/memory/index.d.ts.map +0 -1
  434. package/dist/modules/memory/index.js +0 -104
  435. package/dist/modules/memory/index.js.map +0 -1
  436. package/modules/agent/agent.ts +0 -107
  437. package/modules/agent/generic-assistant.ts +0 -92
  438. package/modules/agent/generic-executor.ts +0 -252
  439. package/modules/agent/llm-factory.ts +0 -47
  440. package/modules/memory/adapters/in-memory/index.ts +0 -208
  441. package/modules/memory/adapters/meilisearch/index.ts +0 -364
  442. package/modules/memory/adapters/redis/index.ts +0 -165
  443. package/modules/memory/index.ts +0 -93
  444. package/test/modules/memory/adapters/in-memory.test.ts +0 -153
  445. package/test/modules/memory/adapters/meilisearch.test.ts +0 -287
  446. package/test/modules/memory/base.test.ts +0 -230
  447. /package/dist/{modules/agent → agent}/llm-factory.d.ts +0 -0
  448. /package/dist/{modules/agent → agent}/prompt-builder.js +0 -0
  449. /package/dist/{graph → execution}/controller.d.ts +0 -0
  450. /package/dist/{graph → execution}/controller.js +0 -0
  451. /package/dist/{graph → execution}/logger.d.ts +0 -0
  452. /package/dist/{graph → execution}/logger.js +0 -0
  453. /package/dist/{graph → execution}/observer.d.ts +0 -0
  454. /package/dist/{graph → execution}/observer.js +0 -0
  455. /package/dist/{graph → execution}/visualizer.d.ts +0 -0
  456. /package/dist/{graph → execution}/visualizer.js +0 -0
  457. /package/{graph → execution}/controller.ts +0 -0
  458. /package/{graph → execution}/logger.ts +0 -0
  459. /package/{graph → execution}/observer.ts +0 -0
  460. /package/{graph → execution}/visualizer.ts +0 -0
@@ -1,165 +0,0 @@
1
- import { createClient } from "redis";
2
- import { IMemoryAdapter } from "../../../../interfaces";
3
- import { BaseMemoryType, CreateMemoryInput } from "../../../../types";
4
-
5
- /**
6
- * @module RedisAdapter
7
- * @description Adapter implementation for Redis as a memory storage solution.
8
- * Provides integration with Redis for storing and retrieving memory entries with TTL support.
9
- * @implements {IMemoryAdapter}
10
- */
11
- export class RedisAdapter implements IMemoryAdapter {
12
- private redis;
13
- private readonly cachePrefix: string;
14
- private readonly cacheTTL: number;
15
-
16
- /**
17
- * Creates an instance of RedisAdapter
18
- * @param {string} redisUrl - Redis connection URL
19
- * @param {Object} options - Configuration options
20
- * @param {string} [options.cachePrefix="memory:"] - Prefix for Redis keys
21
- * @param {number} [options.cacheTTL=3600] - Default TTL in seconds
22
- */
23
- constructor(
24
- private readonly redisUrl: string,
25
- options: {
26
- cachePrefix?: string;
27
- cacheTTL?: number;
28
- }
29
- ) {
30
- this.cachePrefix = options.cachePrefix || "memory:";
31
- this.cacheTTL = options.cacheTTL || 3600;
32
- this.redis = createClient({
33
- url: redisUrl,
34
- socket: {
35
- tls: true,
36
- rejectUnauthorized: true,
37
- },
38
- });
39
- }
40
-
41
- /**
42
- * Initializes the Redis connection
43
- * @param {string} roomId - Room identifier
44
- * @returns {Promise<void>}
45
- */
46
- async init(roomId: string): Promise<void> {
47
- this.redis.on("error", (err) => console.error("Redis Client Error:", err));
48
- await this.redis.connect();
49
- }
50
-
51
- /**
52
- * Creates a new memory entry in Redis
53
- * @param {CreateMemoryInput & { embedding?: number[] }} input - Memory data with optional embedding
54
- * @returns {Promise<BaseMemoryType | undefined>} Created memory or undefined
55
- */
56
- async createMemory(
57
- input: CreateMemoryInput & { embedding?: number[] }
58
- ): Promise<BaseMemoryType | undefined> {
59
- const memory: BaseMemoryType = {
60
- id: input.id || crypto.randomUUID(),
61
- content: input.content,
62
- metadata: input.metadata,
63
- embedding: input.embedding,
64
- roomId: input.roomId,
65
- createdAt: new Date(),
66
- };
67
-
68
- const key = memory.roomId
69
- ? `${this.cachePrefix}${memory.roomId}:${memory.id}`
70
- : `${this.cachePrefix}${memory.id}`;
71
-
72
- await this.redis.set(key, JSON.stringify(memory), {
73
- EX: this.cacheTTL,
74
- });
75
-
76
- return memory;
77
- }
78
-
79
- /**
80
- * Retrieves a memory by ID and room ID from Redis
81
- * @param {string} id - Memory identifier
82
- * @param {string} roomId - Room identifier
83
- * @returns {Promise<BaseMemoryType | null>} Memory entry or null if not found
84
- */
85
- async getMemoryById(
86
- id: string,
87
- roomId: string
88
- ): Promise<BaseMemoryType | null> {
89
- const key = `${this.cachePrefix}${roomId}:${id}`;
90
- const data = await this.redis.get(key);
91
- return data ? JSON.parse(data) : null;
92
- }
93
-
94
- /**
95
- * Searches for memories in Redis based on pattern matching
96
- * @param {string} query - Search query
97
- * @param {Object} options - Search options
98
- * @param {string} options.roomId - Room identifier
99
- * @param {number} [options.limit] - Maximum number of results
100
- * @returns {Promise<BaseMemoryType[]>} Array of matching memories
101
- */
102
- async getMemoryByIndex(
103
- query: string,
104
- options: { roomId: string; limit?: number }
105
- ): Promise<BaseMemoryType[]> {
106
- const pattern = `${this.cachePrefix}${options.roomId}:*`;
107
- const keys = await this.redis.keys(pattern);
108
- const memories = await Promise.all(
109
- keys.map(async (key) => {
110
- const data = await this.redis.get(key);
111
- return data ? JSON.parse(data) : null;
112
- })
113
- );
114
- return memories.filter(Boolean).slice(0, options.limit || 10);
115
- }
116
-
117
- /**
118
- * Retrieves all memories for a room from Redis
119
- * @param {string} roomId - Room identifier
120
- * @returns {Promise<BaseMemoryType[]>} Array of all memories
121
- */
122
- async getAllMemories(roomId: string): Promise<BaseMemoryType[]> {
123
- const pattern = `${this.cachePrefix}${roomId}:*`;
124
- const keys = await this.redis.keys(pattern);
125
- const memories = await Promise.all(
126
- keys.map(async (key) => {
127
- const data = await this.redis.get(key);
128
- return data ? JSON.parse(data) : null;
129
- })
130
- );
131
- return memories.filter(Boolean);
132
- }
133
-
134
- /**
135
- * Deletes a specific memory from Redis
136
- * @param {string} id - Memory identifier
137
- * @param {string} roomId - Room identifier
138
- * @returns {Promise<void>}
139
- */
140
- async clearMemoryById(id: string, roomId: string): Promise<void> {
141
- const key = `${this.cachePrefix}${roomId}:${id}`;
142
- await this.redis.del(key);
143
- }
144
-
145
- /**
146
- * Clears all memories across all rooms from Redis
147
- * @returns {Promise<void>}
148
- */
149
- async clearAllMemories(): Promise<void> {
150
- const keys = await this.redis.keys(`${this.cachePrefix}*`);
151
- if (keys.length > 0) {
152
- await this.redis.del(keys);
153
- }
154
- }
155
-
156
- /**
157
- * Closes the Redis connection
158
- * @returns {Promise<void>}
159
- */
160
- async quit(): Promise<void> {
161
- if (this.redis) {
162
- await this.redis.quit();
163
- }
164
- }
165
- }
@@ -1,93 +0,0 @@
1
- import { BaseMemory, IMemoryAdapter } from "../../interfaces";
2
- import { BaseMemoryType, CreateMemoryInput } from "../../types";
3
-
4
- /**
5
- * @module Memory
6
- * @description A module for managing memory storage and retrieval operations.
7
- * Implements the BaseMemory abstract class and provides concrete implementations
8
- * for memory-related operations using the provided adapter.
9
- * @extends {BaseMemory}
10
- */
11
- export class Memory extends BaseMemory {
12
- /**
13
- * Creates an instance of Memory
14
- * @param {IMemoryAdapter} adapter - The memory adapter implementation to use
15
- */
16
- constructor(adapter: IMemoryAdapter) {
17
- super(adapter);
18
- }
19
-
20
- /**
21
- * Initializes the memory module with default room
22
- * @returns {Promise<void>}
23
- */
24
- async init(): Promise<void> {
25
- await this.adapter.init("default");
26
- }
27
-
28
- /**
29
- * Creates a new memory entry
30
- * @param {CreateMemoryInput & { embedding?: number[] }} input - Memory data with optional embedding
31
- * @returns {Promise<BaseMemoryType | undefined>} Created memory or undefined
32
- */
33
- async createMemory(
34
- input: CreateMemoryInput & { embedding?: number[] }
35
- ): Promise<BaseMemoryType | undefined> {
36
- return this.adapter.createMemory(input);
37
- }
38
-
39
- /**
40
- * Retrieves a memory by ID and room ID
41
- * @param {string} id - Memory identifier
42
- * @param {string} roomId - Room identifier
43
- * @returns {Promise<BaseMemoryType | null>} Memory entry or null if not found
44
- */
45
- async getMemoryById(
46
- id: string,
47
- roomId: string
48
- ): Promise<BaseMemoryType | null> {
49
- return this.adapter.getMemoryById(id, roomId);
50
- }
51
-
52
- /**
53
- * Searches for memories based on query and options
54
- * @param {string} query - Search query
55
- * @param {Object} options - Search options
56
- * @param {string} options.roomId - Room identifier
57
- * @param {number} [options.limit] - Maximum number of results to return
58
- * @returns {Promise<BaseMemoryType[]>} Array of matching memories
59
- */
60
- async getMemoryByIndex(
61
- query: string,
62
- options: { roomId: string; limit?: number }
63
- ): Promise<BaseMemoryType[]> {
64
- return this.adapter.getMemoryByIndex(query, options);
65
- }
66
-
67
- /**
68
- * Retrieves all memories for a specific room
69
- * @param {string} roomId - Room identifier
70
- * @returns {Promise<BaseMemoryType[]>} Array of all memories in the room
71
- */
72
- async getAllMemories(roomId: string): Promise<BaseMemoryType[]> {
73
- return this.adapter.getAllMemories(roomId);
74
- }
75
-
76
- /**
77
- * Deletes a specific memory
78
- * @param {string} id - Memory identifier
79
- * @param {string} roomId - Room identifier
80
- * @returns {Promise<void>}
81
- */
82
- async clearMemoryById(id: string, roomId: string): Promise<void> {
83
- await this.adapter.clearMemoryById(id, roomId);
84
- }
85
-
86
- /**
87
- * Clears all memories across all rooms
88
- * @returns {Promise<void>}
89
- */
90
- async clearAllMemories(): Promise<void> {
91
- await this.adapter.clearAllMemories();
92
- }
93
- }
@@ -1,153 +0,0 @@
1
- import { expect } from "chai";
2
- import { InMemoryAdapter } from "../../../../modules/memory/adapters/in-memory";
3
- import { BaseMemoryType } from "../../../../types";
4
-
5
- describe("InMemoryAdapter", () => {
6
- let inMemoryAdapter: InMemoryAdapter;
7
- const fixedDate = new Date("2025-01-30T07:43:50.626Z");
8
- const TEST_ROOM_ID = "test-room";
9
-
10
- const testMemory: BaseMemoryType = {
11
- id: "test-id",
12
- data: "test data",
13
- roomId: TEST_ROOM_ID,
14
- createdAt: fixedDate,
15
- };
16
-
17
- beforeEach(async () => {
18
- inMemoryAdapter = new InMemoryAdapter();
19
- await inMemoryAdapter.init(TEST_ROOM_ID);
20
- });
21
-
22
- describe("Initialization", () => {
23
- it("should initialize storage", async () => {
24
- await expect(inMemoryAdapter.init("new-room")).to.not.throw;
25
- const memories = await inMemoryAdapter.getAllMemories("new-room");
26
- expect(memories).to.be.an("array").that.is.empty;
27
- });
28
- });
29
-
30
- describe("Memory Operations", () => {
31
- it("should create memory", async () => {
32
- const memory = await inMemoryAdapter.createMemory({
33
- data: "test data",
34
- roomId: TEST_ROOM_ID,
35
- id: "test-id",
36
- embedding: [0.1, 0.2, 0.3],
37
- });
38
-
39
- expect(memory).to.have.property("id");
40
- expect(memory?.data).to.equal("test data");
41
- expect(memory?.roomId).to.equal(TEST_ROOM_ID);
42
- });
43
-
44
- it("should not create duplicate memory", async () => {
45
- // Create first memory
46
- const memory1 = await inMemoryAdapter.createMemory({
47
- data: "test data",
48
- roomId: TEST_ROOM_ID,
49
- id: "test-id",
50
- });
51
-
52
- // Try to create duplicate
53
- const memory2 = await inMemoryAdapter.createMemory({
54
- data: "test data",
55
- roomId: TEST_ROOM_ID,
56
- id: "another-id",
57
- });
58
-
59
- expect(memory2?.id).to.equal(memory1?.id);
60
- });
61
-
62
- it("should get memory by ID", async () => {
63
- await inMemoryAdapter.createMemory({
64
- data: testMemory.data,
65
- roomId: testMemory.roomId,
66
- id: testMemory.id,
67
- embedding: testMemory.embedding,
68
- });
69
-
70
- const result = await inMemoryAdapter.getMemoryById(
71
- "test-id",
72
- TEST_ROOM_ID
73
- );
74
- expect(result).to.have.property("id", "test-id");
75
- });
76
-
77
- it("should get memories by index", async () => {
78
- // Create test memories
79
- await inMemoryAdapter.createMemory({
80
- data: "test data one",
81
- roomId: TEST_ROOM_ID,
82
- id: "test-id-1",
83
- });
84
- await inMemoryAdapter.createMemory({
85
- data: "test data two",
86
- roomId: TEST_ROOM_ID,
87
- id: "test-id-2",
88
- });
89
-
90
- const results = await inMemoryAdapter.getMemoryByIndex("one", {
91
- roomId: TEST_ROOM_ID,
92
- limit: 10,
93
- });
94
-
95
- expect(results).to.be.an("array");
96
- expect(results).to.have.lengthOf(1);
97
- expect(results[0].data).to.include("one");
98
- });
99
-
100
- it("should get all memories", async () => {
101
- // Create multiple memories
102
- await inMemoryAdapter.createMemory({
103
- data: "test data 1",
104
- roomId: TEST_ROOM_ID,
105
- id: "test-id-1",
106
- });
107
- await inMemoryAdapter.createMemory({
108
- data: "test data 2",
109
- roomId: TEST_ROOM_ID,
110
- id: "test-id-2",
111
- });
112
-
113
- const results = await inMemoryAdapter.getAllMemories(TEST_ROOM_ID);
114
- expect(results).to.be.an("array");
115
- expect(results).to.have.lengthOf(2);
116
- });
117
-
118
- it("should clear memory by ID", async () => {
119
- // Create a memory
120
- await inMemoryAdapter.createMemory({
121
- data: "test data",
122
- roomId: TEST_ROOM_ID,
123
- id: "test-id",
124
- });
125
-
126
- await inMemoryAdapter.clearMemoryById("test-id", TEST_ROOM_ID);
127
- const result = await inMemoryAdapter.getMemoryById(
128
- "test-id",
129
- TEST_ROOM_ID
130
- );
131
- expect(result).to.be.null;
132
- });
133
-
134
- it("should clear all memories", async () => {
135
- // Create multiple memories
136
- await inMemoryAdapter.createMemory({
137
- data: "test data 1",
138
- roomId: TEST_ROOM_ID,
139
- id: "test-id-1",
140
- });
141
- await inMemoryAdapter.createMemory({
142
- data: "test data 2",
143
- roomId: TEST_ROOM_ID,
144
- id: "test-id-2",
145
- });
146
-
147
- await inMemoryAdapter.clearAllMemories();
148
- const results = await inMemoryAdapter.getAllMemories(TEST_ROOM_ID);
149
- expect(results).to.be.an("array");
150
- expect(results).to.have.lengthOf(0);
151
- });
152
- });
153
- });
@@ -1,287 +0,0 @@
1
- import { expect } from "chai";
2
- import dotenv from "dotenv";
3
- import { MeilisearchAdapter } from "../../../../modules/memory/adapters/meilisearch";
4
- import { BaseMemoryType } from "../../../../types";
5
- // Load environment variables
6
- dotenv.config();
7
-
8
- describe("MeilisearchAdapter", () => {
9
- let meilisearchAdapter: MeilisearchAdapter;
10
- const TEST_ROOM_ID = "test-room";
11
-
12
- const testMemory: BaseMemoryType = {
13
- id: "test-id",
14
- data: "test data",
15
- roomId: "test-room",
16
- createdAt: new Date(),
17
- };
18
-
19
- beforeEach(async function () {
20
- this.timeout(10000); // Augmenter le timeout
21
-
22
- // Mock fetch pour simuler l'existence de l'index
23
- global.fetch = async (input: RequestInfo | URL, init?: RequestInit) => {
24
- const url = input.toString();
25
-
26
- // Mock pour index check/creation
27
- if (url.includes("/indexes")) {
28
- if (init?.method === "POST") {
29
- return new Response(JSON.stringify({ taskUid: 1 }));
30
- }
31
- if (url.endsWith("/indexes")) {
32
- return new Response(
33
- JSON.stringify({
34
- results: [{ uid: TEST_ROOM_ID }], // Simuler l'existence de l'index
35
- })
36
- );
37
- }
38
- if (url.includes(`/indexes/${TEST_ROOM_ID}`)) {
39
- return new Response(
40
- JSON.stringify({
41
- uid: TEST_ROOM_ID,
42
- primaryKey: "id",
43
- })
44
- );
45
- }
46
- }
47
-
48
- // Mock pour settings et autres endpoints
49
- if (url.includes("/settings")) {
50
- return new Response(JSON.stringify({ acknowledged: true }));
51
- }
52
-
53
- return new Response(JSON.stringify({}));
54
- };
55
-
56
- meilisearchAdapter = new MeilisearchAdapter({
57
- host: "http://localhost:7700",
58
- apiKey: "test_key",
59
- searchableAttributes: ["content"],
60
- sortableAttributes: ["createdAt"],
61
- });
62
-
63
- await meilisearchAdapter.init(TEST_ROOM_ID);
64
- });
65
-
66
- describe("Initialization", () => {
67
- it("should initialize storage", async () => {
68
- await expect(meilisearchAdapter.init("test-room")).to.not.throw;
69
- });
70
- });
71
-
72
- describe("Memory Operations", () => {
73
- beforeEach(async () => {
74
- // Reset fetch mock for each test
75
- if (!process.env.MEILISEARCH_HOST) {
76
- global.fetch = async (input: RequestInfo | URL, init?: RequestInit) => {
77
- const url = input.toString();
78
-
79
- // Mock for index check/creation
80
- if (url.includes("/indexes")) {
81
- if (init?.method === "POST") {
82
- return new Response(JSON.stringify({ taskUid: 1 }));
83
- }
84
- if (url.endsWith("/indexes")) {
85
- return new Response(JSON.stringify({ results: [] }));
86
- }
87
- // Mock for specific index check
88
- if (url.includes(`/indexes/${TEST_ROOM_ID}`)) {
89
- return new Response(
90
- JSON.stringify({
91
- uid: TEST_ROOM_ID,
92
- primaryKey: "id",
93
- })
94
- );
95
- }
96
- if (url.includes("/indexes/memories")) {
97
- return new Response(
98
- JSON.stringify({
99
- uid: "memories",
100
- primaryKey: "id",
101
- })
102
- );
103
- }
104
- }
105
-
106
- // Mock for settings
107
- if (url.includes("/settings")) {
108
- return new Response(JSON.stringify({ acknowledged: true }));
109
- }
110
-
111
- // Mock for documents
112
- if (url.includes("/documents")) {
113
- if (init?.method === "POST") {
114
- return new Response(JSON.stringify({ taskUid: 2 }));
115
- }
116
- if (init?.method === "DELETE") {
117
- return new Response(JSON.stringify({ taskUid: 3 }));
118
- }
119
- return new Response(JSON.stringify([testMemory]));
120
- }
121
-
122
- return new Response(JSON.stringify({}));
123
- };
124
- }
125
-
126
- try {
127
- await meilisearchAdapter.init(TEST_ROOM_ID);
128
- } catch (error) {
129
- console.error("Failed to initialize:", error);
130
- throw error;
131
- }
132
- });
133
-
134
- it("should create memory", async () => {
135
- const input = {
136
- id: "test-id",
137
- roomId: "test-room",
138
- data: "test data",
139
- };
140
-
141
- const result = await meilisearchAdapter.createMemory(input);
142
- expect(result?.embedding).to.be.undefined;
143
- });
144
-
145
- it("should search memories", async () => {
146
- const results = await meilisearchAdapter.getMemoryByIndex("test", {
147
- roomId: TEST_ROOM_ID,
148
- limit: 10,
149
- });
150
-
151
- expect(results).to.be.an("array");
152
- if (results.length > 0) {
153
- const result = results[0];
154
- if (result) {
155
- result.createdAt = new Date(result.createdAt);
156
- }
157
- expect(result).to.deep.equal(testMemory);
158
- }
159
- });
160
-
161
- it("should handle memory retrieval by ID", async () => {
162
- const testDate = new Date("2025-02-11T08:24:38.251Z");
163
-
164
- const mockData = {
165
- id: "test-id",
166
- roomId: "test-room",
167
- data: "test data",
168
- createdAt: testDate.toISOString(),
169
- embedding: undefined,
170
- };
171
-
172
- global.fetch = async (input: RequestInfo | URL) => {
173
- const url = input.toString();
174
- if (url.includes(`/indexes/test-room/documents/test-id`)) {
175
- return new Response(JSON.stringify(mockData));
176
- }
177
- return new Response(JSON.stringify({}));
178
- };
179
-
180
- const result = await meilisearchAdapter.getMemoryById(
181
- "test-id",
182
- "test-room"
183
- );
184
-
185
- expect(result?.id).to.equal(mockData.id);
186
- expect(result?.roomId).to.equal(mockData.roomId);
187
- expect(result?.data).to.equal(mockData.data);
188
- expect(result?.createdAt).to.equal(mockData.createdAt); // Compare directement les strings
189
- expect(result?.embedding).to.be.undefined;
190
- });
191
-
192
- it("should handle non-existent memory", async () => {
193
- global.fetch = async (): Promise<Response> => {
194
- throw new Error("Not found");
195
- };
196
-
197
- const result = await meilisearchAdapter.getMemoryById(
198
- "non-existent",
199
- TEST_ROOM_ID
200
- );
201
- expect(result).to.be.null;
202
- });
203
-
204
- it("should clear all memories", async () => {
205
- // S'assurer que l'index existe avant de le supprimer
206
- await meilisearchAdapter.init(TEST_ROOM_ID);
207
- await expect(meilisearchAdapter.clearAllMemories()).to.not.throw;
208
- });
209
-
210
- it("should not create duplicate memory with same data", async () => {
211
- // Override fetch mock for this test
212
- const firstMemoryId = "test-memory-id";
213
- const mockMemory = {
214
- id: firstMemoryId,
215
- data: "test data",
216
- roomId: TEST_ROOM_ID,
217
- embedding: null,
218
- createdAt: new Date().toISOString(),
219
- };
220
-
221
- global.fetch = async (input: RequestInfo | URL, init?: RequestInit) => {
222
- const url = input.toString();
223
-
224
- if (url.includes("/search")) {
225
- return new Response(
226
- JSON.stringify({
227
- hits: [{ ...mockMemory }],
228
- })
229
- );
230
- }
231
-
232
- if (url.includes("/indexes")) {
233
- if (init?.method === "POST") {
234
- return new Response(JSON.stringify({ taskUid: 1 }));
235
- }
236
- return new Response(
237
- JSON.stringify({
238
- uid: TEST_ROOM_ID,
239
- primaryKey: "id",
240
- })
241
- );
242
- }
243
-
244
- return new Response(JSON.stringify({}));
245
- };
246
-
247
- const firstMemory = await meilisearchAdapter.createMemory({
248
- data: "test data",
249
- roomId: TEST_ROOM_ID,
250
- });
251
-
252
- const secondMemory = await meilisearchAdapter.createMemory({
253
- data: "test data",
254
- roomId: TEST_ROOM_ID,
255
- });
256
-
257
- expect(secondMemory?.id).to.equal(firstMemory?.id);
258
- expect(secondMemory?.data).to.equal(firstMemory?.data);
259
- expect(secondMemory?.roomId).to.equal(firstMemory?.roomId);
260
- });
261
-
262
- it("should initialize storage", async () => {
263
- global.fetch = async (input: RequestInfo | URL, init?: RequestInit) => {
264
- const url = input.toString();
265
-
266
- // Mock pour la vérification de l'existence de l'index
267
- if (url.includes(`/indexes/${TEST_ROOM_ID}`)) {
268
- return new Response(
269
- JSON.stringify({
270
- uid: TEST_ROOM_ID,
271
- primaryKey: "id",
272
- })
273
- );
274
- }
275
-
276
- // Mock pour les settings
277
- if (url.includes("/settings")) {
278
- return new Response(JSON.stringify({ acknowledged: true }));
279
- }
280
-
281
- return new Response(JSON.stringify({}));
282
- };
283
-
284
- await expect(meilisearchAdapter.init(TEST_ROOM_ID)).to.not.throw;
285
- });
286
- });
287
- });