@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,232 @@
1
+ /**
2
+ * @revealui/ai - React Hooks for Observability
3
+ *
4
+ * React hooks for accessing and displaying agent events and metrics.
5
+ */
6
+ import { useCallback, useEffect, useMemo, useState } from 'react';
7
+ import { AgentEventQuery } from '../../observability/query.js';
8
+ /**
9
+ * Hook for accessing agent events with real-time updates
10
+ */
11
+ export function useAgentEvents(logger, filter, options) {
12
+ const [events, setEvents] = useState([]);
13
+ const [loading, setLoading] = useState(true);
14
+ const refreshInterval = options?.refreshInterval ?? 5000;
15
+ const autoRefresh = options?.autoRefresh ?? true;
16
+ const refresh = useCallback(() => {
17
+ setLoading(true);
18
+ const newEvents = logger.getEvents(filter);
19
+ setEvents(newEvents);
20
+ setLoading(false);
21
+ }, [logger, filter]);
22
+ useEffect(() => {
23
+ refresh();
24
+ if (autoRefresh) {
25
+ const interval = setInterval(refresh, refreshInterval);
26
+ return () => clearInterval(interval);
27
+ }
28
+ return undefined;
29
+ }, [refresh, autoRefresh, refreshInterval]);
30
+ return {
31
+ events,
32
+ loading,
33
+ refresh,
34
+ count: events.length,
35
+ };
36
+ }
37
+ /**
38
+ * Hook for accessing agent metrics with real-time updates
39
+ */
40
+ export function useAgentMetrics(collector, agentId, options) {
41
+ const [metrics, setMetrics] = useState(null);
42
+ const [loading, setLoading] = useState(true);
43
+ const refreshInterval = options?.refreshInterval ?? 5000;
44
+ const autoRefresh = options?.autoRefresh ?? true;
45
+ const refresh = useCallback(() => {
46
+ setLoading(true);
47
+ const newMetrics = collector.getMetrics(agentId);
48
+ setMetrics(newMetrics);
49
+ setLoading(false);
50
+ }, [collector, agentId]);
51
+ useEffect(() => {
52
+ refresh();
53
+ if (autoRefresh) {
54
+ const interval = setInterval(refresh, refreshInterval);
55
+ return () => clearInterval(interval);
56
+ }
57
+ return undefined;
58
+ }, [refresh, autoRefresh, refreshInterval]);
59
+ return {
60
+ metrics,
61
+ loading,
62
+ refresh,
63
+ };
64
+ }
65
+ /**
66
+ * Hook for accessing metrics summary
67
+ */
68
+ export function useMetricsSummary(collector, filter, options) {
69
+ const [summary, setSummary] = useState(null);
70
+ const [loading, setLoading] = useState(true);
71
+ const refreshInterval = options?.refreshInterval ?? 5000;
72
+ const autoRefresh = options?.autoRefresh ?? true;
73
+ const refresh = useCallback(() => {
74
+ setLoading(true);
75
+ const newSummary = collector.getMetricsSummary(filter);
76
+ setSummary(newSummary);
77
+ setLoading(false);
78
+ }, [collector, filter]);
79
+ useEffect(() => {
80
+ refresh();
81
+ if (autoRefresh) {
82
+ const interval = setInterval(refresh, refreshInterval);
83
+ return () => clearInterval(interval);
84
+ }
85
+ return undefined;
86
+ }, [refresh, autoRefresh, refreshInterval]);
87
+ return {
88
+ summary,
89
+ loading,
90
+ refresh,
91
+ };
92
+ }
93
+ /**
94
+ * Hook for querying events with advanced filters
95
+ */
96
+ export function useEventQuery(logger) {
97
+ const query = useMemo(() => new AgentEventQuery(logger), [logger]);
98
+ const getRecentEvents = useCallback((milliseconds, count) => {
99
+ return query.getRecentEvents(milliseconds, count);
100
+ }, [query]);
101
+ const getEventsForAgent = useCallback((agentId) => {
102
+ return query.getEventsForAgent(agentId);
103
+ }, [query]);
104
+ const getEventsForSession = useCallback((sessionId) => {
105
+ return query.getEventsForSession(sessionId);
106
+ }, [query]);
107
+ const searchEvents = useCallback((searchText, filter) => {
108
+ return query.searchEvents(searchText, filter);
109
+ }, [query]);
110
+ const paginateEvents = useCallback((page, pageSize, filter) => {
111
+ return query.paginateEvents(page, pageSize, filter);
112
+ }, [query]);
113
+ return {
114
+ query,
115
+ getRecentEvents,
116
+ getEventsForAgent,
117
+ getEventsForSession,
118
+ searchEvents,
119
+ paginateEvents,
120
+ };
121
+ }
122
+ /**
123
+ * Hook for tool usage statistics
124
+ */
125
+ export function useToolUsageStats(collector, options) {
126
+ const [stats, setStats] = useState([]);
127
+ const [loading, setLoading] = useState(true);
128
+ const refreshInterval = options?.refreshInterval ?? 5000;
129
+ const autoRefresh = options?.autoRefresh ?? true;
130
+ const refresh = useCallback(() => {
131
+ setLoading(true);
132
+ const newStats = collector.getToolUsageStats();
133
+ setStats(newStats);
134
+ setLoading(false);
135
+ }, [collector]);
136
+ useEffect(() => {
137
+ refresh();
138
+ if (autoRefresh) {
139
+ const interval = setInterval(refresh, refreshInterval);
140
+ return () => clearInterval(interval);
141
+ }
142
+ return undefined;
143
+ }, [refresh, autoRefresh, refreshInterval]);
144
+ return {
145
+ stats,
146
+ loading,
147
+ refresh,
148
+ };
149
+ }
150
+ /**
151
+ * Hook for LLM usage statistics
152
+ */
153
+ export function useLLMUsageStats(collector, options) {
154
+ const [stats, setStats] = useState(null);
155
+ const [loading, setLoading] = useState(true);
156
+ const refreshInterval = options?.refreshInterval ?? 5000;
157
+ const autoRefresh = options?.autoRefresh ?? true;
158
+ const refresh = useCallback(() => {
159
+ setLoading(true);
160
+ const newStats = collector.getLLMUsageStats();
161
+ setStats(newStats);
162
+ setLoading(false);
163
+ }, [collector]);
164
+ useEffect(() => {
165
+ refresh();
166
+ if (autoRefresh) {
167
+ const interval = setInterval(refresh, refreshInterval);
168
+ return () => clearInterval(interval);
169
+ }
170
+ return undefined;
171
+ }, [refresh, autoRefresh, refreshInterval]);
172
+ return {
173
+ stats,
174
+ loading,
175
+ refresh,
176
+ };
177
+ }
178
+ /**
179
+ * Hook for real-time event stream
180
+ */
181
+ export function useEventStream(logger, options) {
182
+ const [events, setEvents] = useState([]);
183
+ const maxEvents = options?.maxEvents ?? 100;
184
+ useEffect(() => {
185
+ const interval = setInterval(() => {
186
+ const newEvents = logger.getEvents(options?.filter);
187
+ setEvents(newEvents.slice(-maxEvents));
188
+ }, 1000); // Update every second
189
+ return () => clearInterval(interval);
190
+ }, [logger, maxEvents, options?.filter]);
191
+ return {
192
+ events,
193
+ latestEvent: events[events.length - 1],
194
+ };
195
+ }
196
+ /**
197
+ * Hook for paginated events
198
+ */
199
+ export function usePaginatedEvents(logger, initialPageSize = 20, filter) {
200
+ const [page, setPage] = useState(1);
201
+ const [pageSize, setPageSize] = useState(initialPageSize);
202
+ const query = useMemo(() => new AgentEventQuery(logger), [logger]);
203
+ const result = useMemo(() => {
204
+ return query.paginateEvents(page, pageSize, filter);
205
+ }, [query, page, pageSize, filter]);
206
+ const nextPage = useCallback(() => {
207
+ if (page < result.totalPages) {
208
+ setPage(page + 1);
209
+ }
210
+ }, [page, result.totalPages]);
211
+ const prevPage = useCallback(() => {
212
+ if (page > 1) {
213
+ setPage(page - 1);
214
+ }
215
+ }, [page]);
216
+ const goToPage = useCallback((newPage) => {
217
+ setPage(Math.max(1, newPage));
218
+ }, []);
219
+ const changePageSize = useCallback((newSize) => {
220
+ setPageSize(newSize);
221
+ setPage(1); // Reset to first page
222
+ }, []);
223
+ return {
224
+ ...result,
225
+ nextPage,
226
+ prevPage,
227
+ goToPage,
228
+ changePageSize,
229
+ hasNextPage: page < result.totalPages,
230
+ hasPrevPage: page > 1,
231
+ };
232
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * useAgentStream — React hook for streaming agent responses via SSE
3
+ *
4
+ * Uses fetch + ReadableStream (NOT EventSource — it doesn't support POST).
5
+ * Accumulates AgentStreamChunks into state and exposes:
6
+ * - text: accumulated output text
7
+ * - chunks: all received chunks in order
8
+ * - isStreaming: true while the stream is open
9
+ * - error: last error message, if any
10
+ * - abort(): cancels the stream
11
+ */
12
+ export interface AgentStreamChunk {
13
+ type: 'text' | 'tool_call_start' | 'tool_call_result' | 'error' | 'done';
14
+ content?: string;
15
+ toolCall?: {
16
+ name: string;
17
+ arguments: string;
18
+ };
19
+ toolResult?: unknown;
20
+ error?: string;
21
+ metadata?: {
22
+ tokensUsed?: number;
23
+ executionTime?: number;
24
+ };
25
+ }
26
+ export interface AgentStreamRequest {
27
+ instruction: string;
28
+ boardId?: string;
29
+ workspaceId?: string;
30
+ priority?: 'low' | 'medium' | 'high' | 'critical';
31
+ }
32
+ export interface UseAgentStreamState {
33
+ text: string;
34
+ chunks: AgentStreamChunk[];
35
+ isStreaming: boolean;
36
+ error: string | null;
37
+ }
38
+ export interface UseAgentStreamReturn extends UseAgentStreamState {
39
+ start: (request: AgentStreamRequest, apiBase?: string) => Promise<void>;
40
+ abort: () => void;
41
+ reset: () => void;
42
+ }
43
+ export declare function useAgentStream(): UseAgentStreamReturn;
44
+ //# sourceMappingURL=useAgentStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentStream.d.ts","sourceRoot":"","sources":["../../../src/client/hooks/useAgentStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,OAAO,GAAG,MAAM,CAAA;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3D;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;CAClD;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,gBAAgB,EAAE,CAAA;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,KAAK,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvE,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AASD,wBAAgB,cAAc,IAAI,oBAAoB,CA2FrD"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * useAgentStream — React hook for streaming agent responses via SSE
3
+ *
4
+ * Uses fetch + ReadableStream (NOT EventSource — it doesn't support POST).
5
+ * Accumulates AgentStreamChunks into state and exposes:
6
+ * - text: accumulated output text
7
+ * - chunks: all received chunks in order
8
+ * - isStreaming: true while the stream is open
9
+ * - error: last error message, if any
10
+ * - abort(): cancels the stream
11
+ */
12
+ 'use client';
13
+ import { useCallback, useRef, useState } from 'react';
14
+ const INITIAL_STATE = {
15
+ text: '',
16
+ chunks: [],
17
+ isStreaming: false,
18
+ error: null,
19
+ };
20
+ export function useAgentStream() {
21
+ const [state, setState] = useState(INITIAL_STATE);
22
+ const controllerRef = useRef(null);
23
+ const abort = useCallback(() => {
24
+ controllerRef.current?.abort();
25
+ setState((s) => ({ ...s, isStreaming: false }));
26
+ }, []);
27
+ const reset = useCallback(() => {
28
+ controllerRef.current?.abort();
29
+ setState(INITIAL_STATE);
30
+ }, []);
31
+ const start = useCallback(async (request, apiBase = '/api/agent-stream') => {
32
+ controllerRef.current?.abort();
33
+ const controller = new AbortController();
34
+ controllerRef.current = controller;
35
+ setState({ text: '', chunks: [], isStreaming: true, error: null });
36
+ try {
37
+ const response = await fetch(apiBase, {
38
+ method: 'POST',
39
+ headers: { 'Content-Type': 'application/json' },
40
+ body: JSON.stringify(request),
41
+ signal: controller.signal,
42
+ });
43
+ if (!response.ok) {
44
+ const errText = await response.text();
45
+ setState((s) => ({
46
+ ...s,
47
+ isStreaming: false,
48
+ error: `HTTP ${response.status}: ${errText}`,
49
+ }));
50
+ return;
51
+ }
52
+ if (!response.body) {
53
+ setState((s) => ({ ...s, isStreaming: false, error: 'No response body' }));
54
+ return;
55
+ }
56
+ const reader = response.body.getReader();
57
+ const decoder = new TextDecoder();
58
+ let buffer = '';
59
+ while (true) {
60
+ const { value, done } = await reader.read();
61
+ if (done)
62
+ break;
63
+ buffer += decoder.decode(value, { stream: true });
64
+ // Parse SSE lines: "data: {...}\n\n"
65
+ const events = buffer.split('\n\n');
66
+ buffer = events.pop() ?? '';
67
+ for (const event of events) {
68
+ const dataLine = event.split('\n').find((l) => l.startsWith('data: '));
69
+ if (!dataLine)
70
+ continue;
71
+ const jsonStr = dataLine.slice(6);
72
+ try {
73
+ const chunk = JSON.parse(jsonStr);
74
+ setState((s) => ({
75
+ ...s,
76
+ chunks: [...s.chunks, chunk],
77
+ text: chunk.type === 'text' ? s.text + (chunk.content ?? '') : s.text,
78
+ error: chunk.type === 'error' ? (chunk.error ?? 'Unknown error') : s.error,
79
+ isStreaming: chunk.type !== 'done' && chunk.type !== 'error',
80
+ }));
81
+ }
82
+ catch {
83
+ // Malformed SSE data — skip
84
+ }
85
+ }
86
+ }
87
+ }
88
+ catch (error) {
89
+ if (error instanceof Error && error.name === 'AbortError') {
90
+ setState((s) => ({ ...s, isStreaming: false }));
91
+ return;
92
+ }
93
+ setState((s) => ({
94
+ ...s,
95
+ isStreaming: false,
96
+ error: error instanceof Error ? error.message : String(error),
97
+ }));
98
+ }
99
+ }, []);
100
+ return { ...state, start, abort, reset };
101
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * useEpisodicMemory Hook
3
+ *
4
+ * React hook for managing episodic memory in client components.
5
+ */
6
+ import type { AgentMemory } from '@revealui/contracts/agents';
7
+ export interface UseEpisodicMemoryReturn {
8
+ memories: AgentMemory[];
9
+ addMemory: (memory: AgentMemory) => Promise<string>;
10
+ removeMemory: (memoryId: string) => Promise<void>;
11
+ getMemory: (memoryId: string) => AgentMemory | undefined;
12
+ search: (query: string) => Promise<AgentMemory[]>;
13
+ accessCount: number;
14
+ isLoading: boolean;
15
+ error: Error | null;
16
+ refresh: () => Promise<void>;
17
+ }
18
+ /**
19
+ * React hook for episodic memory management.
20
+ *
21
+ * @param userId - User identifier
22
+ * @returns Episodic memory state and operations
23
+ */
24
+ export declare function useEpisodicMemory(userId: string): UseEpisodicMemoryReturn;
25
+ //# sourceMappingURL=useEpisodicMemory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEpisodicMemory.d.ts","sourceRoot":"","sources":["../../../src/client/hooks/useEpisodicMemory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAO7D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACnD,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAA;IACxD,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAmCD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CA4KzE"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * useEpisodicMemory Hook
3
+ *
4
+ * React hook for managing episodic memory in client components.
5
+ */
6
+ import { useCallback, useEffect, useState } from 'react';
7
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
8
+ const isAgentMemory = (value) => {
9
+ if (!isRecord(value))
10
+ return false;
11
+ return typeof value.id === 'string' && typeof value.content === 'string';
12
+ };
13
+ const parseEpisodicPayload = (payload) => {
14
+ if (!isRecord(payload)) {
15
+ return { memories: [], accessCount: 0 };
16
+ }
17
+ const memories = Array.isArray(payload.memories) ? payload.memories.filter(isAgentMemory) : [];
18
+ const accessCount = typeof payload.accessCount === 'number' ? payload.accessCount : 0;
19
+ const tag = typeof payload.tag === 'string' ? payload.tag : undefined;
20
+ const memoryId = typeof payload.memoryId === 'string' ? payload.memoryId : undefined;
21
+ return { memories, accessCount, tag, memoryId };
22
+ };
23
+ // =============================================================================
24
+ // Hook
25
+ // =============================================================================
26
+ /**
27
+ * React hook for episodic memory management.
28
+ *
29
+ * @param userId - User identifier
30
+ * @returns Episodic memory state and operations
31
+ */
32
+ export function useEpisodicMemory(userId) {
33
+ const [memories, setMemories] = useState([]);
34
+ const [accessCount, setAccessCount] = useState(0);
35
+ const [isLoading, setIsLoading] = useState(true);
36
+ const [error, setError] = useState(null);
37
+ // Load initial state
38
+ useEffect(() => {
39
+ let mounted = true;
40
+ async function load() {
41
+ try {
42
+ setIsLoading(true);
43
+ setError(null);
44
+ const response = await fetch(`/api/memory/episodic/${userId}`);
45
+ if (!response.ok) {
46
+ throw new Error(`Failed to load episodic memory: ${response.statusText}`);
47
+ }
48
+ const payload = (await response.json());
49
+ if (!mounted)
50
+ return;
51
+ const parsed = parseEpisodicPayload(payload);
52
+ setMemories(parsed.memories);
53
+ setAccessCount(parsed.accessCount);
54
+ }
55
+ catch (err) {
56
+ if (!mounted)
57
+ return;
58
+ setError(err instanceof Error ? err : new Error('Unknown error'));
59
+ }
60
+ finally {
61
+ if (mounted) {
62
+ setIsLoading(false);
63
+ }
64
+ }
65
+ }
66
+ void load();
67
+ return () => {
68
+ mounted = false;
69
+ };
70
+ }, [userId]);
71
+ // Refresh function
72
+ const refresh = useCallback(async () => {
73
+ try {
74
+ setIsLoading(true);
75
+ setError(null);
76
+ const response = await fetch(`/api/memory/episodic/${userId}`);
77
+ if (!response.ok) {
78
+ throw new Error(`Failed to refresh episodic memory: ${response.statusText}`);
79
+ }
80
+ const payload = (await response.json());
81
+ const parsed = parseEpisodicPayload(payload);
82
+ setMemories(parsed.memories);
83
+ setAccessCount(parsed.accessCount);
84
+ setError(null);
85
+ }
86
+ catch (err) {
87
+ setError(err instanceof Error ? err : new Error('Unknown error'));
88
+ }
89
+ finally {
90
+ setIsLoading(false);
91
+ }
92
+ }, [userId]);
93
+ // Add memory
94
+ const addMemory = useCallback(async (memory) => {
95
+ try {
96
+ setError(null);
97
+ const response = await fetch(`/api/memory/episodic/${userId}`, {
98
+ method: 'POST',
99
+ headers: { 'Content-Type': 'application/json' },
100
+ body: JSON.stringify(memory),
101
+ });
102
+ if (!response.ok) {
103
+ throw new Error(`Failed to add memory: ${response.statusText}`);
104
+ }
105
+ const payload = (await response.json());
106
+ const parsed = parseEpisodicPayload(payload);
107
+ // Refresh to get updated list
108
+ await refresh();
109
+ return parsed.tag ?? parsed.memoryId ?? memory.id;
110
+ }
111
+ catch (err) {
112
+ setError(err instanceof Error ? err : new Error('Unknown error'));
113
+ throw err;
114
+ }
115
+ }, [userId, refresh]);
116
+ // Remove memory
117
+ const removeMemory = useCallback(async (memoryId) => {
118
+ try {
119
+ setError(null);
120
+ const response = await fetch(`/api/memory/episodic/${userId}/${memoryId}`, {
121
+ method: 'DELETE',
122
+ });
123
+ if (!response.ok) {
124
+ throw new Error(`Failed to remove memory: ${response.statusText}`);
125
+ }
126
+ // Refresh to get updated list
127
+ await refresh();
128
+ }
129
+ catch (err) {
130
+ setError(err instanceof Error ? err : new Error('Unknown error'));
131
+ throw err;
132
+ }
133
+ }, [userId, refresh]);
134
+ // Get memory
135
+ const getMemory = useCallback((memoryId) => {
136
+ return memories.find((m) => m.id === memoryId);
137
+ }, [memories]);
138
+ // Search using vector similarity via API
139
+ const search = useCallback(async (query) => {
140
+ try {
141
+ const response = await fetch('/api/memory/search-text', {
142
+ method: 'POST',
143
+ headers: { 'Content-Type': 'application/json' },
144
+ body: JSON.stringify({ query, options: { limit: 20, threshold: 0.5 } }),
145
+ });
146
+ if (!response.ok) {
147
+ throw new Error(`Search failed: ${response.statusText}`);
148
+ }
149
+ const data = (await response.json());
150
+ if (data.results && Array.isArray(data.results)) {
151
+ return data.results.map((r) => r.memory);
152
+ }
153
+ // Fallback to client-side filter if API returns unexpected format
154
+ const lowerQuery = query.toLowerCase();
155
+ return memories.filter((m) => m.content.toLowerCase().includes(lowerQuery));
156
+ }
157
+ catch {
158
+ // Fallback to client-side text filter on error
159
+ const lowerQuery = query.toLowerCase();
160
+ return memories.filter((m) => m.content.toLowerCase().includes(lowerQuery));
161
+ }
162
+ }, [memories]);
163
+ return {
164
+ memories,
165
+ addMemory,
166
+ removeMemory,
167
+ getMemory,
168
+ search,
169
+ accessCount,
170
+ isLoading,
171
+ error,
172
+ refresh,
173
+ };
174
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * useWorkingMemory Hook
3
+ *
4
+ * React hook for managing working memory in client components.
5
+ */
6
+ export interface UseWorkingMemoryOptions {
7
+ autoSync?: boolean;
8
+ syncInterval?: number;
9
+ }
10
+ export interface UseWorkingMemoryReturn {
11
+ context: Record<string, unknown>;
12
+ setContext: (context: Record<string, unknown>) => Promise<void>;
13
+ updateContext: (updates: Partial<Record<string, unknown>>) => Promise<void>;
14
+ getContextValue: (key: string) => unknown;
15
+ setContextValue: (key: string, value: unknown) => Promise<void>;
16
+ sessionState: {
17
+ status: 'active' | 'paused' | 'completed';
18
+ focus?: {
19
+ siteId?: string;
20
+ pageId?: string;
21
+ blockId?: string;
22
+ selection?: string[];
23
+ };
24
+ currentTask?: {
25
+ id: string;
26
+ description: string;
27
+ status: 'pending' | 'running' | 'completed' | 'failed';
28
+ progress?: number;
29
+ };
30
+ };
31
+ updateSessionState: (state: Partial<UseWorkingMemoryReturn['sessionState']>) => Promise<void>;
32
+ activeAgents: Array<{
33
+ id: string;
34
+ name: string;
35
+ description: string;
36
+ model: string;
37
+ systemPrompt: string;
38
+ tools: unknown[];
39
+ capabilities: string[];
40
+ temperature: number;
41
+ maxTokens: number;
42
+ }>;
43
+ addAgent: (agent: UseWorkingMemoryReturn['activeAgents'][0]) => Promise<void>;
44
+ removeAgent: (agentId: string) => Promise<void>;
45
+ isLoading: boolean;
46
+ error: Error | null;
47
+ sync: () => Promise<void>;
48
+ }
49
+ /**
50
+ * React hook for working memory management.
51
+ *
52
+ * @param sessionId - Session identifier
53
+ * @param options - Hook options
54
+ * @returns Working memory state and operations
55
+ */
56
+ export declare function useWorkingMemory(sessionId: string, options?: UseWorkingMemoryOptions): UseWorkingMemoryReturn;
57
+ //# sourceMappingURL=useWorkingMemory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkingMemory.d.ts","sourceRoot":"","sources":["../../../src/client/hooks/useWorkingMemory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IACzC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,YAAY,EAAE;QACZ,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAA;QACzC,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;SACrB,CAAA;QACD,WAAW,CAAC,EAAE;YACZ,EAAE,EAAE,MAAM,CAAA;YACV,WAAW,EAAE,MAAM,CAAA;YACnB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;YACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;SAClB,CAAA;KACF,CAAA;IACD,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7F,YAAY,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;QACnB,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,KAAK,EAAE,OAAO,EAAE,CAAA;QAChB,YAAY,EAAE,MAAM,EAAE,CAAA;QACtB,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAC,CAAA;IACF,QAAQ,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAiHD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CA6NxB"}