@revealui/ai 0.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 (397) hide show
  1. package/LICENSE +22 -0
  2. package/LICENSE.commercial +112 -0
  3. package/README.md +314 -0
  4. package/dist/a2a/card.d.ts +26 -0
  5. package/dist/a2a/card.d.ts.map +1 -0
  6. package/dist/a2a/card.js +173 -0
  7. package/dist/a2a/handler.d.ts +26 -0
  8. package/dist/a2a/handler.d.ts.map +1 -0
  9. package/dist/a2a/handler.js +170 -0
  10. package/dist/a2a/index.d.ts +10 -0
  11. package/dist/a2a/index.d.ts.map +1 -0
  12. package/dist/a2a/index.js +9 -0
  13. package/dist/a2a/task-store.d.ts +42 -0
  14. package/dist/a2a/task-store.d.ts.map +1 -0
  15. package/dist/a2a/task-store.js +99 -0
  16. package/dist/audit/emitter.d.ts +34 -0
  17. package/dist/audit/emitter.d.ts.map +1 -0
  18. package/dist/audit/emitter.js +34 -0
  19. package/dist/audit/index.d.ts +44 -0
  20. package/dist/audit/index.d.ts.map +1 -0
  21. package/dist/audit/index.js +48 -0
  22. package/dist/audit/observer.d.ts +108 -0
  23. package/dist/audit/observer.d.ts.map +1 -0
  24. package/dist/audit/observer.js +271 -0
  25. package/dist/audit/policy.d.ts +70 -0
  26. package/dist/audit/policy.d.ts.map +1 -0
  27. package/dist/audit/policy.js +209 -0
  28. package/dist/audit/store.d.ts +42 -0
  29. package/dist/audit/store.d.ts.map +1 -0
  30. package/dist/audit/store.js +80 -0
  31. package/dist/audit/types.d.ts +169 -0
  32. package/dist/audit/types.d.ts.map +1 -0
  33. package/dist/audit/types.js +80 -0
  34. package/dist/client/hooks/index.d.ts +22 -0
  35. package/dist/client/hooks/index.d.ts.map +1 -0
  36. package/dist/client/hooks/index.js +21 -0
  37. package/dist/client/hooks/useAgentContext.d.ts +30 -0
  38. package/dist/client/hooks/useAgentContext.d.ts.map +1 -0
  39. package/dist/client/hooks/useAgentContext.js +161 -0
  40. package/dist/client/hooks/useAgentEvents.d.ts +126 -0
  41. package/dist/client/hooks/useAgentEvents.d.ts.map +1 -0
  42. package/dist/client/hooks/useAgentEvents.js +232 -0
  43. package/dist/client/hooks/useAgentStream.d.ts +44 -0
  44. package/dist/client/hooks/useAgentStream.d.ts.map +1 -0
  45. package/dist/client/hooks/useAgentStream.js +101 -0
  46. package/dist/client/hooks/useEpisodicMemory.d.ts +25 -0
  47. package/dist/client/hooks/useEpisodicMemory.d.ts.map +1 -0
  48. package/dist/client/hooks/useEpisodicMemory.js +174 -0
  49. package/dist/client/hooks/useWorkingMemory.d.ts +57 -0
  50. package/dist/client/hooks/useWorkingMemory.d.ts.map +1 -0
  51. package/dist/client/hooks/useWorkingMemory.js +276 -0
  52. package/dist/client/index.d.ts +14 -0
  53. package/dist/client/index.d.ts.map +1 -0
  54. package/dist/client/index.js +13 -0
  55. package/dist/embeddings/index.d.ts +51 -0
  56. package/dist/embeddings/index.d.ts.map +1 -0
  57. package/dist/embeddings/index.js +73 -0
  58. package/dist/index.d.ts +83 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +103 -0
  61. package/dist/inference/context-assembly.d.ts +27 -0
  62. package/dist/inference/context-assembly.d.ts.map +1 -0
  63. package/dist/inference/context-assembly.js +81 -0
  64. package/dist/inference/overflow-compressor.d.ts +17 -0
  65. package/dist/inference/overflow-compressor.d.ts.map +1 -0
  66. package/dist/inference/overflow-compressor.js +40 -0
  67. package/dist/inference/runRag.d.ts +35 -0
  68. package/dist/inference/runRag.d.ts.map +1 -0
  69. package/dist/inference/runRag.js +53 -0
  70. package/dist/ingestion/bm25.d.ts +29 -0
  71. package/dist/ingestion/bm25.d.ts.map +1 -0
  72. package/dist/ingestion/bm25.js +161 -0
  73. package/dist/ingestion/cms-indexer.d.ts +39 -0
  74. package/dist/ingestion/cms-indexer.d.ts.map +1 -0
  75. package/dist/ingestion/cms-indexer.js +74 -0
  76. package/dist/ingestion/file-parsers.d.ts +51 -0
  77. package/dist/ingestion/file-parsers.d.ts.map +1 -0
  78. package/dist/ingestion/file-parsers.js +247 -0
  79. package/dist/ingestion/hybrid-search.d.ts +22 -0
  80. package/dist/ingestion/hybrid-search.d.ts.map +1 -0
  81. package/dist/ingestion/hybrid-search.js +63 -0
  82. package/dist/ingestion/index.d.ts +9 -0
  83. package/dist/ingestion/index.d.ts.map +1 -0
  84. package/dist/ingestion/index.js +8 -0
  85. package/dist/ingestion/pipeline.d.ts +35 -0
  86. package/dist/ingestion/pipeline.d.ts.map +1 -0
  87. package/dist/ingestion/pipeline.js +114 -0
  88. package/dist/ingestion/rag-vector-service.d.ts +34 -0
  89. package/dist/ingestion/rag-vector-service.d.ts.map +1 -0
  90. package/dist/ingestion/rag-vector-service.js +98 -0
  91. package/dist/ingestion/reranker.d.ts +10 -0
  92. package/dist/ingestion/reranker.d.ts.map +1 -0
  93. package/dist/ingestion/reranker.js +41 -0
  94. package/dist/ingestion/text-splitter.d.ts +25 -0
  95. package/dist/ingestion/text-splitter.d.ts.map +1 -0
  96. package/dist/ingestion/text-splitter.js +119 -0
  97. package/dist/llm/cache-utils.d.ts +146 -0
  98. package/dist/llm/cache-utils.d.ts.map +1 -0
  99. package/dist/llm/cache-utils.js +204 -0
  100. package/dist/llm/client.d.ts +134 -0
  101. package/dist/llm/client.d.ts.map +1 -0
  102. package/dist/llm/client.js +497 -0
  103. package/dist/llm/key-validator.d.ts +25 -0
  104. package/dist/llm/key-validator.d.ts.map +1 -0
  105. package/dist/llm/key-validator.js +101 -0
  106. package/dist/llm/provider-health.d.ts +40 -0
  107. package/dist/llm/provider-health.d.ts.map +1 -0
  108. package/dist/llm/provider-health.js +97 -0
  109. package/dist/llm/providers/anthropic.d.ts +31 -0
  110. package/dist/llm/providers/anthropic.d.ts.map +1 -0
  111. package/dist/llm/providers/anthropic.js +248 -0
  112. package/dist/llm/providers/base.d.ts +111 -0
  113. package/dist/llm/providers/base.d.ts.map +1 -0
  114. package/dist/llm/providers/base.js +6 -0
  115. package/dist/llm/providers/groq.d.ts +23 -0
  116. package/dist/llm/providers/groq.d.ts.map +1 -0
  117. package/dist/llm/providers/groq.js +27 -0
  118. package/dist/llm/providers/ollama.d.ts +27 -0
  119. package/dist/llm/providers/ollama.d.ts.map +1 -0
  120. package/dist/llm/providers/ollama.js +48 -0
  121. package/dist/llm/providers/openai.d.ts +19 -0
  122. package/dist/llm/providers/openai.d.ts.map +1 -0
  123. package/dist/llm/providers/openai.js +245 -0
  124. package/dist/llm/providers/vultr.d.ts +18 -0
  125. package/dist/llm/providers/vultr.d.ts.map +1 -0
  126. package/dist/llm/providers/vultr.js +168 -0
  127. package/dist/llm/response-cache.d.ts +166 -0
  128. package/dist/llm/response-cache.d.ts.map +1 -0
  129. package/dist/llm/response-cache.js +233 -0
  130. package/dist/llm/semantic-cache.d.ts +179 -0
  131. package/dist/llm/semantic-cache.d.ts.map +1 -0
  132. package/dist/llm/semantic-cache.js +306 -0
  133. package/dist/llm/server.d.ts +14 -0
  134. package/dist/llm/server.d.ts.map +1 -0
  135. package/dist/llm/server.js +15 -0
  136. package/dist/llm/token-counter.d.ts +48 -0
  137. package/dist/llm/token-counter.d.ts.map +1 -0
  138. package/dist/llm/token-counter.js +77 -0
  139. package/dist/llm/workspace-provider-config.d.ts +38 -0
  140. package/dist/llm/workspace-provider-config.d.ts.map +1 -0
  141. package/dist/llm/workspace-provider-config.js +47 -0
  142. package/dist/memory/agent/context-manager.d.ts +148 -0
  143. package/dist/memory/agent/context-manager.d.ts.map +1 -0
  144. package/dist/memory/agent/context-manager.js +284 -0
  145. package/dist/memory/agent/index.d.ts +7 -0
  146. package/dist/memory/agent/index.d.ts.map +1 -0
  147. package/dist/memory/agent/index.js +6 -0
  148. package/dist/memory/crdt/index.d.ts +13 -0
  149. package/dist/memory/crdt/index.d.ts.map +1 -0
  150. package/dist/memory/crdt/index.js +12 -0
  151. package/dist/memory/crdt/lww-register.d.ts +108 -0
  152. package/dist/memory/crdt/lww-register.d.ts.map +1 -0
  153. package/dist/memory/crdt/lww-register.js +169 -0
  154. package/dist/memory/crdt/or-set.d.ts +141 -0
  155. package/dist/memory/crdt/or-set.d.ts.map +1 -0
  156. package/dist/memory/crdt/or-set.js +291 -0
  157. package/dist/memory/crdt/pn-counter.d.ts +116 -0
  158. package/dist/memory/crdt/pn-counter.d.ts.map +1 -0
  159. package/dist/memory/crdt/pn-counter.js +174 -0
  160. package/dist/memory/crdt/vector-clock.d.ts +115 -0
  161. package/dist/memory/crdt/vector-clock.d.ts.map +1 -0
  162. package/dist/memory/crdt/vector-clock.js +179 -0
  163. package/dist/memory/errors/index.d.ts +56 -0
  164. package/dist/memory/errors/index.d.ts.map +1 -0
  165. package/dist/memory/errors/index.js +85 -0
  166. package/dist/memory/index.d.ts +21 -0
  167. package/dist/memory/index.d.ts.map +1 -0
  168. package/dist/memory/index.js +20 -0
  169. package/dist/memory/persistence/crdt-persistence.d.ts +85 -0
  170. package/dist/memory/persistence/crdt-persistence.d.ts.map +1 -0
  171. package/dist/memory/persistence/crdt-persistence.js +204 -0
  172. package/dist/memory/persistence/index.d.ts +7 -0
  173. package/dist/memory/persistence/index.d.ts.map +1 -0
  174. package/dist/memory/persistence/index.js +6 -0
  175. package/dist/memory/preferences/index.d.ts +7 -0
  176. package/dist/memory/preferences/index.d.ts.map +1 -0
  177. package/dist/memory/preferences/index.js +6 -0
  178. package/dist/memory/preferences/user-preferences-manager.d.ts +133 -0
  179. package/dist/memory/preferences/user-preferences-manager.d.ts.map +1 -0
  180. package/dist/memory/preferences/user-preferences-manager.js +342 -0
  181. package/dist/memory/services/index.d.ts +8 -0
  182. package/dist/memory/services/index.d.ts.map +1 -0
  183. package/dist/memory/services/index.js +6 -0
  184. package/dist/memory/services/node-id-service.d.ts +75 -0
  185. package/dist/memory/services/node-id-service.d.ts.map +1 -0
  186. package/dist/memory/services/node-id-service.js +190 -0
  187. package/dist/memory/stores/episodic-memory.d.ts +182 -0
  188. package/dist/memory/stores/episodic-memory.d.ts.map +1 -0
  189. package/dist/memory/stores/episodic-memory.js +378 -0
  190. package/dist/memory/stores/index.d.ts +16 -0
  191. package/dist/memory/stores/index.d.ts.map +1 -0
  192. package/dist/memory/stores/index.js +15 -0
  193. package/dist/memory/stores/procedural-memory.d.ts +89 -0
  194. package/dist/memory/stores/procedural-memory.d.ts.map +1 -0
  195. package/dist/memory/stores/procedural-memory.js +152 -0
  196. package/dist/memory/stores/semantic-memory.d.ts +92 -0
  197. package/dist/memory/stores/semantic-memory.d.ts.map +1 -0
  198. package/dist/memory/stores/semantic-memory.js +155 -0
  199. package/dist/memory/stores/working-memory.d.ts +225 -0
  200. package/dist/memory/stores/working-memory.d.ts.map +1 -0
  201. package/dist/memory/stores/working-memory.js +336 -0
  202. package/dist/memory/utils/deep-clone.d.ts +10 -0
  203. package/dist/memory/utils/deep-clone.d.ts.map +1 -0
  204. package/dist/memory/utils/deep-clone.js +9 -0
  205. package/dist/memory/utils/index.d.ts +8 -0
  206. package/dist/memory/utils/index.d.ts.map +1 -0
  207. package/dist/memory/utils/index.js +7 -0
  208. package/dist/memory/utils/logger.d.ts +21 -0
  209. package/dist/memory/utils/logger.d.ts.map +1 -0
  210. package/dist/memory/utils/logger.js +62 -0
  211. package/dist/memory/utils/sql-helpers.d.ts +97 -0
  212. package/dist/memory/utils/sql-helpers.d.ts.map +1 -0
  213. package/dist/memory/utils/sql-helpers.js +214 -0
  214. package/dist/memory/utils/validation.d.ts +62 -0
  215. package/dist/memory/utils/validation.d.ts.map +1 -0
  216. package/dist/memory/utils/validation.js +244 -0
  217. package/dist/memory/vector/index.d.ts +12 -0
  218. package/dist/memory/vector/index.d.ts.map +1 -0
  219. package/dist/memory/vector/index.js +14 -0
  220. package/dist/memory/vector/vector-memory-service.d.ts +88 -0
  221. package/dist/memory/vector/vector-memory-service.d.ts.map +1 -0
  222. package/dist/memory/vector/vector-memory-service.js +335 -0
  223. package/dist/observability/logger.d.ts +79 -0
  224. package/dist/observability/logger.d.ts.map +1 -0
  225. package/dist/observability/logger.js +165 -0
  226. package/dist/observability/metrics.d.ts +43 -0
  227. package/dist/observability/metrics.d.ts.map +1 -0
  228. package/dist/observability/metrics.js +197 -0
  229. package/dist/observability/query.d.ts +150 -0
  230. package/dist/observability/query.d.ts.map +1 -0
  231. package/dist/observability/query.js +339 -0
  232. package/dist/observability/types.d.ts +140 -0
  233. package/dist/observability/types.d.ts.map +1 -0
  234. package/dist/observability/types.js +6 -0
  235. package/dist/orchestration/agent.d.ts +98 -0
  236. package/dist/orchestration/agent.d.ts.map +1 -0
  237. package/dist/orchestration/agent.js +6 -0
  238. package/dist/orchestration/defaults.d.ts +21 -0
  239. package/dist/orchestration/defaults.d.ts.map +1 -0
  240. package/dist/orchestration/defaults.js +22 -0
  241. package/dist/orchestration/memory-integration.d.ts +58 -0
  242. package/dist/orchestration/memory-integration.d.ts.map +1 -0
  243. package/dist/orchestration/memory-integration.js +130 -0
  244. package/dist/orchestration/orchestrator.d.ts +67 -0
  245. package/dist/orchestration/orchestrator.d.ts.map +1 -0
  246. package/dist/orchestration/orchestrator.js +174 -0
  247. package/dist/orchestration/runtime.d.ts +82 -0
  248. package/dist/orchestration/runtime.d.ts.map +1 -0
  249. package/dist/orchestration/runtime.js +251 -0
  250. package/dist/orchestration/streaming-runtime.d.ts +36 -0
  251. package/dist/orchestration/streaming-runtime.d.ts.map +1 -0
  252. package/dist/orchestration/streaming-runtime.js +175 -0
  253. package/dist/orchestration/ticket-agent.d.ts +70 -0
  254. package/dist/orchestration/ticket-agent.d.ts.map +1 -0
  255. package/dist/orchestration/ticket-agent.js +146 -0
  256. package/dist/skills/activation/index.d.ts +7 -0
  257. package/dist/skills/activation/index.d.ts.map +1 -0
  258. package/dist/skills/activation/index.js +6 -0
  259. package/dist/skills/activation/skill-activator.d.ts +68 -0
  260. package/dist/skills/activation/skill-activator.d.ts.map +1 -0
  261. package/dist/skills/activation/skill-activator.js +224 -0
  262. package/dist/skills/catalog/catalog-search.d.ts +55 -0
  263. package/dist/skills/catalog/catalog-search.d.ts.map +1 -0
  264. package/dist/skills/catalog/catalog-search.js +111 -0
  265. package/dist/skills/catalog/catalog-types.d.ts +81 -0
  266. package/dist/skills/catalog/catalog-types.d.ts.map +1 -0
  267. package/dist/skills/catalog/catalog-types.js +66 -0
  268. package/dist/skills/catalog/index.d.ts +9 -0
  269. package/dist/skills/catalog/index.d.ts.map +1 -0
  270. package/dist/skills/catalog/index.js +7 -0
  271. package/dist/skills/catalog/vercel-catalog.d.ts +42 -0
  272. package/dist/skills/catalog/vercel-catalog.d.ts.map +1 -0
  273. package/dist/skills/catalog/vercel-catalog.js +189 -0
  274. package/dist/skills/compat/index.d.ts +9 -0
  275. package/dist/skills/compat/index.d.ts.map +1 -0
  276. package/dist/skills/compat/index.js +8 -0
  277. package/dist/skills/compat/skill-enhancer.d.ts +37 -0
  278. package/dist/skills/compat/skill-enhancer.d.ts.map +1 -0
  279. package/dist/skills/compat/skill-enhancer.js +76 -0
  280. package/dist/skills/compat/tool-mapper.d.ts +61 -0
  281. package/dist/skills/compat/tool-mapper.d.ts.map +1 -0
  282. package/dist/skills/compat/tool-mapper.js +168 -0
  283. package/dist/skills/compat/vercel-compat.d.ts +33 -0
  284. package/dist/skills/compat/vercel-compat.d.ts.map +1 -0
  285. package/dist/skills/compat/vercel-compat.js +132 -0
  286. package/dist/skills/index.d.ts +40 -0
  287. package/dist/skills/index.d.ts.map +1 -0
  288. package/dist/skills/index.js +47 -0
  289. package/dist/skills/integration/agent-skill-provider.d.ts +94 -0
  290. package/dist/skills/integration/agent-skill-provider.d.ts.map +1 -0
  291. package/dist/skills/integration/agent-skill-provider.js +161 -0
  292. package/dist/skills/integration/index.d.ts +7 -0
  293. package/dist/skills/integration/index.d.ts.map +1 -0
  294. package/dist/skills/integration/index.js +6 -0
  295. package/dist/skills/loader/github-loader.d.ts +61 -0
  296. package/dist/skills/loader/github-loader.d.ts.map +1 -0
  297. package/dist/skills/loader/github-loader.js +176 -0
  298. package/dist/skills/loader/index.d.ts +10 -0
  299. package/dist/skills/loader/index.d.ts.map +1 -0
  300. package/dist/skills/loader/index.js +9 -0
  301. package/dist/skills/loader/local-loader.d.ts +56 -0
  302. package/dist/skills/loader/local-loader.d.ts.map +1 -0
  303. package/dist/skills/loader/local-loader.js +186 -0
  304. package/dist/skills/loader/vercel-loader.d.ts +64 -0
  305. package/dist/skills/loader/vercel-loader.d.ts.map +1 -0
  306. package/dist/skills/loader/vercel-loader.js +313 -0
  307. package/dist/skills/loader/vercel-types.d.ts +64 -0
  308. package/dist/skills/loader/vercel-types.d.ts.map +1 -0
  309. package/dist/skills/loader/vercel-types.js +55 -0
  310. package/dist/skills/parser/index.d.ts +7 -0
  311. package/dist/skills/parser/index.d.ts.map +1 -0
  312. package/dist/skills/parser/index.js +6 -0
  313. package/dist/skills/parser/skill-md-parser.d.ts +64 -0
  314. package/dist/skills/parser/skill-md-parser.d.ts.map +1 -0
  315. package/dist/skills/parser/skill-md-parser.js +242 -0
  316. package/dist/skills/registry/index.d.ts +7 -0
  317. package/dist/skills/registry/index.d.ts.map +1 -0
  318. package/dist/skills/registry/index.js +6 -0
  319. package/dist/skills/registry/skill-registry.d.ts +133 -0
  320. package/dist/skills/registry/skill-registry.d.ts.map +1 -0
  321. package/dist/skills/registry/skill-registry.js +373 -0
  322. package/dist/skills/types.d.ts +216 -0
  323. package/dist/skills/types.d.ts.map +1 -0
  324. package/dist/skills/types.js +176 -0
  325. package/dist/templates/agent-spec.d.ts +138 -0
  326. package/dist/templates/agent-spec.d.ts.map +1 -0
  327. package/dist/templates/agent-spec.js +138 -0
  328. package/dist/templates/index.d.ts +56 -0
  329. package/dist/templates/index.d.ts.map +1 -0
  330. package/dist/templates/index.js +58 -0
  331. package/dist/templates/prompt-spec.d.ts +140 -0
  332. package/dist/templates/prompt-spec.d.ts.map +1 -0
  333. package/dist/templates/prompt-spec.js +210 -0
  334. package/dist/templates/skill-spec.d.ts +106 -0
  335. package/dist/templates/skill-spec.d.ts.map +1 -0
  336. package/dist/templates/skill-spec.js +119 -0
  337. package/dist/tools/base.d.ts +74 -0
  338. package/dist/tools/base.d.ts.map +1 -0
  339. package/dist/tools/base.js +6 -0
  340. package/dist/tools/cms/collection-tools.d.ts +36 -0
  341. package/dist/tools/cms/collection-tools.d.ts.map +1 -0
  342. package/dist/tools/cms/collection-tools.js +178 -0
  343. package/dist/tools/cms/factory.d.ts +89 -0
  344. package/dist/tools/cms/factory.d.ts.map +1 -0
  345. package/dist/tools/cms/factory.js +462 -0
  346. package/dist/tools/cms/global-tools.d.ts +21 -0
  347. package/dist/tools/cms/global-tools.d.ts.map +1 -0
  348. package/dist/tools/cms/global-tools.js +92 -0
  349. package/dist/tools/cms/index.d.ts +11 -0
  350. package/dist/tools/cms/index.d.ts.map +1 -0
  351. package/dist/tools/cms/index.js +11 -0
  352. package/dist/tools/cms/media-tools.d.ts +31 -0
  353. package/dist/tools/cms/media-tools.d.ts.map +1 -0
  354. package/dist/tools/cms/media-tools.js +140 -0
  355. package/dist/tools/cms/user-tools.d.ts +31 -0
  356. package/dist/tools/cms/user-tools.d.ts.map +1 -0
  357. package/dist/tools/cms/user-tools.js +135 -0
  358. package/dist/tools/deduplicator.d.ts +19 -0
  359. package/dist/tools/deduplicator.d.ts.map +1 -0
  360. package/dist/tools/deduplicator.js +53 -0
  361. package/dist/tools/document-summarizer.d.ts +11 -0
  362. package/dist/tools/document-summarizer.d.ts.map +1 -0
  363. package/dist/tools/document-summarizer.js +82 -0
  364. package/dist/tools/mcp-adapter.d.ts +66 -0
  365. package/dist/tools/mcp-adapter.d.ts.map +1 -0
  366. package/dist/tools/mcp-adapter.js +152 -0
  367. package/dist/tools/memory/index.d.ts +3 -0
  368. package/dist/tools/memory/index.d.ts.map +1 -0
  369. package/dist/tools/memory/index.js +1 -0
  370. package/dist/tools/memory/store-memory.d.ts +39 -0
  371. package/dist/tools/memory/store-memory.d.ts.map +1 -0
  372. package/dist/tools/memory/store-memory.js +94 -0
  373. package/dist/tools/registry.d.ts +14 -0
  374. package/dist/tools/registry.d.ts.map +1 -0
  375. package/dist/tools/registry.js +48 -0
  376. package/dist/tools/ticket-tools.d.ts +31 -0
  377. package/dist/tools/ticket-tools.d.ts.map +1 -0
  378. package/dist/tools/ticket-tools.js +74 -0
  379. package/dist/tools/web/duck-duck-go.d.ts +52 -0
  380. package/dist/tools/web/duck-duck-go.d.ts.map +1 -0
  381. package/dist/tools/web/duck-duck-go.js +202 -0
  382. package/dist/tools/web/exa.d.ts +34 -0
  383. package/dist/tools/web/exa.d.ts.map +1 -0
  384. package/dist/tools/web/exa.js +80 -0
  385. package/dist/tools/web/index.d.ts +6 -0
  386. package/dist/tools/web/index.d.ts.map +1 -0
  387. package/dist/tools/web/index.js +4 -0
  388. package/dist/tools/web/scraper.d.ts +9 -0
  389. package/dist/tools/web/scraper.d.ts.map +1 -0
  390. package/dist/tools/web/scraper.js +118 -0
  391. package/dist/tools/web/tavily.d.ts +32 -0
  392. package/dist/tools/web/tavily.d.ts.map +1 -0
  393. package/dist/tools/web/tavily.js +73 -0
  394. package/dist/tools/web/types.d.ts +31 -0
  395. package/dist/tools/web/types.d.ts.map +1 -0
  396. package/dist/tools/web/types.js +9 -0
  397. package/package.json +143 -0
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Streaming Agent Runtime
3
+ *
4
+ * Extends AgentRuntime with SSE-compatible streaming via LLMClient.stream().
5
+ * Each yielded AgentStreamChunk maps to one SSE event.
6
+ *
7
+ * AnythingLLM lesson: SSE is the correct approach for unidirectional LLM output.
8
+ * EventSource is not used client-side because it doesn't support POST — use fetch + ReadableStream.
9
+ */
10
+ import { z } from 'zod/v4';
11
+ import { ToolCallDeduplicator } from '../tools/deduplicator.js';
12
+ import { AgentRuntime } from './runtime.js';
13
+ export class StreamingAgentRuntime extends AgentRuntime {
14
+ constructor(config = {}) {
15
+ super(config);
16
+ }
17
+ /**
18
+ * Stream a task execution, yielding typed events as they occur.
19
+ * Accepts an AbortSignal — on abort, emits an error event and stops.
20
+ */
21
+ async *streamTask(agent, task, llmClient, signal) {
22
+ const startTime = Date.now();
23
+ const toolResults = [];
24
+ const deduplicator = new ToolCallDeduplicator();
25
+ let iterations = 0;
26
+ const maxIterations = this.config.maxIterations ?? 10;
27
+ const timeout = this.config.timeout ?? 60_000;
28
+ const messages = [
29
+ {
30
+ role: 'system',
31
+ content: agent.instructions,
32
+ cacheControl: { type: 'ephemeral' },
33
+ },
34
+ {
35
+ role: 'user',
36
+ content: task.description,
37
+ },
38
+ ];
39
+ try {
40
+ while (iterations < maxIterations) {
41
+ iterations++;
42
+ if (signal?.aborted) {
43
+ yield { type: 'error', error: 'interrupted' };
44
+ return;
45
+ }
46
+ if (Date.now() - startTime > timeout) {
47
+ yield { type: 'error', error: 'Task execution timeout' };
48
+ return;
49
+ }
50
+ // Accumulate streamed text and all tool calls
51
+ let accumulatedContent = '';
52
+ let pendingToolCalls = [];
53
+ try {
54
+ for await (const chunk of llmClient.stream(messages, {
55
+ tools: agent.tools.map((tool) => ({
56
+ type: 'function',
57
+ function: {
58
+ name: tool.name,
59
+ description: tool.description,
60
+ parameters: z.toJSONSchema(tool.parameters),
61
+ },
62
+ })),
63
+ })) {
64
+ if (signal?.aborted) {
65
+ yield { type: 'error', error: 'interrupted' };
66
+ return;
67
+ }
68
+ // Stream text content
69
+ if (chunk.content) {
70
+ accumulatedContent += chunk.content;
71
+ yield { type: 'text', content: chunk.content };
72
+ }
73
+ // Collect all tool calls when streaming is complete
74
+ if (chunk.toolCalls && chunk.toolCalls.length > 0 && chunk.done) {
75
+ pendingToolCalls = chunk.toolCalls.map((tc) => ({
76
+ name: tc.function.name,
77
+ arguments: tc.function.arguments,
78
+ id: tc.id,
79
+ }));
80
+ }
81
+ }
82
+ }
83
+ catch (streamError) {
84
+ yield {
85
+ type: 'error',
86
+ error: streamError instanceof Error ? streamError.message : String(streamError),
87
+ };
88
+ return;
89
+ }
90
+ // If no tool calls, task is complete
91
+ if (pendingToolCalls.length === 0) {
92
+ yield {
93
+ type: 'done',
94
+ content: accumulatedContent,
95
+ metadata: { executionTime: Date.now() - startTime },
96
+ };
97
+ return;
98
+ }
99
+ // Push the assistant message with all tool calls
100
+ messages.push({
101
+ role: 'assistant',
102
+ content: accumulatedContent,
103
+ toolCalls: pendingToolCalls,
104
+ });
105
+ // Execute all tool calls in this response
106
+ for (const tc of pendingToolCalls) {
107
+ yield { type: 'tool_call_start', toolCall: { name: tc.name, arguments: tc.arguments } };
108
+ const tool = agent.tools.find((t) => t.name === tc.name);
109
+ if (!tool) {
110
+ const result = { success: false, error: `Tool "${tc.name}" not found` };
111
+ toolResults.push(result);
112
+ yield { type: 'tool_call_result', toolResult: result };
113
+ messages.push({
114
+ role: 'tool',
115
+ content: result.content ?? JSON.stringify(result.data ?? result),
116
+ toolCallId: tc.id,
117
+ });
118
+ continue;
119
+ }
120
+ let params;
121
+ try {
122
+ params = JSON.parse(tc.arguments || '{}');
123
+ }
124
+ catch {
125
+ params = {};
126
+ }
127
+ // Deduplication check
128
+ if (deduplicator.isDuplicate(tc.name, params)) {
129
+ const cached = deduplicator.getResult(tc.name, params);
130
+ toolResults.push(cached);
131
+ yield { type: 'tool_call_result', toolResult: cached };
132
+ messages.push({
133
+ role: 'tool',
134
+ content: cached.content ?? JSON.stringify(cached.data ?? cached),
135
+ toolCallId: tc.id,
136
+ });
137
+ continue;
138
+ }
139
+ try {
140
+ const result = await tool.execute(params);
141
+ deduplicator.record(tc.name, params, result);
142
+ toolResults.push(result);
143
+ yield { type: 'tool_call_result', toolResult: result };
144
+ messages.push({
145
+ role: 'tool',
146
+ content: result.content ?? JSON.stringify(result.data ?? result),
147
+ toolCallId: tc.id,
148
+ });
149
+ }
150
+ catch (toolError) {
151
+ const result = {
152
+ success: false,
153
+ error: toolError instanceof Error ? toolError.message : String(toolError),
154
+ };
155
+ toolResults.push(result);
156
+ yield { type: 'tool_call_result', toolResult: result };
157
+ messages.push({
158
+ role: 'tool',
159
+ content: result.content ?? JSON.stringify(result.data ?? result),
160
+ toolCallId: tc.id,
161
+ });
162
+ }
163
+ }
164
+ }
165
+ yield { type: 'error', error: 'Maximum iterations reached' };
166
+ }
167
+ catch (error) {
168
+ yield {
169
+ type: 'error',
170
+ error: error instanceof Error ? error.message : String(error),
171
+ metadata: { executionTime: Date.now() - startTime },
172
+ };
173
+ }
174
+ }
175
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Ticket Agent Bridge
3
+ *
4
+ * Closes the loop between the ticketing system and the AI agent system.
5
+ *
6
+ * Flow:
7
+ * Ticket (title + description) → Task → Agent (CMS tools + ticket tools)
8
+ * → agentic loop → CMS mutations + ticket status updated + comment written
9
+ *
10
+ * Usage:
11
+ * const dispatcher = new TicketAgentDispatcher({ llmClient, apiClient, ticketClient })
12
+ * const result = await dispatcher.dispatch(ticket)
13
+ */
14
+ import type { Database } from '@revealui/db/client';
15
+ import type { LLMClient } from '../llm/client.js';
16
+ import type { EpisodicMemory } from '../memory/stores/episodic-memory.js';
17
+ import type { CMSAPIClient, CollectionMetadata, GlobalMetadata } from '../tools/cms/factory.js';
18
+ import type { TicketMutationClient } from '../tools/ticket-tools.js';
19
+ import type { AgentResult } from './agent.js';
20
+ export interface TicketInput {
21
+ id: string;
22
+ title: string;
23
+ /** Rich text or plain text description. Plain strings are used directly; objects are JSON-stringified. */
24
+ description: unknown;
25
+ type?: string;
26
+ priority?: string;
27
+ }
28
+ export interface TicketAgentConfig {
29
+ /** LLM client (Anthropic, OpenAI, etc.) */
30
+ llmClient: LLMClient;
31
+ /** CMS API client — used to inject into CMS tools */
32
+ apiClient: CMSAPIClient;
33
+ /** Ticket mutation client — used to update status and add comments */
34
+ ticketClient: TicketMutationClient;
35
+ /** Available CMS collections (optional, improves tool descriptions) */
36
+ collections?: CollectionMetadata[];
37
+ /** Available CMS globals (optional) */
38
+ globals?: GlobalMetadata[];
39
+ /**
40
+ * Memory instance to share across dispatches (optional).
41
+ * If omitted, each dispatch uses a no-op stub — the runtime does not
42
+ * call agent.memory directly, so this is safe for stateless dispatch.
43
+ */
44
+ memory?: EpisodicMemory;
45
+ /**
46
+ * Database client — enables the document_summarize tool.
47
+ * If omitted, the summarizer tool is not included in the agent's toolset.
48
+ */
49
+ db?: Database;
50
+ /** Max iterations for the agentic loop (default: 10) */
51
+ maxIterations?: number;
52
+ /** Timeout in ms (default: 120_000) */
53
+ timeout?: number;
54
+ }
55
+ export declare class TicketAgentDispatcher {
56
+ private config;
57
+ private orchestrator;
58
+ constructor(config: TicketAgentConfig);
59
+ /**
60
+ * Dispatch a ticket to the agent and await the result.
61
+ *
62
+ * The agent will:
63
+ * - Receive the ticket as its task description
64
+ * - Have access to all CMS tools (create/update/delete content, globals, media, users)
65
+ * - Have access to ticket mutation tools (update status, add comment)
66
+ * - Run the agentic loop until done or max iterations
67
+ */
68
+ dispatch(ticket: TicketInput): Promise<AgentResult>;
69
+ }
70
+ //# sourceMappingURL=ticket-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket-agent.d.ts","sourceRoot":"","sources":["../../src/orchestration/ticket-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EAClB,cAAc,EACf,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAGpE,OAAO,KAAK,EAAS,WAAW,EAAQ,MAAM,YAAY,CAAA;AAG1D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,0GAA0G;IAC1G,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,SAAS,EAAE,SAAS,CAAA;IAEpB,qDAAqD;IACrD,SAAS,EAAE,YAAY,CAAA;IAEvB,sEAAsE;IACtE,YAAY,EAAE,oBAAoB,CAAA;IAElC,uEAAuE;IACvE,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAElC,uCAAuC;IACvC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;IAE1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,cAAc,CAAA;IAEvB;;;OAGG;IACH,EAAE,CAAC,EAAE,QAAQ,CAAA;IAEb,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAwDD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,YAAY,CAAmB;gBAE3B,MAAM,EAAE,iBAAiB;IAUrC;;;;;;;;OAQG;IACG,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAsD1D"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Ticket Agent Bridge
3
+ *
4
+ * Closes the loop between the ticketing system and the AI agent system.
5
+ *
6
+ * Flow:
7
+ * Ticket (title + description) → Task → Agent (CMS tools + ticket tools)
8
+ * → agentic loop → CMS mutations + ticket status updated + comment written
9
+ *
10
+ * Usage:
11
+ * const dispatcher = new TicketAgentDispatcher({ llmClient, apiClient, ticketClient })
12
+ * const result = await dispatcher.dispatch(ticket)
13
+ */
14
+ import { createCMSTools } from '../tools/cms/factory.js';
15
+ import { createDocumentSummarizerTool } from '../tools/document-summarizer.js';
16
+ import { createTicketTools } from '../tools/ticket-tools.js';
17
+ import { webScraperTool } from '../tools/web/scraper.js';
18
+ import { AgentOrchestrator } from './orchestrator.js';
19
+ /**
20
+ * Converts a ticket's description field to a plain string the LLM can use.
21
+ * Handles: string, Lexical/Slate rich text JSON objects, null, undefined.
22
+ */
23
+ function descriptionToString(description) {
24
+ if (!description)
25
+ return '';
26
+ if (typeof description === 'string')
27
+ return description;
28
+ if (typeof description === 'object') {
29
+ // Extract text nodes from a simple Lexical-style document
30
+ try {
31
+ const json = description;
32
+ if (json.root && typeof json.root === 'object') {
33
+ const root = json.root;
34
+ const texts = [];
35
+ const walk = (nodes) => {
36
+ for (const node of nodes) {
37
+ const n = node;
38
+ if (typeof n.text === 'string')
39
+ texts.push(n.text);
40
+ if (Array.isArray(n.children))
41
+ walk(n.children);
42
+ }
43
+ };
44
+ if (Array.isArray(root.children))
45
+ walk(root.children);
46
+ return texts.join(' ').trim();
47
+ }
48
+ }
49
+ catch {
50
+ // fall through
51
+ }
52
+ return JSON.stringify(description);
53
+ }
54
+ return String(description);
55
+ }
56
+ /**
57
+ * Build the agent system prompt from a ticket.
58
+ */
59
+ function buildInstructions(ticket) {
60
+ return `You are a RevealUI content agent. You have been assigned a ticket and must complete it.
61
+
62
+ Your job is to:
63
+ 1. Understand the intent of the ticket
64
+ 2. Use the available CMS tools to take the necessary actions (create, update, or delete content)
65
+ 3. When your work is done, call add_ticket_comment to summarize what you did
66
+ 4. Finally, call update_ticket_status with status="done"
67
+ 5. If you cannot complete the task, call add_ticket_comment to explain why, then update_ticket_status with status="blocked"
68
+
69
+ Always prefer taking action over asking questions. If you are uncertain about details, make reasonable assumptions and document them in your comment.
70
+
71
+ Ticket: #${ticket.id}
72
+ Title: ${ticket.title}
73
+ Type: ${ticket.type ?? 'task'}
74
+ Priority: ${ticket.priority ?? 'medium'}
75
+ `.trim();
76
+ }
77
+ export class TicketAgentDispatcher {
78
+ config;
79
+ orchestrator;
80
+ constructor(config) {
81
+ this.config = config;
82
+ this.orchestrator = new AgentOrchestrator({
83
+ maxConcurrentAgents: 1,
84
+ taskTimeout: config.timeout ?? 120_000,
85
+ retryOnFailure: false,
86
+ });
87
+ this.orchestrator.setLLMClient(config.llmClient);
88
+ }
89
+ /**
90
+ * Dispatch a ticket to the agent and await the result.
91
+ *
92
+ * The agent will:
93
+ * - Receive the ticket as its task description
94
+ * - Have access to all CMS tools (create/update/delete content, globals, media, users)
95
+ * - Have access to ticket mutation tools (update status, add comment)
96
+ * - Run the agentic loop until done or max iterations
97
+ */
98
+ async dispatch(ticket) {
99
+ const { apiClient, ticketClient, collections, globals, memory: sharedMemory, db } = this.config;
100
+ // Build tool set: CMS tools + ticket mutation tools + web scraper + optional summarizer
101
+ const cmsConfig = { apiClient, collections, globals };
102
+ const cmsTools = createCMSTools(cmsConfig);
103
+ const ticketTools = createTicketTools(ticket.id, ticketClient);
104
+ const extraTools = db
105
+ ? [webScraperTool, createDocumentSummarizerTool(db, this.config.llmClient)]
106
+ : [webScraperTool];
107
+ const tools = [...cmsTools, ...ticketTools, ...extraTools];
108
+ // The runtime does not call agent.memory — satisfy the interface with a stub when no
109
+ // shared memory instance is provided. Cast is safe: only runtime touches this field.
110
+ const memory = (sharedMemory ?? {});
111
+ const agent = {
112
+ id: `ticket-agent-${ticket.id}`,
113
+ name: 'Ticket Agent',
114
+ instructions: buildInstructions(ticket),
115
+ tools,
116
+ memory,
117
+ getContext() {
118
+ return {
119
+ agentId: `ticket-agent-${ticket.id}`,
120
+ currentTask: {
121
+ id: ticket.id,
122
+ type: ticket.type ?? 'cms',
123
+ description: descriptionToString(ticket.description),
124
+ },
125
+ };
126
+ },
127
+ };
128
+ // Register the agent (fresh orchestrator per dispatch is fine for now)
129
+ this.orchestrator.registerAgent(agent);
130
+ const descriptionText = descriptionToString(ticket.description);
131
+ const taskDescription = descriptionText ? `${ticket.title}\n\n${descriptionText}` : ticket.title;
132
+ const task = {
133
+ id: ticket.id,
134
+ type: ticket.type ?? 'cms',
135
+ description: taskDescription,
136
+ priority: ticket.priority === 'critical' ? 1 : ticket.priority === 'high' ? 2 : 3,
137
+ };
138
+ try {
139
+ return await this.orchestrator.delegateTask(task, agent.id);
140
+ }
141
+ finally {
142
+ // Clean up so this orchestrator can be reused or GC'd cleanly
143
+ this.orchestrator.unregisterAgent(agent.id);
144
+ }
145
+ }
146
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Skill Activation
3
+ *
4
+ * Context-based skill activation for agents.
5
+ */
6
+ export { SkillActivator, type SkillActivatorConfig } from './skill-activator.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/skills/activation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Skill Activation
3
+ *
4
+ * Context-based skill activation for agents.
5
+ */
6
+ export { SkillActivator } from './skill-activator.js';
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Skill Activator
3
+ *
4
+ * Determines which skills to activate based on context.
5
+ */
6
+ import type { SkillRegistry } from '../registry/index.js';
7
+ import type { SkillActivationContext, SkillActivationResult } from '../types.js';
8
+ /**
9
+ * Configuration for skill activation.
10
+ */
11
+ export interface SkillActivatorConfig {
12
+ /** Registry to get skills from */
13
+ registry: SkillRegistry;
14
+ /** Minimum similarity score for semantic activation (0-1) */
15
+ semanticThreshold?: number;
16
+ /** Maximum number of skills to activate automatically */
17
+ maxAutoActivate?: number;
18
+ /** Enable semantic (embedding-based) activation */
19
+ enableSemantic?: boolean;
20
+ }
21
+ /**
22
+ * Skill activator for context-based skill activation.
23
+ */
24
+ export declare class SkillActivator {
25
+ private registry;
26
+ private semanticThreshold;
27
+ private maxAutoActivate;
28
+ private enableSemantic;
29
+ constructor(config: SkillActivatorConfig);
30
+ /**
31
+ * Activate skills based on context.
32
+ *
33
+ * Activation methods (in priority order):
34
+ * 1. Explicit: /skill-name syntax
35
+ * 2. Semantic: Embedding similarity match
36
+ * 3. File-match: Based on current file types
37
+ * 4. Project-type: Based on project configuration
38
+ */
39
+ activate(context: SkillActivationContext): Promise<SkillActivationResult>;
40
+ /**
41
+ * Find skills by semantic similarity to a query.
42
+ */
43
+ private findSemanticMatches;
44
+ /**
45
+ * Find skills that match file types.
46
+ */
47
+ private findFileTypeMatches;
48
+ /**
49
+ * Find skills that match project type.
50
+ */
51
+ private findProjectTypeMatches;
52
+ /**
53
+ * Parse explicit skill references from user input.
54
+ *
55
+ * @example
56
+ * parseExplicitSkills("Please /react-best-practices fix this component")
57
+ * // ["react-best-practices"]
58
+ */
59
+ static parseExplicitSkills(input: string): string[];
60
+ /**
61
+ * Get all available skills for auto-completion.
62
+ */
63
+ getAvailableSkills(): Array<{
64
+ name: string;
65
+ description: string;
66
+ }>;
67
+ }
68
+ //# sourceMappingURL=skill-activator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-activator.d.ts","sourceRoot":"","sources":["../../../src/skills/activation/skill-activator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAS,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEvF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,QAAQ,EAAE,aAAa,CAAA;IAEvB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,mDAAmD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AA0BD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,oBAAoB;IAOxC;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA4E/E;;OAEG;YACW,mBAAmB;IA4BjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2D3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;;;;OAMG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAOnD;;OAEG;IACH,kBAAkB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAMnE"}