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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/matchers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ export interface ObservabilityOptions {
2
+ serverUrl?: string;
3
+ apiKey?: string;
4
+ sessionId?: string;
5
+ batchIntervalMs?: number;
6
+ maxBatchSize?: number;
7
+ heartbeatIntervalMs?: number;
8
+ sampleRate?: number;
9
+ redactKeys?: string[];
10
+ }
11
+ export interface ObservabilityHandle {
12
+ sessionId: string;
13
+ shutdown: () => Promise<void>;
14
+ }
15
+ /**
16
+ * Initialise active observability mode. All `wrapTool` / `wrapAI` calls will
17
+ * automatically record and stream trace events to the configured backend.
18
+ *
19
+ * Reads from environment variables as fallback:
20
+ * - `ELASTICDASH_API_URL` — backend API URL (required)
21
+ * - `ELASTICDASH_API_KEY` — project auth token
22
+ * - `ELASTICDASH_SESSION_ID` — session identifier (auto-generated if omitted)
23
+ */
24
+ export declare function initObservability(options?: ObservabilityOptions): ObservabilityHandle;
25
+ /**
26
+ * Gracefully shut down observability: flush remaining events, send session_end,
27
+ * stop heartbeat, and clear context.
28
+ */
29
+ export declare function shutdownObservability(): Promise<void>;
30
+ /**
31
+ * Start a new trace for the current request/operation.
32
+ *
33
+ * Call this at the start of each request handler to group all tool/AI events
34
+ * under one trace, identified by the workflow name.
35
+ *
36
+ * The generated traceId encodes the workflow name and timestamp for easy
37
+ * parsing by the backend: `{workflowName}::{timestamp}::{shortId}`
38
+ *
39
+ * @param workflowName — the workflow/function being executed (e.g. 'chatStreamHandler')
40
+ * @returns The new traceId
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * // In a route handler:
45
+ * startTrace('chatStreamHandler')
46
+ * // All subsequent wrapTool/wrapAI calls get traceId = "chatStreamHandler::1712851200000::a1b2c3d4"
47
+ * ```
48
+ */
49
+ export declare function startTrace(workflowName?: string): string;
50
+ /**
51
+ * End the current trace. Resets the traceId so subsequent events (heartbeats,
52
+ * new requests) are not attributed to the completed workflow.
53
+ *
54
+ * Call this when a workflow/request handler finishes — especially for streaming
55
+ * handlers where the trace would otherwise persist indefinitely.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * startTrace('chatStreamHandler')
60
+ * // ... workflow logic ...
61
+ * endTrace()
62
+ * ```
63
+ */
64
+ export declare function endTrace(): void;
65
+ /**
66
+ * Wrap a workflow function so that every invocation automatically starts a new
67
+ * trace with the workflow name. All tool/AI calls within the function execution
68
+ * are grouped under that trace.
69
+ *
70
+ * Use this in `ed_workflows.ts` to automatically tag each workflow execution:
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * export const chatStreamHandler = wrapWorkflow('chatStreamHandler', async (input) => {
75
+ * const result = await fetchUser(input.userId)
76
+ * const reply = await generateReply(result)
77
+ * return reply
78
+ * })
79
+ * ```
80
+ */
81
+ export declare function wrapWorkflow<Args extends unknown[], R>(name: string, fn: (...args: Args) => Promise<R>): (...args: Args) => Promise<R>;
82
+ //# sourceMappingURL=observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAyHD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,CA2GrF;AA+BD;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqC3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAwCxD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAkB/B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,CAAC,EACpD,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,CAuC/B"}
@@ -0,0 +1,471 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { TelemetryBatcher } from './telemetry-batcher.js';
3
+ import { setObservabilityContext, getObservabilityContext, clearObservabilityContext, pushTelemetryEvent, } from './interceptors/telemetry-push.js';
4
+ import { installAIInterceptor } from './interceptors/ai-interceptor.js';
5
+ import { interceptFetch, getOriginalFetch } from './interceptors/http.js';
6
+ import { installDBAutoInterceptor } from './interceptors/db-auto.js';
7
+ import { connectToBackend, disconnectFromBackend } from './socket-connector.js';
8
+ import { executeTrigger } from './trigger-executor.js';
9
+ import { readFileSync, existsSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { scanTools, scanWorkflows } from './execution/tool-runner.js';
12
+ import { debugLog } from './utils/debug.js';
13
+ import { isTraceCaptureEnabled, maybeCaptureTrace, maybeCaptureTraceSync } from './ci/trace-writer.js';
14
+ import { detectGitInfo } from './ci/git-info.js';
15
+ let heartbeatTimer = null;
16
+ let shutdownRegistered = false;
17
+ /**
18
+ * Extracts workflow names from the `workflows` object in elasticdash.config.ts
19
+ * by reading the source text. Returns an empty array if the file does not exist
20
+ * or cannot be parsed.
21
+ */
22
+ /**
23
+ * Resolves the default workflow name used as traceId prefix.
24
+ *
25
+ * Filters ed_workflows.ts exports to exclude known SDK utility functions
26
+ * (edStartTrace, edEndTrace, setElasticDashModule) that are not actual
27
+ * workflow handlers. If exactly one candidate remains, use it. Otherwise
28
+ * fall back to 'unknown-workflow'.
29
+ */
30
+ function resolveDefaultWorkflowName(cwd, workflows) {
31
+ // Filter out SDK utility functions that users commonly export from ed_workflows.ts
32
+ const UTILITY_PREFIXES = ['edStartTrace', 'edEndTrace', 'setElasticDashModule', 'setElasticDash'];
33
+ const candidates = workflows.filter(w => !UTILITY_PREFIXES.some(p => w.name === p));
34
+ debugLog(`[elasticdash] scanWorkflows found ${workflows.length} exports: [${workflows.map(w => w.name).join(', ')}]`);
35
+ debugLog(`[elasticdash] After filtering utilities: ${candidates.length} candidates: [${candidates.map(w => w.name).join(', ')}]`);
36
+ if (candidates.length === 1) {
37
+ debugLog(`[elasticdash] Resolved workflow name: ${candidates[0].name}`);
38
+ return candidates[0].name;
39
+ }
40
+ // Multiple candidates — try reading elasticdash.config.ts for workflow keys
41
+ if (candidates.length > 1) {
42
+ const configNames = readConfigWorkflowNames(cwd);
43
+ if (configNames.length >= 1) {
44
+ debugLog(`[elasticdash] Config workflow names: [${configNames.join(', ')}] — using first: ${configNames[0]}`);
45
+ return configNames[0];
46
+ }
47
+ // No config — use first candidate
48
+ debugLog(`[elasticdash] Multiple workflow candidates, using first: ${candidates[0].name}`);
49
+ return candidates[0].name;
50
+ }
51
+ // No candidates after filtering — use first raw export if available
52
+ if (workflows.length > 0) {
53
+ debugLog(`[elasticdash] No workflow candidates after filtering, using first export: ${workflows[0].name}`);
54
+ return workflows[0].name;
55
+ }
56
+ debugLog(`[elasticdash] No workflows found — using 'unknown-workflow'`);
57
+ return 'unknown-workflow';
58
+ }
59
+ /**
60
+ * Reads workflow keys from the `workflows` object in elasticdash.config.ts.
61
+ * Uses dynamic import to parse the config properly.
62
+ * Returns an empty array if the file does not exist or has no workflows.
63
+ */
64
+ function readConfigWorkflowNames(cwd) {
65
+ for (const filename of ['elasticdash.config.ts', 'elasticdash.config.js']) {
66
+ const configPath = join(cwd, filename);
67
+ if (!existsSync(configPath))
68
+ continue;
69
+ try {
70
+ const src = readFileSync(configPath, 'utf8');
71
+ // Match top-level keys inside `workflows: { ... }` using a line-based approach:
72
+ // workflow keys appear as `identifier: {` at the start of a line (with indentation)
73
+ // within the workflows block.
74
+ const wfMatch = src.match(/workflows\s*:\s*\{/);
75
+ if (!wfMatch || wfMatch.index === undefined)
76
+ continue;
77
+ // Find the workflows block by brace-balancing (skip strings)
78
+ const startIdx = wfMatch.index + wfMatch[0].length;
79
+ let depth = 1;
80
+ let inString = null;
81
+ let endIdx = startIdx;
82
+ for (let i = startIdx; i < src.length && depth > 0; i++) {
83
+ const ch = src[i];
84
+ if (inString) {
85
+ if (ch === '\\') {
86
+ i++;
87
+ continue;
88
+ }
89
+ if (ch === inString)
90
+ inString = null;
91
+ continue;
92
+ }
93
+ if (ch === "'" || ch === '"' || ch === '`') {
94
+ inString = ch;
95
+ continue;
96
+ }
97
+ if (ch === '{')
98
+ depth++;
99
+ else if (ch === '}')
100
+ depth--;
101
+ if (depth > 0)
102
+ endIdx = i;
103
+ }
104
+ // Extract keys at depth 0 within the block — only `identifier: {` with `mode:` inside
105
+ const block = src.slice(startIdx, endIdx + 1);
106
+ const keys = [];
107
+ // Simple approach: find lines matching `word: {` and check they contain `mode:`
108
+ for (const m of block.matchAll(/^\s+(\w+)\s*:\s*\{/gm)) {
109
+ // Verify this is a workflow config (has a `mode:` property) not a nested object
110
+ const keyStart = m.index + m[0].length;
111
+ // Scan ahead to the matching } to check for `mode:`
112
+ let d = 1;
113
+ let inStr = null;
114
+ let slice = '';
115
+ for (let i = keyStart; i < block.length && d > 0; i++) {
116
+ const c = block[i];
117
+ if (inStr) {
118
+ if (c === '\\') {
119
+ i++;
120
+ continue;
121
+ }
122
+ if (c === inStr)
123
+ inStr = null;
124
+ continue;
125
+ }
126
+ if (c === "'" || c === '"' || c === '`') {
127
+ inStr = c;
128
+ continue;
129
+ }
130
+ if (c === '{')
131
+ d++;
132
+ else if (c === '}')
133
+ d--;
134
+ if (d > 0)
135
+ slice += c;
136
+ }
137
+ if (/\bmode\s*:/.test(slice)) {
138
+ keys.push(m[1]);
139
+ }
140
+ }
141
+ if (keys.length > 0)
142
+ return keys;
143
+ }
144
+ catch { /* config unreadable — fall through */ }
145
+ }
146
+ return [];
147
+ }
148
+ /**
149
+ * Initialise active observability mode. All `wrapTool` / `wrapAI` calls will
150
+ * automatically record and stream trace events to the configured backend.
151
+ *
152
+ * Reads from environment variables as fallback:
153
+ * - `ELASTICDASH_API_URL` — backend API URL (required)
154
+ * - `ELASTICDASH_API_KEY` — project auth token
155
+ * - `ELASTICDASH_SESSION_ID` — session identifier (auto-generated if omitted)
156
+ */
157
+ export function initObservability(options) {
158
+ const serverUrl = options?.serverUrl ?? process.env.ELASTICDASH_API_URL ?? '';
159
+ if (!serverUrl) {
160
+ throw new Error('[elasticdash] initObservability: serverUrl is required (set ELASTICDASH_API_URL or pass serverUrl option)');
161
+ }
162
+ const apiKey = options?.apiKey ?? process.env.ELASTICDASH_API_KEY;
163
+ const sessionId = options?.sessionId ?? process.env.ELASTICDASH_SESSION_ID ?? randomUUID();
164
+ const sampleRate = options?.sampleRate ?? 1.0;
165
+ const redactKeys = options?.redactKeys ?? [];
166
+ const heartbeatIntervalMs = options?.heartbeatIntervalMs ?? 30_000;
167
+ // Discover workflow name for traceId prefix.
168
+ // Priority: elasticdash.config.ts workflow keys > single ed_workflows.ts export > 'unknown-workflow'
169
+ const cwd = process.cwd();
170
+ const workflows = scanWorkflows(cwd);
171
+ const defaultWorkflowName = resolveDefaultWorkflowName(cwd, workflows);
172
+ // Detect git info for session metadata (branch, commit, CI provider)
173
+ // If detection fails, values are omitted — never store 'unknown' placeholders
174
+ let gitInfo = {};
175
+ try {
176
+ gitInfo = detectGitInfo();
177
+ }
178
+ catch { /* not in a git repo — skip */ }
179
+ const sessionMetadata = {};
180
+ if (gitInfo.branch && gitInfo.branch !== 'unknown')
181
+ sessionMetadata.branch = gitInfo.branch;
182
+ if (gitInfo.commit && gitInfo.commit !== 'unknown')
183
+ sessionMetadata.commit = gitInfo.commit;
184
+ if (gitInfo.ciProvider && gitInfo.ciProvider !== 'local')
185
+ sessionMetadata.ciProvider = gitInfo.ciProvider;
186
+ const batcher = new TelemetryBatcher({
187
+ serverUrl,
188
+ apiKey,
189
+ sessionId,
190
+ metadata: Object.keys(sessionMetadata).length > 0 ? sessionMetadata : undefined,
191
+ batchIntervalMs: options?.batchIntervalMs,
192
+ maxBatchSize: options?.maxBatchSize,
193
+ redactKeys,
194
+ onTrigger: async (trigger) => {
195
+ await executeTrigger(serverUrl, apiKey, trigger);
196
+ },
197
+ });
198
+ let counter = 0;
199
+ const traceId = `${defaultWorkflowName}::${Date.now()}::${randomUUID().slice(0, 8)}`;
200
+ const ctx = {
201
+ sessionId,
202
+ serverUrl,
203
+ apiKey,
204
+ batcher,
205
+ nextId: () => ++counter,
206
+ sampleRate,
207
+ redactKeys,
208
+ traceId,
209
+ defaultWorkflowName,
210
+ };
211
+ setObservabilityContext(ctx);
212
+ installAIInterceptor();
213
+ interceptFetch();
214
+ installDBAutoInterceptor().catch(() => { });
215
+ connectToBackend({ serverUrl, apiKey, sessionId });
216
+ // Heartbeat
217
+ heartbeatTimer = setInterval(() => {
218
+ batcher.enqueue({
219
+ id: ctx.nextId(),
220
+ type: 'side_effect',
221
+ name: '__heartbeat__',
222
+ input: { sessionId },
223
+ output: { uptime: process.uptime() },
224
+ timestamp: Date.now(),
225
+ durationMs: 0,
226
+ schemaVersion: 1,
227
+ });
228
+ }, heartbeatIntervalMs);
229
+ if (heartbeatTimer && typeof heartbeatTimer === 'object' && 'unref' in heartbeatTimer) {
230
+ heartbeatTimer.unref();
231
+ }
232
+ // Register process exit hooks (once)
233
+ if (!shutdownRegistered) {
234
+ shutdownRegistered = true;
235
+ const onExit = () => { shutdownObservability().catch(() => { }); };
236
+ process.once('beforeExit', onExit);
237
+ process.once('SIGTERM', onExit);
238
+ process.once('SIGINT', onExit);
239
+ // Sync exit handler: last resort to flush any pending trace capture.
240
+ // process.on('exit') only allows synchronous code — the async handlers above
241
+ // may not complete before the process terminates (e.g. SIGINT on a dev server).
242
+ if (isTraceCaptureEnabled()) {
243
+ process.once('exit', () => {
244
+ const exitCtx = getObservabilityContext();
245
+ if (exitCtx?.eventCollector && exitCtx.eventCollector.length > 0) {
246
+ maybeCaptureTraceSync(exitCtx.eventCollector, exitCtx.traceId);
247
+ }
248
+ });
249
+ }
250
+ }
251
+ debugLog(`[elasticdash] Observability initialised — sessionId=${sessionId} workflow=${defaultWorkflowName} server=${serverUrl}`);
252
+ // Push workflow/tool catalog to backend (fire-and-forget)
253
+ pushCatalog(serverUrl, apiKey, workflows).catch(() => { });
254
+ return {
255
+ sessionId,
256
+ shutdown: () => shutdownObservability(),
257
+ };
258
+ }
259
+ /**
260
+ * POST the workflow/tool catalog to the backend so it registers the real
261
+ * function names from ed_workflows.ts and ed_tools.ts.
262
+ */
263
+ async function pushCatalog(serverUrl, apiKey, workflows = []) {
264
+ const cwd = process.cwd();
265
+ const tools = scanTools(cwd);
266
+ if (workflows.length === 0 && tools.length === 0)
267
+ return;
268
+ const body = {};
269
+ if (workflows.length > 0)
270
+ body.workflows = workflows.map(w => ({ name: w.name }));
271
+ if (tools.length > 0)
272
+ body.tools = tools.map(t => ({ name: t.name }));
273
+ const headers = { 'Content-Type': 'application/json' };
274
+ if (apiKey)
275
+ headers['Authorization'] = `Bearer ${apiKey}`;
276
+ try {
277
+ const res = await getOriginalFetch()(`${serverUrl.replace(/\/$/, '')}/api/observability/catalog`, {
278
+ method: 'POST',
279
+ headers,
280
+ body: JSON.stringify(body),
281
+ });
282
+ debugLog(`[elasticdash] Catalog pushed: ${workflows.length} workflows, ${tools.length} tools (status ${res.status})`);
283
+ }
284
+ catch (err) {
285
+ debugLog(`[elasticdash] Catalog push failed: ${err instanceof Error ? err.message : String(err)}`);
286
+ }
287
+ }
288
+ /**
289
+ * Gracefully shut down observability: flush remaining events, send session_end,
290
+ * stop heartbeat, and clear context.
291
+ */
292
+ export async function shutdownObservability() {
293
+ const ctx = getObservabilityContext();
294
+ if (!ctx)
295
+ return;
296
+ // Flush any pending trace capture before shutdown
297
+ if (ctx.eventCollector && ctx.eventCollector.length > 0) {
298
+ const events = ctx.eventCollector;
299
+ ctx.eventCollector = undefined;
300
+ await maybeCaptureTrace(events, ctx.traceId);
301
+ }
302
+ // Stop heartbeat
303
+ if (heartbeatTimer) {
304
+ clearInterval(heartbeatTimer);
305
+ heartbeatTimer = null;
306
+ }
307
+ // Send session_end event
308
+ ctx.batcher.enqueue({
309
+ id: ctx.nextId(),
310
+ type: 'side_effect',
311
+ name: '__session_end__',
312
+ input: { sessionId: ctx.sessionId },
313
+ output: { uptime: process.uptime() },
314
+ timestamp: Date.now(),
315
+ durationMs: 0,
316
+ schemaVersion: 1,
317
+ });
318
+ // Disconnect socket
319
+ await disconnectFromBackend();
320
+ // Flush and shut down the batcher
321
+ await ctx.batcher.shutdown();
322
+ clearObservabilityContext();
323
+ debugLog(`[elasticdash] Observability shut down — sessionId=${ctx.sessionId}`);
324
+ }
325
+ /**
326
+ * Start a new trace for the current request/operation.
327
+ *
328
+ * Call this at the start of each request handler to group all tool/AI events
329
+ * under one trace, identified by the workflow name.
330
+ *
331
+ * The generated traceId encodes the workflow name and timestamp for easy
332
+ * parsing by the backend: `{workflowName}::{timestamp}::{shortId}`
333
+ *
334
+ * @param workflowName — the workflow/function being executed (e.g. 'chatStreamHandler')
335
+ * @returns The new traceId
336
+ *
337
+ * @example
338
+ * ```ts
339
+ * // In a route handler:
340
+ * startTrace('chatStreamHandler')
341
+ * // All subsequent wrapTool/wrapAI calls get traceId = "chatStreamHandler::1712851200000::a1b2c3d4"
342
+ * ```
343
+ */
344
+ export function startTrace(workflowName) {
345
+ const ctx = getObservabilityContext();
346
+ if (!ctx)
347
+ throw new Error('[elasticdash] startTrace: observability not initialised');
348
+ // Flush any pending trace capture from a previous startTrace() that had no endTrace()
349
+ if (ctx.eventCollector && ctx.eventCollector.length > 0) {
350
+ debugLog(`[elasticdash] startTrace: flushing ${ctx.eventCollector.length} events from previous trace`);
351
+ const events = ctx.eventCollector;
352
+ ctx.eventCollector = undefined;
353
+ maybeCaptureTrace(events, ctx.traceId).catch((err) => {
354
+ debugLog(`[elasticdash] Failed to capture trace: ${err instanceof Error ? err.message : String(err)}`);
355
+ });
356
+ }
357
+ const resolvedName = workflowName || ctx.defaultWorkflowName;
358
+ const timestamp = Date.now();
359
+ const shortId = randomUUID().slice(0, 8);
360
+ ctx.traceId = `${resolvedName}::${timestamp}::${shortId}`;
361
+ // When ELASTICDASH_CAPTURE_TRACE=1, start collecting events for disk trace
362
+ const captureEnabled = isTraceCaptureEnabled();
363
+ debugLog(`[elasticdash] startTrace: ${resolvedName}, capture=${captureEnabled}`);
364
+ if (captureEnabled) {
365
+ ctx.eventCollector = [];
366
+ }
367
+ // Emit a workflow event so the backend can discover the workflow name
368
+ // (same as wrapWorkflow, but without wrapping — for streaming handlers)
369
+ pushTelemetryEvent({
370
+ id: ctx.nextId(),
371
+ type: 'workflow',
372
+ name: resolvedName,
373
+ input: null,
374
+ output: null,
375
+ timestamp,
376
+ durationMs: 0,
377
+ schemaVersion: 1,
378
+ });
379
+ return ctx.traceId;
380
+ }
381
+ /**
382
+ * End the current trace. Resets the traceId so subsequent events (heartbeats,
383
+ * new requests) are not attributed to the completed workflow.
384
+ *
385
+ * Call this when a workflow/request handler finishes — especially for streaming
386
+ * handlers where the trace would otherwise persist indefinitely.
387
+ *
388
+ * @example
389
+ * ```ts
390
+ * startTrace('chatStreamHandler')
391
+ * // ... workflow logic ...
392
+ * endTrace()
393
+ * ```
394
+ */
395
+ export function endTrace() {
396
+ const ctx = getObservabilityContext();
397
+ debugLog(`[elasticdash] endTrace called, obsCtx=${!!ctx}, eventCollector=${ctx?.eventCollector?.length ?? 'none'}`);
398
+ if (!ctx)
399
+ return;
400
+ // Flush collected events to disk if trace capture is enabled
401
+ if (ctx.eventCollector && ctx.eventCollector.length > 0) {
402
+ debugLog(`[elasticdash] endTrace: flushing ${ctx.eventCollector.length} events to disk for traceId=${ctx.traceId}`);
403
+ const events = ctx.eventCollector;
404
+ ctx.eventCollector = undefined;
405
+ maybeCaptureTrace(events, ctx.traceId).catch((err) => {
406
+ debugLog(`[elasticdash] Failed to capture trace: ${err instanceof Error ? err.message : String(err)}`);
407
+ });
408
+ }
409
+ const timestamp = Date.now();
410
+ const shortId = randomUUID().slice(0, 8);
411
+ ctx.traceId = `${ctx.defaultWorkflowName}::${timestamp}::${shortId}`;
412
+ }
413
+ /**
414
+ * Wrap a workflow function so that every invocation automatically starts a new
415
+ * trace with the workflow name. All tool/AI calls within the function execution
416
+ * are grouped under that trace.
417
+ *
418
+ * Use this in `ed_workflows.ts` to automatically tag each workflow execution:
419
+ *
420
+ * @example
421
+ * ```ts
422
+ * export const chatStreamHandler = wrapWorkflow('chatStreamHandler', async (input) => {
423
+ * const result = await fetchUser(input.userId)
424
+ * const reply = await generateReply(result)
425
+ * return reply
426
+ * })
427
+ * ```
428
+ */
429
+ export function wrapWorkflow(name, fn) {
430
+ return async (...args) => {
431
+ const ctx = getObservabilityContext();
432
+ if (ctx) {
433
+ startTrace(name);
434
+ const collectedEvents = [];
435
+ ctx.eventCollector = collectedEvents;
436
+ const start = Date.now();
437
+ let result;
438
+ let error = undefined;
439
+ try {
440
+ result = await fn(...args);
441
+ }
442
+ catch (err) {
443
+ error = err;
444
+ result = undefined;
445
+ }
446
+ // Emit a single workflow event regardless of success or failure.
447
+ // Inner tool/AI events already record their own errors individually —
448
+ // the workflow event should reflect the workflow's own output, not
449
+ // escalate inner step failures to the workflow level.
450
+ pushTelemetryEvent({
451
+ id: ctx.nextId(),
452
+ type: 'workflow',
453
+ name,
454
+ input: args.length === 1 ? args[0] : args,
455
+ output: error !== undefined ? null : result,
456
+ timestamp: start,
457
+ durationMs: Date.now() - start,
458
+ schemaVersion: 1,
459
+ });
460
+ ctx.eventCollector = undefined;
461
+ // Persist trace to disk if ELASTICDASH_CAPTURE_TRACE=1
462
+ await maybeCaptureTrace(collectedEvents, ctx.traceId);
463
+ endTrace();
464
+ if (error !== undefined)
465
+ throw error;
466
+ return result;
467
+ }
468
+ return fn(...args);
469
+ };
470
+ }
471
+ //# sourceMappingURL=observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}