elasticdash-test 0.1.16 → 0.1.17-alpha-2

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 (86) hide show
  1. package/dist/cloud-client.d.ts +34 -0
  2. package/dist/cloud-client.d.ts.map +1 -0
  3. package/dist/cloud-client.js +103 -0
  4. package/dist/cloud-client.js.map +1 -0
  5. package/dist/dashboard-server.d.ts.map +1 -1
  6. package/dist/dashboard-server.js +425 -90
  7. package/dist/dashboard-server.js.map +1 -1
  8. package/dist/evaluators/determinism.d.ts +3 -0
  9. package/dist/evaluators/determinism.d.ts.map +1 -0
  10. package/dist/evaluators/determinism.js +116 -0
  11. package/dist/evaluators/determinism.js.map +1 -0
  12. package/dist/evaluators/index.d.ts +4 -0
  13. package/dist/evaluators/index.d.ts.map +1 -0
  14. package/dist/evaluators/index.js +61 -0
  15. package/dist/evaluators/index.js.map +1 -0
  16. package/dist/evaluators/latency-budget.d.ts +3 -0
  17. package/dist/evaluators/latency-budget.d.ts.map +1 -0
  18. package/dist/evaluators/latency-budget.js +45 -0
  19. package/dist/evaluators/latency-budget.js.map +1 -0
  20. package/dist/evaluators/llm-judge.d.ts +3 -0
  21. package/dist/evaluators/llm-judge.d.ts.map +1 -0
  22. package/dist/evaluators/llm-judge.js +122 -0
  23. package/dist/evaluators/llm-judge.js.map +1 -0
  24. package/dist/evaluators/output-contains.d.ts +3 -0
  25. package/dist/evaluators/output-contains.d.ts.map +1 -0
  26. package/dist/evaluators/output-contains.js +52 -0
  27. package/dist/evaluators/output-contains.js.map +1 -0
  28. package/dist/evaluators/output-schema.d.ts +3 -0
  29. package/dist/evaluators/output-schema.d.ts.map +1 -0
  30. package/dist/evaluators/output-schema.js +58 -0
  31. package/dist/evaluators/output-schema.js.map +1 -0
  32. package/dist/evaluators/token-budget.d.ts +3 -0
  33. package/dist/evaluators/token-budget.d.ts.map +1 -0
  34. package/dist/evaluators/token-budget.js +45 -0
  35. package/dist/evaluators/token-budget.js.map +1 -0
  36. package/dist/evaluators/types.d.ts +103 -0
  37. package/dist/evaluators/types.d.ts.map +1 -0
  38. package/dist/evaluators/types.js +6 -0
  39. package/dist/evaluators/types.js.map +1 -0
  40. package/dist/html/dashboard.html +359 -73
  41. package/dist/index.cjs +253 -14
  42. package/dist/index.d.ts +2 -2
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/interceptors/telemetry-push.d.ts +40 -0
  47. package/dist/interceptors/telemetry-push.d.ts.map +1 -1
  48. package/dist/interceptors/telemetry-push.js +129 -6
  49. package/dist/interceptors/telemetry-push.js.map +1 -1
  50. package/dist/interceptors/tool.d.ts.map +1 -1
  51. package/dist/interceptors/tool.js +8 -1
  52. package/dist/interceptors/tool.js.map +1 -1
  53. package/dist/interceptors/workflow-ai.d.ts.map +1 -1
  54. package/dist/interceptors/workflow-ai.js +21 -6
  55. package/dist/interceptors/workflow-ai.js.map +1 -1
  56. package/dist/internals/mock-resolver.d.ts +70 -2
  57. package/dist/internals/mock-resolver.d.ts.map +1 -1
  58. package/dist/internals/mock-resolver.js +157 -6
  59. package/dist/internals/mock-resolver.js.map +1 -1
  60. package/dist/test-group/cli.d.ts +8 -0
  61. package/dist/test-group/cli.d.ts.map +1 -0
  62. package/dist/test-group/cli.js +162 -0
  63. package/dist/test-group/cli.js.map +1 -0
  64. package/dist/test-group/git-context.d.ts +3 -0
  65. package/dist/test-group/git-context.d.ts.map +1 -0
  66. package/dist/test-group/git-context.js +59 -0
  67. package/dist/test-group/git-context.js.map +1 -0
  68. package/dist/test-group/reporter.d.ts +4 -0
  69. package/dist/test-group/reporter.d.ts.map +1 -0
  70. package/dist/test-group/reporter.js +54 -0
  71. package/dist/test-group/reporter.js.map +1 -0
  72. package/dist/test-group/runner.d.ts +18 -0
  73. package/dist/test-group/runner.d.ts.map +1 -0
  74. package/dist/test-group/runner.js +234 -0
  75. package/dist/test-group/runner.js.map +1 -0
  76. package/dist/workflow-runner-worker.js +7 -1
  77. package/dist/workflow-runner-worker.js.map +1 -1
  78. package/package.json +1 -1
  79. package/src/dashboard-server.ts +101 -28
  80. package/src/html/dashboard.html +359 -73
  81. package/src/index.ts +2 -2
  82. package/src/interceptors/telemetry-push.ts +159 -7
  83. package/src/interceptors/tool.ts +9 -1
  84. package/src/interceptors/workflow-ai.ts +22 -6
  85. package/src/internals/mock-resolver.ts +190 -7
  86. package/src/workflow-runner-worker.ts +11 -3
package/dist/index.cjs CHANGED
@@ -313,6 +313,7 @@ __export(index_exports, {
313
313
  interceptFetch: () => interceptFetch,
314
314
  interceptRandom: () => interceptRandom,
315
315
  isWorker: () => isWorker,
316
+ lookupMockEntry: () => lookupMockEntry,
316
317
  pushTelemetryEvent: () => pushTelemetryEvent,
317
318
  readVercelAIStream: () => readVercelAIStream,
318
319
  recordToolCall: () => recordToolCall,
@@ -322,6 +323,7 @@ __export(index_exports, {
322
323
  resolveMock: () => resolveMock,
323
324
  resolvePromptMock: () => resolvePromptMock,
324
325
  resolveTaskInput: () => resolveTaskInput,
326
+ resolveUserPromptMock: () => resolveUserPromptMock,
325
327
  restoreDateNow: () => restoreDateNow,
326
328
  restoreFetch: () => restoreFetch,
327
329
  restoreRandom: () => restoreRandom,
@@ -2047,9 +2049,109 @@ function resolvePromptMock(input) {
2047
2049
  if (!mocks || Object.keys(mocks).length === 0) return void 0;
2048
2050
  const systemPrompt = extractSystemPrompt(input);
2049
2051
  if (systemPrompt === void 0) return void 0;
2050
- const newSystemPrompt = mocks[systemPrompt];
2051
- if (newSystemPrompt === void 0) return void 0;
2052
- return replaceSystemPrompt(input, newSystemPrompt);
2052
+ const match = lookupMockEntry(mocks, systemPrompt);
2053
+ if (!match) return void 0;
2054
+ const entry = match.entry;
2055
+ if (typeof entry === "string") {
2056
+ return replaceSystemPrompt(input, entry);
2057
+ }
2058
+ if (entry.mode === "live") return void 0;
2059
+ if (!g4["__ELASTICDASH_PROMPT_CALL_COUNTERS__"]) {
2060
+ g4["__ELASTICDASH_PROMPT_CALL_COUNTERS__"] = {};
2061
+ }
2062
+ const counters = g4["__ELASTICDASH_PROMPT_CALL_COUNTERS__"];
2063
+ counters[match.key] = (counters[match.key] ?? 0) + 1;
2064
+ const callNumber = counters[match.key];
2065
+ if (entry.mode === "replace-all") {
2066
+ return replaceSystemPrompt(input, entry.replacement);
2067
+ }
2068
+ if (entry.mode === "replace-specific") {
2069
+ const indices = entry.callIndices ?? [];
2070
+ if (indices.includes(callNumber)) {
2071
+ return replaceSystemPrompt(input, entry.replacement);
2072
+ }
2073
+ }
2074
+ return void 0;
2075
+ }
2076
+ function stripJsonQuotes(s) {
2077
+ if (s.length >= 2 && s.startsWith('"') && s.endsWith('"')) {
2078
+ try {
2079
+ const parsed = JSON.parse(s);
2080
+ if (typeof parsed === "string") return parsed;
2081
+ } catch {
2082
+ }
2083
+ }
2084
+ return s;
2085
+ }
2086
+ function lookupMockEntry(mocks, text) {
2087
+ if (mocks[text]) return { key: text, entry: mocks[text] };
2088
+ const stripped = stripJsonQuotes(text);
2089
+ if (stripped !== text && mocks[stripped]) return { key: stripped, entry: mocks[stripped] };
2090
+ const quoted = JSON.stringify(text);
2091
+ if (quoted !== text && mocks[quoted]) return { key: quoted, entry: mocks[quoted] };
2092
+ return void 0;
2093
+ }
2094
+ function extractUserPrompts(input) {
2095
+ if (!input || typeof input !== "object") return [];
2096
+ const o = input;
2097
+ const msgs = Array.isArray(o.messages) ? o.messages : Array.isArray(input) ? input : null;
2098
+ if (!msgs) return [];
2099
+ const results = [];
2100
+ for (const m of msgs) {
2101
+ if (m && typeof m === "object") {
2102
+ const msg = m;
2103
+ if (msg.role === "user" && typeof msg.content === "string") results.push(msg.content);
2104
+ }
2105
+ }
2106
+ return results;
2107
+ }
2108
+ function replaceUserPrompt(input, originalText, newText) {
2109
+ if (!input || typeof input !== "object") return input;
2110
+ const o = input;
2111
+ const replaceInMsgs = (msgs) => msgs.map((m) => {
2112
+ if (m && typeof m === "object") {
2113
+ const msg = m;
2114
+ if (msg.role === "user" && typeof msg.content === "string" && msg.content === originalText) {
2115
+ return { ...msg, content: newText };
2116
+ }
2117
+ }
2118
+ return m;
2119
+ });
2120
+ if (Array.isArray(input)) return replaceInMsgs(input);
2121
+ if (Array.isArray(o.messages)) return { ...o, messages: replaceInMsgs(o.messages) };
2122
+ return input;
2123
+ }
2124
+ function resolveUserPromptMock(input) {
2125
+ const g4 = globalThis;
2126
+ const mocks = g4["__ELASTICDASH_USER_PROMPT_MOCKS__"];
2127
+ if (!mocks || Object.keys(mocks).length === 0) return void 0;
2128
+ const userPrompts = extractUserPrompts(input);
2129
+ if (userPrompts.length === 0) return void 0;
2130
+ if (!g4["__ELASTICDASH_USER_PROMPT_CALL_COUNTERS__"]) {
2131
+ g4["__ELASTICDASH_USER_PROMPT_CALL_COUNTERS__"] = {};
2132
+ }
2133
+ const counters = g4["__ELASTICDASH_USER_PROMPT_CALL_COUNTERS__"];
2134
+ const uniqueTexts = Array.from(new Set(userPrompts));
2135
+ let modified = false;
2136
+ let result = input;
2137
+ for (const text of uniqueTexts) {
2138
+ const match = lookupMockEntry(mocks, text);
2139
+ if (!match || match.entry.mode === "live") continue;
2140
+ const entry = match.entry;
2141
+ counters[match.key] = (counters[match.key] ?? 0) + 1;
2142
+ const callNumber = counters[match.key];
2143
+ if (entry.mode === "replace-all") {
2144
+ result = replaceUserPrompt(result, text, entry.replacement);
2145
+ modified = true;
2146
+ } else if (entry.mode === "replace-specific") {
2147
+ const indices = entry.callIndices ?? [];
2148
+ if (indices.includes(callNumber)) {
2149
+ result = replaceUserPrompt(result, text, entry.replacement);
2150
+ modified = true;
2151
+ }
2152
+ }
2153
+ }
2154
+ return modified ? result : void 0;
2053
2155
  }
2054
2156
  function resolveAIMock(modelName) {
2055
2157
  const g4 = globalThis;
@@ -2139,12 +2241,24 @@ var g3 = globalThis;
2139
2241
  var HTTP_RUN_ALS_KEY = "__elasticdash_http_run_als__";
2140
2242
  var httpRunAls = g3[HTTP_RUN_ALS_KEY] ?? new import_node_async_hooks3.AsyncLocalStorage();
2141
2243
  if (!g3[HTTP_RUN_ALS_KEY]) g3[HTTP_RUN_ALS_KEY] = httpRunAls;
2142
- function buildContext(runId, dashboardUrl, frozenEvents, promptMocksRecord = {}) {
2244
+ function buildContext(runId, dashboardUrl, frozenEvents, promptMocksRecord = {}, toolMockConfig, aiMockConfig, userPromptMocks) {
2143
2245
  let counter = 0;
2144
2246
  const frozenMap = /* @__PURE__ */ new Map();
2145
2247
  for (const e of frozenEvents) frozenMap.set(e.id, e);
2146
2248
  const promptMocksMap = new Map(Object.entries(promptMocksRecord));
2147
- return { runId, dashboardUrl, nextId: () => ++counter, frozenEvents: frozenMap, promptMocks: promptMocksMap };
2249
+ return {
2250
+ runId,
2251
+ dashboardUrl,
2252
+ nextId: () => ++counter,
2253
+ frozenEvents: frozenMap,
2254
+ promptMocks: promptMocksMap,
2255
+ userPromptMocks,
2256
+ toolMockConfig,
2257
+ aiMockConfig,
2258
+ toolCallCounters: {},
2259
+ aiCallCounters: {},
2260
+ userPromptCallCounters: {}
2261
+ };
2148
2262
  }
2149
2263
  function setHttpRunContext(runId, dashboardUrl) {
2150
2264
  httpRunAls.enterWith(buildContext(runId, dashboardUrl, [], {}));
@@ -2152,16 +2266,28 @@ function setHttpRunContext(runId, dashboardUrl) {
2152
2266
  async function initHttpRunContext(runId, dashboardUrl) {
2153
2267
  let frozenEvents = [];
2154
2268
  let promptMocks = {};
2269
+ let toolMockConfig;
2270
+ let aiMockConfig;
2271
+ let userPromptMocks;
2155
2272
  try {
2156
2273
  const res = await fetch(`${dashboardUrl}/api/run-configs/${runId}`);
2157
2274
  if (res.ok) {
2158
2275
  const data = await res.json();
2159
2276
  frozenEvents = Array.isArray(data.frozenEvents) ? data.frozenEvents : [];
2160
2277
  promptMocks = data.promptMocks && typeof data.promptMocks === "object" && !Array.isArray(data.promptMocks) ? data.promptMocks : {};
2278
+ if (data.toolMockConfig && typeof data.toolMockConfig === "object" && !Array.isArray(data.toolMockConfig)) {
2279
+ toolMockConfig = data.toolMockConfig;
2280
+ }
2281
+ if (data.aiMockConfig && typeof data.aiMockConfig === "object" && !Array.isArray(data.aiMockConfig)) {
2282
+ aiMockConfig = data.aiMockConfig;
2283
+ }
2284
+ if (data.userPromptMocks && typeof data.userPromptMocks === "object" && !Array.isArray(data.userPromptMocks)) {
2285
+ userPromptMocks = data.userPromptMocks;
2286
+ }
2161
2287
  }
2162
2288
  } catch {
2163
2289
  }
2164
- httpRunAls.enterWith(buildContext(runId, dashboardUrl, frozenEvents, promptMocks));
2290
+ httpRunAls.enterWith(buildContext(runId, dashboardUrl, frozenEvents, promptMocks, toolMockConfig, aiMockConfig, userPromptMocks));
2165
2291
  }
2166
2292
  function getHttpRunContext() {
2167
2293
  return httpRunAls.getStore();
@@ -2192,6 +2318,79 @@ function getHttpPromptMock(input) {
2192
2318
  }
2193
2319
  return replaceSystemPrompt(input, newSystemPrompt);
2194
2320
  }
2321
+ function getHttpUserPromptMock(input) {
2322
+ const ctx = httpRunAls.getStore();
2323
+ if (!ctx?.userPromptMocks || Object.keys(ctx.userPromptMocks).length === 0) return void 0;
2324
+ const userPrompts = extractUserPrompts(input);
2325
+ if (userPrompts.length === 0) return void 0;
2326
+ const mocks = ctx.userPromptMocks;
2327
+ const counters = ctx.userPromptCallCounters;
2328
+ const uniqueTexts = Array.from(new Set(userPrompts));
2329
+ let modified = false;
2330
+ let result = input;
2331
+ for (const text of uniqueTexts) {
2332
+ const match = lookupMockEntry(mocks, text);
2333
+ if (!match || match.entry.mode === "live") continue;
2334
+ const entry = match.entry;
2335
+ counters[match.key] = (counters[match.key] ?? 0) + 1;
2336
+ const callNumber = counters[match.key];
2337
+ if (entry.mode === "replace-all") {
2338
+ result = replaceUserPrompt(result, text, entry.replacement);
2339
+ modified = true;
2340
+ } else if (entry.mode === "replace-specific") {
2341
+ const indices = entry.callIndices ?? [];
2342
+ if (indices.includes(callNumber)) {
2343
+ result = replaceUserPrompt(result, text, entry.replacement);
2344
+ modified = true;
2345
+ }
2346
+ }
2347
+ }
2348
+ return modified ? result : void 0;
2349
+ }
2350
+ function getHttpToolMock(toolName) {
2351
+ const ctx = httpRunAls.getStore();
2352
+ if (!ctx?.toolMockConfig) return { mocked: false };
2353
+ const entry = ctx.toolMockConfig[toolName];
2354
+ if (!entry || entry.mode === "live") return { mocked: false };
2355
+ ctx.toolCallCounters[toolName] = (ctx.toolCallCounters[toolName] ?? 0) + 1;
2356
+ const callNumber = ctx.toolCallCounters[toolName];
2357
+ if (entry.mode === "mock-all") {
2358
+ const data = entry.mockData ?? {};
2359
+ const raw = data[callNumber] !== void 0 ? data[callNumber] : data[0];
2360
+ return { mocked: true, result: normaliseMockResult(raw) };
2361
+ }
2362
+ if (entry.mode === "mock-specific") {
2363
+ const indices = entry.callIndices ?? [];
2364
+ if (indices.includes(callNumber)) {
2365
+ const data = entry.mockData ?? {};
2366
+ return { mocked: true, result: normaliseMockResult(data[callNumber]) };
2367
+ }
2368
+ return { mocked: false };
2369
+ }
2370
+ return { mocked: false };
2371
+ }
2372
+ function getHttpAIMock(modelName) {
2373
+ const ctx = httpRunAls.getStore();
2374
+ if (!ctx?.aiMockConfig) return { mocked: false };
2375
+ const entry = ctx.aiMockConfig[modelName];
2376
+ if (!entry || entry.mode === "live") return { mocked: false };
2377
+ ctx.aiCallCounters[modelName] = (ctx.aiCallCounters[modelName] ?? 0) + 1;
2378
+ const callNumber = ctx.aiCallCounters[modelName];
2379
+ if (entry.mode === "mock-all") {
2380
+ const data = entry.mockData ?? {};
2381
+ const raw = data[callNumber] !== void 0 ? data[callNumber] : data[0];
2382
+ return { mocked: true, result: normaliseMockResult(raw) };
2383
+ }
2384
+ if (entry.mode === "mock-specific") {
2385
+ const indices = entry.callIndices ?? [];
2386
+ if (indices.includes(callNumber)) {
2387
+ const data = entry.mockData ?? {};
2388
+ return { mocked: true, result: normaliseMockResult(data[callNumber]) };
2389
+ }
2390
+ return { mocked: false };
2391
+ }
2392
+ return { mocked: false };
2393
+ }
2195
2394
  function pushTelemetryEvent(event) {
2196
2395
  const ctx = httpRunAls.getStore();
2197
2396
  if (!ctx) {
@@ -2217,14 +2416,27 @@ function runInHttpContext(runId, dashboardUrl, callback) {
2217
2416
  async function runWithInitializedHttpContext(runId, dashboardUrl, callback) {
2218
2417
  let frozenEvents = [];
2219
2418
  let promptMocks = {};
2419
+ let toolMockConfig;
2420
+ let aiMockConfig;
2421
+ let userPromptMocks;
2220
2422
  try {
2221
2423
  const res = await fetch(`${dashboardUrl}/api/run-configs/${runId}`);
2222
2424
  if (res.ok) {
2223
2425
  const data = await res.json();
2224
2426
  frozenEvents = Array.isArray(data.frozenEvents) ? data.frozenEvents : [];
2225
2427
  promptMocks = data.promptMocks && typeof data.promptMocks === "object" && !Array.isArray(data.promptMocks) ? data.promptMocks : {};
2428
+ if (data.toolMockConfig && typeof data.toolMockConfig === "object" && !Array.isArray(data.toolMockConfig)) {
2429
+ toolMockConfig = data.toolMockConfig;
2430
+ }
2431
+ if (data.aiMockConfig && typeof data.aiMockConfig === "object" && !Array.isArray(data.aiMockConfig)) {
2432
+ aiMockConfig = data.aiMockConfig;
2433
+ }
2434
+ if (data.userPromptMocks && typeof data.userPromptMocks === "object" && !Array.isArray(data.userPromptMocks)) {
2435
+ userPromptMocks = data.userPromptMocks;
2436
+ }
2226
2437
  const mockKeys = Object.keys(promptMocks);
2227
- console.log(`[elasticdash] runWithInitializedHttpContext: fetched ${mockKeys.length} prompt mocks, ${frozenEvents.length} frozen events`);
2438
+ const userMockKeys = Object.keys(userPromptMocks ?? {});
2439
+ console.log(`[elasticdash] runWithInitializedHttpContext: fetched ${mockKeys.length} prompt mocks, ${userMockKeys.length} user prompt mocks, ${frozenEvents.length} frozen events`);
2228
2440
  if (mockKeys.length > 0) {
2229
2441
  console.log(`[elasticdash] runWithInitializedHttpContext: mock keys (first 80 chars each): ${JSON.stringify(mockKeys.map((k) => k.slice(0, 80)))}`);
2230
2442
  }
@@ -2233,7 +2445,7 @@ async function runWithInitializedHttpContext(runId, dashboardUrl, callback) {
2233
2445
  }
2234
2446
  } catch {
2235
2447
  }
2236
- return httpRunAls.run(buildContext(runId, dashboardUrl, frozenEvents, promptMocks), callback);
2448
+ return httpRunAls.run(buildContext(runId, dashboardUrl, frozenEvents, promptMocks, toolMockConfig, aiMockConfig, userPromptMocks), callback);
2237
2449
  }
2238
2450
  async function tryAutoInitHttpContext() {
2239
2451
  if (getHttpRunContext()) return;
@@ -2339,6 +2551,12 @@ function wrapTool(name, fn) {
2339
2551
  }
2340
2552
  return frozen.output;
2341
2553
  }
2554
+ const toolMock = getHttpToolMock(name);
2555
+ if (toolMock.mocked) {
2556
+ const event = { id: id2, type: "tool", name, input: input2, output: toolMock.result, timestamp: rawDateNow(), durationMs: 0 };
2557
+ pushTelemetryEvent(event);
2558
+ return toolMock.result;
2559
+ }
2342
2560
  const start2 = rawDateNow();
2343
2561
  try {
2344
2562
  const output = await fn(...args);
@@ -2498,24 +2716,26 @@ function wrapAI(modelName, callFn) {
2498
2716
  if (replay.shouldReplay(id2)) {
2499
2717
  return replay.getRecordedResult(id2);
2500
2718
  }
2501
- const aiMock = resolveAIMock(modelName);
2502
- if (aiMock.mocked) {
2719
+ const aiMock2 = resolveAIMock(modelName);
2720
+ if (aiMock2.mocked) {
2503
2721
  const input3 = args.length === 1 ? args[0] : args;
2504
2722
  const event = {
2505
2723
  id: id2,
2506
2724
  type: "ai",
2507
2725
  name: modelName,
2508
2726
  input: input3,
2509
- output: aiMock.result,
2727
+ output: aiMock2.result,
2510
2728
  timestamp: start,
2511
2729
  durationMs: 0
2512
2730
  };
2513
2731
  recorder.record(event);
2514
2732
  if (httpCtx) pushTelemetryEvent(event);
2515
- return aiMock.result;
2733
+ return aiMock2.result;
2516
2734
  }
2517
2735
  const rawInput = args.length === 1 ? args[0] : args;
2518
- const modifiedInput = resolvePromptMock(rawInput);
2736
+ const promptModifiedInput = resolvePromptMock(rawInput);
2737
+ const userPromptModifiedInput = resolveUserPromptMock(promptModifiedInput !== void 0 ? promptModifiedInput : rawInput);
2738
+ const modifiedInput = userPromptModifiedInput !== void 0 ? userPromptModifiedInput : promptModifiedInput;
2519
2739
  const effectiveArgs = modifiedInput !== void 0 ? [modifiedInput] : args;
2520
2740
  const input2 = modifiedInput !== void 0 ? modifiedInput : rawInput;
2521
2741
  try {
@@ -2557,8 +2777,25 @@ function wrapAI(modelName, callFn) {
2557
2777
  pushTelemetryEvent(frozen);
2558
2778
  return frozen.output;
2559
2779
  }
2780
+ const aiMock = getHttpAIMock(modelName);
2781
+ if (aiMock.mocked) {
2782
+ const input2 = args.length === 1 ? args[0] : args;
2783
+ const event = {
2784
+ id,
2785
+ type: "ai",
2786
+ name: modelName,
2787
+ input: input2,
2788
+ output: aiMock.result,
2789
+ timestamp: start,
2790
+ durationMs: 0
2791
+ };
2792
+ pushTelemetryEvent(event);
2793
+ return aiMock.result;
2794
+ }
2560
2795
  const rawHttpInput = args.length === 1 ? args[0] : args;
2561
- const httpModifiedInput = getHttpPromptMock(rawHttpInput);
2796
+ const httpSystemModified = getHttpPromptMock(rawHttpInput);
2797
+ const httpUserModified = getHttpUserPromptMock(httpSystemModified !== void 0 ? httpSystemModified : rawHttpInput);
2798
+ const httpModifiedInput = httpUserModified !== void 0 ? httpUserModified : httpSystemModified;
2562
2799
  const httpEffectiveArgs = httpModifiedInput !== void 0 ? [httpModifiedInput] : args;
2563
2800
  const input = httpModifiedInput !== void 0 ? httpModifiedInput : rawHttpInput;
2564
2801
  try {
@@ -3210,6 +3447,7 @@ function resolveRef(ref, previousOutputs) {
3210
3447
  interceptFetch,
3211
3448
  interceptRandom,
3212
3449
  isWorker,
3450
+ lookupMockEntry,
3213
3451
  pushTelemetryEvent,
3214
3452
  readVercelAIStream,
3215
3453
  recordToolCall,
@@ -3219,6 +3457,7 @@ function resolveRef(ref, previousOutputs) {
3219
3457
  resolveMock,
3220
3458
  resolvePromptMock,
3221
3459
  resolveTaskInput,
3460
+ resolveUserPromptMock,
3222
3461
  restoreDateNow,
3223
3462
  restoreFetch,
3224
3463
  restoreRandom,
package/dist/index.d.ts CHANGED
@@ -8,8 +8,8 @@ export { installAIInterceptor, uninstallAIInterceptor } from './interceptors/ai-
8
8
  export { startLLMProxy, fetchCapturedTrace } from './proxy/llm-capture.js';
9
9
  export { recordToolCall } from './tracing.js';
10
10
  export { safeRecordToolCall, isWorker } from './internals/conditional-recorder.js';
11
- export { resolveMock, resolveAIMock, resolvePromptMock } from './internals/mock-resolver.js';
12
- export type { AIMockEntry, AIMockConfig } from './internals/mock-resolver.js';
11
+ export { resolveMock, resolveAIMock, resolvePromptMock, resolveUserPromptMock, lookupMockEntry } from './internals/mock-resolver.js';
12
+ export type { AIMockEntry, AIMockConfig, UserPromptMockEntry, UserPromptMockConfig, SystemPromptMockEntry, SystemPromptMockConfig } from './internals/mock-resolver.js';
13
13
  export type { TestResult, FileResult, RunnerOptions } from './runner.js';
14
14
  export type { AITestContext, TraceHandle, LLMStep, ToolCall, CustomStep, TraceStep, RunnerHooks } from './trace-adapter/context.js';
15
15
  export type { WorkflowEvent, WorkflowEventType, WorkflowTrace } from './capture/event.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACnH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAC5F,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC7E,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACxE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAEnI,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACzF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC3F,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAA;AAC/O,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3G,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACzF,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAEjF,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACnH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACpI,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACvK,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACxE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAEnI,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACzF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC3F,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAA;AAC/O,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3G,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACzF,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAEjF,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ export { installAIInterceptor, uninstallAIInterceptor } from './interceptors/ai-
9
9
  export { startLLMProxy, fetchCapturedTrace } from './proxy/llm-capture.js';
10
10
  export { recordToolCall } from './tracing.js';
11
11
  export { safeRecordToolCall, isWorker } from './internals/conditional-recorder.js';
12
- export { resolveMock, resolveAIMock, resolvePromptMock } from './internals/mock-resolver.js';
12
+ export { resolveMock, resolveAIMock, resolvePromptMock, resolveUserPromptMock, lookupMockEntry } from './internals/mock-resolver.js';
13
13
  export { TraceRecorder, setCaptureContext, getCaptureContext } from './capture/recorder.js';
14
14
  export { ReplayController } from './capture/replay.js';
15
15
  export { wrapTool } from './interceptors/tool.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACnH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAM5F,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAA;AAC/O,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3G,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAEzF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIlD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACnH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAMpI,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAA;AAC/O,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3G,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAEzF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIlD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -1,4 +1,16 @@
1
1
  import type { WorkflowEvent } from '../capture/event.js';
2
+ import type { AIMockEntry, UserPromptMockEntry } from '../internals/mock-resolver.js';
3
+ interface ToolMockEntry {
4
+ mode: 'live' | 'mock-all' | 'mock-specific';
5
+ callIndices?: number[];
6
+ mockData?: Record<number, unknown>;
7
+ }
8
+ type MockResult = {
9
+ mocked: true;
10
+ result: unknown;
11
+ } | {
12
+ mocked: false;
13
+ };
2
14
  interface HttpRunContext {
3
15
  runId: string;
4
16
  dashboardUrl: string;
@@ -6,6 +18,18 @@ interface HttpRunContext {
6
18
  frozenEvents: Map<number, WorkflowEvent>;
7
19
  /** System-prompt-keyed overrides: original system prompt → replacement system prompt */
8
20
  promptMocks: Map<string, string>;
21
+ /** User prompt mock configuration (keyed by original user message text) */
22
+ userPromptMocks?: Record<string, UserPromptMockEntry>;
23
+ /** Tool output mock configuration (keyed by tool name) */
24
+ toolMockConfig?: Record<string, ToolMockEntry>;
25
+ /** AI output mock configuration (keyed by model name) */
26
+ aiMockConfig?: Record<string, AIMockEntry>;
27
+ /** Per-tool call counters for mock resolution (scoped to this request) */
28
+ toolCallCounters: Record<string, number>;
29
+ /** Per-model call counters for AI mock resolution (scoped to this request) */
30
+ aiCallCounters: Record<string, number>;
31
+ /** Per-user-prompt-text call counters for user prompt mock resolution */
32
+ userPromptCallCounters: Record<string, number>;
9
33
  }
10
34
  /** Synchronous setup — use when there are no frozen events (live run with no replay). */
11
35
  export declare function setHttpRunContext(runId: string, dashboardUrl: string): void;
@@ -23,6 +47,22 @@ export declare function getHttpFrozenEvent(id: number): WorkflowEvent | undefine
23
47
  * a copy of `input` with the system prompt replaced. Otherwise returns `undefined`.
24
48
  */
25
49
  export declare function getHttpPromptMock(input: unknown): unknown | undefined;
50
+ /**
51
+ * If user prompt mocks are configured, applies all matching replacements to `input`.
52
+ * Returns modified input or `undefined` if no replacements applied.
53
+ * Uses fuzzy matching (strip/add JSON quotes) to handle serialization mismatches.
54
+ */
55
+ export declare function getHttpUserPromptMock(input: unknown): unknown | undefined;
56
+ /**
57
+ * Resolves whether the current HTTP-mode call to `toolName` should be mocked.
58
+ * Mirrors `resolveMock()` but reads from the per-request HttpRunContext.
59
+ */
60
+ export declare function getHttpToolMock(toolName: string): MockResult;
61
+ /**
62
+ * Resolves whether the current HTTP-mode call to `modelName` should be mocked.
63
+ * Mirrors `resolveAIMock()` but reads from the per-request HttpRunContext.
64
+ */
65
+ export declare function getHttpAIMock(modelName: string): MockResult;
26
66
  export declare function pushTelemetryEvent(event: WorkflowEvent): void;
27
67
  /**
28
68
  * Lazily initialises an HTTP run context from environment variables when none
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-push.d.ts","sourceRoot":"","sources":["../../src/interceptors/telemetry-push.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,MAAM,CAAA;IACpB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACxC,wFAAwF;IACxF,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAsBD,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAE3E;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe3F;AAED,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAE9D;AAED,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAExE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAsBrE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAiB7D;AAID;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,6BAA6B,CAAC,CAAC,EACnD,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB5D"}
1
+ {"version":3,"file":"telemetry-push.d.ts","sourceRoot":"","sources":["../../src/interceptors/telemetry-push.ts"],"names":[],"mappings":"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"}