@workflow/cli 5.0.0-beta.3 → 5.0.0-beta.30

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 (98) hide show
  1. package/dist/base.d.ts.map +1 -1
  2. package/dist/base.js +8 -2
  3. package/dist/commands/build.js +1 -1
  4. package/dist/commands/cancel.d.ts.map +1 -1
  5. package/dist/commands/cancel.js +56 -10
  6. package/dist/commands/dev.js +1 -1
  7. package/dist/commands/health.js +1 -1
  8. package/dist/commands/init.js +1 -1
  9. package/dist/commands/inspect.d.ts +3 -0
  10. package/dist/commands/inspect.d.ts.map +1 -1
  11. package/dist/commands/inspect.js +37 -7
  12. package/dist/commands/start.d.ts.map +1 -1
  13. package/dist/commands/start.js +8 -3
  14. package/dist/commands/transform.js +1 -1
  15. package/dist/commands/validate.js +1 -1
  16. package/dist/commands/web.d.ts +1 -0
  17. package/dist/commands/web.d.ts.map +1 -1
  18. package/dist/commands/web.js +9 -3
  19. package/dist/lib/config/log.js +1 -1
  20. package/dist/lib/config/types.d.ts +6 -1
  21. package/dist/lib/config/types.d.ts.map +1 -1
  22. package/dist/lib/config/types.js +1 -1
  23. package/dist/lib/config/workflow-config.js +1 -1
  24. package/dist/lib/inspect/auth.js +1 -1
  25. package/dist/lib/inspect/env.d.ts +1 -1
  26. package/dist/lib/inspect/env.js +2 -2
  27. package/dist/lib/inspect/errors.d.ts +3 -0
  28. package/dist/lib/inspect/errors.d.ts.map +1 -0
  29. package/dist/lib/inspect/errors.js +27 -0
  30. package/dist/lib/inspect/flags.d.ts +8 -0
  31. package/dist/lib/inspect/flags.d.ts.map +1 -1
  32. package/dist/lib/inspect/flags.js +15 -1
  33. package/dist/lib/inspect/hydration.d.ts +22 -0
  34. package/dist/lib/inspect/hydration.d.ts.map +1 -1
  35. package/dist/lib/inspect/hydration.js +102 -47
  36. package/dist/lib/inspect/hydration.test.d.ts +2 -0
  37. package/dist/lib/inspect/hydration.test.d.ts.map +1 -0
  38. package/dist/lib/inspect/hydration.test.js +23 -0
  39. package/dist/lib/inspect/output.d.ts +2 -2
  40. package/dist/lib/inspect/output.d.ts.map +1 -1
  41. package/dist/lib/inspect/output.js +255 -131
  42. package/dist/lib/inspect/output.test.js +403 -3
  43. package/dist/lib/inspect/pagination.d.ts +10 -1
  44. package/dist/lib/inspect/pagination.d.ts.map +1 -1
  45. package/dist/lib/inspect/pagination.js +20 -4
  46. package/dist/lib/inspect/run.d.ts.map +1 -1
  47. package/dist/lib/inspect/run.js +32 -9
  48. package/dist/lib/inspect/setup.d.ts.map +1 -1
  49. package/dist/lib/inspect/setup.js +42 -6
  50. package/dist/lib/inspect/stream.js +1 -1
  51. package/dist/lib/inspect/terminal-utils.js +1 -1
  52. package/dist/lib/inspect/time-window.d.ts +28 -0
  53. package/dist/lib/inspect/time-window.d.ts.map +1 -0
  54. package/dist/lib/inspect/time-window.js +61 -0
  55. package/dist/lib/inspect/time-window.test.d.ts +2 -0
  56. package/dist/lib/inspect/time-window.test.d.ts.map +1 -0
  57. package/dist/lib/inspect/time-window.test.js +58 -0
  58. package/dist/lib/inspect/vercel-api.d.ts +5 -2
  59. package/dist/lib/inspect/vercel-api.d.ts.map +1 -1
  60. package/dist/lib/inspect/vercel-api.js +12 -37
  61. package/dist/lib/inspect/vercel-api.test.d.ts +2 -0
  62. package/dist/lib/inspect/vercel-api.test.d.ts.map +1 -0
  63. package/dist/lib/inspect/vercel-api.test.js +21 -0
  64. package/dist/lib/inspect/vercel-link.js +1 -1
  65. package/dist/lib/inspect/web.d.ts +24 -0
  66. package/dist/lib/inspect/web.d.ts.map +1 -1
  67. package/dist/lib/inspect/web.js +47 -3
  68. package/dist/lib/update-check.js +1 -1
  69. package/package.json +14 -14
  70. package/dist/base.js.map +0 -1
  71. package/dist/commands/build.js.map +0 -1
  72. package/dist/commands/cancel.js.map +0 -1
  73. package/dist/commands/dev.js.map +0 -1
  74. package/dist/commands/health.js.map +0 -1
  75. package/dist/commands/init.js.map +0 -1
  76. package/dist/commands/inspect.js.map +0 -1
  77. package/dist/commands/start.js.map +0 -1
  78. package/dist/commands/transform.js.map +0 -1
  79. package/dist/commands/validate.js.map +0 -1
  80. package/dist/commands/web.js.map +0 -1
  81. package/dist/lib/config/log.js.map +0 -1
  82. package/dist/lib/config/types.js.map +0 -1
  83. package/dist/lib/config/workflow-config.js.map +0 -1
  84. package/dist/lib/inspect/auth.js.map +0 -1
  85. package/dist/lib/inspect/env.js.map +0 -1
  86. package/dist/lib/inspect/flags.js.map +0 -1
  87. package/dist/lib/inspect/hydration.js.map +0 -1
  88. package/dist/lib/inspect/output.js.map +0 -1
  89. package/dist/lib/inspect/output.test.js.map +0 -1
  90. package/dist/lib/inspect/pagination.js.map +0 -1
  91. package/dist/lib/inspect/run.js.map +0 -1
  92. package/dist/lib/inspect/setup.js.map +0 -1
  93. package/dist/lib/inspect/stream.js.map +0 -1
  94. package/dist/lib/inspect/terminal-utils.js.map +0 -1
  95. package/dist/lib/inspect/vercel-api.js.map +0 -1
  96. package/dist/lib/inspect/vercel-link.js.map +0 -1
  97. package/dist/lib/inspect/web.js.map +0 -1
  98. package/dist/lib/update-check.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import { start } from '@workflow/core/runtime';
2
2
  import { healthCheck } from '@workflow/core/runtime/helpers';
3
3
  import { logger } from '../config/log.js';
4
+ import { planWindowStartFromResponse } from './time-window.js';
4
5
  const getWorkflowName = async (world, runNameOrId) => {
5
6
  if (runNameOrId.startsWith('wrun_')) {
6
7
  const run = await world.runs.get(runNameOrId);
@@ -21,6 +22,8 @@ export const startRun = async (world, workflowNameOrRunId, opts, args) => {
21
22
  throw error;
22
23
  }
23
24
  });
25
+ // Only deployment/spec metadata is needed to start a new run, so this
26
+ // accepts either a full run record or an analytics (metadata-only) row.
24
27
  let run;
25
28
  // If the workflowNameOrRunId is a run ID, get the run
26
29
  if (workflowNameOrRunId.startsWith('wrun_')) {
@@ -28,15 +31,35 @@ export const startRun = async (world, workflowNameOrRunId, opts, args) => {
28
31
  }
29
32
  else {
30
33
  // Get the first run for that name, hopefully the newest deployment,
31
- // but can't guarantee that.
32
- const runList = await world.runs.list({
33
- workflowName: workflowNameOrRunId,
34
- pagination: {
35
- sortOrder: 'desc',
36
- limit: 1,
37
- },
38
- });
34
+ // but can't guarantee that. This is metadata only, so prefer the
35
+ // analytics read path when the backend provides one.
36
+ const runList = world.analytics
37
+ ? await world.analytics.runs.list({
38
+ workflowName: workflowNameOrRunId,
39
+ pagination: { sortOrder: 'desc', limit: 1 },
40
+ })
41
+ : await world.runs.list({
42
+ workflowName: workflowNameOrRunId,
43
+ pagination: { sortOrder: 'desc', limit: 1 },
44
+ resolveData: 'none',
45
+ });
39
46
  run = runList.data[0];
47
+ // The analytics backend defaults its listing to a recent window
48
+ // (trailing 24h on the Vercel backend). When the name wasn't found
49
+ // there, retry across the plan's whole observability window using the
50
+ // window bounds from the response's page metadata.
51
+ if (!run && world.analytics) {
52
+ const windowStart = planWindowStartFromResponse(runList);
53
+ if (windowStart) {
54
+ const widened = await world.analytics.runs.list({
55
+ workflowName: workflowNameOrRunId,
56
+ startTime: windowStart,
57
+ endTime: new Date().toISOString(),
58
+ pagination: { sortOrder: 'desc', limit: 1 },
59
+ });
60
+ run = widened.data[0];
61
+ }
62
+ }
40
63
  }
41
64
  if (!run) {
42
65
  throw new Error(`Run "${workflowNameOrRunId}" not found`);
@@ -71,4 +94,4 @@ export const startRun = async (world, workflowNameOrRunId, opts, args) => {
71
94
  logger.log(newRun);
72
95
  }
73
96
  };
74
- //# sourceMappingURL=run.js.map
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU8vRCxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQUUsS0FBWSxFQUFFLFdBQW1CLEVBQUUsRUFBRTtJQUNsRSxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxXQUFXLFlBQVksQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQzNCLEtBQVksRUFDWixtQkFBMkIsRUFDM0IsSUFBbUIsRUFDbkIsSUFBYyxFQUNkLEVBQUU7SUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxjQUFjLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbkUsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxzRUFBc0U7SUFDdEUsd0VBQXdFO0lBQ3hFLElBQUksR0FFUyxDQUFDO0lBQ2Qsc0RBQXNEO0lBQ3RELElBQUksbUJBQW1CLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUMsR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNsRCxDQUFDO1NBQU0sQ0FBQztRQUNOLG9FQUFvRTtRQUNwRSxpRUFBaUU7UUFDakUscURBQXFEO1FBQ3JELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTO1lBQzdCLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDOUIsWUFBWSxFQUFFLG1CQUFtQjtnQkFDakMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2FBQzVDLENBQUM7WUFDSixDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEIsWUFBWSxFQUFFLG1CQUFtQjtnQkFDakMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUMzQyxXQUFXLEVBQUUsTUFBTTthQUNwQixDQUFDLENBQUM7UUFDUCxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0QixnRUFBZ0U7UUFDaEUsbUVBQW1FO1FBQ25FLHNFQUFzRTtRQUN0RSxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUIsTUFBTSxXQUFXLEdBQUcsMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekQsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQzlDLFlBQVksRUFBRSxtQkFBbUI7b0JBQ2pDLFNBQVMsRUFBRSxXQUFXO29CQUN0QixPQUFPLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7b0JBQ2pDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtpQkFDNUMsQ0FBQyxDQUFDO2dCQUNILEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxtQkFBbUIsYUFBYSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFFckUsb0VBQW9FO0lBQ3BFLG9FQUFvRTtJQUNwRSxnRUFBZ0U7SUFDaEUsc0RBQXNEO0lBQ3RELElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDbEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLEdBQUcsTUFBTSxXQUFXLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUM5QyxZQUFZO1lBQ1osT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7WUFDekMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwwREFBMEQ7SUFDNUQsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFO1FBQ25ELFlBQVk7UUFDWixXQUFXO0tBQ1osQ0FBQyxDQUFDO0lBRUgsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0YXJ0IH0gZnJvbSAnQHdvcmtmbG93L2NvcmUvcnVudGltZSc7XG5pbXBvcnQgeyBoZWFsdGhDaGVjayB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3J1bnRpbWUvaGVscGVycyc7XG5pbXBvcnQgdHlwZSB7IFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2NvbmZpZy9sb2cuanMnO1xuaW1wb3J0IHsgcGxhbldpbmRvd1N0YXJ0RnJvbVJlc3BvbnNlIH0gZnJvbSAnLi90aW1lLXdpbmRvdy5qcyc7XG5cbmludGVyZmFjZSBDTElDcmVhdGVPcHRzIHtcbiAganNvbj86IGJvb2xlYW47XG4gIHZlcmJvc2U/OiBib29sZWFuO1xufVxuXG5jb25zdCBnZXRXb3JrZmxvd05hbWUgPSBhc3luYyAod29ybGQ6IFdvcmxkLCBydW5OYW1lT3JJZDogc3RyaW5nKSA9PiB7XG4gIGlmIChydW5OYW1lT3JJZC5zdGFydHNXaXRoKCd3cnVuXycpKSB7XG4gICAgY29uc3QgcnVuID0gYXdhaXQgd29ybGQucnVucy5nZXQocnVuTmFtZU9ySWQpO1xuICAgIGlmICghcnVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJ1biAke3J1bk5hbWVPcklkfSBub3QgZm91bmRgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJ1bi53b3JrZmxvd05hbWU7XG4gIH1cbiAgcmV0dXJuIHJ1bk5hbWVPcklkO1xufTtcblxuZXhwb3J0IGNvbnN0IHN0YXJ0UnVuID0gYXN5bmMgKFxuICB3b3JsZDogV29ybGQsXG4gIHdvcmtmbG93TmFtZU9yUnVuSWQ6IHN0cmluZyxcbiAgb3B0czogQ0xJQ3JlYXRlT3B0cyxcbiAgYXJnczogc3RyaW5nW11cbikgPT4ge1xuICBjb25zdCBqc29uQXJncyA9IGFyZ3MubWFwKChhcmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXJnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLndhcm4oYEZhaWxlZCB0byBwYXJzZSBhcmd1bWVudCBcIiR7YXJnfVwiIGFzIEpTT046ICR7ZXJyb3J9YCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIE9ubHkgZGVwbG95bWVudC9zcGVjIG1ldGFkYXRhIGlzIG5lZWRlZCB0byBzdGFydCBhIG5ldyBydW4sIHNvIHRoaXNcbiAgLy8gYWNjZXB0cyBlaXRoZXIgYSBmdWxsIHJ1biByZWNvcmQgb3IgYW4gYW5hbHl0aWNzIChtZXRhZGF0YS1vbmx5KSByb3cuXG4gIGxldCBydW46XG4gICAgfCB7IGRlcGxveW1lbnRJZDogc3RyaW5nOyBzcGVjVmVyc2lvbj86IG51bWJlcjsgd29ya2Zsb3dOYW1lOiBzdHJpbmcgfVxuICAgIHwgdW5kZWZpbmVkO1xuICAvLyBJZiB0aGUgd29ya2Zsb3dOYW1lT3JSdW5JZCBpcyBhIHJ1biBJRCwgZ2V0IHRoZSBydW5cbiAgaWYgKHdvcmtmbG93TmFtZU9yUnVuSWQuc3RhcnRzV2l0aCgnd3J1bl8nKSkge1xuICAgIHJ1biA9IGF3YWl0IHdvcmxkLnJ1bnMuZ2V0KHdvcmtmbG93TmFtZU9yUnVuSWQpO1xuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgZmlyc3QgcnVuIGZvciB0aGF0IG5hbWUsIGhvcGVmdWxseSB0aGUgbmV3ZXN0IGRlcGxveW1lbnQsXG4gICAgLy8gYnV0IGNhbid0IGd1YXJhbnRlZSB0aGF0LiBUaGlzIGlzIG1ldGFkYXRhIG9ubHksIHNvIHByZWZlciB0aGVcbiAgICAvLyBhbmFseXRpY3MgcmVhZCBwYXRoIHdoZW4gdGhlIGJhY2tlbmQgcHJvdmlkZXMgb25lLlxuICAgIGNvbnN0IHJ1bkxpc3QgPSB3b3JsZC5hbmFseXRpY3NcbiAgICAgID8gYXdhaXQgd29ybGQuYW5hbHl0aWNzLnJ1bnMubGlzdCh7XG4gICAgICAgICAgd29ya2Zsb3dOYW1lOiB3b3JrZmxvd05hbWVPclJ1bklkLFxuICAgICAgICAgIHBhZ2luYXRpb246IHsgc29ydE9yZGVyOiAnZGVzYycsIGxpbWl0OiAxIH0sXG4gICAgICAgIH0pXG4gICAgICA6IGF3YWl0IHdvcmxkLnJ1bnMubGlzdCh7XG4gICAgICAgICAgd29ya2Zsb3dOYW1lOiB3b3JrZmxvd05hbWVPclJ1bklkLFxuICAgICAgICAgIHBhZ2luYXRpb246IHsgc29ydE9yZGVyOiAnZGVzYycsIGxpbWl0OiAxIH0sXG4gICAgICAgICAgcmVzb2x2ZURhdGE6ICdub25lJyxcbiAgICAgICAgfSk7XG4gICAgcnVuID0gcnVuTGlzdC5kYXRhWzBdO1xuXG4gICAgLy8gVGhlIGFuYWx5dGljcyBiYWNrZW5kIGRlZmF1bHRzIGl0cyBsaXN0aW5nIHRvIGEgcmVjZW50IHdpbmRvd1xuICAgIC8vICh0cmFpbGluZyAyNGggb24gdGhlIFZlcmNlbCBiYWNrZW5kKS4gV2hlbiB0aGUgbmFtZSB3YXNuJ3QgZm91bmRcbiAgICAvLyB0aGVyZSwgcmV0cnkgYWNyb3NzIHRoZSBwbGFuJ3Mgd2hvbGUgb2JzZXJ2YWJpbGl0eSB3aW5kb3cgdXNpbmcgdGhlXG4gICAgLy8gd2luZG93IGJvdW5kcyBmcm9tIHRoZSByZXNwb25zZSdzIHBhZ2UgbWV0YWRhdGEuXG4gICAgaWYgKCFydW4gJiYgd29ybGQuYW5hbHl0aWNzKSB7XG4gICAgICBjb25zdCB3aW5kb3dTdGFydCA9IHBsYW5XaW5kb3dTdGFydEZyb21SZXNwb25zZShydW5MaXN0KTtcbiAgICAgIGlmICh3aW5kb3dTdGFydCkge1xuICAgICAgICBjb25zdCB3aWRlbmVkID0gYXdhaXQgd29ybGQuYW5hbHl0aWNzLnJ1bnMubGlzdCh7XG4gICAgICAgICAgd29ya2Zsb3dOYW1lOiB3b3JrZmxvd05hbWVPclJ1bklkLFxuICAgICAgICAgIHN0YXJ0VGltZTogd2luZG93U3RhcnQsXG4gICAgICAgICAgZW5kVGltZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIHBhZ2luYXRpb246IHsgc29ydE9yZGVyOiAnZGVzYycsIGxpbWl0OiAxIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBydW4gPSB3aWRlbmVkLmRhdGFbMF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFydW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJ1biBcIiR7d29ya2Zsb3dOYW1lT3JSdW5JZH1cIiBub3QgZm91bmRgKTtcbiAgfVxuXG4gIGNvbnN0IGRlcGxveW1lbnRJZCA9IHJ1bi5kZXBsb3ltZW50SWQ7XG4gIGNvbnN0IHdvcmtmbG93SWQgPSBhd2FpdCBnZXRXb3JrZmxvd05hbWUod29ybGQsIHdvcmtmbG93TmFtZU9yUnVuSWQpO1xuXG4gIC8vIFByb2JlIHRoZSBkZXBsb3ltZW50J3Mgc3BlY1ZlcnNpb24gdmlhIGhlYWx0aCBjaGVjayBzbyB3ZSB1c2UgdGhlXG4gIC8vIGNvcnJlY3QgcXVldWUgdHJhbnNwb3J0IChKU09OIGZvciBvbGQgZGVwbG95bWVudHMsIENCT1IgZm9yIG5ldykuXG4gIC8vIEZhbGxzIGJhY2sgdG8gdGhlIHJ1bidzIHNwZWNWZXJzaW9uIGlmIHRoZSBoZWFsdGggY2hlY2sgZmFpbHNcbiAgLy8gKGUuZy4gb2xkIGRlcGxveW1lbnQgd2l0aG91dCBoZWFsdGggY2hlY2sgc3VwcG9ydCkuXG4gIGxldCBzcGVjVmVyc2lvbiA9IHJ1bi5zcGVjVmVyc2lvbjtcbiAgdHJ5IHtcbiAgICBjb25zdCBoYyA9IGF3YWl0IGhlYWx0aENoZWNrKHdvcmxkLCAnd29ya2Zsb3cnLCB7XG4gICAgICBkZXBsb3ltZW50SWQsXG4gICAgICB0aW1lb3V0OiAxMF8wMDAsXG4gICAgfSk7XG4gICAgaWYgKGhjLmhlYWx0aHkgJiYgaGMuc3BlY1ZlcnNpb24gIT0gbnVsbCkge1xuICAgICAgc3BlY1ZlcnNpb24gPSBoYy5zcGVjVmVyc2lvbjtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIEhlYWx0aCBjaGVjayBmYWlsZWQg4oCUIHVzZSBydW4ncyBzcGVjVmVyc2lvbiBhcyBmYWxsYmFja1xuICB9XG5cbiAgY29uc3QgbmV3UnVuID0gYXdhaXQgc3RhcnQoeyB3b3JrZmxvd0lkIH0sIGpzb25BcmdzLCB7XG4gICAgZGVwbG95bWVudElkLFxuICAgIHNwZWNWZXJzaW9uLFxuICB9KTtcblxuICBpZiAob3B0cy5qc29uKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkobmV3UnVuLCBudWxsLCAyKSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nZ2VyLmxvZyhuZXdSdW4pO1xuICB9XG59O1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/setup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAa7C;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO;IACL,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,EACD,SAAS,MAAM,EACf,qCAAmC,0BAyGpC,CAAC"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAc7C;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO;IACL,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,EACD,SAAS,MAAM,EACf,qCAAmC,0BA8GpC,CAAC"}
@@ -1,6 +1,10 @@
1
- import { createWorld, setWorld } from '@workflow/core/runtime';
1
+ import { createRequire } from 'node:module';
2
+ import { join } from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ import { setWorld } from '@workflow/core/runtime';
2
5
  import { isVercelWorldTarget } from '@workflow/utils';
3
- import { createVercelWorld } from '@workflow/world-vercel';
6
+ import { createWorld as createLocalCliWorld } from '@workflow/world-local';
7
+ import { createWorld as createVercelCliWorld } from '@workflow/world-vercel';
4
8
  import chalk from 'chalk';
5
9
  import terminalLink from 'terminal-link';
6
10
  import { logger, setJsonMode, setVerboseMode } from '../config/log.js';
@@ -16,7 +20,7 @@ export const setupCliWorld = async (flags, version, ignoreLocalWorldConfigError
16
20
  setVerboseMode(Boolean(flags.verbose));
17
21
  // Check for updates
18
22
  const updateCheck = await checkForUpdateCached(version);
19
- const withAnsiLinks = flags.json ? false : true;
23
+ const withAnsiLinks = !flags.json;
20
24
  const docsUrl = withAnsiLinks
21
25
  ? terminalLink('https://workflow-sdk.dev/', 'https://workflow-sdk.dev/')
22
26
  : 'https://workflow-sdk.dev/';
@@ -73,7 +77,7 @@ export const setupCliWorld = async (flags, version, ignoreLocalWorldConfigError
73
77
  if (vercelEnvVars) {
74
78
  // Build the Vercel world directly from the inferred config, rather than
75
79
  // relying on createWorld() reading process.env.
76
- world = createVercelWorld({
80
+ world = createVercelCliWorld({
77
81
  token: vercelEnvVars.token,
78
82
  projectConfig: {
79
83
  environment: vercelEnvVars.environment,
@@ -83,11 +87,43 @@ export const setupCliWorld = async (flags, version, ignoreLocalWorldConfigError
83
87
  },
84
88
  });
85
89
  }
90
+ else if (flags.backend === 'local' ||
91
+ flags.backend === '@workflow/world-local') {
92
+ world = createLocalCliWorld();
93
+ }
86
94
  else {
87
- world = await createWorld();
95
+ world = await createDynamicCliWorld(flags.backend);
88
96
  }
89
97
  // Store in the global cache so BaseCommand.finally() can find and close it.
90
98
  setWorld(world);
91
99
  return world;
92
100
  };
93
- //# sourceMappingURL=setup.js.map
101
+ /**
102
+ * Construct a world from its package (e.g. `@workflow/world-postgres` or a
103
+ * community world), resolved from the user's project directory. The vercel
104
+ * and local worlds are direct dependencies and constructed explicitly above;
105
+ * every other backend is loaded dynamically so third-party worlds keep
106
+ * working without being dependencies of the CLI.
107
+ */
108
+ async function createDynamicCliWorld(backendId) {
109
+ const cwd = process.cwd();
110
+ let worldPath;
111
+ try {
112
+ worldPath = createRequire(join(cwd, 'package.json')).resolve(backendId, {
113
+ paths: [cwd],
114
+ });
115
+ }
116
+ catch {
117
+ throw new Error(`Could not resolve workflow backend package "${backendId}" from "${cwd}". ` +
118
+ 'Make sure the package is installed in your project.');
119
+ }
120
+ const mod = (await import(pathToFileURL(worldPath).href));
121
+ // Fall back to default.createWorld for CJS packages whose named exports
122
+ // aren't statically detectable by cjs-module-lexer.
123
+ const createWorldFn = mod.createWorld ?? mod.default?.createWorld;
124
+ if (typeof createWorldFn !== 'function') {
125
+ throw new Error(`Workflow backend package "${backendId}" does not export createWorld().`);
126
+ }
127
+ return createWorldFn();
128
+ }
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3Qvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBRSxXQUFXLElBQUksbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxJQUFJLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0UsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUVsQixZQUFZLEdBQ2IsTUFBTSxVQUFVLENBQUM7QUFFbEI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQ2hDLEtBUUMsRUFDRCxPQUFlLEVBQ2YsMkJBQTJCLEdBQUcsS0FBSyxFQUNuQyxFQUFFO0lBQ0YsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXZDLG9CQUFvQjtJQUNwQixNQUFNLFdBQVcsR0FBRyxNQUFNLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXhELE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNsQyxNQUFNLE9BQU8sR0FBRyxhQUFhO1FBQzNCLENBQUMsQ0FBQyxZQUFZLENBQUMsMkJBQTJCLEVBQUUsMkJBQTJCLENBQUM7UUFDeEUsQ0FBQyxDQUFDLDJCQUEyQixDQUFDO0lBRWhDLHdCQUF3QjtJQUN4QixNQUFNLFFBQVEsR0FBRztRQUNmLGlCQUFpQixPQUFPLEVBQUU7UUFDMUIsV0FBVyxPQUFPLEVBQUU7UUFDcEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztLQUN2QyxDQUFDO0lBRUYsa0NBQWtDO0lBQ2xDLElBQUksV0FBVyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekQsUUFBUSxDQUFDLElBQUksQ0FDWCxFQUFFLEVBQ0YsS0FBSyxDQUFDLElBQUksQ0FDUixxQkFBcUIsV0FBVyxDQUFDLGNBQWMsTUFBTSxXQUFXLENBQUMsYUFBYSxFQUFFLENBQ2pGO1FBQ0QsMEZBQTBGO1FBQzFGLHNGQUFzRjtRQUN0Rix1REFBdUQ7UUFDdkQsS0FBSyxDQUFDLElBQUksQ0FDUixvQ0FBb0MsV0FBVyxDQUFDLGFBQWEsSUFBSSxDQUNsRSxFQUNELEtBQUssQ0FBQyxJQUFJLENBQ1IsWUFBWSxDQUNWLGdCQUFnQixFQUNoQiw2Q0FBNkMsQ0FDOUMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUVyQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxZQUFZLENBQUM7UUFDWCxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQy9CLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxPQUFPO0tBQ3JDLENBQUMsQ0FBQztJQUVILElBQUksYUFBd0MsQ0FBQztJQUM3QyxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLHNFQUFzRTtRQUN0RSxrRUFBa0U7UUFDbEUsWUFBWSxDQUFDO1lBQ1gsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDOUIsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDM0MsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDakMsQ0FBQyxDQUFDO1FBQ0gsYUFBYSxHQUFHLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQztJQUM3QyxDQUFDO1NBQU0sSUFDTCxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU87UUFDekIsS0FBSyxDQUFDLE9BQU8sS0FBSyx1QkFBdUIsRUFDekMsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sc0JBQXNCLEVBQUUsQ0FBQztRQUNqQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksMkJBQTJCLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxXQUFXLEdBQ2YsS0FBSyxZQUFZLEtBQUs7b0JBQ3BCLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztvQkFDZixDQUFDLENBQUMsNkJBQTZCLENBQUM7Z0JBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsaURBQWlELEVBQ2pELFdBQVcsQ0FDWixDQUFDO2dCQUNGLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFbkMsSUFBSSxLQUFZLENBQUM7SUFDakIsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQix3RUFBd0U7UUFDeEUsZ0RBQWdEO1FBQ2hELEtBQUssR0FBRyxvQkFBb0IsQ0FBQztZQUMzQixLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7WUFDMUIsYUFBYSxFQUFFO2dCQUNiLFdBQVcsRUFBRSxhQUFhLENBQUMsV0FBVztnQkFDdEMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTO2dCQUNsQyxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVc7Z0JBQ3RDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTthQUM3QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7U0FBTSxJQUNMLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTztRQUN6QixLQUFLLENBQUMsT0FBTyxLQUFLLHVCQUF1QixFQUN6QyxDQUFDO1FBQ0QsS0FBSyxHQUFHLG1CQUFtQixFQUFFLENBQUM7SUFDaEMsQ0FBQztTQUFNLENBQUM7UUFDTixLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELDRFQUE0RTtJQUM1RSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEIsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxLQUFLLFVBQVUscUJBQXFCLENBQUMsU0FBaUI7SUFDcEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzFCLElBQUksU0FBaUIsQ0FBQztJQUN0QixJQUFJLENBQUM7UUFDSCxTQUFTLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3RFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLElBQUksS0FBSyxDQUNiLCtDQUErQyxTQUFTLFdBQVcsR0FBRyxLQUFLO1lBQ3pFLHFEQUFxRCxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUd2RCxDQUFDO0lBQ0Ysd0VBQXdFO0lBQ3hFLG9EQUFvRDtJQUNwRCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO0lBQ2xFLElBQUksT0FBTyxhQUFhLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FDYiw2QkFBNkIsU0FBUyxrQ0FBa0MsQ0FDekUsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGFBQWEsRUFBRSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSAnbm9kZTptb2R1bGUnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgc2V0V29ybGQgfSBmcm9tICdAd29ya2Zsb3cvY29yZS9ydW50aW1lJztcbmltcG9ydCB7IGlzVmVyY2VsV29ybGRUYXJnZXQgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBXb3JsZCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBjcmVhdGVXb3JsZCBhcyBjcmVhdGVMb2NhbENsaVdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLWxvY2FsJztcbmltcG9ydCB7IGNyZWF0ZVdvcmxkIGFzIGNyZWF0ZVZlcmNlbENsaVdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLXZlcmNlbCc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHRlcm1pbmFsTGluayBmcm9tICd0ZXJtaW5hbC1saW5rJztcbmltcG9ydCB7IGxvZ2dlciwgc2V0SnNvbk1vZGUsIHNldFZlcmJvc2VNb2RlIH0gZnJvbSAnLi4vY29uZmlnL2xvZy5qcyc7XG5pbXBvcnQgeyBjaGVja0ZvclVwZGF0ZUNhY2hlZCB9IGZyb20gJy4uL3VwZGF0ZS1jaGVjay5qcyc7XG5pbXBvcnQge1xuICBpbmZlckxvY2FsV29ybGRFbnZWYXJzLFxuICBpbmZlclZlcmNlbEVudlZhcnMsXG4gIHR5cGUgVmVyY2VsRW52VmFycyxcbiAgd3JpdGVFbnZWYXJzLFxufSBmcm9tICcuL2Vudi5qcyc7XG5cbi8qKlxuICogU2V0dXAgQ0xJIHdvcmxkIGNvbmZpZ3VyYXRpb24uXG4gKiBJZiB0aHJvd09uQ29uZmlnRXJyb3IgaXMgZmFsc2UsIHdpbGwgcmV0dXJuIG51bGwgd29ybGQgd2l0aCB0aGUgZXJyb3IgbWVzc2FnZVxuICogaW5zdGVhZCBvZiB0aHJvd2luZywgYWxsb3dpbmcgdGhlIHdlYiBVSSB0byBvcGVuIGZvciBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgY29uc3Qgc2V0dXBDbGlXb3JsZCA9IGFzeW5jIChcbiAgZmxhZ3M6IHtcbiAgICBqc29uOiBib29sZWFuO1xuICAgIHZlcmJvc2U6IGJvb2xlYW47XG4gICAgYmFja2VuZDogc3RyaW5nO1xuICAgIGVudjogc3RyaW5nO1xuICAgIGF1dGhUb2tlbjogc3RyaW5nO1xuICAgIHByb2plY3Q6IHN0cmluZztcbiAgICB0ZWFtOiBzdHJpbmc7XG4gIH0sXG4gIHZlcnNpb246IHN0cmluZyxcbiAgaWdub3JlTG9jYWxXb3JsZENvbmZpZ0Vycm9yID0gZmFsc2VcbikgPT4ge1xuICBzZXRKc29uTW9kZShCb29sZWFuKGZsYWdzLmpzb24pKTtcbiAgc2V0VmVyYm9zZU1vZGUoQm9vbGVhbihmbGFncy52ZXJib3NlKSk7XG5cbiAgLy8gQ2hlY2sgZm9yIHVwZGF0ZXNcbiAgY29uc3QgdXBkYXRlQ2hlY2sgPSBhd2FpdCBjaGVja0ZvclVwZGF0ZUNhY2hlZCh2ZXJzaW9uKTtcblxuICBjb25zdCB3aXRoQW5zaUxpbmtzID0gIWZsYWdzLmpzb247XG4gIGNvbnN0IGRvY3NVcmwgPSB3aXRoQW5zaUxpbmtzXG4gICAgPyB0ZXJtaW5hbExpbmsoJ2h0dHBzOi8vd29ya2Zsb3ctc2RrLmRldi8nLCAnaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2LycpXG4gICAgOiAnaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2Lyc7XG5cbiAgLy8gUHJlcGFyZSBzaG93Qm94IGxpbmVzXG4gIGNvbnN0IGJveExpbmVzID0gW1xuICAgIGBXb3JrZmxvdyBDTEkgdiR7dmVyc2lvbn1gLFxuICAgIGBEb2NzIGF0ICR7ZG9jc1VybH1gLFxuICAgIGNoYWxrLnllbGxvdygnVGhpcyBpcyBhIGJldGEgcmVsZWFzZScpLFxuICBdO1xuXG4gIC8vIEFkZCB1cGRhdGUgbWVzc2FnZSBpZiBhdmFpbGFibGVcbiAgaWYgKHVwZGF0ZUNoZWNrLm5lZWRzVXBkYXRlICYmIHVwZGF0ZUNoZWNrLmxhdGVzdFZlcnNpb24pIHtcbiAgICBib3hMaW5lcy5wdXNoKFxuICAgICAgJycsXG4gICAgICBjaGFsay5jeWFuKFxuICAgICAgICBgVXBkYXRlIGF2YWlsYWJsZTogJHt1cGRhdGVDaGVjay5jdXJyZW50VmVyc2lvbn0g4oaSICR7dXBkYXRlQ2hlY2subGF0ZXN0VmVyc2lvbn1gXG4gICAgICApLFxuICAgICAgLy8gTm90ZSB0aGF0IHdlJ3JlIHN1Z2dlc3RpbmcgaW5zdGFsbCBcImxhdGVzdFwiIGluc3RlYWQgb2YgdGhlIHJlbGVhc2UgdGFnIHRoYXQgdGhlIHVzZXIgaXNcbiAgICAgIC8vIG9uLCBiZWNhdXNlIHdlIGN1cnJlbnRseSB0YWcgYmV0YSByZWxlYXNlcyBhcyBcImxhdGVzdFwiLiBBZnRlciBHQSwgd2UgbmVlZCB0byBhZGp1c3RcbiAgICAgIC8vIHRoaXMgdG8gaW5zdGFsbCB0aGUgcmVsZWFzZSB0YWcgdGhhdCB0aGUgdXNlciBpcyBvbi5cbiAgICAgIGNoYWxrLmdyYXkoXG4gICAgICAgIGBSdW46IFxcYFtucG18YnVufHBucG1dIGkgd29ya2Zsb3dAJHt1cGRhdGVDaGVjay5sYXRlc3RWZXJzaW9ufVxcYGBcbiAgICAgICksXG4gICAgICBjaGFsay5ncmF5KFxuICAgICAgICB0ZXJtaW5hbExpbmsoXG4gICAgICAgICAgJ1ZpZXcgY2hhbmdlbG9nJyxcbiAgICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC93b3JrZmxvdy9yZWxlYXNlcydcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBsb2dnZXIuc2hvd0JveCgnZ3JlZW4nLCAuLi5ib3hMaW5lcyk7XG5cbiAgbG9nZ2VyLmRlYnVnKCdJbmZlcnJpbmcgZW52IHZhcnMsIGJhY2tlbmQ6JywgZmxhZ3MuYmFja2VuZCk7XG4gIHdyaXRlRW52VmFycyh7XG4gICAgREVCVUc6IGZsYWdzLnZlcmJvc2UgPyAnMScgOiAnJyxcbiAgICBXT1JLRkxPV19UQVJHRVRfV09STEQ6IGZsYWdzLmJhY2tlbmQsXG4gIH0pO1xuXG4gIGxldCB2ZXJjZWxFbnZWYXJzOiBWZXJjZWxFbnZWYXJzIHwgdW5kZWZpbmVkO1xuICBpZiAoaXNWZXJjZWxXb3JsZFRhcmdldChmbGFncy5iYWNrZW5kKSkge1xuICAgIC8vIFNlZWQgdGhlIGluaXRpYWwgZmxhZ3MgaW50byBwcm9jZXNzLmVudiBzbyBpbmZlclZlcmNlbEVudlZhcnMoKSBjYW5cbiAgICAvLyByZWFkIHRoZW0gdmlhIGdldEVudlZhcnMoKSBhcyBzdGFydGluZyB2YWx1ZXMgYmVmb3JlIGluZmVyZW5jZS5cbiAgICB3cml0ZUVudlZhcnMoe1xuICAgICAgV09SS0ZMT1dfVkVSQ0VMX0VOVjogZmxhZ3MuZW52LFxuICAgICAgV09SS0ZMT1dfVkVSQ0VMX0FVVEhfVE9LRU46IGZsYWdzLmF1dGhUb2tlbixcbiAgICAgIFdPUktGTE9XX1ZFUkNFTF9QUk9KRUNUOiBmbGFncy5wcm9qZWN0LFxuICAgICAgV09SS0ZMT1dfVkVSQ0VMX1RFQU06IGZsYWdzLnRlYW0sXG4gICAgfSk7XG4gICAgdmVyY2VsRW52VmFycyA9IGF3YWl0IGluZmVyVmVyY2VsRW52VmFycygpO1xuICB9IGVsc2UgaWYgKFxuICAgIGZsYWdzLmJhY2tlbmQgPT09ICdsb2NhbCcgfHxcbiAgICBmbGFncy5iYWNrZW5kID09PSAnQHdvcmtmbG93L3dvcmxkLWxvY2FsJ1xuICApIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgaW5mZXJMb2NhbFdvcmxkRW52VmFycygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoaWdub3JlTG9jYWxXb3JsZENvbmZpZ0Vycm9yKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9yID1cbiAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICA/IGVycm9yLm1lc3NhZ2VcbiAgICAgICAgICAgIDogJ1Vua25vd24gY29uZmlndXJhdGlvbiBlcnJvcic7XG4gICAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICAgICdGYWlsZWQgdG8gZmluZCB2YWxpZCBsb2NhbCB3b3JsZCBjb25maWd1cmF0aW9uOicsXG4gICAgICAgICAgY29uZmlnRXJyb3JcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBsb2dnZXIuZGVidWcoJ0luaXRpYWxpemluZyB3b3JsZCcpO1xuXG4gIGxldCB3b3JsZDogV29ybGQ7XG4gIGlmICh2ZXJjZWxFbnZWYXJzKSB7XG4gICAgLy8gQnVpbGQgdGhlIFZlcmNlbCB3b3JsZCBkaXJlY3RseSBmcm9tIHRoZSBpbmZlcnJlZCBjb25maWcsIHJhdGhlciB0aGFuXG4gICAgLy8gcmVseWluZyBvbiBjcmVhdGVXb3JsZCgpIHJlYWRpbmcgcHJvY2Vzcy5lbnYuXG4gICAgd29ybGQgPSBjcmVhdGVWZXJjZWxDbGlXb3JsZCh7XG4gICAgICB0b2tlbjogdmVyY2VsRW52VmFycy50b2tlbixcbiAgICAgIHByb2plY3RDb25maWc6IHtcbiAgICAgICAgZW52aXJvbm1lbnQ6IHZlcmNlbEVudlZhcnMuZW52aXJvbm1lbnQsXG4gICAgICAgIHByb2plY3RJZDogdmVyY2VsRW52VmFycy5wcm9qZWN0SWQsXG4gICAgICAgIHByb2plY3ROYW1lOiB2ZXJjZWxFbnZWYXJzLnByb2plY3ROYW1lLFxuICAgICAgICB0ZWFtSWQ6IHZlcmNlbEVudlZhcnMudGVhbUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChcbiAgICBmbGFncy5iYWNrZW5kID09PSAnbG9jYWwnIHx8XG4gICAgZmxhZ3MuYmFja2VuZCA9PT0gJ0B3b3JrZmxvdy93b3JsZC1sb2NhbCdcbiAgKSB7XG4gICAgd29ybGQgPSBjcmVhdGVMb2NhbENsaVdvcmxkKCk7XG4gIH0gZWxzZSB7XG4gICAgd29ybGQgPSBhd2FpdCBjcmVhdGVEeW5hbWljQ2xpV29ybGQoZmxhZ3MuYmFja2VuZCk7XG4gIH1cblxuICAvLyBTdG9yZSBpbiB0aGUgZ2xvYmFsIGNhY2hlIHNvIEJhc2VDb21tYW5kLmZpbmFsbHkoKSBjYW4gZmluZCBhbmQgY2xvc2UgaXQuXG4gIHNldFdvcmxkKHdvcmxkKTtcbiAgcmV0dXJuIHdvcmxkO1xufTtcblxuLyoqXG4gKiBDb25zdHJ1Y3QgYSB3b3JsZCBmcm9tIGl0cyBwYWNrYWdlIChlLmcuIGBAd29ya2Zsb3cvd29ybGQtcG9zdGdyZXNgIG9yIGFcbiAqIGNvbW11bml0eSB3b3JsZCksIHJlc29sdmVkIGZyb20gdGhlIHVzZXIncyBwcm9qZWN0IGRpcmVjdG9yeS4gVGhlIHZlcmNlbFxuICogYW5kIGxvY2FsIHdvcmxkcyBhcmUgZGlyZWN0IGRlcGVuZGVuY2llcyBhbmQgY29uc3RydWN0ZWQgZXhwbGljaXRseSBhYm92ZTtcbiAqIGV2ZXJ5IG90aGVyIGJhY2tlbmQgaXMgbG9hZGVkIGR5bmFtaWNhbGx5IHNvIHRoaXJkLXBhcnR5IHdvcmxkcyBrZWVwXG4gKiB3b3JraW5nIHdpdGhvdXQgYmVpbmcgZGVwZW5kZW5jaWVzIG9mIHRoZSBDTEkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUR5bmFtaWNDbGlXb3JsZChiYWNrZW5kSWQ6IHN0cmluZyk6IFByb21pc2U8V29ybGQ+IHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgbGV0IHdvcmxkUGF0aDogc3RyaW5nO1xuICB0cnkge1xuICAgIHdvcmxkUGF0aCA9IGNyZWF0ZVJlcXVpcmUoam9pbihjd2QsICdwYWNrYWdlLmpzb24nKSkucmVzb2x2ZShiYWNrZW5kSWQsIHtcbiAgICAgIHBhdGhzOiBbY3dkXSxcbiAgICB9KTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENvdWxkIG5vdCByZXNvbHZlIHdvcmtmbG93IGJhY2tlbmQgcGFja2FnZSBcIiR7YmFja2VuZElkfVwiIGZyb20gXCIke2N3ZH1cIi4gYCArXG4gICAgICAgICdNYWtlIHN1cmUgdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkIGluIHlvdXIgcHJvamVjdC4nXG4gICAgKTtcbiAgfVxuICBjb25zdCBtb2QgPSAoYXdhaXQgaW1wb3J0KHBhdGhUb0ZpbGVVUkwod29ybGRQYXRoKS5ocmVmKSkgYXMge1xuICAgIGNyZWF0ZVdvcmxkPzogKCkgPT4gV29ybGQgfCBQcm9taXNlPFdvcmxkPjtcbiAgICBkZWZhdWx0PzogeyBjcmVhdGVXb3JsZD86ICgpID0+IFdvcmxkIHwgUHJvbWlzZTxXb3JsZD4gfTtcbiAgfTtcbiAgLy8gRmFsbCBiYWNrIHRvIGRlZmF1bHQuY3JlYXRlV29ybGQgZm9yIENKUyBwYWNrYWdlcyB3aG9zZSBuYW1lZCBleHBvcnRzXG4gIC8vIGFyZW4ndCBzdGF0aWNhbGx5IGRldGVjdGFibGUgYnkgY2pzLW1vZHVsZS1sZXhlci5cbiAgY29uc3QgY3JlYXRlV29ybGRGbiA9IG1vZC5jcmVhdGVXb3JsZCA/PyBtb2QuZGVmYXVsdD8uY3JlYXRlV29ybGQ7XG4gIGlmICh0eXBlb2YgY3JlYXRlV29ybGRGbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBXb3JrZmxvdyBiYWNrZW5kIHBhY2thZ2UgXCIke2JhY2tlbmRJZH1cIiBkb2VzIG5vdCBleHBvcnQgY3JlYXRlV29ybGQoKS5gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlV29ybGRGbigpO1xufVxuIl19
@@ -56,4 +56,4 @@ export const streamToConsole = async (stream, id, opts) => {
56
56
  }
57
57
  }
58
58
  };
59
- //# sourceMappingURL=stream.js.map
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L3N0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHMUM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFDbEMsTUFBK0IsRUFDL0IsRUFBVSxFQUNWLElBQXVCLEVBQ3ZCLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsbUVBQW1FO0lBQ25FLHlFQUF5RTtJQUN6RSxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNuQixJQUFJLENBQUM7UUFDSCxTQUFTLENBQUM7WUFDUixNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsTUFBTTtZQUNSLENBQUM7WUFFRCxvQkFBb0I7WUFDcEIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsU0FBUztZQUNYLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELENBQUM7aUJBQU0sQ0FBQztnQkFDTiwrQkFBK0I7Z0JBQy9CLE1BQU0sSUFBSSxHQUNSLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JFLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDdEMsVUFBVSxFQUFFLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsaUZBQWlGO1FBQ2pGLElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7WUFDdEUsTUFBTSxDQUFDLEtBQUssQ0FDVixrRkFBa0YsQ0FDbkYsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDMUIsS0FBSyxFQUFFLGlDQUFpQyxFQUFFLEVBQUU7Z0JBQzVDLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ3JCLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztZQUFTLENBQUM7UUFDVCxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLDRDQUE0QztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2NvbmZpZy9sb2cuanMnO1xuaW1wb3J0IHR5cGUgeyBJbnNwZWN0Q0xJT3B0aW9ucyB9IGZyb20gJy4uL2NvbmZpZy90eXBlcy5qcyc7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgZnJvbSBhIGRlc2VyaWFsaXplZCBzdHJlYW0gYW5kIHdyaXRlIHRoZSBvdXRwdXQgdG8gdGhlIGNvbnNvbGUuXG4gKiBJZiB0aGUgc3RyZWFtIGlzIG5vdCBjbG9zZWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBibG9jayB1bnRpbCB0aGUgc3RyZWFtIGlzIGNsb3NlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHN0cmVhbVRvQ29uc29sZSA9IGFzeW5jIChcbiAgc3RyZWFtOiBSZWFkYWJsZVN0cmVhbTx1bmtub3duPixcbiAgaWQ6IHN0cmluZyxcbiAgb3B0czogSW5zcGVjdENMSU9wdGlvbnNcbikgPT4ge1xuICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7XG4gIC8vIEtlZXAgdGhlIE5vZGUuanMgZXZlbnQgbG9vcCBhbGl2ZSB3aGlsZSB3ZSBhd2FpdCBzdHJlYW0gY2xvc3VyZS5cbiAgLy8gUGVuZGluZyBQcm9taXNlcyBhbG9uZSBkbyBub3Qga2VlcCB0aGUgcHJvY2VzcyBhbGl2ZSB3aGVuIHVzaW5nIG9jbGlmLlxuICBjb25zdCBrZWVwQWxpdmUgPSBzZXRJbnRlcnZhbCgoKSA9PiB7fSwgNjBfMDAwKTtcbiAgbGV0IGNodW5rSW5kZXggPSAwO1xuICB0cnkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIGRvbmUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gU2tpcCBlbXB0eSBjaHVua3NcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy5qc29uKSB7XG4gICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1cXG5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvcm1hdCB0aGUgdmFsdWUgZm9yIGRpc3BsYXlcbiAgICAgICAgY29uc3QgdGV4dCA9XG4gICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpO1xuICAgICAgICBsb2dnZXIubG9nKGBbJHtjaHVua0luZGV4fV0gJHt0ZXh0fWApO1xuICAgICAgICBjaHVua0luZGV4Kys7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBQcm92aWRlIGEgY2xlYXIgbWVzc2FnZSB3aGVuIHRoZSBzdHJlYW0gaXMgZW5jcnlwdGVkIGFuZCAtLWRlY3J5cHQgd2Fzbid0IHVzZWRcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ25vIGVuY3J5cHRpb24ga2V5JykpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgJ1RoaXMgc3RyZWFtIGNvbnRhaW5zIGVuY3J5cHRlZCBkYXRhLiBVc2UgLS1kZWNyeXB0IC0tcnVuPTxydW4taWQ+IHRvIGRlY3J5cHQgaXQuJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHJlYWQgc3RyZWFtIHdpdGggSUQgJHtpZH06YCwgZXJyKTtcbiAgICB9XG4gICAgaWYgKG9wdHMuanNvbikge1xuICAgICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgZXJyb3I6IGBGYWlsZWQgdG8gcmVhZCBzdHJlYW0gd2l0aCBJRCAke2lkfWAsXG4gICAgICAgIGRldGFpbHM6IFN0cmluZyhlcnIpLFxuICAgICAgfSk7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgJHtqc29ufVxcbmApO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBjbGVhckludGVydmFsKGtlZXBBbGl2ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJlYWRlci5jYW5jZWwoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIElnbm9yZSBjYW5jZWxsYXRpb24gZXJyb3JzIGR1cmluZyBjbGVhbnVwXG4gICAgfVxuICB9XG59O1xuIl19
@@ -105,4 +105,4 @@ export const formatISODate = (date) => {
105
105
  // Replace T with space and remove Z
106
106
  return isoString.replace('T', ' ').replace('Z', '');
107
107
  };
108
- //# sourceMappingURL=terminal-utils.js.map
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvdGVybWluYWwtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxHQUFZLEVBQUU7SUFDaEMsT0FBTyxDQUFDLENBQUMsQ0FDUCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQjtRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVk7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUztRQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVM7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQ3JCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFZLEVBQUU7SUFDekMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQVcsRUFBRTtJQUMzQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlDQUFpQztBQUN4RSxDQUFDLENBQUM7QUFjRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxhQUFxQixFQUNyQixRQUFpQixFQUNqQixhQUFzQixJQUFJLEVB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TUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBVSxFQUFVLEVBQUU7SUFDbEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLG9DQUFvQztJQUNwQyxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXRpZXMgZm9yIHRlcm1pbmFsIGRpc3BsYXkgYW5kIGVudmlyb25tZW50IGRldGVjdGlvblxuICovXG5cbi8qKlxuICogQ2hlY2sgaWYgcnVubmluZyBpbiBDSSBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgY29uc3QgaXNDSSA9ICgpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuICEhKFxuICAgIHByb2Nlc3MuZW52LkNJIHx8XG4gICAgcHJvY2Vzcy5lbnYuQ09OVElOVU9VU19JTlRFR1JBVElPTiB8fFxuICAgIHByb2Nlc3MuZW52LkJVSUxEX05VTUJFUiB8fFxuICAgIHByb2Nlc3MuZW52LkdJVEhVQl9BQ1RJT05TIHx8XG4gICAgcHJvY2Vzcy5lbnYuR0lUTEFCX0NJIHx8XG4gICAgcHJvY2Vzcy5lbnYuQ0lSQ0xFQ0kgfHxcbiAgICBwcm9jZXNzLmVudi5UUkFWSVMgfHxcbiAgICBwcm9jZXNzLmVudi5KRU5LSU5TX1VSTCB8fFxuICAgIHByb2Nlc3MuZW52LkJVSUxES0lURSB8fFxuICAgIHByb2Nlc3MuZW52LlRGX0JVSUxEXG4gICk7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIHJ1bm5pbmcgaW4gYW4gaW50ZXJhY3RpdmUgdGVybWluYWxcbiAqL1xuZXhwb3J0IGNvbnN0IGlzSW50ZXJhY3RpdmUgPSAoKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiAhaXNDSSgpICYmICEhcHJvY2Vzcy5zdGRvdXQuaXNUVFk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCB0ZXJtaW5hbCB3aWR0aFxuICovXG5leHBvcnQgY29uc3QgZ2V0VGVybWluYWxXaWR0aCA9ICgpOiBudW1iZXIgPT4ge1xuICByZXR1cm4gcHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MDsgLy8gRGVmYXVsdCB0byA4MCBpZiBub3QgYXZhaWxhYmxlXG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSBkaXNwbGF5IHNldHRpbmdzIGJhc2VkIG9uIHRlcm1pbmFsIHdpZHRoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcGxheVNldHRpbmdzIHtcbiAgc2hvd1JlbGF0aXZlRGF0ZXM6IGJvb2xlYW47XG4gIGRhdGFGaWVsZFdpZHRoOiBudW1iZXI7XG4gIGFiYnJldmlhdGVTdGF0dXM6IGJvb2xlYW47XG4gIG5hbWVzVHJ1bmNhdGVMZW5ndGg6IG51bWJlcjtcbiAgdHJ1bmNhdGVJZHNUb0xhc3RDaGFyczogYm9vbGVhbjtcbiAgaGlkZUNvbXBsZXRlZEF0OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RGlzcGxheVNldHRpbmdzID0gKFxuICB0ZXJtaW5hbFdpZHRoOiBudW1iZXIsXG4gIHdpdGhEYXRhOiBib29sZWFuLFxuICBpc1J1blRhYmxlOiBib29sZWFuID0gdHJ1ZVxuKTogRGlzcGxheVNldHRpbmdzID0+IHtcbiAgLy8gQmFzZSB3aWR0aHMgZnJvbSBhY3R1YWwgbWVhc3VyZW1lbnRzICh3aXRob3V0IGRhdGEgZmllbGRzKVxuICBjb25zdCBiYXNlV2lkdGggPSAoaXNSdW5UYWJsZSA/IDE0MCA6IDE3MCkgKyAod2l0aERhdGEgPyAzMiA6IDApO1xuXG4gIC8vIEluaXRpYWxpemUgd2l0aCBkZWZhdWx0c1xuICBjb25zdCBzZXR0aW5nczogRGlzcGxheVNldHRpbmdzID0ge1xuICAgIHNob3dSZWxhdGl2ZURhdGVzOiAhd2l0aERhdGEsIC8vIERpc2FibGVkIGJ5IGRlZmF1bHQgd2hlbiB3aXRoRGF0YSBpcyB0cnVlXG4gICAgZGF0YUZpZWxkV2lkdGg6IDE1LFxuICAgIGFiYnJldmlhdGVTdGF0dXM6IGZhbHNlLFxuICAgIG5hbWVzVHJ1bmNhdGVMZW5ndGg6IDQwLFxuICAgIHRydW5jYXRlSWRzVG9MYXN0Q2hhcnM6IGZhbHNlLFxuICAgIGhpZGVDb21wbGV0ZWRBdDogZmFsc2UsXG4gIH07XG5cbiAgLy8gSWYgdGVybWluYWwgd2lkdGggaXMgc3VmZmljaWVudCwgcmV0dXJuIGRlZmF1bHRzXG4gIGlmICh0ZXJtaW5hbFdpZHRoID49IGJhc2VXaWR0aCkge1xuICAgIHJldHVybiBzZXR0aW5ncztcbiAgfVxuXG4gIC8vIFByb2dyZXNzaXZlIGRlZ3JhZGF0aW9uIGF2ZW51ZXNcbiAgbGV0IGF2YWlsYWJsZVdpZHRoID0gYmFzZVdpZHRoO1xuXG4gIC8vIERpc2FibGUgcmVsYXRpdmUgZGF0ZXMgKHNhdmUgMzQgY2hhcmFjdGVycylcbiAgaWYgKHNldHRpbmdzLnNob3dSZWxhdGl2ZURhdGVzICYmIHRlcm1pbmFsV2lkdGggPCBhdmFpbGFibGVXaWR0aCkge1xuICAgIHNldHRpbmdzLnNob3dSZWxhdGl2ZURhdGVzID0gZmFsc2U7XG4gICAgYXZhaWxhYmxlV2lkdGggLT0gMzQ7XG4gIH1cblxuICAvLyBSZWR1Y2UgZGF0YSBmaWVsZCB3aWR0aCBpZiB3aXRoRGF0YSBpcyBzZXQgKHNhdmUgMjAgY2hhcmFjdGVycyBmcm9tIDIqMTApXG4gIGlmIChcbiAgICB3aXRoRGF0YSAmJlxuICAgIHNldHRpbmdzLmRhdGFGaWVsZFdpZHRoID09PSAxNSAmJlxuICAgIHRlcm1pbmFsV2lkdGggPCBhdmFpbGFibGVXaWR0aFxuICApIHtcbiAgICBzZXR0aW5ncy5kYXRhRmllbGRXaWR0aCA9IDU7XG4gICAgYXZhaWxhYmxlV2lkdGggLT0gMjA7XG4gIH1cblxuICAvLyBBYmJyZXZpYXRlIHN0YXR1cyBhbmQgc2V0IGhlYWRlciB0byBcIlNcIiAoc2F2ZSA4IGNoYXJhY3RlcnMpXG4gIGlmICh0ZXJtaW5hbFdpZHRoIDwgYXZhaWxhYmxlV2lkdGgpIHtcbiAgICBzZXR0aW5ncy5hYmJyZXZpYXRlU3RhdHVzID0gdHJ1ZTtcbiAgICBhdmFpbGFibGVXaWR0aCAtPSA4O1xuICB9XG5cbiAgLy8gVHJpbSBuYW1lcyBmcm9tIDQwIHRvIDIwIGNoYXJhY3RlcnMgKHNhdmUgMjAgY2hhcmFjdGVycylcbiAgaWYgKHNldHRpbmdzLm5hbWVzVHJ1bmNhdGVMZW5ndGggPT09IDQwICYmIHRlcm1pbmFsV2lkdGggPCBhdmFpbGFibGVXaWR0aCkge1xuICAgIHNldHRpbmdzLm5hbWVzVHJ1bmNhdGVMZW5ndGggPSAyMDtcbiAgICBhdmFpbGFibGVXaWR0aCAtPSAyMDtcbiAgfVxuXG4gIC8vIEhpZGUgY29tcGxldGVkQXQgY29sdW1uIChzYXZlIDIzIGNoYXJhY3RlcnMpXG4gIGlmICh0ZXJtaW5hbFdpZHRoIDwgYXZhaWxhYmxlV2lkdGgpIHtcbiAgICBzZXR0aW5ncy5oaWRlQ29tcGxldGVkQXQgPSB0cnVlO1xuICAgIGF2YWlsYWJsZVdpZHRoIC09IDIzO1xuICB9XG5cbiAgLy8gVHJpbSBJRHMgdG8gbGFzdCA0IGNoYXJhY3RlcnNcbiAgaWYgKHRlcm1pbmFsV2lkdGggPCBhdmFpbGFibGVXaWR0aCkge1xuICAgIHNldHRpbmdzLnRydW5jYXRlSWRzVG9MYXN0Q2hhcnMgPSB0cnVlO1xuICAgIGF2YWlsYWJsZVdpZHRoIC09IGlzUnVuVGFibGUgPyAyNCA6IDQ4O1xuICB9XG5cbiAgcmV0dXJuIHNldHRpbmdzO1xufTtcblxuLyoqXG4gKiBGb3JtYXQgc3RhdHVzIHdpdGggb3B0aW9uYWwgYWJicmV2aWF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRTdGF0dXMgPSAoc3RhdHVzOiBzdHJpbmcsIGFiYnJldmlhdGVkOiBib29sZWFuKTogc3RyaW5nID0+IHtcbiAgaWYgKCFhYmJyZXZpYXRlZCkge1xuICAgIHJldHVybiBzdGF0dXM7XG4gIH1cblxuICAvLyBBYmJyZXZpYXRlIHRvIGZpcnN0IGxldHRlclxuICBjb25zdCBhYmJyZXZNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgcnVubmluZzogJ1InLFxuICAgIGNvbXBsZXRlZDogJ0MnLFxuICAgIGZhaWxlZDogJ0YnLFxuICAgIGNhbmNlbGxlZDogJ1gnLFxuICAgIHBlbmRpbmc6ICdQJyxcbiAgfTtcblxuICByZXR1cm4gYWJicmV2TWFwW3N0YXR1cy50b0xvd2VyQ2FzZSgpXSB8fCBzdGF0dXMuY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7XG59O1xuXG4vKipcbiAqIEZvcm1hdCBJU08gZGF0ZSB3aXRob3V0IFQgYW5kIFogY2hhcmFjdGVyc1xuICovXG5leHBvcnQgY29uc3QgZm9ybWF0SVNPRGF0ZSA9IChkYXRlOiBEYXRlKTogc3RyaW5nID0+IHtcbiAgY29uc3QgaXNvU3RyaW5nID0gZGF0ZS50b0lTT1N0cmluZygpO1xuICAvLyBSZXBsYWNlIFQgd2l0aCBzcGFjZSBhbmQgcmVtb3ZlIFpcbiAgcmV0dXJuIGlzb1N0cmluZy5yZXBsYWNlKCdUJywgJyAnKS5yZXBsYWNlKCdaJywgJycpO1xufTtcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Parse a `--since`/`--until` value: either a relative duration (`30m`,
3
+ * `12h`, `7d`, `2w`, interpreted as "that long ago") or an absolute
4
+ * timestamp accepted by `Date`.
5
+ */
6
+ export declare function parseTimeInput(value: string, flagName: string): Date;
7
+ /**
8
+ * Resolve `--since`/`--until` flags into an explicit listing window for the
9
+ * analytics runs API, or undefined when neither flag was given (the backend
10
+ * then applies its default window). Windows older than the plan's
11
+ * observability lookback are rejected by the backend with
12
+ * `observability-upgrade-required`.
13
+ */
14
+ export declare function resolveTimeWindow(opts: {
15
+ since?: string;
16
+ until?: string;
17
+ }): {
18
+ startTime: string;
19
+ endTime: string;
20
+ } | undefined;
21
+ /**
22
+ * Extract the plan observability-window start from a paginated analytics
23
+ * response, for widening a defaulted (recent-window) listing to the whole
24
+ * window the plan allows. Returns undefined when the response carries no
25
+ * page metadata (e.g. non-Vercel backends).
26
+ */
27
+ export declare function planWindowStartFromResponse(result: unknown): string | undefined;
28
+ //# sourceMappingURL=time-window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-window.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/time-window.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAapE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAarD;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,GACd,MAAM,GAAG,SAAS,CAMpB"}
@@ -0,0 +1,61 @@
1
+ const DURATION_UNIT_MS = {
2
+ m: 60_000,
3
+ h: 3_600_000,
4
+ d: 86_400_000,
5
+ w: 604_800_000,
6
+ };
7
+ /**
8
+ * Parse a `--since`/`--until` value: either a relative duration (`30m`,
9
+ * `12h`, `7d`, `2w`, interpreted as "that long ago") or an absolute
10
+ * timestamp accepted by `Date`.
11
+ */
12
+ export function parseTimeInput(value, flagName) {
13
+ const duration = /^(\d+)(m|h|d|w)$/.exec(value.trim());
14
+ if (duration) {
15
+ const [, amount, unit] = duration;
16
+ return new Date(Date.now() - Number(amount) * DURATION_UNIT_MS[unit]);
17
+ }
18
+ const absolute = new Date(value);
19
+ if (!Number.isNaN(absolute.getTime())) {
20
+ return absolute;
21
+ }
22
+ throw new Error(`Invalid --${flagName} value "${value}". Use a relative duration (30m, 12h, 7d, 2w) or a timestamp (2026-07-01T00:00:00Z).`);
23
+ }
24
+ /**
25
+ * Resolve `--since`/`--until` flags into an explicit listing window for the
26
+ * analytics runs API, or undefined when neither flag was given (the backend
27
+ * then applies its default window). Windows older than the plan's
28
+ * observability lookback are rejected by the backend with
29
+ * `observability-upgrade-required`.
30
+ */
31
+ export function resolveTimeWindow(opts) {
32
+ if (!opts.since && !opts.until)
33
+ return undefined;
34
+ if (!opts.since) {
35
+ throw new Error('--until requires --since.');
36
+ }
37
+ const start = parseTimeInput(opts.since, 'since');
38
+ const end = opts.until
39
+ ? parseTimeInput(opts.until, 'until')
40
+ : new Date(Date.now());
41
+ if (start.getTime() >= end.getTime()) {
42
+ throw new Error('--since must be earlier than --until.');
43
+ }
44
+ return { startTime: start.toISOString(), endTime: end.toISOString() };
45
+ }
46
+ /**
47
+ * Extract the plan observability-window start from a paginated analytics
48
+ * response, for widening a defaulted (recent-window) listing to the whole
49
+ * window the plan allows. Returns undefined when the response carries no
50
+ * page metadata (e.g. non-Vercel backends).
51
+ */
52
+ export function planWindowStartFromResponse(result) {
53
+ if (typeof result !== 'object' || result === null)
54
+ return undefined;
55
+ const pageInfo = result.pageInfo;
56
+ if (!pageInfo?.currentWindowStart)
57
+ return undefined;
58
+ const start = new Date(pageInfo.currentWindowStart);
59
+ return Number.isNaN(start.getTime()) ? undefined : start.toISOString();
60
+ }
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS13aW5kb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvdGltZS13aW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxnQkFBZ0IsR0FBMkI7SUFDL0MsQ0FBQyxFQUFFLE1BQU07SUFDVCxDQUFDLEVBQUUsU0FBUztJQUNaLENBQUMsRUFBRSxVQUFVO0lBQ2IsQ0FBQyxFQUFFLFdBQVc7Q0FDZixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBYSxFQUFFLFFBQWdCO0lBQzVELE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RCxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNsQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixhQUFhLFFBQVEsV0FBVyxLQUFLLHNGQUFzRixDQUM1SCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUdqQztJQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUs7UUFDcEIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUNyQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7QUFDeEUsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUN6QyxNQUFlO0lBRWYsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNwRSxNQUFNLFFBQVEsR0FBSSxNQUEyQyxDQUFDLFFBQVEsQ0FBQztJQUN2RSxJQUFJLENBQUMsUUFBUSxFQUFFLGtCQUFrQjtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQW5hbHl0aWNzUGFnZUluZm8gfSBmcm9tICcuL3BhZ2luYXRpb24uanMnO1xuXG5jb25zdCBEVVJBVElPTl9VTklUX01TOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICBtOiA2MF8wMDAsXG4gIGg6IDNfNjAwXzAwMCxcbiAgZDogODZfNDAwXzAwMCxcbiAgdzogNjA0XzgwMF8wMDAsXG59O1xuXG4vKipcbiAqIFBhcnNlIGEgYC0tc2luY2VgL2AtLXVudGlsYCB2YWx1ZTogZWl0aGVyIGEgcmVsYXRpdmUgZHVyYXRpb24gKGAzMG1gLFxuICogYDEyaGAsIGA3ZGAsIGAyd2AsIGludGVycHJldGVkIGFzIFwidGhhdCBsb25nIGFnb1wiKSBvciBhbiBhYnNvbHV0ZVxuICogdGltZXN0YW1wIGFjY2VwdGVkIGJ5IGBEYXRlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGltZUlucHV0KHZhbHVlOiBzdHJpbmcsIGZsYWdOYW1lOiBzdHJpbmcpOiBEYXRlIHtcbiAgY29uc3QgZHVyYXRpb24gPSAvXihcXGQrKShtfGh8ZHx3KSQvLmV4ZWModmFsdWUudHJpbSgpKTtcbiAgaWYgKGR1cmF0aW9uKSB7XG4gICAgY29uc3QgWywgYW1vdW50LCB1bml0XSA9IGR1cmF0aW9uO1xuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gTnVtYmVyKGFtb3VudCkgKiBEVVJBVElPTl9VTklUX01TW3VuaXRdKTtcbiAgfVxuICBjb25zdCBhYnNvbHV0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgaWYgKCFOdW1iZXIuaXNOYU4oYWJzb2x1dGUuZ2V0VGltZSgpKSkge1xuICAgIHJldHVybiBhYnNvbHV0ZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYEludmFsaWQgLS0ke2ZsYWdOYW1lfSB2YWx1ZSBcIiR7dmFsdWV9XCIuIFVzZSBhIHJlbGF0aXZlIGR1cmF0aW9uICgzMG0sIDEyaCwgN2QsIDJ3KSBvciBhIHRpbWVzdGFtcCAoMjAyNi0wNy0wMVQwMDowMDowMFopLmBcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGAtLXNpbmNlYC9gLS11bnRpbGAgZmxhZ3MgaW50byBhbiBleHBsaWNpdCBsaXN0aW5nIHdpbmRvdyBmb3IgdGhlXG4gKiBhbmFseXRpY3MgcnVucyBBUEksIG9yIHVuZGVmaW5lZCB3aGVuIG5laXRoZXIgZmxhZyB3YXMgZ2l2ZW4gKHRoZSBiYWNrZW5kXG4gKiB0aGVuIGFwcGxpZXMgaXRzIGRlZmF1bHQgd2luZG93KS4gV2luZG93cyBvbGRlciB0aGFuIHRoZSBwbGFuJ3NcbiAqIG9ic2VydmFiaWxpdHkgbG9va2JhY2sgYXJlIHJlamVjdGVkIGJ5IHRoZSBiYWNrZW5kIHdpdGhcbiAqIGBvYnNlcnZhYmlsaXR5LXVwZ3JhZGUtcmVxdWlyZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVRpbWVXaW5kb3cob3B0czoge1xuICBzaW5jZT86IHN0cmluZztcbiAgdW50aWw/OiBzdHJpbmc7XG59KTogeyBzdGFydFRpbWU6IHN0cmluZzsgZW5kVGltZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICBpZiAoIW9wdHMuc2luY2UgJiYgIW9wdHMudW50aWwpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICghb3B0cy5zaW5jZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignLS11bnRpbCByZXF1aXJlcyAtLXNpbmNlLicpO1xuICB9XG4gIGNvbnN0IHN0YXJ0ID0gcGFyc2VUaW1lSW5wdXQob3B0cy5zaW5jZSwgJ3NpbmNlJyk7XG4gIGNvbnN0IGVuZCA9IG9wdHMudW50aWxcbiAgICA/IHBhcnNlVGltZUlucHV0KG9wdHMudW50aWwsICd1bnRpbCcpXG4gICAgOiBuZXcgRGF0ZShEYXRlLm5vdygpKTtcbiAgaWYgKHN0YXJ0LmdldFRpbWUoKSA+PSBlbmQuZ2V0VGltZSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCctLXNpbmNlIG11c3QgYmUgZWFybGllciB0aGFuIC0tdW50aWwuJyk7XG4gIH1cbiAgcmV0dXJuIHsgc3RhcnRUaW1lOiBzdGFydC50b0lTT1N0cmluZygpLCBlbmRUaW1lOiBlbmQudG9JU09TdHJpbmcoKSB9O1xufVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIHBsYW4gb2JzZXJ2YWJpbGl0eS13aW5kb3cgc3RhcnQgZnJvbSBhIHBhZ2luYXRlZCBhbmFseXRpY3NcbiAqIHJlc3BvbnNlLCBmb3Igd2lkZW5pbmcgYSBkZWZhdWx0ZWQgKHJlY2VudC13aW5kb3cpIGxpc3RpbmcgdG8gdGhlIHdob2xlXG4gKiB3aW5kb3cgdGhlIHBsYW4gYWxsb3dzLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIHRoZSByZXNwb25zZSBjYXJyaWVzIG5vXG4gKiBwYWdlIG1ldGFkYXRhIChlLmcuIG5vbi1WZXJjZWwgYmFja2VuZHMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGxhbldpbmRvd1N0YXJ0RnJvbVJlc3BvbnNlKFxuICByZXN1bHQ6IHVua25vd25cbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0JyB8fCByZXN1bHQgPT09IG51bGwpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHBhZ2VJbmZvID0gKHJlc3VsdCBhcyB7IHBhZ2VJbmZvPzogQW5hbHl0aWNzUGFnZUluZm8gfSkucGFnZUluZm87XG4gIGlmICghcGFnZUluZm8/LmN1cnJlbnRXaW5kb3dTdGFydCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShwYWdlSW5mby5jdXJyZW50V2luZG93U3RhcnQpO1xuICByZXR1cm4gTnVtYmVyLmlzTmFOKHN0YXJ0LmdldFRpbWUoKSkgPyB1bmRlZmluZWQgOiBzdGFydC50b0lTT1N0cmluZygpO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=time-window.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-window.test.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/time-window.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest';
2
+ import { parseTimeInput, planWindowStartFromResponse, resolveTimeWindow, } from './time-window.js';
3
+ const NOW = new Date('2026-07-07T12:00:00.000Z');
4
+ afterEach(() => {
5
+ vi.restoreAllMocks();
6
+ });
7
+ describe('parseTimeInput', () => {
8
+ it('parses relative durations as that long ago', () => {
9
+ vi.spyOn(Date, 'now').mockReturnValue(NOW.getTime());
10
+ expect(parseTimeInput('30m', 'since').toISOString()).toBe('2026-07-07T11:30:00.000Z');
11
+ expect(parseTimeInput('12h', 'since').toISOString()).toBe('2026-07-07T00:00:00.000Z');
12
+ expect(parseTimeInput('7d', 'since').toISOString()).toBe('2026-06-30T12:00:00.000Z');
13
+ expect(parseTimeInput('2w', 'since').toISOString()).toBe('2026-06-23T12:00:00.000Z');
14
+ });
15
+ it('parses absolute timestamps', () => {
16
+ expect(parseTimeInput('2026-07-01T00:00:00Z', 'since').toISOString()).toBe('2026-07-01T00:00:00.000Z');
17
+ });
18
+ it('rejects invalid values with the flag name in the error', () => {
19
+ expect(() => parseTimeInput('yesterday-ish', 'since')).toThrow('--since');
20
+ });
21
+ });
22
+ describe('resolveTimeWindow', () => {
23
+ it('returns undefined when neither flag is given', () => {
24
+ expect(resolveTimeWindow({})).toBeUndefined();
25
+ });
26
+ it('defaults the end to now when only --since is given', () => {
27
+ vi.spyOn(Date, 'now').mockReturnValue(NOW.getTime());
28
+ expect(resolveTimeWindow({ since: '24h' })).toEqual({
29
+ startTime: '2026-07-06T12:00:00.000Z',
30
+ endTime: '2026-07-07T12:00:00.000Z',
31
+ });
32
+ });
33
+ it('rejects --until without --since', () => {
34
+ expect(() => resolveTimeWindow({ until: '1h' })).toThrow('--until requires --since');
35
+ });
36
+ it('rejects inverted windows', () => {
37
+ expect(() => resolveTimeWindow({ since: '1h', until: '2h' })).toThrow('--since must be earlier than --until');
38
+ });
39
+ });
40
+ describe('planWindowStartFromResponse', () => {
41
+ it('extracts the plan window start from page metadata', () => {
42
+ expect(planWindowStartFromResponse({
43
+ data: [],
44
+ pageInfo: {
45
+ currentLookbackDays: 30,
46
+ maxLookbackDays: 30,
47
+ currentWindowStart: '2026-06-07T12:00:00.000Z',
48
+ maxWindowStart: '2026-06-07T12:00:00.000Z',
49
+ upgradeAvailable: false,
50
+ },
51
+ })).toBe('2026-06-07T12:00:00.000Z');
52
+ });
53
+ it('returns undefined without page metadata', () => {
54
+ expect(planWindowStartFromResponse({ data: [] })).toBeUndefined();
55
+ expect(planWindowStartFromResponse(null)).toBeUndefined();
56
+ });
57
+ });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS13aW5kb3cudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaW5zcGVjdC90aW1lLXdpbmRvdy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdELE9BQU8sRUFDTCxjQUFjLEVBQ2QsMkJBQTJCLEVBQzNCLGlCQUFpQixHQUNsQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFakQsU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUNiLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtRQUNwRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZELDBCQUEwQixDQUMzQixDQUFDO1FBQ0YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZELDBCQUEwQixDQUMzQixDQUFDO1FBQ0YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3RELDBCQUEwQixDQUMzQixDQUFDO1FBQ0YsTUFBTSxDQUFDLGNB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LENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJFYWNoLCBkZXNjcmliZSwgZXhwZWN0LCBpdCwgdmkgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHtcbiAgcGFyc2VUaW1lSW5wdXQsXG4gIHBsYW5XaW5kb3dTdGFydEZyb21SZXNwb25zZSxcbiAgcmVzb2x2ZVRpbWVXaW5kb3csXG59IGZyb20gJy4vdGltZS13aW5kb3cuanMnO1xuXG5jb25zdCBOT1cgPSBuZXcgRGF0ZSgnMjAyNi0wNy0wN1QxMjowMDowMC4wMDBaJyk7XG5cbmFmdGVyRWFjaCgoKSA9PiB7XG4gIHZpLnJlc3RvcmVBbGxNb2NrcygpO1xufSk7XG5cbmRlc2NyaWJlKCdwYXJzZVRpbWVJbnB1dCcsICgpID0+IHtcbiAgaXQoJ3BhcnNlcyByZWxhdGl2ZSBkdXJhdGlvbnMgYXMgdGhhdCBsb25nIGFnbycsICgpID0+IHtcbiAgICB2aS5zcHlPbihEYXRlLCAnbm93JykubW9ja1JldHVyblZhbHVlKE5PVy5nZXRUaW1lKCkpO1xuICAgIGV4cGVjdChwYXJzZVRpbWVJbnB1dCgnMzBtJywgJ3NpbmNlJykudG9JU09TdHJpbmcoKSkudG9CZShcbiAgICAgICcyMDI2LTA3LTA3VDExOjMwOjAwLjAwMFonXG4gICAgKTtcbiAgICBleHBlY3QocGFyc2VUaW1lSW5wdXQoJzEyaCcsICdzaW5jZScpLnRvSVNPU3RyaW5nKCkpLnRvQmUoXG4gICAgICAnMjAyNi0wNy0wN1QwMDowMDowMC4wMDBaJ1xuICAgICk7XG4gICAgZXhwZWN0KHBhcnNlVGltZUlucHV0KCc3ZCcsICdzaW5jZScpLnRvSVNPU3RyaW5nKCkpLnRvQmUoXG4gICAgICAnMjAyNi0wNi0zMFQxMjowMDowMC4wMDBaJ1xuICAgICk7XG4gICAgZXhwZWN0KHBhcnNlVGltZUlucHV0KCcydycsICdzaW5jZScpLnRvSVNPU3RyaW5nKCkpLnRvQmUoXG4gICAgICAnMjAyNi0wNi0yM1QxMjowMDowMC4wMDBaJ1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdwYXJzZXMgYWJzb2x1dGUgdGltZXN0YW1wcycsICgpID0+IHtcbiAgICBleHBlY3QocGFyc2VUaW1lSW5wdXQoJzIwMjYtMDctMDFUMDA6MDA6MDBaJywgJ3NpbmNlJykudG9JU09TdHJpbmcoKSkudG9CZShcbiAgICAgICcyMDI2LTA3LTAxVDAwOjAwOjAwLjAwMFonXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3JlamVjdHMgaW52YWxpZCB2YWx1ZXMgd2l0aCB0aGUgZmxhZyBuYW1lIGluIHRoZSBlcnJvcicsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gcGFyc2VUaW1lSW5wdXQoJ3llc3RlcmRheS1pc2gnLCAnc2luY2UnKSkudG9UaHJvdygnLS1zaW5jZScpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgncmVzb2x2ZVRpbWVXaW5kb3cnLCAoKSA9PiB7XG4gIGl0KCdyZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5laXRoZXIgZmxhZyBpcyBnaXZlbicsICgpID0+IHtcbiAgICBleHBlY3QocmVzb2x2ZVRpbWVXaW5kb3coe30pKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIGl0KCdkZWZhdWx0cyB0aGUgZW5kIHRvIG5vdyB3aGVuIG9ubHkgLS1zaW5jZSBpcyBnaXZlbicsICgpID0+IHtcbiAgICB2aS5zcHlPbihEYXRlLCAnbm93JykubW9ja1JldHVyblZhbHVlKE5PVy5nZXRUaW1lKCkpO1xuICAgIGV4cGVjdChyZXNvbHZlVGltZVdpbmRvdyh7IHNpbmNlOiAnMjRoJyB9KSkudG9FcXVhbCh7XG4gICAgICBzdGFydFRpbWU6ICcyMDI2LTA3LTA2VDEyOjAwOjAwLjAwMFonLFxuICAgICAgZW5kVGltZTogJzIwMjYtMDctMDdUMTI6MDA6MDAuMDAwWicsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZWplY3RzIC0tdW50aWwgd2l0aG91dCAtLXNpbmNlJywgKCkgPT4ge1xuICAgIGV4cGVjdCgoKSA9PiByZXNvbHZlVGltZVdpbmRvdyh7IHVudGlsOiAnMWgnIH0pKS50b1Rocm93KFxuICAgICAgJy0tdW50aWwgcmVxdWlyZXMgLS1zaW5jZSdcbiAgICApO1xuICB9KTtcblxuICBpdCgncmVqZWN0cyBpbnZlcnRlZCB3aW5kb3dzJywgKCkgPT4ge1xuICAgIGV4cGVjdCgoKSA9PiByZXNvbHZlVGltZVdpbmRvdyh7IHNpbmNlOiAnMWgnLCB1bnRpbDogJzJoJyB9KSkudG9UaHJvdyhcbiAgICAgICctLXNpbmNlIG11c3QgYmUgZWFybGllciB0aGFuIC0tdW50aWwnXG4gICAgKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3BsYW5XaW5kb3dTdGFydEZyb21SZXNwb25zZScsICgpID0+IHtcbiAgaXQoJ2V4dHJhY3RzIHRoZSBwbGFuIHdpbmRvdyBzdGFydCBmcm9tIHBhZ2UgbWV0YWRhdGEnLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgcGxhbldpbmRvd1N0YXJ0RnJvbVJlc3BvbnNlKHtcbiAgICAgICAgZGF0YTogW10sXG4gICAgICAgIHBhZ2VJbmZvOiB7XG4gICAgICAgICAgY3VycmVudExvb2tiYWNrRGF5czogMzAsXG4gICAgICAgICAgbWF4TG9va2JhY2tEYXlzOiAzMCxcbiAgICAgICAgICBjdXJyZW50V2luZG93U3RhcnQ6ICcyMDI2LTA2LTA3VDEyOjAwOjAwLjAwMFonLFxuICAgICAgICAgIG1heFdpbmRvd1N0YXJ0OiAnMjAyNi0wNi0wN1QxMjowMDowMC4wMDBaJyxcbiAgICAgICAgICB1cGdyYWRlQXZhaWxhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS50b0JlKCcyMDI2LTA2LTA3VDEyOjAwOjAwLjAwMFonKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgdW5kZWZpbmVkIHdpdGhvdXQgcGFnZSBtZXRhZGF0YScsICgpID0+IHtcbiAgICBleHBlY3QocGxhbldpbmRvd1N0YXJ0RnJvbVJlc3BvbnNlKHsgZGF0YTogW10gfSkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3QocGxhbldpbmRvd1N0YXJ0RnJvbVJlc3BvbnNlKG51bGwpKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -6,7 +6,10 @@ export declare function fetchTeamInfo(teamId: string, authToken: string): Promis
6
6
  teamSlug: string;
7
7
  } | null>;
8
8
  /**
9
- * Get the Vercel dashboard URL for workflows
9
+ * Get the Vercel dashboard URL for workflows.
10
+ *
11
+ * Format: https://vercel.com/<teamSlug>/<projectSlug>/workflows/runs/<runId>?environment=<env>
12
+ * (the older `/observability/workflows` route is no longer used).
10
13
  */
11
- export declare function getVercelDashboardUrl(teamSlug: string, projectName: string, resource: string, id?: string): string;
14
+ export declare function getVercelDashboardUrl(teamSlug: string, projectName: string, resource: string, id?: string, environment?: string): string;
12
15
  //# sourceMappingURL=vercel-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vercel-api.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/vercel-api.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAqDtC;AAmCD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,MAAM,GACV,MAAM,CAWR"}
1
+ {"version":3,"file":"vercel-api.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/vercel-api.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAqDtC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,MAAM,EACX,WAAW,SAAe,GACzB,MAAM,CAYR"}
@@ -43,47 +43,22 @@ export async function fetchTeamInfo(teamId, authToken) {
43
43
  return null;
44
44
  }
45
45
  }
46
- // /**
47
- // * Check if the Vercel dashboard workflows page is available
48
- // */
49
- // export async function checkVercelDashboardAvailable(
50
- // teamSlug: string,
51
- // projectName: string,
52
- // authToken: string
53
- // ): Promise<boolean> {
54
- // try {
55
- // const dashboardUrl = `https://vercel.com/${teamSlug}/${projectName}/ai/workflows`;
56
- // logger.debug(`Checking Vercel dashboard availability: ${dashboardUrl}`);
57
- // const response = await fetch(dashboardUrl, {
58
- // method: 'HEAD',
59
- // redirect: 'follow',
60
- // headers: {
61
- // Authorization: `Bearer ${authToken}`,
62
- // },
63
- // });
64
- // // Consider 2xx and 3xx as success
65
- // const isAvailable = response.status >= 200 && response.status < 400;
66
- // logger.debug(
67
- // `Dashboard check result: ${response.status} - ${isAvailable ? 'available' : 'not available'}`
68
- // );
69
- // return isAvailable;
70
- // } catch (error) {
71
- // logger.debug(`Error checking dashboard availability: ${error}`);
72
- // return false;
73
- // }
74
- // }
75
46
  /**
76
- * Get the Vercel dashboard URL for workflows
47
+ * Get the Vercel dashboard URL for workflows.
48
+ *
49
+ * Format: https://vercel.com/<teamSlug>/<projectSlug>/workflows/runs/<runId>?environment=<env>
50
+ * (the older `/observability/workflows` route is no longer used).
77
51
  */
78
- export function getVercelDashboardUrl(teamSlug, projectName, resource, id) {
79
- let url = `https://vercel.com/${teamSlug}/${projectName}/observability/workflows`;
52
+ export function getVercelDashboardUrl(teamSlug, projectName, resource, id, environment = 'production') {
53
+ const base = `https://vercel.com/${teamSlug}/${projectName}/workflows`;
54
+ const env = `environment=${environment}`;
80
55
  // Add resource-specific path segments
81
56
  if (resource === 'run' && id) {
82
- url += `/runs/${id}?environment=production`;
57
+ return `${base}/runs/${id}?${env}`;
83
58
  }
84
- else if (id) {
85
- url += `?${resource}Id=${id}`;
59
+ if (id) {
60
+ return `${base}?${resource}Id=${id}&${env}`;
86
61
  }
87
- return url;
62
+ return `${base}?${env}`;
88
63
  }
89
- //# sourceMappingURL=vercel-api.js.map
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyY2VsLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaW5zcGVjdC92ZXJjZWwtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPMUM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLE1BQWMsRUFDZCxTQUFpQjtJQUVqQixJQUFJLENBQUM7UUFDSCxvREFBb0Q7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTdELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLG1DQUFtQyxNQUFNLEVBQUUsRUFBRTtZQUN4RSxPQUFPLEVBQUU7Z0JBQ1AsYUFBYSxFQUFFLFVBQVUsU0FBUyxFQUFFO2FBQ3JDO1lBQ0QsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1NBQzFCLENBQUMsQ0FBQztRQUVILDBEQUEwRDtRQUMxRCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEIsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3ZELE1BQU0sQ0FBQyxLQUFLLENBQ1YsS0FBSyxDQUFDLEdBQUcsQ0FDUCwwQkFBMEIsUUFBUSxDQUFDLE1BQU0sc0NBQXNDLENBQ2hGLENBQ0YsQ0FBQztZQUNGLE1BQU0sQ0FBQyxJQUFJLENBQ1QsS0FBSyxDQUFDLE1BQU0sQ0FDVixnRUFBZ0UsQ0FDakUsQ0FDRixDQUFDO1lBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxLQUFLLENBQ1YsOEJBQThCLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUN2RSxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBZSxDQUFDO1FBQ25ELE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDcEIsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsK0RBQStEO1FBQy9ELElBQUksS0FBSyxZQUFZLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQzFELE1BQU0sQ0FBQyxLQUFLLENBQ1Ysd0VBQXdFLENBQ3pFLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsUUFBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsRUFBVyxFQUNYLFdBQVcsR0FBRyxZQUFZO0lBRTFCLE1BQU0sSUFBSSxHQUFHLHNCQUFzQixRQUFRLElBQUksV0FBVyxZQUFZLENBQUM7SUFDdkUsTUFBTSxHQUFHLEdBQUcsZUFBZSxXQUFXLEVBQUUsQ0FBQztJQUV6QyxzQ0FBc0M7SUFDdEMsSUFBSSxRQUFRLEtBQUssS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sR0FBRyxJQUFJLFNBQVMsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ1AsT0FBTyxHQUFHLElBQUksSUFBSSxRQUFRLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFDRCxPQUFPLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vY29uZmlnL2xvZy5qcyc7XG5cbmludGVyZmFjZSBWZXJjZWxUZWFtIHtcbiAgaWQ6IHN0cmluZztcbiAgc2x1Zzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZldGNoIHRlYW0gaW5mb3JtYXRpb24gZnJvbSBWZXJjZWwgQVBJXG4gKiBUaW1lb3V0OiA1IHNlY29uZHMgLSBmYWxscyBiYWNrIHRvIGxvY2FsIFVJIGlmIHRoZSByZXF1ZXN0IGZhaWxzIG9yIHRpbWVzIG91dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hUZWFtSW5mbyhcbiAgdGVhbUlkOiBzdHJpbmcsXG4gIGF1dGhUb2tlbjogc3RyaW5nXG4pOiBQcm9taXNlPHsgdGVhbVNsdWc6IHN0cmluZyB9IHwgbnVsbD4ge1xuICB0cnkge1xuICAgIC8vIENyZWF0ZSBhbiBBYm9ydENvbnRyb2xsZXIgd2l0aCBhIDUgc2Vjb25kIHRpbWVvdXRcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCA1MDAwKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vYXBpLnZlcmNlbC5jb20vdjIvdGVhbXMvJHt0ZWFtSWR9YCwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXV0aFRva2VufWAsXG4gICAgICB9LFxuICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIC8vIENsZWFyIHRoZSB0aW1lb3V0IGlmIHRoZSByZXF1ZXN0IGNvbXBsZXRlcyBzdWNjZXNzZnVsbHlcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcblxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMSB8fCByZXNwb25zZS5zdGF0dXMgPT09IDQwMykge1xuICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICBjaGFsay5yZWQoXG4gICAgICAgICAgYEF1dGhlbnRpY2F0aW9uIGZhaWxlZCAoJHtyZXNwb25zZS5zdGF0dXN9KTogVW5hYmxlIHRvIGFjY2VzcyB0ZWFtIGluZm9ybWF0aW9uYFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgICAnXFxuUGxlYXNlIGVuc3VyZSB5b3UgYXJlIGxvZ2dlZCBpbiBhbmQgaGF2ZSBhY2Nlc3MgdG8gdGhlIHRlYW06J1xuICAgICAgICApXG4gICAgICApO1xuICAgICAgbG9nZ2VyLndhcm4oY2hhbGsueWVsbG93KCcgIFJ1biBgdmVyY2VsIGxvZ2luYCB0byBhdXRoZW50aWNhdGUnKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggdGVhbSBpbmZvOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB0ZWFtID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgVmVyY2VsVGVhbTtcbiAgICByZXR1cm4ge1xuICAgICAgdGVhbVNsdWc6IHRlYW0uc2x1ZyxcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEhhbmRsZSBib3RoIHRpbWVvdXQgYW5kIG90aGVyIGVycm9ycyAtIGZhbGwgYmFjayB0byBsb2NhbCBVSVxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICAnVmVyY2VsIEFQSSByZXF1ZXN0IHRpbWVkIG91dCBhZnRlciA1IHNlY29uZHMsIGZhbGxpbmcgYmFjayB0byBsb2NhbCBVSSdcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgRXJyb3IgZmV0Y2hpbmcgdGVhbSBpbmZvOiAke2Vycm9yfWApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgVmVyY2VsIGRhc2hib2FyZCBVUkwgZm9yIHdvcmtmbG93cy5cbiAqXG4gKiBGb3JtYXQ6IGh0dHBzOi8vdmVyY2VsLmNvbS88dGVhbVNsdWc+Lzxwcm9qZWN0U2x1Zz4vd29ya2Zsb3dzL3J1bnMvPHJ1bklkPj9lbnZpcm9ubWVudD08ZW52PlxuICogKHRoZSBvbGRlciBgL29ic2VydmFiaWxpdHkvd29ya2Zsb3dzYCByb3V0ZSBpcyBubyBsb25nZXIgdXNlZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJjZWxEYXNoYm9hcmRVcmwoXG4gIHRlYW1TbHVnOiBzdHJpbmcsXG4gIHByb2plY3ROYW1lOiBzdHJpbmcsXG4gIHJlc291cmNlOiBzdHJpbmcsXG4gIGlkPzogc3RyaW5nLFxuICBlbnZpcm9ubWVudCA9ICdwcm9kdWN0aW9uJ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZSA9IGBodHRwczovL3ZlcmNlbC5jb20vJHt0ZWFtU2x1Z30vJHtwcm9qZWN0TmFtZX0vd29ya2Zsb3dzYDtcbiAgY29uc3QgZW52ID0gYGVudmlyb25tZW50PSR7ZW52aXJvbm1lbnR9YDtcblxuICAvLyBBZGQgcmVzb3VyY2Utc3BlY2lmaWMgcGF0aCBzZWdtZW50c1xuICBpZiAocmVzb3VyY2UgPT09ICdydW4nICYmIGlkKSB7XG4gICAgcmV0dXJuIGAke2Jhc2V9L3J1bnMvJHtpZH0/JHtlbnZ9YDtcbiAgfVxuICBpZiAoaWQpIHtcbiAgICByZXR1cm4gYCR7YmFzZX0/JHtyZXNvdXJjZX1JZD0ke2lkfSYke2Vudn1gO1xuICB9XG4gIHJldHVybiBgJHtiYXNlfT8ke2Vudn1gO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=vercel-api.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-api.test.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/vercel-api.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { getVercelDashboardUrl } from './vercel-api.js';
3
+ describe('getVercelDashboardUrl', () => {
4
+ it('builds a run deep link with the default (production) environment', () => {
5
+ expect(getVercelDashboardUrl('my-team', 'my-project', 'run', 'wrun_123')).toBe('https://vercel.com/my-team/my-project/workflows/runs/wrun_123?environment=production');
6
+ });
7
+ it('respects the preview environment', () => {
8
+ expect(getVercelDashboardUrl('my-team', 'my-project', 'run', 'wrun_123', 'preview')).toBe('https://vercel.com/my-team/my-project/workflows/runs/wrun_123?environment=preview');
9
+ });
10
+ it('never emits the legacy /observability segment', () => {
11
+ const url = getVercelDashboardUrl('my-team', 'my-project', 'run', 'wrun_123', 'preview');
12
+ expect(url).not.toContain('/observability');
13
+ });
14
+ it('builds an overview link when no id is provided', () => {
15
+ expect(getVercelDashboardUrl('my-team', 'my-project', 'run')).toBe('https://vercel.com/my-team/my-project/workflows?environment=production');
16
+ });
17
+ it('builds a resource-query link for non-run resources', () => {
18
+ expect(getVercelDashboardUrl('my-team', 'my-project', 'step', 'step_456', 'preview')).toBe('https://vercel.com/my-team/my-project/workflows?stepId=step_456&environment=preview');
19
+ });
20
+ });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyY2VsLWFwaS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L3ZlcmNlbC1hcGkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxFQUFFLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxFQUFFO1FBQzFFLE1BQU0sQ0FDSixxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FDbEUsQ0FBQyxJQUFJLENBQ0osc0ZBQXNGLENBQ3ZGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDMUMsTUFBTSxDQUNKLHFCQUFxQixDQUNuQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxVQUFVLEVBQ1YsU0FBUyxDQUNWLENBQ0YsQ0FBQyxJQUFJLENBQ0osbUZBQW1GLENBQ3BGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxHQUFHLEVBQUU7UUFDdkQsTUFBTSxHQUFHLEdBQUcscUJBQXFCLENBQy9CLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFVBQVUsRUFDVixTQUFTLENBQ1YsQ0FBQztRQUNGLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO1FBQ3hELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRSx3RUFBd0UsQ0FDekUsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtRQUM1RCxNQUFNLENBQ0oscUJBQXFCLENBQ25CLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixTQUFTLENBQ1YsQ0FDRixDQUFDLElBQUksQ0FDSixxRkFBcUYsQ0FDdEYsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQgeyBnZXRWZXJjZWxEYXNoYm9hcmRVcmwgfSBmcm9tICcuL3ZlcmNlbC1hcGkuanMnO1xuXG5kZXNjcmliZSgnZ2V0VmVyY2VsRGFzaGJvYXJkVXJsJywgKCkgPT4ge1xuICBpdCgnYnVpbGRzIGEgcnVuIGRlZXAgbGluayB3aXRoIHRoZSBkZWZhdWx0IChwcm9kdWN0aW9uKSBlbnZpcm9ubWVudCcsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBnZXRWZXJjZWxEYXNoYm9hcmRVcmwoJ215LXRlYW0nLCAnbXktcHJvamVjdCcsICdydW4nLCAnd3J1bl8xMjMnKVxuICAgICkudG9CZShcbiAgICAgICdodHRwczovL3ZlcmNlbC5jb20vbXktdGVhbS9teS1wcm9qZWN0L3dvcmtmbG93cy9ydW5zL3dydW5fMTIzP2Vudmlyb25tZW50PXByb2R1Y3Rpb24nXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Jlc3BlY3RzIHRoZSBwcmV2aWV3IGVudmlyb25tZW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGdldFZlcmNlbERhc2hib2FyZFVybChcbiAgICAgICAgJ215LXRlYW0nLFxuICAgICAgICAnbXktcHJvamVjdCcsXG4gICAgICAgICdydW4nLFxuICAgICAgICAnd3J1bl8xMjMnLFxuICAgICAgICAncHJldmlldydcbiAgICAgIClcbiAgICApLnRvQmUoXG4gICAgICAnaHR0cHM6Ly92ZXJjZWwuY29tL215LXRlYW0vbXktcHJvamVjdC93b3JrZmxvd3MvcnVucy93cnVuXzEyMz9lbnZpcm9ubWVudD1wcmV2aWV3J1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCduZXZlciBlbWl0cyB0aGUgbGVnYWN5IC9vYnNlcnZhYmlsaXR5IHNlZ21lbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgdXJsID0gZ2V0VmVyY2VsRGFzaGJvYXJkVXJsKFxuICAgICAgJ215LXRlYW0nLFxuICAgICAgJ215LXByb2plY3QnLFxuICAgICAgJ3J1bicsXG4gICAgICAnd3J1bl8xMjMnLFxuICAgICAgJ3ByZXZpZXcnXG4gICAgKTtcbiAgICBleHBlY3QodXJsKS5ub3QudG9Db250YWluKCcvb2JzZXJ2YWJpbGl0eScpO1xuICB9KTtcblxuICBpdCgnYnVpbGRzIGFuIG92ZXJ2aWV3IGxpbmsgd2hlbiBubyBpZCBpcyBwcm92aWRlZCcsICgpID0+IHtcbiAgICBleHBlY3QoZ2V0VmVyY2VsRGFzaGJvYXJkVXJsKCdteS10ZWFtJywgJ215LXByb2plY3QnLCAncnVuJykpLnRvQmUoXG4gICAgICAnaHR0cHM6Ly92ZXJjZWwuY29tL215LXRlYW0vbXktcHJvamVjdC93b3JrZmxvd3M/ZW52aXJvbm1lbnQ9cHJvZHVjdGlvbidcbiAgICApO1xuICB9KTtcblxuICBpdCgnYnVpbGRzIGEgcmVzb3VyY2UtcXVlcnkgbGluayBmb3Igbm9uLXJ1biByZXNvdXJjZXMnLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgZ2V0VmVyY2VsRGFzaGJvYXJkVXJsKFxuICAgICAgICAnbXktdGVhbScsXG4gICAgICAgICdteS1wcm9qZWN0JyxcbiAgICAgICAgJ3N0ZXAnLFxuICAgICAgICAnc3RlcF80NTYnLFxuICAgICAgICAncHJldmlldydcbiAgICAgIClcbiAgICApLnRvQmUoXG4gICAgICAnaHR0cHM6Ly92ZXJjZWwuY29tL215LXRlYW0vbXktcHJvamVjdC93b3JrZmxvd3M/c3RlcElkPXN0ZXBfNDU2JmVudmlyb25tZW50PXByZXZpZXcnXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==