elasticdash-sdk 0.2.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 (349) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +775 -0
  3. package/dist/browser-ui.d.ts +43 -0
  4. package/dist/browser-ui.d.ts.map +1 -0
  5. package/dist/browser-ui.js +246 -0
  6. package/dist/browser-ui.js.map +1 -0
  7. package/dist/capture/event.d.ts +33 -0
  8. package/dist/capture/event.d.ts.map +1 -0
  9. package/dist/capture/event.js +2 -0
  10. package/dist/capture/event.js.map +1 -0
  11. package/dist/capture/index.d.ts +4 -0
  12. package/dist/capture/index.d.ts.map +1 -0
  13. package/dist/capture/index.js +4 -0
  14. package/dist/capture/index.js.map +1 -0
  15. package/dist/capture/recorder.d.ts +24 -0
  16. package/dist/capture/recorder.d.ts.map +1 -0
  17. package/dist/capture/recorder.js +46 -0
  18. package/dist/capture/recorder.js.map +1 -0
  19. package/dist/capture/replay.d.ts +20 -0
  20. package/dist/capture/replay.d.ts.map +1 -0
  21. package/dist/capture/replay.js +47 -0
  22. package/dist/capture/replay.js.map +1 -0
  23. package/dist/ci/api-client.d.ts +38 -0
  24. package/dist/ci/api-client.d.ts.map +1 -0
  25. package/dist/ci/api-client.js +96 -0
  26. package/dist/ci/api-client.js.map +1 -0
  27. package/dist/ci/benchmark.d.ts +33 -0
  28. package/dist/ci/benchmark.d.ts.map +1 -0
  29. package/dist/ci/benchmark.js +213 -0
  30. package/dist/ci/benchmark.js.map +1 -0
  31. package/dist/ci/ed-runner.d.ts +48 -0
  32. package/dist/ci/ed-runner.d.ts.map +1 -0
  33. package/dist/ci/ed-runner.js +260 -0
  34. package/dist/ci/ed-runner.js.map +1 -0
  35. package/dist/ci/executor.d.ts +13 -0
  36. package/dist/ci/executor.d.ts.map +1 -0
  37. package/dist/ci/executor.js +542 -0
  38. package/dist/ci/executor.js.map +1 -0
  39. package/dist/ci/git-info.d.ts +17 -0
  40. package/dist/ci/git-info.d.ts.map +1 -0
  41. package/dist/ci/git-info.js +102 -0
  42. package/dist/ci/git-info.js.map +1 -0
  43. package/dist/ci/index.d.ts +6 -0
  44. package/dist/ci/index.d.ts.map +1 -0
  45. package/dist/ci/index.js +4 -0
  46. package/dist/ci/index.js.map +1 -0
  47. package/dist/ci/measurement.d.ts +9 -0
  48. package/dist/ci/measurement.d.ts.map +1 -0
  49. package/dist/ci/measurement.js +15 -0
  50. package/dist/ci/measurement.js.map +1 -0
  51. package/dist/ci/replay.d.ts +31 -0
  52. package/dist/ci/replay.d.ts.map +1 -0
  53. package/dist/ci/replay.js +96 -0
  54. package/dist/ci/replay.js.map +1 -0
  55. package/dist/ci/reporters/default.d.ts +8 -0
  56. package/dist/ci/reporters/default.d.ts.map +1 -0
  57. package/dist/ci/reporters/default.js +46 -0
  58. package/dist/ci/reporters/default.js.map +1 -0
  59. package/dist/ci/reporters/index.d.ts +8 -0
  60. package/dist/ci/reporters/index.d.ts.map +1 -0
  61. package/dist/ci/reporters/index.js +14 -0
  62. package/dist/ci/reporters/index.js.map +1 -0
  63. package/dist/ci/reporters/json.d.ts +8 -0
  64. package/dist/ci/reporters/json.d.ts.map +1 -0
  65. package/dist/ci/reporters/json.js +14 -0
  66. package/dist/ci/reporters/json.js.map +1 -0
  67. package/dist/ci/reporters/junit.d.ts +8 -0
  68. package/dist/ci/reporters/junit.d.ts.map +1 -0
  69. package/dist/ci/reporters/junit.js +48 -0
  70. package/dist/ci/reporters/junit.js.map +1 -0
  71. package/dist/ci/runner.d.ts +3 -0
  72. package/dist/ci/runner.d.ts.map +1 -0
  73. package/dist/ci/runner.js +187 -0
  74. package/dist/ci/runner.js.map +1 -0
  75. package/dist/ci/test-discovery.d.ts +5 -0
  76. package/dist/ci/test-discovery.d.ts.map +1 -0
  77. package/dist/ci/test-discovery.js +11 -0
  78. package/dist/ci/test-discovery.js.map +1 -0
  79. package/dist/ci/test-loader.d.ts +19 -0
  80. package/dist/ci/test-loader.d.ts.map +1 -0
  81. package/dist/ci/test-loader.js +149 -0
  82. package/dist/ci/test-loader.js.map +1 -0
  83. package/dist/ci/test-registry.d.ts +42 -0
  84. package/dist/ci/test-registry.d.ts.map +1 -0
  85. package/dist/ci/test-registry.js +18 -0
  86. package/dist/ci/test-registry.js.map +1 -0
  87. package/dist/ci/trace-schema.d.ts +30 -0
  88. package/dist/ci/trace-schema.d.ts.map +1 -0
  89. package/dist/ci/trace-schema.js +66 -0
  90. package/dist/ci/trace-schema.js.map +1 -0
  91. package/dist/ci/trace-writer.d.ts +16 -0
  92. package/dist/ci/trace-writer.d.ts.map +1 -0
  93. package/dist/ci/trace-writer.js +108 -0
  94. package/dist/ci/trace-writer.js.map +1 -0
  95. package/dist/ci/types.d.ts +108 -0
  96. package/dist/ci/types.d.ts.map +1 -0
  97. package/dist/ci/types.js +3 -0
  98. package/dist/ci/types.js.map +1 -0
  99. package/dist/ci/upload-client.d.ts +74 -0
  100. package/dist/ci/upload-client.d.ts.map +1 -0
  101. package/dist/ci/upload-client.js +195 -0
  102. package/dist/ci/upload-client.js.map +1 -0
  103. package/dist/cli.d.ts +3 -0
  104. package/dist/cli.d.ts.map +1 -0
  105. package/dist/cli.js +716 -0
  106. package/dist/cli.js.map +1 -0
  107. package/dist/core/agent-state.d.ts +47 -0
  108. package/dist/core/agent-state.d.ts.map +1 -0
  109. package/dist/core/agent-state.js +137 -0
  110. package/dist/core/agent-state.js.map +1 -0
  111. package/dist/core/judge-utils.d.ts +22 -0
  112. package/dist/core/judge-utils.d.ts.map +1 -0
  113. package/dist/core/judge-utils.js +211 -0
  114. package/dist/core/judge-utils.js.map +1 -0
  115. package/dist/core/registry.d.ts +28 -0
  116. package/dist/core/registry.d.ts.map +1 -0
  117. package/dist/core/registry.js +52 -0
  118. package/dist/core/registry.js.map +1 -0
  119. package/dist/dashboard-server.d.ts +65 -0
  120. package/dist/dashboard-server.d.ts.map +1 -0
  121. package/dist/dashboard-server.js +3940 -0
  122. package/dist/dashboard-server.js.map +1 -0
  123. package/dist/execution/tool-runner.d.ts +26 -0
  124. package/dist/execution/tool-runner.d.ts.map +1 -0
  125. package/dist/execution/tool-runner.js +316 -0
  126. package/dist/execution/tool-runner.js.map +1 -0
  127. package/dist/html/dashboard.html +2218 -0
  128. package/dist/http.d.ts +14 -0
  129. package/dist/http.d.ts.map +1 -0
  130. package/dist/http.js +13 -0
  131. package/dist/http.js.map +1 -0
  132. package/dist/index.cjs +8102 -0
  133. package/dist/index.d.ts +61 -0
  134. package/dist/index.d.ts.map +1 -0
  135. package/dist/index.js +67 -0
  136. package/dist/index.js.map +1 -0
  137. package/dist/interceptors/ai-interceptor.d.ts +26 -0
  138. package/dist/interceptors/ai-interceptor.d.ts.map +1 -0
  139. package/dist/interceptors/ai-interceptor.js +756 -0
  140. package/dist/interceptors/ai-interceptor.js.map +1 -0
  141. package/dist/interceptors/db-auto.d.ts +8 -0
  142. package/dist/interceptors/db-auto.d.ts.map +1 -0
  143. package/dist/interceptors/db-auto.js +217 -0
  144. package/dist/interceptors/db-auto.js.map +1 -0
  145. package/dist/interceptors/db.d.ts +23 -0
  146. package/dist/interceptors/db.d.ts.map +1 -0
  147. package/dist/interceptors/db.js +137 -0
  148. package/dist/interceptors/db.js.map +1 -0
  149. package/dist/interceptors/http.d.ts +28 -0
  150. package/dist/interceptors/http.d.ts.map +1 -0
  151. package/dist/interceptors/http.js +356 -0
  152. package/dist/interceptors/http.js.map +1 -0
  153. package/dist/interceptors/side-effects.d.ts +7 -0
  154. package/dist/interceptors/side-effects.d.ts.map +1 -0
  155. package/dist/interceptors/side-effects.js +72 -0
  156. package/dist/interceptors/side-effects.js.map +1 -0
  157. package/dist/interceptors/telemetry-push.d.ts +142 -0
  158. package/dist/interceptors/telemetry-push.d.ts.map +1 -0
  159. package/dist/interceptors/telemetry-push.js +463 -0
  160. package/dist/interceptors/telemetry-push.js.map +1 -0
  161. package/dist/interceptors/tool.d.ts +2 -0
  162. package/dist/interceptors/tool.d.ts.map +1 -0
  163. package/dist/interceptors/tool.js +274 -0
  164. package/dist/interceptors/tool.js.map +1 -0
  165. package/dist/interceptors/workflow-ai.d.ts +5 -0
  166. package/dist/interceptors/workflow-ai.d.ts.map +1 -0
  167. package/dist/interceptors/workflow-ai.js +382 -0
  168. package/dist/interceptors/workflow-ai.js.map +1 -0
  169. package/dist/internals/conditional-recorder.d.ts +21 -0
  170. package/dist/internals/conditional-recorder.d.ts.map +1 -0
  171. package/dist/internals/conditional-recorder.js +54 -0
  172. package/dist/internals/conditional-recorder.js.map +1 -0
  173. package/dist/internals/mock-resolver.d.ts +146 -0
  174. package/dist/internals/mock-resolver.d.ts.map +1 -0
  175. package/dist/internals/mock-resolver.js +427 -0
  176. package/dist/internals/mock-resolver.js.map +1 -0
  177. package/dist/matchers/index.d.ts +96 -0
  178. package/dist/matchers/index.d.ts.map +1 -0
  179. package/dist/matchers/index.js +668 -0
  180. package/dist/matchers/index.js.map +1 -0
  181. package/dist/observability.d.ts +82 -0
  182. package/dist/observability.d.ts.map +1 -0
  183. package/dist/observability.js +471 -0
  184. package/dist/observability.js.map +1 -0
  185. package/dist/portal-executor.d.ts +30 -0
  186. package/dist/portal-executor.d.ts.map +1 -0
  187. package/dist/portal-executor.js +324 -0
  188. package/dist/portal-executor.js.map +1 -0
  189. package/dist/portal-server.d.ts +3 -0
  190. package/dist/portal-server.d.ts.map +1 -0
  191. package/dist/portal-server.js +279 -0
  192. package/dist/portal-server.js.map +1 -0
  193. package/dist/proxy/llm-capture.d.ts +14 -0
  194. package/dist/proxy/llm-capture.d.ts.map +1 -0
  195. package/dist/proxy/llm-capture.js +264 -0
  196. package/dist/proxy/llm-capture.js.map +1 -0
  197. package/dist/reporter.d.ts +3 -0
  198. package/dist/reporter.d.ts.map +1 -0
  199. package/dist/reporter.js +72 -0
  200. package/dist/reporter.js.map +1 -0
  201. package/dist/runWorkflowSubprocess.d.ts +14 -0
  202. package/dist/runWorkflowSubprocess.d.ts.map +1 -0
  203. package/dist/runWorkflowSubprocess.js +66 -0
  204. package/dist/runWorkflowSubprocess.js.map +1 -0
  205. package/dist/runner.d.ts +16 -0
  206. package/dist/runner.d.ts.map +1 -0
  207. package/dist/runner.js +138 -0
  208. package/dist/runner.js.map +1 -0
  209. package/dist/socket-connector.d.ts +22 -0
  210. package/dist/socket-connector.d.ts.map +1 -0
  211. package/dist/socket-connector.js +104 -0
  212. package/dist/socket-connector.js.map +1 -0
  213. package/dist/telemetry-batcher.d.ts +56 -0
  214. package/dist/telemetry-batcher.d.ts.map +1 -0
  215. package/dist/telemetry-batcher.js +143 -0
  216. package/dist/telemetry-batcher.js.map +1 -0
  217. package/dist/test-setup.d.ts +12 -0
  218. package/dist/test-setup.d.ts.map +1 -0
  219. package/dist/test-setup.js +13 -0
  220. package/dist/test-setup.js.map +1 -0
  221. package/dist/tool-registry.d.ts +31 -0
  222. package/dist/tool-registry.d.ts.map +1 -0
  223. package/dist/tool-registry.js +73 -0
  224. package/dist/tool-registry.js.map +1 -0
  225. package/dist/tool-runner-worker.d.ts +2 -0
  226. package/dist/tool-runner-worker.d.ts.map +1 -0
  227. package/dist/tool-runner-worker.js +215 -0
  228. package/dist/tool-runner-worker.js.map +1 -0
  229. package/dist/trace-adapter/context.d.ts +72 -0
  230. package/dist/trace-adapter/context.d.ts.map +1 -0
  231. package/dist/trace-adapter/context.js +80 -0
  232. package/dist/trace-adapter/context.js.map +1 -0
  233. package/dist/tracing.d.ts +2 -0
  234. package/dist/tracing.d.ts.map +1 -0
  235. package/dist/tracing.js +59 -0
  236. package/dist/tracing.js.map +1 -0
  237. package/dist/trigger-executor.d.ts +12 -0
  238. package/dist/trigger-executor.d.ts.map +1 -0
  239. package/dist/trigger-executor.js +130 -0
  240. package/dist/trigger-executor.js.map +1 -0
  241. package/dist/types/portal.d.ts +76 -0
  242. package/dist/types/portal.d.ts.map +1 -0
  243. package/dist/types/portal.js +2 -0
  244. package/dist/types/portal.js.map +1 -0
  245. package/dist/utils/debug.d.ts +3 -0
  246. package/dist/utils/debug.d.ts.map +1 -0
  247. package/dist/utils/debug.js +8 -0
  248. package/dist/utils/debug.js.map +1 -0
  249. package/dist/utils/license-error.d.ts +23 -0
  250. package/dist/utils/license-error.d.ts.map +1 -0
  251. package/dist/utils/license-error.js +42 -0
  252. package/dist/utils/license-error.js.map +1 -0
  253. package/dist/utils/redact.d.ts +7 -0
  254. package/dist/utils/redact.d.ts.map +1 -0
  255. package/dist/utils/redact.js +26 -0
  256. package/dist/utils/redact.js.map +1 -0
  257. package/dist/workflow-runner-worker.d.ts +2 -0
  258. package/dist/workflow-runner-worker.d.ts.map +1 -0
  259. package/dist/workflow-runner-worker.js +329 -0
  260. package/dist/workflow-runner-worker.js.map +1 -0
  261. package/dist/workflow-runner.d.ts +14 -0
  262. package/dist/workflow-runner.d.ts.map +1 -0
  263. package/dist/workflow-runner.js +34 -0
  264. package/dist/workflow-runner.js.map +1 -0
  265. package/docs/agent-coding-instructions.md +138 -0
  266. package/docs/agent-integration-guide.md +564 -0
  267. package/docs/agents.md +140 -0
  268. package/docs/dashboard.md +394 -0
  269. package/docs/deno.md +69 -0
  270. package/docs/instrumentation.md +424 -0
  271. package/docs/langfuse-trace-structure.md +145 -0
  272. package/docs/matchers.md +173 -0
  273. package/docs/observability_contract.md +192 -0
  274. package/docs/observability_mode.md +195 -0
  275. package/docs/quickstart.md +621 -0
  276. package/docs/security-compliance.md +566 -0
  277. package/docs/test-writing-guidelines.md +444 -0
  278. package/docs/tools.md +165 -0
  279. package/docs/workflow-modes.md +253 -0
  280. package/package.json +76 -0
  281. package/src/browser-ui.ts +281 -0
  282. package/src/capture/event.ts +30 -0
  283. package/src/capture/index.ts +3 -0
  284. package/src/capture/recorder.ts +62 -0
  285. package/src/capture/replay.ts +55 -0
  286. package/src/ci/api-client.ts +136 -0
  287. package/src/ci/benchmark.ts +257 -0
  288. package/src/ci/ed-runner.ts +351 -0
  289. package/src/ci/executor.ts +671 -0
  290. package/src/ci/git-info.ts +127 -0
  291. package/src/ci/index.ts +5 -0
  292. package/src/ci/measurement.ts +25 -0
  293. package/src/ci/replay.ts +127 -0
  294. package/src/ci/reporters/default.ts +50 -0
  295. package/src/ci/reporters/index.ts +21 -0
  296. package/src/ci/reporters/json.ts +18 -0
  297. package/src/ci/reporters/junit.ts +61 -0
  298. package/src/ci/runner.ts +208 -0
  299. package/src/ci/test-discovery.ts +16 -0
  300. package/src/ci/test-loader.ts +187 -0
  301. package/src/ci/test-registry.ts +62 -0
  302. package/src/ci/trace-schema.ts +96 -0
  303. package/src/ci/trace-writer.ts +107 -0
  304. package/src/ci/types.ts +115 -0
  305. package/src/ci/upload-client.ts +300 -0
  306. package/src/cli.ts +811 -0
  307. package/src/core/agent-state.ts +162 -0
  308. package/src/core/judge-utils.ts +232 -0
  309. package/src/core/registry.ts +92 -0
  310. package/src/dashboard-server.ts +2047 -0
  311. package/src/execution/tool-runner.ts +352 -0
  312. package/src/html/dashboard.html +2218 -0
  313. package/src/http.ts +13 -0
  314. package/src/index.ts +138 -0
  315. package/src/interceptors/ai-interceptor.ts +798 -0
  316. package/src/interceptors/db-auto.ts +243 -0
  317. package/src/interceptors/db.ts +156 -0
  318. package/src/interceptors/http.ts +393 -0
  319. package/src/interceptors/side-effects.ts +83 -0
  320. package/src/interceptors/telemetry-push.ts +537 -0
  321. package/src/interceptors/tool.ts +287 -0
  322. package/src/interceptors/workflow-ai.ts +419 -0
  323. package/src/internals/conditional-recorder.ts +63 -0
  324. package/src/internals/mock-resolver.ts +492 -0
  325. package/src/matchers/index.ts +824 -0
  326. package/src/observability.ts +501 -0
  327. package/src/portal-executor.ts +355 -0
  328. package/src/portal-server.ts +304 -0
  329. package/src/proxy/llm-capture.ts +301 -0
  330. package/src/reporter.ts +81 -0
  331. package/src/runWorkflowSubprocess.ts +74 -0
  332. package/src/runner.ts +178 -0
  333. package/src/socket-connector.ts +117 -0
  334. package/src/telemetry-batcher.ts +191 -0
  335. package/src/test-setup.ts +16 -0
  336. package/src/tool-registry.ts +94 -0
  337. package/src/tool-runner-worker.ts +244 -0
  338. package/src/trace-adapter/context.ts +156 -0
  339. package/src/tracing.ts +62 -0
  340. package/src/trigger-executor.ts +171 -0
  341. package/src/types/agent.d.ts +63 -0
  342. package/src/types/expect.d.ts +81 -0
  343. package/src/types/modules.d.ts +2 -0
  344. package/src/types/portal.ts +69 -0
  345. package/src/utils/debug.ts +8 -0
  346. package/src/utils/license-error.ts +43 -0
  347. package/src/utils/redact.ts +25 -0
  348. package/src/workflow-runner-worker.ts +386 -0
  349. package/src/workflow-runner.ts +58 -0
@@ -0,0 +1,463 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { extractSystemPrompt, replaceSystemPrompt, extractUserPrompts, replaceUserPrompt, lookupMockEntry, normaliseMockResult } from '../internals/mock-resolver.js';
4
+ import { debugLog } from '../utils/debug.js';
5
+ import { notifyLicenseError } from '../utils/license-error.js';
6
+ const g = globalThis;
7
+ const HTTP_RUN_ALS_KEY = '__elasticdash_http_run_als__';
8
+ const GLOBAL_CTX_KEY = '__elasticdash_global_http_ctx__';
9
+ const OBS_ALS_KEY = '__elasticdash_obs_als__';
10
+ const GLOBAL_OBS_KEY = '__elasticdash_global_obs_ctx__';
11
+ const httpRunAls = g[HTTP_RUN_ALS_KEY] ??
12
+ new AsyncLocalStorage();
13
+ if (!g[HTTP_RUN_ALS_KEY])
14
+ g[HTTP_RUN_ALS_KEY] = httpRunAls;
15
+ const obsAls = g[OBS_ALS_KEY] ??
16
+ new AsyncLocalStorage();
17
+ if (!g[OBS_ALS_KEY])
18
+ g[OBS_ALS_KEY] = obsAls;
19
+ export function setObservabilityContext(ctx) {
20
+ obsAls.enterWith(ctx);
21
+ g[GLOBAL_OBS_KEY] = ctx;
22
+ }
23
+ export function getObservabilityContext() {
24
+ return obsAls.getStore() ?? g[GLOBAL_OBS_KEY];
25
+ }
26
+ export function clearObservabilityContext() {
27
+ obsAls.enterWith(undefined);
28
+ g[GLOBAL_OBS_KEY] = undefined;
29
+ }
30
+ function buildContext(runId, dashboardUrl, frozenEvents, promptMocksRecord = {}, toolMockConfig, aiMockConfig, userPromptMocks) {
31
+ let counter = 0;
32
+ const frozenMap = new Map();
33
+ for (const e of frozenEvents)
34
+ frozenMap.set(e.id, e);
35
+ const promptMocksMap = new Map(Object.entries(promptMocksRecord));
36
+ return {
37
+ runId, dashboardUrl, nextId: () => ++counter, frozenEvents: frozenMap, promptMocks: promptMocksMap,
38
+ userPromptMocks, toolMockConfig, aiMockConfig,
39
+ toolCallCounters: {}, aiCallCounters: {}, userPromptCallCounters: {},
40
+ };
41
+ }
42
+ /**
43
+ * Sets a global (non-ALS) fallback context that `getHttpRunContext` checks when
44
+ * ALS returns `undefined`. Use this in streaming frameworks where ALS context is
45
+ * lost after the handler returns a ReadableStream.
46
+ */
47
+ export function setGlobalHttpContext(ctx) {
48
+ g[GLOBAL_CTX_KEY] = ctx;
49
+ }
50
+ /**
51
+ * Clears the global fallback context. Call this at the start of non-ElasticDash
52
+ * requests (or when a stream closes) to prevent stale context from leaking.
53
+ */
54
+ export function clearGlobalHttpContext() {
55
+ g[GLOBAL_CTX_KEY] = undefined;
56
+ }
57
+ /** Synchronous setup — use when there are no frozen events (live run with no replay). */
58
+ export function setHttpRunContext(runId, dashboardUrl) {
59
+ const ctx = buildContext(runId, dashboardUrl, [], {});
60
+ httpRunAls.enterWith(ctx);
61
+ g[GLOBAL_CTX_KEY] = ctx;
62
+ ensureInterceptorsInstalled().catch(() => { });
63
+ }
64
+ /**
65
+ * Async setup — fetches frozen events from the dashboard then sets the ALS context.
66
+ * Use this in request handlers instead of setHttpRunContext when step freezing is needed.
67
+ * Falls back to a live (no-replay) context if the fetch fails or returns nothing.
68
+ */
69
+ export async function initHttpRunContext(runId, dashboardUrl) {
70
+ let frozenEvents = [];
71
+ let promptMocks = {};
72
+ let toolMockConfig;
73
+ let aiMockConfig;
74
+ let userPromptMocks;
75
+ try {
76
+ if (!dashboardUrl) {
77
+ debugLog(`[elasticdash] initHttpRunContext: no dashboardUrl, skipping config fetch`);
78
+ }
79
+ else {
80
+ const res = await fetch(`${dashboardUrl}/api/run-configs/${runId}`);
81
+ if (res.ok) {
82
+ const data = await res.json();
83
+ frozenEvents = Array.isArray(data.frozenEvents) ? data.frozenEvents : [];
84
+ promptMocks = (data.promptMocks && typeof data.promptMocks === 'object' && !Array.isArray(data.promptMocks))
85
+ ? data.promptMocks : {};
86
+ if (data.toolMockConfig && typeof data.toolMockConfig === 'object' && !Array.isArray(data.toolMockConfig)) {
87
+ toolMockConfig = data.toolMockConfig;
88
+ }
89
+ if (data.aiMockConfig && typeof data.aiMockConfig === 'object' && !Array.isArray(data.aiMockConfig)) {
90
+ aiMockConfig = data.aiMockConfig;
91
+ }
92
+ if (data.userPromptMocks && typeof data.userPromptMocks === 'object' && !Array.isArray(data.userPromptMocks)) {
93
+ userPromptMocks = data.userPromptMocks;
94
+ }
95
+ }
96
+ else if (res.status === 402) {
97
+ notifyLicenseError(res.status, 'run-config');
98
+ }
99
+ } // end dashboardUrl guard
100
+ }
101
+ catch {
102
+ // Dashboard unreachable or run config not registered — proceed with live execution
103
+ }
104
+ const ctx = buildContext(runId, dashboardUrl, frozenEvents, promptMocks, toolMockConfig, aiMockConfig, userPromptMocks);
105
+ httpRunAls.enterWith(ctx);
106
+ g[GLOBAL_CTX_KEY] = ctx;
107
+ await ensureInterceptorsInstalled();
108
+ }
109
+ export function getHttpRunContext() {
110
+ return httpRunAls.getStore() ?? g[GLOBAL_CTX_KEY];
111
+ }
112
+ /** Returns the frozen WorkflowEvent for the given event id, or undefined if not frozen. */
113
+ export function getHttpFrozenEvent(id) {
114
+ return getHttpRunContext()?.frozenEvents.get(id);
115
+ }
116
+ /**
117
+ * If a prompt mock is configured for the system prompt found in `input`, returns
118
+ * a copy of `input` with the system prompt replaced. Otherwise returns `undefined`.
119
+ */
120
+ export function getHttpPromptMock(input) {
121
+ const ctx = getHttpRunContext();
122
+ if (!ctx || ctx.promptMocks.size === 0) {
123
+ debugLog(`[elasticdash] getHttpPromptMock: skip — promptMocks.size=${ctx?.promptMocks.size ?? 'no ctx'}`);
124
+ return undefined;
125
+ }
126
+ const systemPrompt = extractSystemPrompt(input);
127
+ if (systemPrompt === undefined) {
128
+ const inputKeys = (input && typeof input === 'object') ? Object.keys(input).join(',') : typeof input;
129
+ debugLog(`[elasticdash] getHttpPromptMock: no system prompt found in input (keys: ${inputKeys})`);
130
+ return undefined;
131
+ }
132
+ const newSystemPrompt = ctx.promptMocks.get(systemPrompt);
133
+ debugLog(`[elasticdash] getHttpPromptMock: extracted system prompt (len=${systemPrompt.length}, first50=${JSON.stringify(systemPrompt.slice(0, 50))}) — mock found=${newSystemPrompt !== undefined}`);
134
+ if (newSystemPrompt !== undefined) {
135
+ debugLog(`[elasticdash] getHttpPromptMock: available mock keys=${JSON.stringify([...ctx.promptMocks.keys()].map(k => k.slice(0, 50)))}`);
136
+ }
137
+ if (newSystemPrompt === undefined) {
138
+ debugLog(`[elasticdash] getHttpPromptMock: no mock for this prompt. Available mock keys (first 50 chars each): ${JSON.stringify([...ctx.promptMocks.keys()].map(k => k.slice(0, 50)))}`);
139
+ return undefined;
140
+ }
141
+ return replaceSystemPrompt(input, newSystemPrompt);
142
+ }
143
+ /**
144
+ * If user prompt mocks are configured, applies all matching replacements to `input`.
145
+ * Returns modified input or `undefined` if no replacements applied.
146
+ * Uses fuzzy matching (strip/add JSON quotes) to handle serialization mismatches.
147
+ */
148
+ export function getHttpUserPromptMock(input) {
149
+ const ctx = getHttpRunContext();
150
+ if (!ctx?.userPromptMocks || Object.keys(ctx.userPromptMocks).length === 0)
151
+ return undefined;
152
+ const userPrompts = extractUserPrompts(input);
153
+ if (userPrompts.length === 0)
154
+ return undefined;
155
+ const mocks = ctx.userPromptMocks;
156
+ const counters = ctx.userPromptCallCounters;
157
+ const uniqueTexts = Array.from(new Set(userPrompts));
158
+ let modified = false;
159
+ let result = input;
160
+ for (const text of uniqueTexts) {
161
+ const match = lookupMockEntry(mocks, text);
162
+ if (!match || match.entry.mode === 'live')
163
+ continue;
164
+ const entry = match.entry;
165
+ counters[match.key] = (counters[match.key] ?? 0) + 1;
166
+ const callNumber = counters[match.key];
167
+ if (entry.mode === 'replace-all') {
168
+ result = replaceUserPrompt(result, text, entry.replacement);
169
+ modified = true;
170
+ }
171
+ else if (entry.mode === 'replace-specific') {
172
+ const indices = entry.callIndices ?? [];
173
+ if (indices.includes(callNumber)) {
174
+ result = replaceUserPrompt(result, text, entry.replacement);
175
+ modified = true;
176
+ }
177
+ }
178
+ }
179
+ return modified ? result : undefined;
180
+ }
181
+ /**
182
+ * Resolves whether the current HTTP-mode call to `toolName` should be mocked.
183
+ * Mirrors `resolveMock()` but reads from the per-request HttpRunContext.
184
+ */
185
+ export function getHttpToolMock(toolName) {
186
+ const ctx = getHttpRunContext();
187
+ if (!ctx?.toolMockConfig)
188
+ return { mocked: false };
189
+ const entry = ctx.toolMockConfig[toolName];
190
+ if (!entry || entry.mode === 'live')
191
+ return { mocked: false };
192
+ ctx.toolCallCounters[toolName] = (ctx.toolCallCounters[toolName] ?? 0) + 1;
193
+ const callNumber = ctx.toolCallCounters[toolName];
194
+ if (entry.mode === 'mock-all') {
195
+ const data = entry.mockData ?? {};
196
+ const raw = data[callNumber] !== undefined ? data[callNumber] : data[0];
197
+ return { mocked: true, result: normaliseMockResult(raw) };
198
+ }
199
+ if (entry.mode === 'mock-specific') {
200
+ const indices = entry.callIndices ?? [];
201
+ if (indices.includes(callNumber)) {
202
+ const data = entry.mockData ?? {};
203
+ return { mocked: true, result: normaliseMockResult(data[callNumber]) };
204
+ }
205
+ return { mocked: false };
206
+ }
207
+ return { mocked: false };
208
+ }
209
+ /**
210
+ * Resolves whether the current HTTP-mode call to `modelName` should be mocked.
211
+ * Mirrors `resolveAIMock()` but reads from the per-request HttpRunContext.
212
+ */
213
+ export function getHttpAIMock(modelName) {
214
+ const ctx = getHttpRunContext();
215
+ if (!ctx?.aiMockConfig)
216
+ return { mocked: false };
217
+ const entry = ctx.aiMockConfig[modelName];
218
+ if (!entry || entry.mode === 'live')
219
+ return { mocked: false };
220
+ ctx.aiCallCounters[modelName] = (ctx.aiCallCounters[modelName] ?? 0) + 1;
221
+ const callNumber = ctx.aiCallCounters[modelName];
222
+ if (entry.mode === 'mock-all') {
223
+ const data = entry.mockData ?? {};
224
+ const raw = data[callNumber] !== undefined ? data[callNumber] : data[0];
225
+ return { mocked: true, result: normaliseMockResult(raw) };
226
+ }
227
+ if (entry.mode === 'mock-specific') {
228
+ const indices = entry.callIndices ?? [];
229
+ if (indices.includes(callNumber)) {
230
+ const data = entry.mockData ?? {};
231
+ return { mocked: true, result: normaliseMockResult(data[callNumber]) };
232
+ }
233
+ return { mocked: false };
234
+ }
235
+ return { mocked: false };
236
+ }
237
+ export function pushTelemetryEvent(event, explicitCtx) {
238
+ // Observability mode: route to batcher with sampling
239
+ const obsCtx = getObservabilityContext();
240
+ if (obsCtx && !explicitCtx) {
241
+ if (obsCtx.sampleRate < 1 && Math.random() >= obsCtx.sampleRate)
242
+ return;
243
+ if (!event.traceId && obsCtx.traceId) {
244
+ event.traceId = obsCtx.traceId;
245
+ }
246
+ // Mark events captured during trigger rerun execution
247
+ if (obsCtx.isRerun) {
248
+ event.isRerun = true;
249
+ }
250
+ if (obsCtx.eventCollector) {
251
+ obsCtx.eventCollector.push({ ...event });
252
+ debugLog(`[elasticdash] pushTelemetryEvent: collected event type=${event.type} name=${('name' in event ? event.name : '?')} (total: ${obsCtx.eventCollector.length})`);
253
+ }
254
+ obsCtx.batcher.enqueue(event);
255
+ return;
256
+ }
257
+ const ctx = explicitCtx ?? getHttpRunContext();
258
+ if (!ctx) {
259
+ debugLog(`[elasticdash] pushTelemetryEvent: no HTTP context, dropping event type=${event.type} name=${('name' in event ? event.name : '?')}`);
260
+ return;
261
+ }
262
+ const { runId, dashboardUrl } = ctx;
263
+ if (!dashboardUrl) {
264
+ debugLog(`[elasticdash] pushTelemetryEvent: no dashboardUrl, dropping event type=${event.type} name=${('name' in event ? event.name : '?')}`);
265
+ return;
266
+ }
267
+ debugLog(`[elasticdash] pushTelemetryEvent: posting event type=${event.type} name=${('name' in event ? event.name : '?')} runId=${runId} to ${dashboardUrl}`);
268
+ try {
269
+ fetch(`${dashboardUrl}/api/trace-events`, {
270
+ method: 'POST',
271
+ headers: { 'Content-Type': 'application/json' },
272
+ body: JSON.stringify({ runId, event }),
273
+ }).then(r => {
274
+ if (r.status === 402)
275
+ notifyLicenseError(r.status, 'telemetry');
276
+ debugLog(`[elasticdash] pushTelemetryEvent: response status=${r.status} for type=${event.type} name=${('name' in event ? event.name : '?')}`);
277
+ }).catch(e => {
278
+ debugLog(`[elasticdash] pushTelemetryEvent: fetch failed: ${e instanceof Error ? e.message : String(e)}`);
279
+ });
280
+ }
281
+ catch (e) {
282
+ debugLog(`[elasticdash] pushTelemetryEvent: fetch threw: ${e instanceof Error ? e.message : String(e)}`);
283
+ }
284
+ }
285
+ const INTERCEPTORS_KEY = '__elasticdash_interceptors_installed__';
286
+ /**
287
+ * Ensures fetch (HTTP + AI) and DB interceptors are installed globally.
288
+ * Uses dynamic imports to avoid circular dependencies. Safe to call multiple
289
+ * times — only the first call does actual work.
290
+ */
291
+ async function ensureInterceptorsInstalled() {
292
+ if (g[INTERCEPTORS_KEY])
293
+ return;
294
+ g[INTERCEPTORS_KEY] = true;
295
+ try {
296
+ const [httpMod, aiMod, dbMod] = await Promise.all([
297
+ import('./http.js'),
298
+ import('./ai-interceptor.js'),
299
+ import('./db-auto.js'),
300
+ ]);
301
+ httpMod.interceptFetch();
302
+ aiMod.installAIInterceptor();
303
+ await dbMod.installDBAutoInterceptor();
304
+ }
305
+ catch {
306
+ // Non-fatal: interceptors may already be installed or deps missing
307
+ }
308
+ }
309
+ const AUTO_INIT_KEY = '__elasticdash_auto_init_promise__';
310
+ /**
311
+ * Lazily initialises an HTTP run context from environment variables when none
312
+ * has been set up explicitly. Only activates when `ELASTICDASH_SERVER` is set.
313
+ *
314
+ * - If `ELASTICDASH_RUN_ID` is also set, calls `initHttpRunContext` so that
315
+ * frozen steps are fetched from the dashboard (enables step freezing).
316
+ * - Otherwise calls `setHttpRunContext` with a fresh UUID (live/telemetry mode).
317
+ *
318
+ * The initialisation runs at most once per process — subsequent calls are
319
+ * no-ops once the context is established. Errors (e.g. dashboard unreachable)
320
+ * are swallowed so that live execution always continues unaffected.
321
+ *
322
+ * Typical usage: set `ELASTICDASH_SERVER=http://localhost:4573` and optionally
323
+ * `ELASTICDASH_RUN_ID=<id>` before starting your server or script. Every
324
+ * `wrapTool` / `wrapAI` call will then auto-connect to the dashboard without
325
+ * any explicit `initHttpRunContext` call in your code.
326
+ */
327
+ /**
328
+ * Runs `callback` inside a fresh HTTP run context scoped to `runId` / `dashboardUrl`.
329
+ * Uses `als.run()` which guarantees the store is inherited by all async descendants of
330
+ * `callback`, even when intermediate code (e.g. Langfuse / OTel) spawns its own async
331
+ * contexts via `als.run()`. Prefer this over `setHttpRunContext` when wrapping a long-lived
332
+ * async pipeline such as a streaming route handler.
333
+ */
334
+ export async function runInHttpContext(runId, dashboardUrl, callback) {
335
+ await ensureInterceptorsInstalled();
336
+ const ctx = buildContext(runId, dashboardUrl, [], {});
337
+ g[GLOBAL_CTX_KEY] = ctx;
338
+ try {
339
+ return await httpRunAls.run(ctx, callback);
340
+ }
341
+ finally {
342
+ g[GLOBAL_CTX_KEY] = undefined;
343
+ }
344
+ }
345
+ /**
346
+ * Fetches frozen events and prompt mocks from the dashboard, then runs `callback`
347
+ * inside an HTTP run context using `als.run()`. This is the preferred function for
348
+ * streaming route handlers that sit behind Langfuse / OTel instrumentation:
349
+ *
350
+ * - `als.run()` guarantees the elasticdash store is inherited through any nested
351
+ * `als.run()` calls made by third-party libraries (e.g. `startActiveObservation`).
352
+ * - Frozen events and prompt mocks are fetched before the callback so step replay
353
+ * and prompt mocking work correctly on reruns.
354
+ *
355
+ * Falls back to an empty context (live execution, no replay) if the dashboard is
356
+ * unreachable or the run config is not found.
357
+ */
358
+ export async function runWithInitializedHttpContext(runId, dashboardUrl, callback) {
359
+ let frozenEvents = [];
360
+ let promptMocks = {};
361
+ let toolMockConfig;
362
+ let aiMockConfig;
363
+ let userPromptMocks;
364
+ try {
365
+ if (!dashboardUrl) {
366
+ debugLog(`[elasticdash] runWithInitializedHttpContext: no dashboardUrl, skipping config fetch`);
367
+ }
368
+ else {
369
+ const res = await fetch(`${dashboardUrl}/api/run-configs/${runId}`);
370
+ if (res.ok) {
371
+ const data = await res.json();
372
+ frozenEvents = Array.isArray(data.frozenEvents) ? data.frozenEvents : [];
373
+ promptMocks = (data.promptMocks && typeof data.promptMocks === 'object' && !Array.isArray(data.promptMocks))
374
+ ? data.promptMocks : {};
375
+ if (data.toolMockConfig && typeof data.toolMockConfig === 'object' && !Array.isArray(data.toolMockConfig)) {
376
+ toolMockConfig = data.toolMockConfig;
377
+ }
378
+ if (data.aiMockConfig && typeof data.aiMockConfig === 'object' && !Array.isArray(data.aiMockConfig)) {
379
+ aiMockConfig = data.aiMockConfig;
380
+ }
381
+ if (data.userPromptMocks && typeof data.userPromptMocks === 'object' && !Array.isArray(data.userPromptMocks)) {
382
+ userPromptMocks = data.userPromptMocks;
383
+ }
384
+ const mockKeys = Object.keys(promptMocks);
385
+ const userMockKeys = Object.keys(userPromptMocks ?? {});
386
+ debugLog(`[elasticdash] runWithInitializedHttpContext: fetched ${mockKeys.length} prompt mocks, ${userMockKeys.length} user prompt mocks, ${frozenEvents.length} frozen events`);
387
+ if (mockKeys.length > 0) {
388
+ debugLog(`[elasticdash] runWithInitializedHttpContext: mock keys (first 80 chars each): ${JSON.stringify(mockKeys.map(k => k.slice(0, 80)))}`);
389
+ }
390
+ }
391
+ else {
392
+ if (res.status === 402)
393
+ notifyLicenseError(res.status, 'run-config');
394
+ debugLog(`[elasticdash] runWithInitializedHttpContext: run-configs fetch returned ${res.status}`);
395
+ }
396
+ } // end dashboardUrl guard
397
+ }
398
+ catch {
399
+ // Dashboard unreachable or run config not registered — proceed with live execution
400
+ }
401
+ await ensureInterceptorsInstalled();
402
+ const ctx = buildContext(runId, dashboardUrl, frozenEvents, promptMocks, toolMockConfig, aiMockConfig, userPromptMocks);
403
+ g[GLOBAL_CTX_KEY] = ctx;
404
+ try {
405
+ return await httpRunAls.run(ctx, callback);
406
+ }
407
+ finally {
408
+ g[GLOBAL_CTX_KEY] = undefined;
409
+ }
410
+ }
411
+ export async function tryAutoInitHttpContext() {
412
+ // Fast path: already initialised in this async context
413
+ if (getHttpRunContext())
414
+ return;
415
+ if (getObservabilityContext())
416
+ return;
417
+ // Check for observability mode first (ELASTICDASH_API_URL)
418
+ const apiUrl = (typeof process !== 'undefined' && process.env?.ELASTICDASH_API_URL) ?? '';
419
+ if (apiUrl) {
420
+ const obsInitKey = '__elasticdash_obs_auto_init__';
421
+ if (!g[obsInitKey]) {
422
+ g[obsInitKey] = (async () => {
423
+ try {
424
+ // Dynamic import to avoid circular dependency at module load time
425
+ const { initObservability } = await import('../observability.js');
426
+ initObservability({
427
+ serverUrl: apiUrl,
428
+ apiKey: process.env.ELASTICDASH_API_KEY,
429
+ sessionId: process.env.ELASTICDASH_SESSION_ID,
430
+ });
431
+ }
432
+ catch (err) {
433
+ debugLog(`[elasticdash] Observability auto-init failed: ${err instanceof Error ? err.message : String(err)}`);
434
+ }
435
+ })();
436
+ }
437
+ await g[obsInitKey];
438
+ return;
439
+ }
440
+ // Fall back to HTTP run context (ELASTICDASH_SERVER — dashboard/test mode)
441
+ const serverUrl = (typeof process !== 'undefined' && process.env?.ELASTICDASH_SERVER) ?? '';
442
+ if (!serverUrl)
443
+ return;
444
+ // Deduplicate concurrent first calls within the same process
445
+ if (!g[AUTO_INIT_KEY]) {
446
+ g[AUTO_INIT_KEY] = (async () => {
447
+ try {
448
+ const runId = (typeof process !== 'undefined' && process.env?.ELASTICDASH_RUN_ID) ?? '';
449
+ if (runId) {
450
+ await initHttpRunContext(runId, serverUrl);
451
+ }
452
+ else {
453
+ setHttpRunContext(randomUUID(), serverUrl);
454
+ }
455
+ }
456
+ catch {
457
+ // Dashboard unreachable — fall through to live execution
458
+ }
459
+ })();
460
+ }
461
+ await g[AUTO_INIT_KEY];
462
+ }
463
+ //# sourceMappingURL=telemetry-push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-push.js","sourceRoot":"","sources":["../../src/interceptors/telemetry-push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAErK,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAiD9D,MAAM,CAAC,GAAG,UAAqC,CAAA;AAC/C,MAAM,gBAAgB,GAAG,8BAA8B,CAAA;AACvD,MAAM,cAAc,GAAG,iCAAiC,CAAA;AACxD,MAAM,WAAW,GAAG,yBAAyB,CAAA;AAC7C,MAAM,cAAc,GAAG,gCAAgC,CAAA;AAEvD,MAAM,UAAU,GACb,CAAC,CAAC,gBAAgB,CAAmD;IACtE,IAAI,iBAAiB,EAA8B,CAAA;AACrD,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAA;AAE1D,MAAM,MAAM,GACT,CAAC,CAAC,WAAW,CAAyD;IACvE,IAAI,iBAAiB,EAAoC,CAAA;AAC3D,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IAAE,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAA;AAE5C,MAAM,UAAU,uBAAuB,CAAC,GAAyB;IAC/D,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACrB,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAK,CAAC,CAAC,cAAc,CAAsC,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IAC3B,CAAC,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;AAC/B,CAAC;AAED,SAAS,YAAY,CACnB,KAAa,EACb,YAAoB,EACpB,YAA6B,EAC7B,oBAA4C,EAAE,EAC9C,cAA8C,EAC9C,YAA0C,EAC1C,eAAqD;IAErD,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAA;IAClD,KAAK,MAAM,CAAC,IAAI,YAAY;QAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACpD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAiB,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACjF,OAAO;QACL,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc;QAClG,eAAe,EAAE,cAAc,EAAE,YAAY;QAC7C,gBAAgB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,sBAAsB,EAAE,EAAE;KACrE,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAmB;IACtD,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAA;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,CAAC,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;AAC/B,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,YAAoB;IACnE,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACrD,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAA;IACvB,2BAA2B,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAa,EAAE,YAAoB;IAC1E,IAAI,YAAY,GAAoB,EAAE,CAAA;IACtC,IAAI,WAAW,GAA2B,EAAE,CAAA;IAC5C,IAAI,cAAyD,CAAA;IAC7D,IAAI,YAAqD,CAAA;IACzD,IAAI,eAAgE,CAAA;IACpE,IAAI,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,0EAA0E,CAAC,CAAA;QACtF,CAAC;aAAM,CAAC;YACR,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,oBAAoB,KAAK,EAAE,CAAC,CAAA;YACnE,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAiO,CAAA;gBAC5P,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;gBACxE,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1G,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;gBACzB,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC1G,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;gBACtC,CAAC;gBACD,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;oBACpG,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;gBAClC,CAAC;gBACD,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;oBAC7G,eAAe,GAAG,IAAI,CAAC,eAAsD,CAAA;gBAC/E,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC9B,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YAC9C,CAAC;QACD,CAAC,CAAC,yBAAyB;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,mFAAmF;IACrF,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,CAAC,CAAA;IACvH,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAA;IACvB,MAAM,2BAA2B,EAAE,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAK,CAAC,CAAC,cAAc,CAAgC,CAAA;AACnF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,iBAAiB,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAA;IAC/B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvC,QAAQ,CAAC,4DAA4D,GAAG,EAAE,WAAW,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAA;QACzG,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAA;QAC9G,QAAQ,CAAC,2EAA2E,SAAS,GAAG,CAAC,CAAA;QACjG,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,eAAe,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACzD,QAAQ,CAAC,iEAAiE,YAAY,CAAC,MAAM,aAAa,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,kBAAkB,eAAe,KAAK,SAAS,EAAE,CAAC,CAAA;IACpM,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,QAAQ,CAAC,wDAAwD,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACzI,CAAC;IACD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,QAAQ,CAAC,wGAAwG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACvL,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,mBAAmB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAA;IAC/B,IAAI,CAAC,GAAG,EAAE,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAE5F,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAE9C,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAAA;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,sBAAsB,CAAA;IAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;IACpD,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAQ;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QAEzB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEtC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;YAC3D,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;YACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;gBAC3D,QAAQ,GAAG,IAAI,CAAA;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAA;IAC/B,IAAI,CAAC,GAAG,EAAE,cAAc;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAClD,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAE7D,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAEjD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAA;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;QACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;YACjC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAA;QACxE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAC1B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAA;IAC/B,IAAI,CAAC,GAAG,EAAE,YAAY;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAChD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IACzC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAE7D,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACxE,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;IAEhD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAA;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAA;QACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;YACjC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAA;QACxE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAC1B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAoB,EAAE,WAAqD;IAC5G,qDAAqD;IACrD,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAA;IACxC,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,UAAU;YAAE,OAAM;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAChC,CAAC;QACD,sDAAsD;QACtD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,KAA+C,CAAC,OAAO,GAAG,IAAI,CAAA;QACjE,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;YACxC,QAAQ,CAAC,0DAA0D,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA;QACxK,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAM;IACR,CAAC;IAED,MAAM,GAAG,GAAG,WAAW,IAAI,iBAAiB,EAAE,CAAA;IAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,QAAQ,CAAC,0EAA0E,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7I,OAAM;IACR,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,GAAG,CAAA;IACnC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,QAAQ,CAAC,0EAA0E,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7I,OAAM;IACR,CAAC;IACD,QAAQ,CAAC,wDAAwD,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,KAAK,OAAO,YAAY,EAAE,CAAC,CAAA;IAC7J,IAAI,CAAC;QACH,KAAK,CAAC,GAAG,YAAY,mBAAmB,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SACvC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACV,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;gBAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;YAC/D,QAAQ,CAAC,qDAAqD,CAAC,CAAC,MAAM,aAAa,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC/I,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACX,QAAQ,CAAC,mDAAmD,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC3G,CAAC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,kDAAkD,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAC1G,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,wCAAwC,CAAA;AAEjE;;;;GAIG;AACH,KAAK,UAAU,2BAA2B;IACxC,IAAI,CAAC,CAAC,gBAAgB,CAAC;QAAE,OAAM;IAC/B,CAAC,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAA;IAC1B,IAAI,CAAC;QACH,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC;YACnB,MAAM,CAAC,qBAAqB,CAAC;YAC7B,MAAM,CAAC,cAAc,CAAC;SACvB,CAAC,CAAA;QACF,OAAO,CAAC,cAAc,EAAE,CAAA;QACxB,KAAK,CAAC,oBAAoB,EAAE,CAAA;QAC5B,MAAM,KAAK,CAAC,wBAAwB,EAAE,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GAAG,mCAAmC,CAAA;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,YAAoB,EACpB,QAA0B;IAE1B,MAAM,2BAA2B,EAAE,CAAA;IACnC,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACrD,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAA;IACvB,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;YAAS,CAAC;QACT,CAAC,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;IAC/B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,KAAa,EACb,YAAoB,EACpB,QAA0B;IAE1B,IAAI,YAAY,GAAoB,EAAE,CAAA;IACtC,IAAI,WAAW,GAA2B,EAAE,CAAA;IAC5C,IAAI,cAAyD,CAAA;IAC7D,IAAI,YAAqD,CAAA;IACzD,IAAI,eAAgE,CAAA;IACpE,IAAI,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,qFAAqF,CAAC,CAAA;QACjG,CAAC;aAAM,CAAC;YACR,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,oBAAoB,KAAK,EAAE,CAAC,CAAA;YACnE,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAiO,CAAA;gBAC5P,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;gBACxE,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1G,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;gBACzB,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC1G,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;gBACtC,CAAC;gBACD,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;oBACpG,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;gBAClC,CAAC;gBACD,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;oBAC7G,eAAe,GAAG,IAAI,CAAC,eAAsD,CAAA;gBAC/E,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBACzC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAA;gBACvD,QAAQ,CAAC,wDAAwD,QAAQ,CAAC,MAAM,kBAAkB,YAAY,CAAC,MAAM,uBAAuB,YAAY,CAAC,MAAM,gBAAgB,CAAC,CAAA;gBAChL,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,QAAQ,CAAC,iFAAiF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBAC/I,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;oBAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;gBACpE,QAAQ,CAAC,2EAA2E,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;YACnG,CAAC;QACD,CAAC,CAAC,yBAAyB;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,mFAAmF;IACrF,CAAC;IACD,MAAM,2BAA2B,EAAE,CAAA;IACnC,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,CAAC,CAAA;IACvH,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAA;IACvB,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;YAAS,CAAC;QACT,CAAC,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,uDAAuD;IACvD,IAAI,iBAAiB,EAAE;QAAE,OAAM;IAC/B,IAAI,uBAAuB,EAAE;QAAE,OAAM;IAErC,2DAA2D;IAC3D,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAA;IACzF,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,+BAA+B,CAAA;QAClD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACnB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC1B,IAAI,CAAC;oBACH,kEAAkE;oBAClE,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;oBACjE,iBAAiB,CAAC;wBAChB,SAAS,EAAE,MAAM;wBACjB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;wBACvC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;qBAC9C,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,iDAAiD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAC/G,CAAC;YACH,CAAC,CAAC,EAAE,CAAA;QACN,CAAC;QACD,MAAO,CAAC,CAAC,UAAU,CAAmB,CAAA;QACtC,OAAM;IACR,CAAC;IAED,2EAA2E;IAC3E,MAAM,SAAS,GAAG,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,EAAE,CAAA;IAC3F,IAAI,CAAC,SAAS;QAAE,OAAM;IAEtB,6DAA6D;IAC7D,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;QACtB,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,EAAE,CAAA;gBACvF,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBAC5C,CAAC;qBAAM,CAAC;oBACN,iBAAiB,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAA;gBAC5C,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,yDAAyD;YAC3D,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAED,MAAO,CAAC,CAAC,aAAa,CAAmB,CAAA;AAC3C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function wrapTool<Args extends unknown[], R>(name: string, fn: (...args: Args) => Promise<R>): (...args: Args) => Promise<R>;
2
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/interceptors/tool.ts"],"names":[],"mappings":"AAoFA,wBAAgB,QAAQ,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,CAAC,EAChD,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAChC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAuM/B"}