@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,375 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PetriNet = exports.PostgresPetriCheckpointAdapter = exports.RedisPetriCheckpointAdapter = exports.InMemoryPetriCheckpointAdapter = void 0;
13
+ const matrix_1 = require("./matrix");
14
+ var checkpoint_adapter_1 = require("./checkpoint-adapter");
15
+ Object.defineProperty(exports, "InMemoryPetriCheckpointAdapter", { enumerable: true, get: function () { return checkpoint_adapter_1.InMemoryPetriCheckpointAdapter; } });
16
+ var redis_checkpoint_adapter_1 = require("./redis-checkpoint-adapter");
17
+ Object.defineProperty(exports, "RedisPetriCheckpointAdapter", { enumerable: true, get: function () { return redis_checkpoint_adapter_1.RedisPetriCheckpointAdapter; } });
18
+ var postgres_checkpoint_adapter_1 = require("./postgres-checkpoint-adapter");
19
+ Object.defineProperty(exports, "PostgresPetriCheckpointAdapter", { enumerable: true, get: function () { return postgres_checkpoint_adapter_1.PostgresPetriCheckpointAdapter; } });
20
+ class PetriNet {
21
+ constructor(name) {
22
+ this.places = new Map();
23
+ this.transitions = new Map();
24
+ this.guardFunctions = new Map();
25
+ this.name = name;
26
+ this.state = {
27
+ marking: new Map(),
28
+ history: [],
29
+ };
30
+ }
31
+ addPlace(place) {
32
+ this.places.set(place.id, place);
33
+ this.state.marking.set(place.id, place.tokens.map(t => (Object.assign({}, t))));
34
+ }
35
+ addTransition(transition) {
36
+ this.transitions.set(transition.id, transition);
37
+ }
38
+ registerGuardFunction(name, func) {
39
+ this.guardFunctions.set(name, func);
40
+ }
41
+ setLLMExecutor(executor) {
42
+ this.llmExecutor = executor;
43
+ }
44
+ setActionExecutor(executor) {
45
+ this.actionExecutor = executor;
46
+ }
47
+ getEnabledTransitions(context) {
48
+ const enabled = [];
49
+ for (const [tid, transition] of this.transitions) {
50
+ if (transition.when) {
51
+ continue;
52
+ }
53
+ const hasTokens = transition.from.every(pid => (this.state.marking.get(pid) || []).length > 0);
54
+ if (!hasTokens)
55
+ continue;
56
+ let guardPassed = true;
57
+ if (transition.guard) {
58
+ guardPassed = this.evaluateGuard(transition.guard, context || {});
59
+ }
60
+ if (guardPassed) {
61
+ enabled.push(tid);
62
+ }
63
+ }
64
+ return enabled;
65
+ }
66
+ getEventDrivenTransitions() {
67
+ const eventDriven = [];
68
+ for (const [tid, transition] of this.transitions) {
69
+ if (transition.when) {
70
+ eventDriven.push(tid);
71
+ }
72
+ }
73
+ return eventDriven;
74
+ }
75
+ evaluateGuard(guard, context) {
76
+ if (guard.type === 'deterministic') {
77
+ if (guard.name && this.guardFunctions.has(guard.name)) {
78
+ return this.guardFunctions.get(guard.name)(context);
79
+ }
80
+ if (guard.condition) {
81
+ try {
82
+ const fn = new Function(...Object.keys(context), `'use strict'; return (${guard.condition});`);
83
+ return !!fn(...Object.values(context));
84
+ }
85
+ catch (_a) {
86
+ return false;
87
+ }
88
+ }
89
+ return true;
90
+ }
91
+ return true;
92
+ }
93
+ getTokenContext(transition) {
94
+ const context = {};
95
+ for (const pid of transition.from) {
96
+ const tokens = this.state.marking.get(pid) || [];
97
+ if (tokens.length > 0) {
98
+ Object.assign(context, tokens[0].data);
99
+ }
100
+ }
101
+ return context;
102
+ }
103
+ fireTransition(transitionId, tokenData) {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ const transition = this.transitions.get(transitionId);
106
+ if (!transition) {
107
+ return {
108
+ success: false,
109
+ transitionId,
110
+ newMarking: this.cloneMarking(this.state.marking),
111
+ consumedTokens: [],
112
+ producedTokens: [],
113
+ error: `Unknown transition: ${transitionId}`,
114
+ };
115
+ }
116
+ if (transition.when) {
117
+ return {
118
+ success: false,
119
+ transitionId,
120
+ newMarking: this.cloneMarking(this.state.marking),
121
+ consumedTokens: [],
122
+ producedTokens: [],
123
+ error: `Transition ${transitionId} is event-driven`,
124
+ };
125
+ }
126
+ const hasTokens = transition.from.every(pid => (this.state.marking.get(pid) || []).length > 0);
127
+ if (!hasTokens) {
128
+ return {
129
+ success: false,
130
+ transitionId,
131
+ newMarking: this.cloneMarking(this.state.marking),
132
+ consumedTokens: [],
133
+ producedTokens: [],
134
+ error: 'Missing tokens in input places',
135
+ };
136
+ }
137
+ if (transition.guard) {
138
+ const context = this.getTokenContext(transition);
139
+ const passed = this.evaluateGuard(transition.guard, context);
140
+ if (!passed) {
141
+ return {
142
+ success: false,
143
+ transitionId,
144
+ newMarking: this.cloneMarking(this.state.marking),
145
+ consumedTokens: [],
146
+ producedTokens: [],
147
+ error: 'Guard condition not met',
148
+ };
149
+ }
150
+ }
151
+ const consumed = [];
152
+ for (const pid of transition.from) {
153
+ const tokens = this.state.marking.get(pid) || [];
154
+ if (tokens.length > 0) {
155
+ consumed.push(tokens.shift());
156
+ }
157
+ }
158
+ const firstConsumed = consumed[0];
159
+ const newToken = {
160
+ id: `${transitionId}_${Date.now()}`,
161
+ data: tokenData || (firstConsumed ? Object.assign({}, firstConsumed.data) : {}),
162
+ createdAt: Date.now(),
163
+ };
164
+ const toPlaces = Array.isArray(transition.to)
165
+ ? transition.to
166
+ : [transition.to];
167
+ for (const pid of toPlaces) {
168
+ if (!this.state.marking.has(pid)) {
169
+ this.state.marking.set(pid, []);
170
+ }
171
+ this.state.marking.get(pid).push(newToken);
172
+ }
173
+ this.state.history.push(transitionId);
174
+ return {
175
+ success: true,
176
+ transitionId,
177
+ newMarking: this.cloneMarking(this.state.marking),
178
+ consumedTokens: consumed,
179
+ producedTokens: [newToken],
180
+ };
181
+ });
182
+ }
183
+ fireTransitionByEvent(transitionId, eventData) {
184
+ return __awaiter(this, void 0, void 0, function* () {
185
+ const transition = this.transitions.get(transitionId);
186
+ if (!transition) {
187
+ return {
188
+ success: false,
189
+ transitionId,
190
+ newMarking: this.cloneMarking(this.state.marking),
191
+ consumedTokens: [],
192
+ producedTokens: [],
193
+ error: `Unknown transition: ${transitionId}`,
194
+ };
195
+ }
196
+ if (!transition.when) {
197
+ return {
198
+ success: false,
199
+ transitionId,
200
+ newMarking: this.cloneMarking(this.state.marking),
201
+ consumedTokens: [],
202
+ producedTokens: [],
203
+ error: `Transition ${transitionId} is not event-driven`,
204
+ };
205
+ }
206
+ const hasTokens = transition.from.every(pid => (this.state.marking.get(pid) || []).length > 0);
207
+ if (!hasTokens) {
208
+ return {
209
+ success: false,
210
+ transitionId,
211
+ newMarking: this.cloneMarking(this.state.marking),
212
+ consumedTokens: [],
213
+ producedTokens: [],
214
+ error: 'Missing tokens in input places',
215
+ };
216
+ }
217
+ const consumed = [];
218
+ for (const pid of transition.from) {
219
+ const tokens = this.state.marking.get(pid) || [];
220
+ if (tokens.length > 0) {
221
+ consumed.push(tokens.shift());
222
+ }
223
+ }
224
+ const firstConsumed = consumed[0];
225
+ const newToken = {
226
+ id: `${transitionId}_${Date.now()}`,
227
+ data: eventData || (firstConsumed ? Object.assign({}, firstConsumed.data) : {}),
228
+ createdAt: Date.now(),
229
+ };
230
+ const toPlaces = Array.isArray(transition.to)
231
+ ? transition.to
232
+ : [transition.to];
233
+ for (const pid of toPlaces) {
234
+ if (!this.state.marking.has(pid)) {
235
+ this.state.marking.set(pid, []);
236
+ }
237
+ this.state.marking.get(pid).push(newToken);
238
+ }
239
+ this.state.history.push(transitionId);
240
+ return {
241
+ success: true,
242
+ transitionId,
243
+ newMarking: this.cloneMarking(this.state.marking),
244
+ consumedTokens: consumed,
245
+ producedTokens: [newToken],
246
+ };
247
+ });
248
+ }
249
+ fireTransitionWithAction(transitionId, tokenData) {
250
+ return __awaiter(this, void 0, void 0, function* () {
251
+ const transition = this.transitions.get(transitionId);
252
+ if (!transition) {
253
+ return {
254
+ success: false,
255
+ transitionId,
256
+ newMarking: this.cloneMarking(this.state.marking),
257
+ consumedTokens: [],
258
+ producedTokens: [],
259
+ error: `Unknown transition: ${transitionId}`,
260
+ };
261
+ }
262
+ const tokenContext = this.getTokenContext(transition);
263
+ const result = yield this.fireTransition(transitionId, tokenData);
264
+ if (result.success && transition.action && this.actionExecutor) {
265
+ const actionContext = transition.action.contextMapper
266
+ ? transition.action.contextMapper(tokenContext)
267
+ : tokenContext;
268
+ try {
269
+ const actionResult = yield this.actionExecutor(transition.action, actionContext);
270
+ return Object.assign(Object.assign({}, result), { actionResult });
271
+ }
272
+ catch (error) {
273
+ return Object.assign(Object.assign({}, result), { success: false, error: error.message, actionResult: undefined });
274
+ }
275
+ }
276
+ return result;
277
+ });
278
+ }
279
+ detectDeadlock() {
280
+ const enabled = this.getEnabledTransitions();
281
+ const eventDriven = this.getEventDrivenTransitions();
282
+ const hasActiveTokens = this.hasActiveTokens();
283
+ if (enabled.length > 0)
284
+ return false;
285
+ if (eventDriven.length > 0 && hasActiveTokens)
286
+ return false;
287
+ return hasActiveTokens;
288
+ }
289
+ hasActiveTokens() {
290
+ return Array.from(this.state.marking.values()).some(tokens => tokens.length > 0);
291
+ }
292
+ validateBoundedness() {
293
+ for (const [tid, t] of this.transitions) {
294
+ if (t.from.length === 0) {
295
+ return {
296
+ bounded: false,
297
+ details: `Transition ${tid} has no input places`,
298
+ };
299
+ }
300
+ const toPlaces = Array.isArray(t.to) ? t.to : [t.to];
301
+ for (const toPlace of toPlaces) {
302
+ if (t.from.includes(toPlace) && toPlaces.length > 0) {
303
+ return {
304
+ bounded: false,
305
+ details: `Transition ${tid} has self-loop`,
306
+ };
307
+ }
308
+ }
309
+ }
310
+ const places = Array.from(this.places.keys());
311
+ const transitions = Array.from(this.transitions.keys());
312
+ const P = places.length;
313
+ const T = transitions.length;
314
+ if (P === 0 || T === 0)
315
+ return { bounded: true };
316
+ const Pre = (0, matrix_1.matrixZeros)(P, T);
317
+ const Post = (0, matrix_1.matrixZeros)(P, T);
318
+ for (let j = 0; j < T; j++) {
319
+ const t = this.transitions.get(transitions[j]);
320
+ for (const pid of t.from) {
321
+ const i = places.indexOf(pid);
322
+ if (i !== -1)
323
+ Pre[i][j] = 1;
324
+ }
325
+ const toArray = Array.isArray(t.to) ? t.to : [t.to];
326
+ for (const pid of toArray) {
327
+ const i = places.indexOf(pid);
328
+ if (i !== -1)
329
+ Post[i][j] = 1;
330
+ }
331
+ }
332
+ const C = (0, matrix_1.matrixSubtract)(Post, Pre);
333
+ const hasInvariant = (0, matrix_1.hasPositiveNullVector)(C);
334
+ if (hasInvariant) {
335
+ return { bounded: true };
336
+ }
337
+ return { bounded: true, details: 'No P-invariant found' };
338
+ }
339
+ toDot() {
340
+ const lines = [`digraph {`, ` label="${this.name}"`];
341
+ for (const [pid, place] of this.places) {
342
+ const tokenCount = (this.state.marking.get(pid) || []).length;
343
+ const shape = place.type === 'initial'
344
+ ? 'circle'
345
+ : place.type === 'final'
346
+ ? 'doublecircle'
347
+ : 'box';
348
+ lines.push(` ${pid} [shape=${shape}, label="${pid}\\n(${tokenCount} tokens)"]`);
349
+ }
350
+ for (const [tid, transition] of this.transitions) {
351
+ const label = transition.description || tid;
352
+ lines.push(` ${tid} [shape=box, style=filled, fillcolor=lightgray, label="${label}"]`);
353
+ for (const fp of transition.from) {
354
+ lines.push(` ${fp} -> ${tid}`);
355
+ }
356
+ const toPlaces = Array.isArray(transition.to)
357
+ ? transition.to
358
+ : [transition.to];
359
+ for (const tp of toPlaces) {
360
+ lines.push(` ${tid} -> ${tp}`);
361
+ }
362
+ }
363
+ lines.push('}');
364
+ return lines.join('\n');
365
+ }
366
+ cloneMarking(marking) {
367
+ const cloned = new Map();
368
+ for (const [k, v] of marking) {
369
+ cloned.set(k, v.map(t => (Object.assign({}, t))));
370
+ }
371
+ return cloned;
372
+ }
373
+ }
374
+ exports.PetriNet = PetriNet;
375
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../routing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAWA,qCAIkB;AAiBlB,2DAG8B;AAD5B,oIAAA,8BAA8B,OAAA;AAGhC,uEAAyE;AAAhE,uIAAA,2BAA2B,OAAA;AACpC,6EAA+E;AAAtE,6IAAA,8BAA8B,OAAA;AAEvC,MAAa,QAAQ;IASnB,YAAY,IAAY;QAPxB,WAAM,GAAuB,IAAI,GAAG,EAAE,CAAC;QACvC,gBAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;QAEzC,mBAAc,GAAuC,IAAI,GAAG,EAAE,CAAC;QAKrE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG;YACX,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAM,CAAC,EAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,aAAa,CAAC,UAAsB;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,qBAAqB,CAAC,IAAY,EAAE,IAA2B;QAC7D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CAAC,QAA0B;QACvC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,iBAAiB,CAAC,QAAwB;QACxC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;IACjC,CAAC;IAED,qBAAqB,CAAC,OAAa;QACjC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CACrC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CACtD,CAAC;YACF,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,IAAI,WAAW,GAAG,IAAI,CAAC;YACvB,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,yBAAyB;QACvB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,aAAa,CAAC,KAAY,EAAE,OAAY;QAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,OAAO,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,IAAI,QAAQ,CACrB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EACvB,yBAAyB,KAAK,CAAC,SAAS,IAAI,CAC7C,CAAC;oBACF,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzC,CAAC;gBAAC,WAAM,CAAC;oBACP,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,UAAsB;QAC5C,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEK,cAAc,CAClB,YAAoB,EACpB,SAA+B;;YAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACjD,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,EAAE;oBAClB,KAAK,EAAE,uBAAuB,YAAY,EAAE;iBAC7C,CAAC;YACJ,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACjD,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,EAAE;oBAClB,KAAK,EAAE,cAAc,YAAY,kBAAkB;iBACpD,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CACrC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CACtD,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACjD,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,EAAE;oBAClB,KAAK,EAAE,gCAAgC;iBACxC,CAAC;YACJ,CAAC;YAED,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,YAAY;wBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;wBACjD,cAAc,EAAE,EAAE;wBAClB,cAAc,EAAE,EAAE;wBAClB,KAAK,EAAE,yBAAyB;qBACjC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAY,EAAE,CAAC;YAC7B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAU;gBACtB,EAAE,EAAE,GAAG,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;gBACnC,IAAI,EAAE,SAAS,IAAI,CAAC,aAAa,CAAC,CAAC,mBAAM,aAAa,CAAC,IAAI,EAAG,CAAC,CAAC,EAAE,CAAC;gBACnE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,CAAC,CAAC,UAAU,CAAC,EAAE;gBACf,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEtC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,YAAY;gBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACjD,cAAc,EAAE,QAAQ;gBACxB,cAAc,EAAE,CAAC,QAAQ,CAAC;aAC3B,CAAC;QACJ,CAAC;KAAA;IAEK,qBAAqB,CACzB,YAAoB,EACpB,SAA+B;;YAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACjD,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,EAAE;oBAClB,KAAK,EAAE,uBAAuB,YAAY,EAAE;iBAC7C,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACjD,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,EAAE;oBAClB,KAAK,EAAE,cAAc,YAAY,sBAAsB;iBACxD,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CACrC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CACtD,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACjD,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,EAAE;oBAClB,KAAK,EAAE,gCAAgC;iBACxC,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAY,EAAE,CAAC;YAC7B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAU;gBACtB,EAAE,EAAE,GAAG,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;gBACnC,IAAI,EAAE,SAAS,IAAI,CAAC,aAAa,CAAC,CAAC,mBAAM,aAAa,CAAC,IAAI,EAAG,CAAC,CAAC,EAAE,CAAC;gBACnE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,CAAC,CAAC,UAAU,CAAC,EAAE;gBACf,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEtC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,YAAY;gBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACjD,cAAc,EAAE,QAAQ;gBACxB,cAAc,EAAE,CAAC,QAAQ,CAAC;aAC3B,CAAC;QACJ,CAAC;KAAA;IAEK,wBAAwB,CAC5B,YAAoB,EACpB,SAA+B;;YAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY;oBACZ,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACjD,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,EAAE;oBAClB,KAAK,EAAE,uBAAuB,YAAY,EAAE;iBAC7C,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAElE,IAAI,MAAM,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC/D,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,aAAa;oBACnD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;oBAC/C,CAAC,CAAC,YAAY,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAC5C,UAAU,CAAC,MAAM,EACjB,aAAa,CACd,CAAC;oBACF,uCAAY,MAAM,KAAE,YAAY,IAAG;gBACrC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,gCACF,MAAM,KACT,OAAO,EAAE,KAAK,EACd,KAAK,EAAG,KAAe,CAAC,OAAO,EAC/B,YAAY,EAAE,SAAS,GACjB,CAAC;gBACX,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAED,cAAc;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACrD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe;YAAE,OAAO,KAAK,CAAC;QAC5D,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAC5B,CAAC;IACJ,CAAC;IAED,mBAAmB;QACjB,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,cAAc,GAAG,sBAAsB;iBACjD,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpD,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,cAAc,GAAG,gBAAgB;qBAC3C,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAEjD,MAAM,GAAG,GAAG,IAAA,oBAAW,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAE,CAAC;YAChD,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,CAAC,GAAG,IAAA,uBAAc,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,YAAY,GAAG,IAAA,8BAAqB,EAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAC5D,CAAC;IAED,KAAK;QACH,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC9D,MAAM,KAAK,GACT,KAAK,CAAC,IAAI,KAAK,SAAS;gBACtB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;oBACtB,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,KAAK,CAAC;YACd,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,WAAW,KAAK,YAAY,GAAG,OAAO,UAAU,YAAY,CACrE,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,IAAI,GAAG,CAAC;YAC5C,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,0DAA0D,KAAK,IAAI,CAC5E,CAAC;YACF,KAAK,MAAM,EAAE,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,CAAC,CAAC,UAAU,CAAC,EAAE;gBACf,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,YAAY,CAClB,OAA6B;QAE7B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAM,CAAC,EAAG,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAlaD,4BAkaC"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Structured result returned by an intent classification pass.
3
+ */
4
+ export interface IntentResult {
5
+ /** Canonical intent label (one of the registered intents, or `"UNKNOWN"`). */
6
+ intent: string;
7
+ /** Confidence score in [0, 1]. Values below the configured threshold trigger clarification. */
8
+ confidence: number;
9
+ /** Free-form entity map extracted alongside the intent. */
10
+ entities: Record<string, any>;
11
+ /** Turn history that was fed to the classifier, useful for debugging. */
12
+ turnHistory?: string[];
13
+ /**
14
+ * Optional list of multiple intents when the message contains several actions.
15
+ * Each entry has its own intent label and confidence.
16
+ * When present, the orchestrator will execute them sequentially.
17
+ */
18
+ intents?: Array<{
19
+ intent: string;
20
+ confidence: number;
21
+ entities?: Record<string, any>;
22
+ }>;
23
+ }
24
+ /**
25
+ * Function-form of an intent classifier, compatible with `CortexFlowOrchestrator.setIntentClassifier`.
26
+ *
27
+ * @param message - Raw user message.
28
+ * @param context - Optional context carrying recent turn history.
29
+ * @returns Resolved intent result.
30
+ */
31
+ export type IntentClassifierFn = (message: string, context?: {
32
+ turnHistory?: string[];
33
+ }) => Promise<IntentResult>;
34
+ /**
35
+ * Shared interface implemented by both `IntentClassifier` (LLM-backed) and
36
+ * `HybridIntentClassifier` (rules-first, LLM fallback).
37
+ *
38
+ * The orchestrator depends only on this interface, never on a concrete class.
39
+ */
40
+ export interface IIntentClassifier {
41
+ classify(message: string, context?: {
42
+ turnHistory?: string[];
43
+ }): Promise<IntentResult>;
44
+ generateClarification(originalMessage: string): Promise<string>;
45
+ getConfidenceThreshold(): number;
46
+ }
47
+ /**
48
+ * A single keyword rule used by `HybridIntentClassifier`.
49
+ *
50
+ * A rule fires when at least one keyword matches. The confidence is scaled by
51
+ * the fraction of keywords that matched, so rules with more keywords and more
52
+ * matches score higher — making partial matches detectable but less trusted.
53
+ */
54
+ export interface KeywordRule {
55
+ /** Intent label to return when this rule matches. */
56
+ intent: string;
57
+ /** Keywords or phrases to look for (case-insensitive substring match). */
58
+ keywords: string[];
59
+ /**
60
+ * Base confidence when ALL keywords match. Partial matches are scored
61
+ * proportionally: `baseConfidence × (matchedCount / keywords.length)`.
62
+ * Defaults to `0.95`.
63
+ */
64
+ confidence?: number;
65
+ /**
66
+ * Optional negation terms. If any negation term is found in the message,
67
+ * this rule is skipped entirely.
68
+ */
69
+ negations?: string[];
70
+ }
71
+ /**
72
+ * LLM-backed intent classifier for the CortexFlow orchestration layer.
73
+ *
74
+ * The classifier sends a single prompt to an LLM and expects a JSON reply
75
+ * conforming to `{ intent, confidence, entities }`. The response is validated
76
+ * with Zod; any parse failure falls back to `UNKNOWN` with zero confidence.
77
+ *
78
+ * Keeping classification to **one LLM call per user turn** is a core design
79
+ * principle — all subsequent routing is done deterministically by the Petri net.
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * const classifier = new IntentClassifier(llmFn, {
84
+ * intents: ['FETCH_MAILS', 'SUMMARIZE', 'ARCHIVE'],
85
+ * confidenceThreshold: 0.7,
86
+ * });
87
+ *
88
+ * const result = await classifier.classify('Please fetch my latest 5 emails');
89
+ * // { intent: 'FETCH_MAILS', confidence: 0.95, entities: { maxMails: 5 } }
90
+ * ```
91
+ */
92
+ export declare class IntentClassifier implements IIntentClassifier {
93
+ private llmCall;
94
+ private intents;
95
+ private confidenceThreshold;
96
+ /**
97
+ * @param llmCall - Function that forwards a prompt to an LLM and returns its text response.
98
+ * @param options.intents - List of valid intent labels the LLM must choose from.
99
+ * @param options.confidenceThreshold - Minimum confidence to avoid triggering clarification.
100
+ * Defaults to `0.6`.
101
+ */
102
+ constructor(llmCall: (prompt: string) => Promise<string>, options?: {
103
+ intents?: string[];
104
+ confidenceThreshold?: number;
105
+ });
106
+ /**
107
+ * Classifies a user message into one of the registered intents via one LLM call.
108
+ *
109
+ * Supports multi-intent detection: if the LLM returns an `intents` array,
110
+ * the result will include multiple intents to be executed sequentially.
111
+ *
112
+ * On JSON parse failure or Zod validation error, returns a safe fallback
113
+ * `{ intent: "UNKNOWN", confidence: 0, entities: {} }` rather than throwing.
114
+ */
115
+ classify(message: string, context?: {
116
+ turnHistory?: string[];
117
+ }): Promise<IntentResult>;
118
+ /** Returns the current confidence threshold. */
119
+ getConfidenceThreshold(): number;
120
+ /** Overrides the confidence threshold at runtime. */
121
+ setConfidenceThreshold(threshold: number): void;
122
+ /**
123
+ * Converts this classifier instance into a plain `IntentClassifierFn`
124
+ * suitable for `CortexFlowOrchestrator.setIntentClassifier`.
125
+ */
126
+ static toFn(classifier: IIntentClassifier): IntentClassifierFn;
127
+ /**
128
+ * Generates a short clarifying question when the user's intent is ambiguous.
129
+ *
130
+ * Falls back to a generic question listing available intents if the LLM call fails.
131
+ */
132
+ generateClarification(originalMessage: string): Promise<string>;
133
+ }
134
+ /**
135
+ * A hybrid intent classifier that tries keyword rules first and only invokes
136
+ * the LLM when no rule reaches the configured confidence threshold.
137
+ *
138
+ * **Why this matters for performance**: intent classification is on the
139
+ * critical path of every user turn. For well-defined, unambiguous commands
140
+ * ("fetch my mails", "archive all newsletters") keyword rules resolve in
141
+ * microseconds at confidence ≥ 0.9, eliminating the first LLM call entirely.
142
+ * The LLM is reserved for genuinely ambiguous messages.
143
+ *
144
+ * The confidence of a rule is computed as:
145
+ * `baseConfidence × (matchedKeywords / totalKeywords)`.
146
+ * This means a rule with 4 keywords where 3 match scores 0.95 × 0.75 = 0.71,
147
+ * which may still exceed the threshold for coarse intents.
148
+ *
149
+ * @example
150
+ * ```ts
151
+ * const classifier = new HybridIntentClassifier(
152
+ * [
153
+ * { intent: 'TRIAGE_MAILS', keywords: ['fetch', 'mail', 'urgent', 'archive'], confidence: 0.95 },
154
+ * { intent: 'FETCH_MAILS', keywords: ['fetch', 'email'], confidence: 0.90 },
155
+ * ],
156
+ * { intents: ['TRIAGE_MAILS', 'FETCH_MAILS', 'UNKNOWN'], confidenceThreshold: 0.6 },
157
+ * llmFn, // optional — omit for pure keyword mode
158
+ * );
159
+ *
160
+ * // "Fetch my 5 mails and flag the urgent ones" → keyword match, 0 LLM calls
161
+ * // "Do the thing with the emails maybe?" → LLM fallback
162
+ * ```
163
+ */
164
+ export declare class HybridIntentClassifier implements IIntentClassifier {
165
+ private rules;
166
+ private confidenceThreshold;
167
+ private intents;
168
+ private llmClassifier?;
169
+ /**
170
+ * @param rules - Ordered list of keyword rules. Rules are evaluated in order;
171
+ * the highest-scoring match wins.
172
+ * @param options.intents - Valid intent labels (used for LLM fallback prompt and clarification).
173
+ * @param options.confidenceThreshold - Minimum confidence to accept a result without LLM fallback.
174
+ * @param llmFn - Optional LLM function. If omitted, unmatched messages return `UNKNOWN`.
175
+ */
176
+ constructor(rules: KeywordRule[], options: {
177
+ intents: string[];
178
+ confidenceThreshold?: number;
179
+ }, llmFn?: (prompt: string) => Promise<string>);
180
+ /** Returns the current confidence threshold. */
181
+ getConfidenceThreshold(): number;
182
+ /**
183
+ * Classifies a message using keyword rules first.
184
+ *
185
+ * If the best keyword rule score meets the threshold, the result is returned
186
+ * immediately — no LLM call is made. Otherwise, the LLM classifier is invoked
187
+ * as a fallback (if configured). Messages that match no rule and have no LLM
188
+ * fallback return `UNKNOWN` with confidence 0.
189
+ */
190
+ classify(message: string, context?: {
191
+ turnHistory?: string[];
192
+ }): Promise<IntentResult>;
193
+ /**
194
+ * Generates a clarifying question for ambiguous messages.
195
+ * Delegates to the LLM classifier if available; otherwise returns a generic
196
+ * question listing the known intents.
197
+ */
198
+ generateClarification(originalMessage: string): Promise<string>;
199
+ /**
200
+ * Converts this classifier into a plain `IntentClassifierFn`.
201
+ * Works identically to `IntentClassifier.toFn`.
202
+ */
203
+ static toFn(classifier: IIntentClassifier): IntentClassifierFn;
204
+ private applyRules;
205
+ }
206
+ //# sourceMappingURL=intent-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-classifier.d.ts","sourceRoot":"","sources":["../../routing/intent-classifier.ts"],"names":[],"mappings":"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"}