@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,197 @@
1
+ /**
2
+ * @revealui/ai - Agent Metrics Collector
3
+ *
4
+ * Aggregates statistics from agent events for monitoring and analysis.
5
+ */
6
+ /**
7
+ * Agent metrics collector
8
+ */
9
+ export class AgentMetricsCollector {
10
+ logger;
11
+ startTime;
12
+ constructor(logger) {
13
+ this.logger = logger;
14
+ this.startTime = Date.now();
15
+ }
16
+ /**
17
+ * Get metrics for a specific agent
18
+ */
19
+ getMetrics(agentId) {
20
+ const filter = { agentId };
21
+ const events = this.logger.getEvents(filter);
22
+ const decisions = events.filter((e) => e.eventType === 'decision');
23
+ const toolCalls = events.filter((e) => e.eventType === 'tool_call');
24
+ const llmCalls = events.filter((e) => e.eventType === 'llm_call');
25
+ const errors = events.filter((e) => e.eventType === 'error');
26
+ const totalDecisions = decisions.length;
27
+ const totalToolCalls = toolCalls.length;
28
+ const totalLLMCalls = llmCalls.length;
29
+ const totalErrors = errors.length;
30
+ // Calculate average decision time (time between decisions)
31
+ let averageDecisionTime = 0;
32
+ if (decisions.length > 1) {
33
+ const times = decisions.map((d) => d.timestamp).sort((a, b) => a - b);
34
+ const intervals = [];
35
+ for (let i = 1; i < times.length; i++) {
36
+ const current = times[i];
37
+ const previous = times[i - 1];
38
+ if (current !== undefined && previous !== undefined) {
39
+ intervals.push(current - previous);
40
+ }
41
+ }
42
+ averageDecisionTime = intervals.reduce((sum, val) => sum + val, 0) / intervals.length;
43
+ }
44
+ // Calculate success rate
45
+ const successfulCalls = toolCalls.filter((t) => t.eventType === 'tool_call' && t.success).length;
46
+ const successRate = totalToolCalls > 0 ? (successfulCalls / totalToolCalls) * 100 : 0;
47
+ // Calculate error rate
48
+ const totalOperations = totalDecisions + totalToolCalls + totalLLMCalls;
49
+ const errorRate = totalOperations > 0 ? (totalErrors / totalOperations) * 100 : 0;
50
+ // Build tool metrics
51
+ const toolMetrics = this.calculateToolMetrics(toolCalls);
52
+ // Build LLM metrics
53
+ const llmMetrics = this.calculateLLMMetrics(llmCalls);
54
+ // Calculate uptime and last activity
55
+ const uptime = Date.now() - this.startTime;
56
+ const lastActivity = events.length > 0 ? Math.max(...events.map((e) => e.timestamp)) : this.startTime;
57
+ return {
58
+ totalDecisions,
59
+ totalToolCalls,
60
+ totalLLMCalls,
61
+ totalErrors,
62
+ averageDecisionTime,
63
+ successRate,
64
+ errorRate,
65
+ toolMetrics,
66
+ llmMetrics,
67
+ uptime,
68
+ lastActivity,
69
+ };
70
+ }
71
+ /**
72
+ * Calculate tool-specific metrics
73
+ */
74
+ calculateToolMetrics(toolCalls) {
75
+ const metrics = new Map();
76
+ for (const event of toolCalls) {
77
+ if (event.eventType !== 'tool_call')
78
+ continue;
79
+ const existing = metrics.get(event.toolName);
80
+ const success = event.success ? 1 : 0;
81
+ const failure = event.success ? 0 : 1;
82
+ if (existing) {
83
+ metrics.set(event.toolName, {
84
+ totalCalls: existing.totalCalls + 1,
85
+ successCount: existing.successCount + success,
86
+ failureCount: existing.failureCount + failure,
87
+ averageDurationMs: (existing.averageDurationMs * existing.totalCalls + event.durationMs) /
88
+ (existing.totalCalls + 1),
89
+ lastUsed: Math.max(existing.lastUsed, event.timestamp),
90
+ });
91
+ }
92
+ else {
93
+ metrics.set(event.toolName, {
94
+ totalCalls: 1,
95
+ successCount: success,
96
+ failureCount: failure,
97
+ averageDurationMs: event.durationMs,
98
+ lastUsed: event.timestamp,
99
+ });
100
+ }
101
+ }
102
+ return metrics;
103
+ }
104
+ /**
105
+ * Calculate LLM-specific metrics
106
+ */
107
+ calculateLLMMetrics(llmCalls) {
108
+ let totalCalls = 0;
109
+ let totalPromptTokens = 0;
110
+ let totalCompletionTokens = 0;
111
+ let totalCost = 0;
112
+ let totalDuration = 0;
113
+ let cacheHits = 0;
114
+ const modelUsage = {};
115
+ for (const event of llmCalls) {
116
+ if (event.eventType !== 'llm_call')
117
+ continue;
118
+ totalCalls++;
119
+ totalPromptTokens += event.promptTokens;
120
+ totalCompletionTokens += event.completionTokens;
121
+ totalCost += event.cost ?? 0;
122
+ totalDuration += event.durationMs;
123
+ if (event.cacheHit) {
124
+ cacheHits++;
125
+ }
126
+ const modelKey = `${event.provider}/${event.model}`;
127
+ modelUsage[modelKey] = (modelUsage[modelKey] ?? 0) + 1;
128
+ }
129
+ return {
130
+ totalCalls,
131
+ totalPromptTokens,
132
+ totalCompletionTokens,
133
+ totalCost,
134
+ averageDurationMs: totalCalls > 0 ? totalDuration / totalCalls : 0,
135
+ cacheHitRate: totalCalls > 0 ? (cacheHits / totalCalls) * 100 : 0,
136
+ modelUsage,
137
+ };
138
+ }
139
+ /**
140
+ * Get summary metrics across all agents
141
+ */
142
+ getMetricsSummary(filter) {
143
+ const events = this.logger.getEvents(filter);
144
+ const eventsByType = {};
145
+ const agentIds = new Set();
146
+ const sessionIds = new Set();
147
+ let totalTokensUsed = 0;
148
+ let totalCost = 0;
149
+ let successfulToolCalls = 0;
150
+ let totalToolCalls = 0;
151
+ for (const event of events) {
152
+ eventsByType[event.eventType] = (eventsByType[event.eventType] ?? 0) + 1;
153
+ agentIds.add(event.agentId);
154
+ sessionIds.add(event.sessionId);
155
+ if (event.eventType === 'llm_call') {
156
+ totalTokensUsed += event.promptTokens + event.completionTokens;
157
+ totalCost += event.cost ?? 0;
158
+ }
159
+ if (event.eventType === 'tool_call') {
160
+ totalToolCalls++;
161
+ if (event.success) {
162
+ successfulToolCalls++;
163
+ }
164
+ }
165
+ }
166
+ const timestamps = events.map((e) => e.timestamp);
167
+ const start = timestamps.length > 0 ? Math.min(...timestamps) : Date.now();
168
+ const end = timestamps.length > 0 ? Math.max(...timestamps) : Date.now();
169
+ return {
170
+ totalEvents: events.length,
171
+ eventsByType,
172
+ activeAgents: agentIds.size,
173
+ activeSessions: sessionIds.size,
174
+ totalTokensUsed,
175
+ totalCost,
176
+ averageSuccessRate: totalToolCalls > 0 ? (successfulToolCalls / totalToolCalls) * 100 : 0,
177
+ timeRange: { start, end },
178
+ };
179
+ }
180
+ /**
181
+ * Get tool usage statistics
182
+ */
183
+ getToolUsageStats() {
184
+ const toolCalls = this.logger.getToolCalls();
185
+ const metrics = this.calculateToolMetrics(toolCalls);
186
+ return Array.from(metrics.entries())
187
+ .map(([toolName, metrics]) => ({ toolName, metrics }))
188
+ .sort((a, b) => b.metrics.totalCalls - a.metrics.totalCalls);
189
+ }
190
+ /**
191
+ * Get LLM usage statistics
192
+ */
193
+ getLLMUsageStats() {
194
+ const llmCalls = this.logger.getLLMCalls();
195
+ return this.calculateLLMMetrics(llmCalls);
196
+ }
197
+ }
@@ -0,0 +1,150 @@
1
+ /**
2
+ * @revealui/ai - Query Interface
3
+ *
4
+ * Advanced querying capabilities for agent events.
5
+ */
6
+ import type { AgentEventLogger } from './logger.js';
7
+ import type { AnyAgentEvent, DecisionEvent, ErrorEvent, EventFilter, LLMCallEvent, MetricsSummary, ToolCallEvent } from './types.js';
8
+ export declare class AgentEventQuery {
9
+ private logger;
10
+ constructor(logger: AgentEventLogger);
11
+ /**
12
+ * Get events in a specific time range
13
+ */
14
+ getEventsInRange(start: Date, end: Date): AnyAgentEvent[];
15
+ /**
16
+ * Get events from the last N milliseconds
17
+ */
18
+ getRecentEvents(milliseconds: number, count?: number): AnyAgentEvent[];
19
+ /**
20
+ * Get events from the last N minutes
21
+ */
22
+ getEventsLastMinutes(minutes: number): AnyAgentEvent[];
23
+ /**
24
+ * Get events from the last N hours
25
+ */
26
+ getEventsLastHours(hours: number): AnyAgentEvent[];
27
+ /**
28
+ * Get events from today
29
+ */
30
+ getEventsToday(): AnyAgentEvent[];
31
+ /**
32
+ * Get all events for a specific agent
33
+ */
34
+ getEventsForAgent(agentId: string): AnyAgentEvent[];
35
+ /**
36
+ * Get all events for a specific session
37
+ */
38
+ getEventsForSession(sessionId: string): AnyAgentEvent[];
39
+ /**
40
+ * Get all events for a specific task
41
+ */
42
+ getEventsForTask(taskId: string): AnyAgentEvent[];
43
+ /**
44
+ * Get all events for multiple agents
45
+ */
46
+ getEventsForAgents(agentIds: string[]): AnyAgentEvent[];
47
+ /**
48
+ * Get all decision events
49
+ */
50
+ getDecisions(filter?: Omit<EventFilter, 'eventType'>): DecisionEvent[];
51
+ /**
52
+ * Get all tool call events
53
+ */
54
+ getToolCalls(filter?: Omit<EventFilter, 'eventType'>): ToolCallEvent[];
55
+ /**
56
+ * Get all LLM call events
57
+ */
58
+ getLLMCalls(filter?: Omit<EventFilter, 'eventType'>): LLMCallEvent[];
59
+ /**
60
+ * Get all error events
61
+ */
62
+ getErrors(filter?: Omit<EventFilter, 'eventType'>): ErrorEvent[];
63
+ /**
64
+ * Get successful tool calls
65
+ */
66
+ getSuccessfulToolCalls(filter?: Omit<EventFilter, 'eventType'>): ToolCallEvent[];
67
+ /**
68
+ * Get failed tool calls
69
+ */
70
+ getFailedToolCalls(filter?: Omit<EventFilter, 'eventType'>): ToolCallEvent[];
71
+ /**
72
+ * Get tool calls for a specific tool
73
+ */
74
+ getToolCallsForTool(toolName: string, filter?: Omit<EventFilter, 'eventType'>): ToolCallEvent[];
75
+ /**
76
+ * Get LLM calls for a specific provider
77
+ */
78
+ getLLMCallsForProvider(provider: string, filter?: Omit<EventFilter, 'eventType'>): LLMCallEvent[];
79
+ /**
80
+ * Get LLM calls for a specific model
81
+ */
82
+ getLLMCallsForModel(model: string, filter?: Omit<EventFilter, 'eventType'>): LLMCallEvent[];
83
+ /**
84
+ * Get recoverable errors
85
+ */
86
+ getRecoverableErrors(filter?: Omit<EventFilter, 'eventType'>): ErrorEvent[];
87
+ /**
88
+ * Get non-recoverable errors
89
+ */
90
+ getNonRecoverableErrors(filter?: Omit<EventFilter, 'eventType'>): ErrorEvent[];
91
+ /**
92
+ * Get event count by type
93
+ */
94
+ getEventCountByType(filter?: EventFilter): Record<string, number>;
95
+ /**
96
+ * Get unique agent IDs
97
+ */
98
+ getUniqueAgentIds(filter?: EventFilter): string[];
99
+ /**
100
+ * Get unique session IDs
101
+ */
102
+ getUniqueSessionIds(filter?: EventFilter): string[];
103
+ /**
104
+ * Get total token usage
105
+ */
106
+ getTotalTokenUsage(filter?: Omit<EventFilter, 'eventType'>): {
107
+ promptTokens: number;
108
+ completionTokens: number;
109
+ totalTokens: number;
110
+ };
111
+ /**
112
+ * Get total LLM cost
113
+ */
114
+ getTotalLLMCost(filter?: Omit<EventFilter, 'eventType'>): number;
115
+ /**
116
+ * Get average tool call duration
117
+ */
118
+ getAverageToolCallDuration(filter?: Omit<EventFilter, 'eventType'>): number;
119
+ /**
120
+ * Get average LLM call duration
121
+ */
122
+ getAverageLLMCallDuration(filter?: Omit<EventFilter, 'eventType'>): number;
123
+ /**
124
+ * Get success rate
125
+ */
126
+ getSuccessRate(filter?: Omit<EventFilter, 'eventType'>): number;
127
+ /**
128
+ * Get metrics summary
129
+ */
130
+ getMetricsSummary(filter?: EventFilter): MetricsSummary;
131
+ /**
132
+ * Search events by text in reasoning or error messages
133
+ */
134
+ searchEvents(searchText: string, filter?: EventFilter): AnyAgentEvent[];
135
+ /**
136
+ * Get events sorted by timestamp (ascending or descending)
137
+ */
138
+ getSortedEvents(filter?: EventFilter, order?: 'asc' | 'desc'): AnyAgentEvent[];
139
+ /**
140
+ * Paginate events
141
+ */
142
+ paginateEvents(page: number, pageSize: number, filter?: EventFilter): {
143
+ events: AnyAgentEvent[];
144
+ page: number;
145
+ pageSize: number;
146
+ totalPages: number;
147
+ totalEvents: number;
148
+ };
149
+ }
150
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/observability/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,339 @@
1
+ /**
2
+ * @revealui/ai - Query Interface
3
+ *
4
+ * Advanced querying capabilities for agent events.
5
+ */
6
+ export class AgentEventQuery {
7
+ logger;
8
+ constructor(logger) {
9
+ this.logger = logger;
10
+ }
11
+ // =========================================================================
12
+ // Time-based queries
13
+ // =========================================================================
14
+ /**
15
+ * Get events in a specific time range
16
+ */
17
+ getEventsInRange(start, end) {
18
+ return this.logger.getEvents({
19
+ startTime: start.getTime(),
20
+ endTime: end.getTime(),
21
+ });
22
+ }
23
+ /**
24
+ * Get events from the last N milliseconds
25
+ */
26
+ getRecentEvents(milliseconds, count) {
27
+ const events = this.logger.getEvents({
28
+ startTime: Date.now() - milliseconds,
29
+ });
30
+ return count ? events.slice(-count) : events;
31
+ }
32
+ /**
33
+ * Get events from the last N minutes
34
+ */
35
+ getEventsLastMinutes(minutes) {
36
+ return this.getRecentEvents(minutes * 60 * 1000);
37
+ }
38
+ /**
39
+ * Get events from the last N hours
40
+ */
41
+ getEventsLastHours(hours) {
42
+ return this.getRecentEvents(hours * 60 * 60 * 1000);
43
+ }
44
+ /**
45
+ * Get events from today
46
+ */
47
+ getEventsToday() {
48
+ const now = new Date();
49
+ const startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
50
+ return this.getEventsInRange(startOfDay, now);
51
+ }
52
+ // =========================================================================
53
+ // Entity-based queries
54
+ // =========================================================================
55
+ /**
56
+ * Get all events for a specific agent
57
+ */
58
+ getEventsForAgent(agentId) {
59
+ return this.logger.getEvents({ agentId });
60
+ }
61
+ /**
62
+ * Get all events for a specific session
63
+ */
64
+ getEventsForSession(sessionId) {
65
+ return this.logger.getEvents({ sessionId });
66
+ }
67
+ /**
68
+ * Get all events for a specific task
69
+ */
70
+ getEventsForTask(taskId) {
71
+ return this.logger.getEvents({ taskId });
72
+ }
73
+ /**
74
+ * Get all events for multiple agents
75
+ */
76
+ getEventsForAgents(agentIds) {
77
+ const events = [];
78
+ for (const agentId of agentIds) {
79
+ events.push(...this.getEventsForAgent(agentId));
80
+ }
81
+ return events.sort((a, b) => a.timestamp - b.timestamp);
82
+ }
83
+ // =========================================================================
84
+ // Type-based queries
85
+ // =========================================================================
86
+ /**
87
+ * Get all decision events
88
+ */
89
+ getDecisions(filter) {
90
+ return this.logger.getEvents({
91
+ ...filter,
92
+ eventType: 'decision',
93
+ });
94
+ }
95
+ /**
96
+ * Get all tool call events
97
+ */
98
+ getToolCalls(filter) {
99
+ return this.logger.getEvents({
100
+ ...filter,
101
+ eventType: 'tool_call',
102
+ });
103
+ }
104
+ /**
105
+ * Get all LLM call events
106
+ */
107
+ getLLMCalls(filter) {
108
+ return this.logger.getEvents({
109
+ ...filter,
110
+ eventType: 'llm_call',
111
+ });
112
+ }
113
+ /**
114
+ * Get all error events
115
+ */
116
+ getErrors(filter) {
117
+ return this.logger.getEvents({
118
+ ...filter,
119
+ eventType: 'error',
120
+ });
121
+ }
122
+ // =========================================================================
123
+ // Advanced queries
124
+ // =========================================================================
125
+ /**
126
+ * Get successful tool calls
127
+ */
128
+ getSuccessfulToolCalls(filter) {
129
+ const toolCalls = this.getToolCalls(filter);
130
+ return toolCalls.filter((call) => call.success);
131
+ }
132
+ /**
133
+ * Get failed tool calls
134
+ */
135
+ getFailedToolCalls(filter) {
136
+ const toolCalls = this.getToolCalls(filter);
137
+ return toolCalls.filter((call) => !call.success);
138
+ }
139
+ /**
140
+ * Get tool calls for a specific tool
141
+ */
142
+ getToolCallsForTool(toolName, filter) {
143
+ const toolCalls = this.getToolCalls(filter);
144
+ return toolCalls.filter((call) => call.toolName === toolName);
145
+ }
146
+ /**
147
+ * Get LLM calls for a specific provider
148
+ */
149
+ getLLMCallsForProvider(provider, filter) {
150
+ const llmCalls = this.getLLMCalls(filter);
151
+ return llmCalls.filter((call) => call.provider === provider);
152
+ }
153
+ /**
154
+ * Get LLM calls for a specific model
155
+ */
156
+ getLLMCallsForModel(model, filter) {
157
+ const llmCalls = this.getLLMCalls(filter);
158
+ return llmCalls.filter((call) => call.model === model);
159
+ }
160
+ /**
161
+ * Get recoverable errors
162
+ */
163
+ getRecoverableErrors(filter) {
164
+ const errors = this.getErrors(filter);
165
+ return errors.filter((error) => error.recoverable);
166
+ }
167
+ /**
168
+ * Get non-recoverable errors
169
+ */
170
+ getNonRecoverableErrors(filter) {
171
+ const errors = this.getErrors(filter);
172
+ return errors.filter((error) => !error.recoverable);
173
+ }
174
+ // =========================================================================
175
+ // Aggregations
176
+ // =========================================================================
177
+ /**
178
+ * Get event count by type
179
+ */
180
+ getEventCountByType(filter) {
181
+ const events = this.logger.getEvents(filter);
182
+ const counts = {};
183
+ for (const event of events) {
184
+ counts[event.eventType] = (counts[event.eventType] || 0) + 1;
185
+ }
186
+ return counts;
187
+ }
188
+ /**
189
+ * Get unique agent IDs
190
+ */
191
+ getUniqueAgentIds(filter) {
192
+ const events = this.logger.getEvents(filter);
193
+ const agentIds = new Set();
194
+ for (const event of events) {
195
+ agentIds.add(event.agentId);
196
+ }
197
+ return Array.from(agentIds);
198
+ }
199
+ /**
200
+ * Get unique session IDs
201
+ */
202
+ getUniqueSessionIds(filter) {
203
+ const events = this.logger.getEvents(filter);
204
+ const sessionIds = new Set();
205
+ for (const event of events) {
206
+ sessionIds.add(event.sessionId);
207
+ }
208
+ return Array.from(sessionIds);
209
+ }
210
+ /**
211
+ * Get total token usage
212
+ */
213
+ getTotalTokenUsage(filter) {
214
+ const llmCalls = this.getLLMCalls(filter);
215
+ let promptTokens = 0;
216
+ let completionTokens = 0;
217
+ for (const call of llmCalls) {
218
+ promptTokens += call.promptTokens;
219
+ completionTokens += call.completionTokens;
220
+ }
221
+ return {
222
+ promptTokens,
223
+ completionTokens,
224
+ totalTokens: promptTokens + completionTokens,
225
+ };
226
+ }
227
+ /**
228
+ * Get total LLM cost
229
+ */
230
+ getTotalLLMCost(filter) {
231
+ const llmCalls = this.getLLMCalls(filter);
232
+ return llmCalls.reduce((total, call) => total + (call.cost || 0), 0);
233
+ }
234
+ /**
235
+ * Get average tool call duration
236
+ */
237
+ getAverageToolCallDuration(filter) {
238
+ const toolCalls = this.getToolCalls(filter);
239
+ if (toolCalls.length === 0) {
240
+ return 0;
241
+ }
242
+ const totalDuration = toolCalls.reduce((sum, call) => sum + call.durationMs, 0);
243
+ return totalDuration / toolCalls.length;
244
+ }
245
+ /**
246
+ * Get average LLM call duration
247
+ */
248
+ getAverageLLMCallDuration(filter) {
249
+ const llmCalls = this.getLLMCalls(filter);
250
+ if (llmCalls.length === 0) {
251
+ return 0;
252
+ }
253
+ const totalDuration = llmCalls.reduce((sum, call) => sum + call.durationMs, 0);
254
+ return totalDuration / llmCalls.length;
255
+ }
256
+ /**
257
+ * Get success rate
258
+ */
259
+ getSuccessRate(filter) {
260
+ const toolCalls = this.getToolCalls(filter);
261
+ if (toolCalls.length === 0) {
262
+ return 0;
263
+ }
264
+ const successful = toolCalls.filter((call) => call.success).length;
265
+ return (successful / toolCalls.length) * 100;
266
+ }
267
+ /**
268
+ * Get metrics summary
269
+ */
270
+ getMetricsSummary(filter) {
271
+ const events = this.logger.getEvents(filter);
272
+ const eventsByType = this.getEventCountByType(filter);
273
+ const agentIds = this.getUniqueAgentIds(filter);
274
+ const sessionIds = this.getUniqueSessionIds(filter);
275
+ const tokenUsage = this.getTotalTokenUsage(filter);
276
+ const totalCost = this.getTotalLLMCost(filter);
277
+ const successRate = this.getSuccessRate(filter);
278
+ const timestamps = events.map((e) => e.timestamp);
279
+ const start = timestamps.length > 0 ? Math.min(...timestamps) : Date.now();
280
+ const end = timestamps.length > 0 ? Math.max(...timestamps) : Date.now();
281
+ return {
282
+ totalEvents: events.length,
283
+ eventsByType,
284
+ activeAgents: agentIds.length,
285
+ activeSessions: sessionIds.length,
286
+ totalTokensUsed: tokenUsage.totalTokens,
287
+ totalCost,
288
+ averageSuccessRate: successRate,
289
+ timeRange: { start, end },
290
+ };
291
+ }
292
+ // =========================================================================
293
+ // Search and filter
294
+ // =========================================================================
295
+ /**
296
+ * Search events by text in reasoning or error messages
297
+ */
298
+ searchEvents(searchText, filter) {
299
+ const events = this.logger.getEvents(filter);
300
+ const lowerSearch = searchText.toLowerCase();
301
+ return events.filter((event) => {
302
+ if (event.eventType === 'decision') {
303
+ return event.reasoning.toLowerCase().includes(lowerSearch);
304
+ }
305
+ if (event.eventType === 'error') {
306
+ return event.message.toLowerCase().includes(lowerSearch);
307
+ }
308
+ if (event.eventType === 'tool_call') {
309
+ return event.toolName.toLowerCase().includes(lowerSearch);
310
+ }
311
+ return false;
312
+ });
313
+ }
314
+ /**
315
+ * Get events sorted by timestamp (ascending or descending)
316
+ */
317
+ getSortedEvents(filter, order = 'asc') {
318
+ const events = this.logger.getEvents(filter);
319
+ return events.sort((a, b) => order === 'asc' ? a.timestamp - b.timestamp : b.timestamp - a.timestamp);
320
+ }
321
+ /**
322
+ * Paginate events
323
+ */
324
+ paginateEvents(page, pageSize, filter) {
325
+ const allEvents = this.getSortedEvents(filter, 'desc');
326
+ const totalEvents = allEvents.length;
327
+ const totalPages = Math.ceil(totalEvents / pageSize);
328
+ const start = (page - 1) * pageSize;
329
+ const end = start + pageSize;
330
+ const events = allEvents.slice(start, end);
331
+ return {
332
+ events,
333
+ page,
334
+ pageSize,
335
+ totalPages,
336
+ totalEvents,
337
+ };
338
+ }
339
+ }