elasticdash-test 0.1.18-alpha-11 → 0.1.18-alpha-13

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.
package/dist/index.cjs CHANGED
@@ -2975,6 +2975,10 @@ async function executeTrigger(serverUrl, apiKey, trigger) {
2975
2975
  cwd,
2976
2976
  tools
2977
2977
  );
2978
+ if (!result.ok) {
2979
+ debugLog(`[elasticdash] Trigger ${trigger.triggerId} step=${step.eventName} run=${i} FAILED:
2980
+ ${result.error}`);
2981
+ }
2978
2982
  runs.push({
2979
2983
  runIndex: i,
2980
2984
  input: step.input,
@@ -18,7 +18,6 @@ import 'dotenv/config';
18
18
  * will replay from frozen data instead of hitting real services.
19
19
  */
20
20
  import { pathToFileURL } from 'node:url';
21
- import { interceptFetch, restoreFetch } from './interceptors/http.js';
22
21
  const RESULT_PREFIX = '__ELASTICDASH_RESULT__:';
23
22
  function writeResult(result) {
24
23
  return new Promise((resolve, reject) => {
@@ -27,50 +26,70 @@ function writeResult(result) {
27
26
  }
28
27
  /**
29
28
  * Set up frozen event replay context.
30
- * - Sets the global HttpRunContext so wrapDB-wrapped clients replay frozen DB events
31
- * - Patches globalThis.fetch so HTTP calls replay frozen HTTP events
29
+ *
30
+ * For HTTP events: uses **URL-based matching** via a fetch wrapper. The
31
+ * ID-based matching in HttpRunContext doesn't work for observability-mode
32
+ * reruns because wrapTool/wrapAI also consume nextId() IDs, causing the
33
+ * sequential counter to drift away from the frozen event IDs.
34
+ *
35
+ * For DB events: uses the HttpRunContext frozen map so wrapDB-wrapped
36
+ * clients can replay them by sequential ID (DB calls don't share the
37
+ * counter with tool/AI wrappers in the same way).
32
38
  */
33
39
  async function setupFrozenContext(frozenEvents) {
34
40
  if (frozenEvents.length === 0)
35
41
  return;
36
- // Import the SDK's context setup
37
- try {
38
- const telemetryPush = await import('./interceptors/telemetry-push.js');
39
- // Build WorkflowEvent-compatible objects with sequential IDs
40
- const workflowEvents = frozenEvents.map((e, i) => ({
41
- id: i + 1,
42
- type: e.type,
43
- name: e.name,
44
- input: e.input,
45
- output: e.output,
46
- timestamp: e.timestamp,
47
- durationMs: e.durationMs ?? 0,
48
- streamed: e.streamed,
49
- streamRaw: e.streamRaw,
50
- }));
51
- // Set up the global context — this makes getHttpRunContext() return a context
52
- // with these frozen events, so wrapDB and fetch interceptors will use them.
53
- telemetryPush.setHttpRunContext('frozen-rerun', '');
54
- // Now set the frozen events on the global context
55
- const ctx = telemetryPush.getHttpRunContext();
56
- if (ctx) {
57
- for (const e of workflowEvents) {
58
- ctx.frozenEvents.set(e.id, e);
42
+ // Always install URL-based fetch replay for HTTP events — this is the
43
+ // reliable matching strategy for tool reruns in subprocesses.
44
+ installFrozenFetchFallback(frozenEvents);
45
+ // Also set up HttpRunContext for DB frozen events (wrapDB uses ID-based matching).
46
+ const dbEvents = frozenEvents.filter(e => e.type === 'db');
47
+ if (dbEvents.length > 0) {
48
+ try {
49
+ const telemetryPush = await import('./interceptors/telemetry-push.js');
50
+ const workflowEvents = dbEvents.map((e, i) => ({
51
+ id: i + 1,
52
+ type: e.type,
53
+ name: e.name,
54
+ input: e.input,
55
+ output: e.output,
56
+ timestamp: e.timestamp,
57
+ durationMs: e.durationMs ?? 0,
58
+ streamed: e.streamed,
59
+ streamRaw: e.streamRaw,
60
+ }));
61
+ telemetryPush.setHttpRunContext('frozen-rerun', '');
62
+ const ctx = telemetryPush.getHttpRunContext();
63
+ if (ctx) {
64
+ for (const e of workflowEvents) {
65
+ ctx.frozenEvents.set(e.id, e);
66
+ }
59
67
  }
60
68
  }
69
+ catch {
70
+ // DB replay not available — tool will hit real DB
71
+ }
61
72
  }
62
- catch {
63
- // SDK internals not available in this subprocess fall back to fetch-only interception
64
- installFrozenFetchFallback(frozenEvents);
73
+ }
74
+ /** Saved original fetch so we can restore after the tool runs. */
75
+ let savedOriginalFetch = null;
76
+ function restoreFrozenFetch() {
77
+ if (savedOriginalFetch) {
78
+ globalThis.fetch = savedOriginalFetch;
79
+ savedOriginalFetch = null;
65
80
  }
66
81
  }
67
82
  /**
68
- * Fallback: if SDK internals aren't importable, at least intercept fetch for HTTP events.
83
+ * Intercept fetch for HTTP frozen events using URL-based matching.
84
+ * This is the primary replay mechanism for tool reruns — it matches
85
+ * by request URL rather than sequential ID, which is robust against
86
+ * ID counter drift from wrapTool/wrapAI consuming IDs.
69
87
  */
70
88
  function installFrozenFetchFallback(frozenEvents) {
71
89
  const httpEvents = frozenEvents.filter(e => e.type === 'http');
72
90
  if (httpEvents.length === 0)
73
91
  return;
92
+ savedOriginalFetch = globalThis.fetch;
74
93
  const originalFetch = globalThis.fetch;
75
94
  const usageCounts = new Map();
76
95
  globalThis.fetch = async (input, init) => {
@@ -110,15 +129,12 @@ async function main() {
110
129
  return;
111
130
  }
112
131
  const { toolsModulePath, toolName, args, frozenEvents } = payload;
113
- // Set up frozen event context before running the tool
132
+ // Set up frozen event context before running the tool.
133
+ // Uses URL-based matching for HTTP events (reliable for observability reruns)
134
+ // and ID-based matching for DB events.
114
135
  const hasFrozen = frozenEvents && frozenEvents.length > 0;
115
136
  if (hasFrozen) {
116
137
  await setupFrozenContext(frozenEvents);
117
- // Install the full fetch interceptor so frozen HTTP events are replayed.
118
- // setupFrozenContext loads frozen events into HttpRunContext, but without
119
- // interceptFetch() the events are never read — fetch hits real services
120
- // which can fail (e.g. "Invalid URL" for relative URLs).
121
- interceptFetch();
122
138
  }
123
139
  try {
124
140
  let mod;
@@ -144,12 +160,13 @@ async function main() {
144
160
  catch (e) {
145
161
  const err = e;
146
162
  const errorMsg = err.stack || err.message || String(e);
163
+ process.stderr.write(`[elasticdash-worker] Tool execution failed:\n${errorMsg}\n`);
147
164
  await writeResult({ ok: false, error: errorMsg });
148
165
  originalExit(1);
149
166
  }
150
167
  finally {
151
168
  if (hasFrozen)
152
- restoreFetch();
169
+ restoreFrozenFetch();
153
170
  }
154
171
  }
155
172
  main();
@@ -1 +1 @@
1
- {"version":3,"file":"tool-runner-worker.js","sourceRoot":"","sources":["../src/tool-runner-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-runner-worker.js","sourceRoot":"","sources":["../src/tool-runner-worker.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,CAAC;AAAC,UAAkB,CAAC,sBAAsB,GAAG,IAAI,CAAA;AAElD,iDAAiD;AACjD,OAAO,eAAe,CAAA;AAEtB;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,aAAa,GAAG,yBAAyB,CAAA;AAE/C,SAAS,WAAW,CAAC,MAAe;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1E,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAC9B,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAcD;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,kBAAkB,CAAC,YAA2B;IAC3D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAErC,sEAAsE;IACtE,8DAA8D;IAC9D,0BAA0B,CAAC,YAAY,CAAC,CAAA;IAExC,mFAAmF;IACnF,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC1D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAA;YACtE,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7C,EAAE,EAAE,CAAC,GAAG,CAAC;gBACT,IAAI,EAAE,CAAC,CAAC,IAAY;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC;gBAC7B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC,CAAC,CAAA;YACH,aAAa,CAAC,iBAAiB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;YACnD,MAAM,GAAG,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAA;YAC7C,IAAI,GAAG,EAAE,CAAC;gBACR,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;oBAC/B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAQ,CAAC,CAAA;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,IAAI,kBAAkB,GAAmC,IAAI,CAAA;AAE7D,SAAS,kBAAkB;IACzB,IAAI,kBAAkB,EAAE,CAAC;QACvB,UAAU,CAAC,KAAK,GAAG,kBAAkB,CAAA;QACrC,kBAAkB,GAAG,IAAI,CAAA;IAC3B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CAAC,YAA2B;IAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;IAC9D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAEnC,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAA;IACrC,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAA;IACtC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE7C,UAAU,CAAC,KAAK,GAAG,KAAK,EAAE,KAA6B,EAAE,IAAkB,EAAqB,EAAE;QAChG,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAE,KAAiB,CAAC,GAAG,CAAA;QAEhH,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACpC,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAK,CAAC,CAAC,KAAiC,CAAC;gBACzG,CAAC,CAAE,CAAC,CAAC,KAAiC,CAAC,GAAG;gBAC1C,CAAC,CAAC,IAAI,CAAA;YACR,OAAO,SAAS,KAAK,GAAG,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YAC9D,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,CAAC,CAAA;YAEnC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC3F,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,EAAE;aACpE,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC,CAAA;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE/C,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,GAAG,IAAI,KAAK,CAAA;IACd,CAAC;IAED,IAAI,OAAqG,CAAA;IACzG,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAwB,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACtF,YAAY,CAAC,CAAC,CAAC,CAAA;QACf,OAAM;IACR,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,OAAO,CAAA;IAEjE,uDAAuD;IACvD,8EAA8E;IAC9E,uCAAuC;IACvC,MAAM,SAAS,GAAG,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAA;IACzD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,CAAC;QACH,IAAI,GAAQ,CAAA;QACZ,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAA;QACzD,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,MAAM,EAAE,GAAG,SAAkB,CAAA;YAC7B,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAClG,YAAY,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAA;QACxB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,QAAQ,8CAA8C,EAAE,CAAC,CAAA;YACnG,YAAY,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;QACvC,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;QAC9C,YAAY,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAU,CAAA;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,QAAQ,IAAI,CAAC,CAAA;QAClF,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;QACjD,YAAY,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;YAAS,CAAC;QACT,IAAI,SAAS;YAAE,kBAAkB,EAAE,CAAA;IACrC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-executor.d.ts","sourceRoot":"","sources":["../src/trigger-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,wBAAwB,CAAA;AA8BxE;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAmHf"}
1
+ {"version":3,"file":"trigger-executor.d.ts","sourceRoot":"","sources":["../src/trigger-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,wBAAwB,CAAA;AA8BxE;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAuHf"}
@@ -71,6 +71,9 @@ export async function executeTrigger(serverUrl, apiKey, trigger) {
71
71
  provider: step.provider,
72
72
  frozenEvents,
73
73
  }, cwd, tools);
74
+ if (!result.ok) {
75
+ debugLog(`[elasticdash] Trigger ${trigger.triggerId} step=${step.eventName} run=${i} FAILED:\n${result.error}`);
76
+ }
74
77
  runs.push({
75
78
  runIndex: i,
76
79
  input: step.input,
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-executor.js","sourceRoot":"","sources":["../src/trigger-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trigger-executor.js","sourceRoot":"","sources":["../src/trigger-executor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elasticdash-test",
3
- "version": "0.1.18-alpha-11",
3
+ "version": "0.1.18-alpha-13",
4
4
  "description": "AI-native test runner for ElasticDash workflow testing",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,7 +20,6 @@ import 'dotenv/config'
20
20
  */
21
21
 
22
22
  import { pathToFileURL } from 'node:url'
23
- import { interceptFetch, restoreFetch } from './interceptors/http.js'
24
23
 
25
24
  const RESULT_PREFIX = '__ELASTICDASH_RESULT__:'
26
25
 
@@ -46,53 +45,73 @@ interface FrozenEvent {
46
45
 
47
46
  /**
48
47
  * Set up frozen event replay context.
49
- * - Sets the global HttpRunContext so wrapDB-wrapped clients replay frozen DB events
50
- * - Patches globalThis.fetch so HTTP calls replay frozen HTTP events
48
+ *
49
+ * For HTTP events: uses **URL-based matching** via a fetch wrapper. The
50
+ * ID-based matching in HttpRunContext doesn't work for observability-mode
51
+ * reruns because wrapTool/wrapAI also consume nextId() IDs, causing the
52
+ * sequential counter to drift away from the frozen event IDs.
53
+ *
54
+ * For DB events: uses the HttpRunContext frozen map so wrapDB-wrapped
55
+ * clients can replay them by sequential ID (DB calls don't share the
56
+ * counter with tool/AI wrappers in the same way).
51
57
  */
52
58
  async function setupFrozenContext(frozenEvents: FrozenEvent[]): Promise<void> {
53
59
  if (frozenEvents.length === 0) return
54
60
 
55
- // Import the SDK's context setup
56
- try {
57
- const telemetryPush = await import('./interceptors/telemetry-push.js')
58
-
59
- // Build WorkflowEvent-compatible objects with sequential IDs
60
- const workflowEvents = frozenEvents.map((e, i) => ({
61
- id: i + 1,
62
- type: e.type as 'http' | 'db',
63
- name: e.name,
64
- input: e.input,
65
- output: e.output,
66
- timestamp: e.timestamp,
67
- durationMs: e.durationMs ?? 0,
68
- streamed: e.streamed,
69
- streamRaw: e.streamRaw,
70
- }))
71
-
72
- // Set up the global context — this makes getHttpRunContext() return a context
73
- // with these frozen events, so wrapDB and fetch interceptors will use them.
74
- telemetryPush.setHttpRunContext('frozen-rerun', '')
75
-
76
- // Now set the frozen events on the global context
77
- const ctx = telemetryPush.getHttpRunContext()
78
- if (ctx) {
79
- for (const e of workflowEvents) {
80
- ctx.frozenEvents.set(e.id, e as any)
61
+ // Always install URL-based fetch replay for HTTP events — this is the
62
+ // reliable matching strategy for tool reruns in subprocesses.
63
+ installFrozenFetchFallback(frozenEvents)
64
+
65
+ // Also set up HttpRunContext for DB frozen events (wrapDB uses ID-based matching).
66
+ const dbEvents = frozenEvents.filter(e => e.type === 'db')
67
+ if (dbEvents.length > 0) {
68
+ try {
69
+ const telemetryPush = await import('./interceptors/telemetry-push.js')
70
+ const workflowEvents = dbEvents.map((e, i) => ({
71
+ id: i + 1,
72
+ type: e.type as 'db',
73
+ name: e.name,
74
+ input: e.input,
75
+ output: e.output,
76
+ timestamp: e.timestamp,
77
+ durationMs: e.durationMs ?? 0,
78
+ streamed: e.streamed,
79
+ streamRaw: e.streamRaw,
80
+ }))
81
+ telemetryPush.setHttpRunContext('frozen-rerun', '')
82
+ const ctx = telemetryPush.getHttpRunContext()
83
+ if (ctx) {
84
+ for (const e of workflowEvents) {
85
+ ctx.frozenEvents.set(e.id, e as any)
86
+ }
81
87
  }
88
+ } catch {
89
+ // DB replay not available — tool will hit real DB
82
90
  }
83
- } catch {
84
- // SDK internals not available in this subprocess — fall back to fetch-only interception
85
- installFrozenFetchFallback(frozenEvents)
91
+ }
92
+ }
93
+
94
+ /** Saved original fetch so we can restore after the tool runs. */
95
+ let savedOriginalFetch: typeof globalThis.fetch | null = null
96
+
97
+ function restoreFrozenFetch(): void {
98
+ if (savedOriginalFetch) {
99
+ globalThis.fetch = savedOriginalFetch
100
+ savedOriginalFetch = null
86
101
  }
87
102
  }
88
103
 
89
104
  /**
90
- * Fallback: if SDK internals aren't importable, at least intercept fetch for HTTP events.
105
+ * Intercept fetch for HTTP frozen events using URL-based matching.
106
+ * This is the primary replay mechanism for tool reruns — it matches
107
+ * by request URL rather than sequential ID, which is robust against
108
+ * ID counter drift from wrapTool/wrapAI consuming IDs.
91
109
  */
92
110
  function installFrozenFetchFallback(frozenEvents: FrozenEvent[]): void {
93
111
  const httpEvents = frozenEvents.filter(e => e.type === 'http')
94
112
  if (httpEvents.length === 0) return
95
113
 
114
+ savedOriginalFetch = globalThis.fetch
96
115
  const originalFetch = globalThis.fetch
97
116
  const usageCounts = new Map<string, number>()
98
117
 
@@ -141,15 +160,12 @@ async function main() {
141
160
 
142
161
  const { toolsModulePath, toolName, args, frozenEvents } = payload
143
162
 
144
- // Set up frozen event context before running the tool
163
+ // Set up frozen event context before running the tool.
164
+ // Uses URL-based matching for HTTP events (reliable for observability reruns)
165
+ // and ID-based matching for DB events.
145
166
  const hasFrozen = frozenEvents && frozenEvents.length > 0
146
167
  if (hasFrozen) {
147
168
  await setupFrozenContext(frozenEvents)
148
- // Install the full fetch interceptor so frozen HTTP events are replayed.
149
- // setupFrozenContext loads frozen events into HttpRunContext, but without
150
- // interceptFetch() the events are never read — fetch hits real services
151
- // which can fail (e.g. "Invalid URL" for relative URLs).
152
- interceptFetch()
153
169
  }
154
170
 
155
171
  try {
@@ -175,10 +191,11 @@ async function main() {
175
191
  } catch (e) {
176
192
  const err = e as Error
177
193
  const errorMsg = err.stack || err.message || String(e)
194
+ process.stderr.write(`[elasticdash-worker] Tool execution failed:\n${errorMsg}\n`)
178
195
  await writeResult({ ok: false, error: errorMsg })
179
196
  originalExit(1)
180
197
  } finally {
181
- if (hasFrozen) restoreFetch()
198
+ if (hasFrozen) restoreFrozenFetch()
182
199
  }
183
200
  }
184
201
 
@@ -108,6 +108,10 @@ export async function executeTrigger(
108
108
  tools,
109
109
  )
110
110
 
111
+ if (!result.ok) {
112
+ debugLog(`[elasticdash] Trigger ${trigger.triggerId} step=${step.eventName} run=${i} FAILED:\n${result.error}`)
113
+ }
114
+
111
115
  runs.push({
112
116
  runIndex: i,
113
117
  input: step.input,