@workflow/cli 5.0.0-beta.4 → 5.0.0-beta.41

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 (108) hide show
  1. package/dist/base.js +1 -1
  2. package/dist/commands/build.js +1 -1
  3. package/dist/commands/cancel.d.ts +1 -0
  4. package/dist/commands/cancel.d.ts.map +1 -1
  5. package/dist/commands/cancel.js +36 -55
  6. package/dist/commands/dev.js +1 -1
  7. package/dist/commands/health.d.ts +1 -3
  8. package/dist/commands/health.d.ts.map +1 -1
  9. package/dist/commands/health.js +26 -50
  10. package/dist/commands/init.js +1 -1
  11. package/dist/commands/inspect.d.ts +4 -0
  12. package/dist/commands/inspect.d.ts.map +1 -1
  13. package/dist/commands/inspect.js +37 -7
  14. package/dist/commands/start.d.ts +1 -0
  15. package/dist/commands/start.d.ts.map +1 -1
  16. package/dist/commands/start.js +8 -3
  17. package/dist/commands/transform.js +1 -1
  18. package/dist/commands/validate.js +1 -1
  19. package/dist/commands/web.d.ts +2 -0
  20. package/dist/commands/web.d.ts.map +1 -1
  21. package/dist/commands/web.js +9 -3
  22. package/dist/lib/bulk-cancel.d.ts +74 -0
  23. package/dist/lib/bulk-cancel.d.ts.map +1 -0
  24. package/dist/lib/bulk-cancel.js +197 -0
  25. package/dist/lib/bulk-cancel.test.d.ts +2 -0
  26. package/dist/lib/bulk-cancel.test.d.ts.map +1 -0
  27. package/dist/lib/bulk-cancel.test.js +366 -0
  28. package/dist/lib/config/log.js +1 -1
  29. package/dist/lib/config/types.d.ts +6 -1
  30. package/dist/lib/config/types.d.ts.map +1 -1
  31. package/dist/lib/config/types.js +1 -1
  32. package/dist/lib/config/workflow-config.d.ts.map +1 -1
  33. package/dist/lib/config/workflow-config.js +2 -2
  34. package/dist/lib/inspect/auth.js +1 -1
  35. package/dist/lib/inspect/env.d.ts +1 -1
  36. package/dist/lib/inspect/env.js +2 -2
  37. package/dist/lib/inspect/errors.d.ts +3 -0
  38. package/dist/lib/inspect/errors.d.ts.map +1 -0
  39. package/dist/lib/inspect/errors.js +27 -0
  40. package/dist/lib/inspect/flags.d.ts +9 -0
  41. package/dist/lib/inspect/flags.d.ts.map +1 -1
  42. package/dist/lib/inspect/flags.js +23 -1
  43. package/dist/lib/inspect/hydration.d.ts +22 -0
  44. package/dist/lib/inspect/hydration.d.ts.map +1 -1
  45. package/dist/lib/inspect/hydration.js +107 -49
  46. package/dist/lib/inspect/hydration.test.d.ts +2 -0
  47. package/dist/lib/inspect/hydration.test.d.ts.map +1 -0
  48. package/dist/lib/inspect/hydration.test.js +23 -0
  49. package/dist/lib/inspect/output.d.ts +2 -2
  50. package/dist/lib/inspect/output.d.ts.map +1 -1
  51. package/dist/lib/inspect/output.js +327 -136
  52. package/dist/lib/inspect/output.test.js +663 -3
  53. package/dist/lib/inspect/pagination.d.ts +10 -1
  54. package/dist/lib/inspect/pagination.d.ts.map +1 -1
  55. package/dist/lib/inspect/pagination.js +20 -4
  56. package/dist/lib/inspect/run.d.ts.map +1 -1
  57. package/dist/lib/inspect/run.js +33 -10
  58. package/dist/lib/inspect/setup.d.ts.map +1 -1
  59. package/dist/lib/inspect/setup.js +42 -6
  60. package/dist/lib/inspect/stream.js +1 -1
  61. package/dist/lib/inspect/terminal-utils.js +1 -1
  62. package/dist/lib/inspect/time-window.d.ts +28 -0
  63. package/dist/lib/inspect/time-window.d.ts.map +1 -0
  64. package/dist/lib/inspect/time-window.js +61 -0
  65. package/dist/lib/inspect/time-window.test.d.ts +2 -0
  66. package/dist/lib/inspect/time-window.test.d.ts.map +1 -0
  67. package/dist/lib/inspect/time-window.test.js +58 -0
  68. package/dist/lib/inspect/vercel-api.d.ts +5 -2
  69. package/dist/lib/inspect/vercel-api.d.ts.map +1 -1
  70. package/dist/lib/inspect/vercel-api.js +12 -37
  71. package/dist/lib/inspect/vercel-api.test.d.ts +2 -0
  72. package/dist/lib/inspect/vercel-api.test.d.ts.map +1 -0
  73. package/dist/lib/inspect/vercel-api.test.js +21 -0
  74. package/dist/lib/inspect/vercel-link.js +1 -1
  75. package/dist/lib/inspect/web.d.ts +24 -0
  76. package/dist/lib/inspect/web.d.ts.map +1 -1
  77. package/dist/lib/inspect/web.js +122 -3
  78. package/dist/lib/update-check.js +1 -1
  79. package/package.json +15 -14
  80. package/dist/base.js.map +0 -1
  81. package/dist/commands/build.js.map +0 -1
  82. package/dist/commands/cancel.js.map +0 -1
  83. package/dist/commands/dev.js.map +0 -1
  84. package/dist/commands/health.js.map +0 -1
  85. package/dist/commands/init.js.map +0 -1
  86. package/dist/commands/inspect.js.map +0 -1
  87. package/dist/commands/start.js.map +0 -1
  88. package/dist/commands/transform.js.map +0 -1
  89. package/dist/commands/validate.js.map +0 -1
  90. package/dist/commands/web.js.map +0 -1
  91. package/dist/lib/config/log.js.map +0 -1
  92. package/dist/lib/config/types.js.map +0 -1
  93. package/dist/lib/config/workflow-config.js.map +0 -1
  94. package/dist/lib/inspect/auth.js.map +0 -1
  95. package/dist/lib/inspect/env.js.map +0 -1
  96. package/dist/lib/inspect/flags.js.map +0 -1
  97. package/dist/lib/inspect/hydration.js.map +0 -1
  98. package/dist/lib/inspect/output.js.map +0 -1
  99. package/dist/lib/inspect/output.test.js.map +0 -1
  100. package/dist/lib/inspect/pagination.js.map +0 -1
  101. package/dist/lib/inspect/run.js.map +0 -1
  102. package/dist/lib/inspect/setup.js.map +0 -1
  103. package/dist/lib/inspect/stream.js.map +0 -1
  104. package/dist/lib/inspect/terminal-utils.js.map +0 -1
  105. package/dist/lib/inspect/vercel-api.js.map +0 -1
  106. package/dist/lib/inspect/vercel-link.js.map +0 -1
  107. package/dist/lib/inspect/web.js.map +0 -1
  108. package/dist/lib/update-check.js.map +0 -1
@@ -26,7 +26,16 @@ export interface PageData<T> {
26
26
  data: T[];
27
27
  cursor: string | null | undefined;
28
28
  hasMore: boolean;
29
+ pageInfo?: AnalyticsPageInfo;
29
30
  }
31
+ export interface AnalyticsPageInfo {
32
+ currentLookbackDays: number;
33
+ maxLookbackDays: number;
34
+ currentWindowStart: Date | string;
35
+ maxWindowStart: Date | string;
36
+ upgradeAvailable: boolean;
37
+ }
38
+ export declare const getPageInfoUpgradeHint: (pageInfo: AnalyticsPageInfo | undefined) => string | undefined;
30
39
  /**
31
40
  * Generic pagination handler for list operations
32
41
  */
@@ -42,7 +51,7 @@ export interface ListPaginationOptions<TData> {
42
51
  /**
43
52
  * Display function that renders the current page
44
53
  */
45
- displayPage: (data: TData[], pageIndex: number) => void | Promise<void>;
54
+ displayPage: (data: TData[], pageIndex: number, page: PageData<TData>) => void | Promise<void>;
46
55
  /**
47
56
  * Optional callback for when fetching starts
48
57
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/pagination.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,eAAe,EACtB,WAAW,mBAAmB,KAC7B,CAAC,MAAM,IAAI,CAwDb,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,eAAe,SAsBzD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,KAAK;IAC1C;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpE;;OAEG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAC7C,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CA8If"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/pagination.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,eAAe,EACtB,WAAW,mBAAmB,KAC7B,CAAC,MAAM,IAAI,CAwDb,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,eAAe,SAsBzD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,IAAI,GAAG,MAAM,CAAC;IAClC,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,sBAAsB,GACjC,UAAU,iBAAiB,GAAG,SAAS,KACtC,MAAM,GAAG,SASX,CAAC;AAWF;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,KAAK;IAC1C;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpE;;OAEG;IACH,WAAW,EAAE,CACX,IAAI,EAAE,KAAK,EAAE,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,KAClB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAC7C,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAiJf"}
@@ -78,6 +78,19 @@ export const showPaginationState = (state) => {
78
78
  parts.push('[q] Quit (or Ctrl+C)');
79
79
  logger.log(`\n${parts.join(' | ')}`);
80
80
  };
81
+ export const getPageInfoUpgradeHint = (pageInfo) => {
82
+ if (!pageInfo?.upgradeAvailable ||
83
+ pageInfo.currentLookbackDays >= pageInfo.maxLookbackDays) {
84
+ return undefined;
85
+ }
86
+ return `Showing the last ${pageInfo.currentLookbackDays} days of workflow observability data. Upgrade Observability Plus to query up to ${pageInfo.maxLookbackDays} days.`;
87
+ };
88
+ const showPageInfoUpgradeHint = (pageInfo) => {
89
+ const hint = getPageInfoUpgradeHint(pageInfo);
90
+ if (hint) {
91
+ logger.info(hint);
92
+ }
93
+ };
81
94
  /**
82
95
  * Setup pagination for list operations with page caching
83
96
  */
@@ -103,7 +116,8 @@ export async function setupListPagination(options) {
103
116
  if (enableInteractive) {
104
117
  console.clear();
105
118
  }
106
- await displayPage(page.data, index);
119
+ await displayPage(page.data, index, page);
120
+ showPageInfoUpgradeHint(page.pageInfo);
107
121
  return page;
108
122
  };
109
123
  // Fetch and display first page
@@ -135,7 +149,8 @@ export async function setupListPagination(options) {
135
149
  if (enableInteractive) {
136
150
  console.clear();
137
151
  }
138
- await displayPage(cachedPage.data, pageIndex);
152
+ await displayPage(cachedPage.data, pageIndex, cachedPage);
153
+ showPageInfoUpgradeHint(cachedPage.pageInfo);
139
154
  paginationState.cursor = cachedPage.cursor;
140
155
  paginationState.hasMore = cachedPage.hasMore;
141
156
  paginationState.hasPrevious = pageIndex > 0;
@@ -177,7 +192,8 @@ export async function setupListPagination(options) {
177
192
  if (enableInteractive) {
178
193
  console.clear();
179
194
  }
180
- await displayPage(prevPage.data, pageIndex);
195
+ await displayPage(prevPage.data, pageIndex, prevPage);
196
+ showPageInfoUpgradeHint(prevPage.pageInfo);
181
197
  paginationState.cursor = prevPage.cursor;
182
198
  paginationState.hasMore = prevPage.hasMore;
183
199
  paginationState.hasPrevious = pageIndex > 0;
@@ -196,4 +212,4 @@ export async function setupListPagination(options) {
196
212
  // Keep process alive
197
213
  return new Promise(() => { });
198
214
  }
199
- //# sourceMappingURL=pagination.js.map
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaW5zcGVjdC9wYWdpbmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFpQnBEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsS0FBc0IsRUFDdEIsU0FBOEIsRUFDaEIsRUFBRTtJQUNoQixJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztRQUNyQixPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtJQUM1QyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixRQUFRLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQUUsTUFBYyxFQUFFLEdBQVEsRUFBRSxFQUFFO1FBQ3pELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTztRQUVqQixjQUFjO1FBQ2QsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZELFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1QsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixJQUNFLENBQUMsR0FBRyxDQUFDLElBQUks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QUFXLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDNUMsZUFBZSxDQUFDLFdBQVcsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxlQUFlLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLGdEQUFnRDtnQkFDaEQsZUFBZSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUMxRSxDQUFDO1lBRUQsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDWCxPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUVILHFCQUFxQjtJQUNyQixPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVyYWN0aXZlIHBhZ2luYXRpb24gZm9yIENMSSB0YWJsZXNcbiAqL1xuaW1wb3J0IHJlYWRsaW5lIGZyb20gJ25vZGU6cmVhZGxpbmUnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vY29uZmlnL2xvZy5qcyc7XG5pbXBvcnQgeyBpc0ludGVyYWN0aXZlIH0gZnJvbSAnLi90ZXJtaW5hbC11dGlscy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvblN0YXRlIHtcbiAgY3Vyc29yOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBoYXNNb3JlOiBib29sZWFuO1xuICBoYXNQcmV2aW91czogYm9vbGVhbjtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICBoYXNNb3JlUGFnZXNBdmFpbGFibGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkNhbGxiYWNrcyB7XG4gIG9uTmV4dDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgb25QcmV2aW91czogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgb25FeGl0OiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFNldHVwIGludGVyYWN0aXZlIHBhZ2luYXRpb24gbGlzdGVuZXJcbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwUGFnaW5hdGlvbkxpc3RlbmVyID0gKFxuICBzdGF0ZTogUGFnaW5hdGlvblN0YXRlLFxuICBjYWxsYmFja3M6IFBhZ2luYXRpb25DYWxsYmFja3Ncbik6ICgoKSA9PiB2b2lkKSA9PiB7XG4gIGlmICghaXNJbnRlcmFjdGl2ZSgpKSB7XG4gICAgcmV0dXJuICgpID0+IHt9OyAvLyBOby1vcCBjbGVhbnVwIGZ1bmN0aW9uXG4gIH1cblxuICAvLyBFbmFibGUgcmF3IG1vZGUgZm9yIGltbWVkaWF0ZSBrZXkgY2FwdHVyZVxuICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgIHJlYWRsaW5lLmVtaXRLZXlwcmVzc0V2ZW50cyhwcm9jZXNzLnN0ZGluKTtcbiAgICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUodHJ1ZSk7XG4gIH1cblxuICBjb25zdCBrZXlwcmVzc0hhbmRsZXIgPSBhc3luYyAoX2NodW5rOiBzdHJpbmcsIGtleTogYW55KSA9PiB7XG4gICAgaWYgKCFrZXkpIHJldHVybjtcblxuICAgIC8vIEhhbmRsZSBleGl0XG4gICAgaWYgKGtleS5uYW1lID09PSAncScgfHwgKGtleS5jdHJsICYmIGtleS5uYW1lID09PSAnYycpKSB7XG4gICAgICBjYWxsYmFja3Mub25FeGl0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIG5leHQgcGFnZVxuICAgIGlmIChcbiAgICAgIChrZXkubmFtZSA9PT0gJ24nICYmICFrZXkuY3RybCkgfHxcbiAgICAgIGtleS5uYW1lID09PSAncmlnaHQnIHx8XG4gICAgICBrZXkubmFtZSA9PT0gJ2Rvd24nXG4gICAgKSB7XG4gICAgICBpZiAoc3RhdGUuaGFzTW9yZSkge1xuICAgICAgICBhd2FpdCBjYWxsYmFja3Mub25OZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIud2FybignTm8gbW9yZSBwYWdlcyBhdmFpbGFibGUnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJldmlvdXMgcGFnZVxuICAgIGlmIChcbiAgICAgIChrZXkubmFtZSA9PT0gJ3AnICYmICFrZXkuY3RybCkgfHxcbiAgICAgIGtleS5uYW1lID09PSAnbGVmdCcgfHxcbiAgICAgIGtleS5uYW1lID09PSAndXAnXG4gICAgKSB7XG4gICAgICAvLyBBbHdheXMgYWxsb3cgZ29pbmcgXCJwcmV2aW91c1wiIC0gb24gZmlyc3QgcGFnZSBpdCByZWxvYWRzXG4gICAgICBhd2FpdCBjYWxsYmFja3Mub25QcmV2aW91cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfTtcblxuICBwcm9jZXNzLnN0ZGluLm9uKCdrZXlwcmVzcycsIGtleXByZXNzSGFuZGxlcik7XG5cbiAgLy8gUmV0dXJuIGNsZWFudXAgZnVuY3Rpb25cbiAgcmV0dXJuICgpID0+IHtcbiAgICBwcm9jZXNzLnN0ZGluLm9mZigna2V5cHJlc3MnLCBrZXlwcmVzc0hhbmRsZXIpO1xuICAgIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZICYmIHByb2Nlc3Muc3RkaW4uaXNSYXcpIHtcbiAgICAgIHByb2Nlc3Muc3RkaW4uc2V0UmF3TW9kZShmYWxzZSk7XG4gICAgfVxuICAgIHByb2Nlc3Muc3RkaW4ucGF1c2UoKTtcbiAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBwYWdpbmF0aW9uIHN0YXRlIGluZm9cbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dQYWdpbmF0aW9uU3RhdGUgPSAoc3RhdGU6IFBhZ2luYXRpb25TdGF0ZSkgPT4ge1xuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAvLyBTaG93IHBhZ2UgaW5kaWNhdG9yXG4gIC8vIFVzZSBoYXNNb3JlUGFnZXNBdmFpbGFibGUgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSB1bmtub3duIHBhZ2VzIGJleW9uZCB3aGF0IHdlJ3ZlIGxvYWRlZFxuICBjb25zdCBwYWdlSW5kaWNhdG9yID0gc3RhdGUuaGFzTW9yZVBhZ2VzQXZhaWxhYmxlXG4gICAgPyBgUGFnZSAke3N0YXRlLmN1cnJlbnRQYWdlfSBvZiAke3N0YXRlLnRvdGFsUGFnZXN9K2BcbiAgICA6IGBQYWdlICR7c3RhdGUuY3VycmVudFBhZ2V9IG9mICR7c3RhdGUudG90YWxQYWdlc31gO1xuICBwYXJ0cy5wdXNoKHBhZ2VJbmRpY2F0b3IpO1xuXG4gIGlmIChzdGF0ZS5oYXNQcmV2aW91cykge1xuICAgIHBhcnRzLnB1c2goJ1twXSBQcmV2aW91cycpO1xuICB9IGVsc2Uge1xuICAgIHBhcnRzLnB1c2goJ1twXSBSZWxvYWQnKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5oYXNNb3JlKSB7XG4gICAgcGFydHMucHVzaCgnW25dIE5leHQnKTtcbiAgfVxuXG4gIHBhcnRzLnB1c2goJ1txXSBRdWl0IChvciBDdHJsK0MpJyk7XG4gIGxvZ2dlci5sb2coYFxcbiR7cGFydHMuam9pbignIHwgJyl9YCk7XG59O1xuXG4vKipcbiAqIFBhZ2UgZGF0YSBzdHJ1Y3R1cmUgZm9yIGNhY2hpbmcgcGFnaW5hdGVkIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlRGF0YTxUPiB7XG4gIGRhdGE6IFRbXTtcbiAgY3Vyc29yOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBoYXNNb3JlOiBib29sZWFuO1xuICBwYWdlSW5mbz86IEFuYWx5dGljc1BhZ2VJbmZvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5dGljc1BhZ2VJbmZvIHtcbiAgY3VycmVudExvb2tiYWNrRGF5czogbnVtYmVyO1xuICBtYXhMb29rYmFja0RheXM6IG51bWJlcjtcbiAgY3VycmVudFdpbmRvd1N0YXJ0OiBEYXRlIHwgc3RyaW5nO1xuICBtYXhXaW5kb3dTdGFydDogRGF0ZSB8IHN0cmluZztcbiAgdXBncmFkZUF2YWlsYWJsZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFBhZ2VJbmZvVXBncmFkZUhpbnQgPSAoXG4gIHBhZ2VJbmZvOiBBbmFseXRpY3NQYWdlSW5mbyB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKFxuICAgICFwYWdlSW5mbz8udXBncmFkZUF2YWlsYWJsZSB8fFxuICAgIHBhZ2VJbmZvLmN1cnJlbnRMb29rYmFja0RheXMgPj0gcGFnZUluZm8ubWF4TG9va2JhY2tEYXlzXG4gICkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gYFNob3dpbmcgdGhlIGxhc3QgJHtwYWdlSW5mby5jdXJyZW50TG9va2JhY2tEYXlzfSBkYXlzIG9mIHdvcmtmbG93IG9ic2VydmFiaWxpdHkgZGF0YS4gVXBncmFkZSBPYnNlcnZhYmlsaXR5IFBsdXMgdG8gcXVlcnkgdXAgdG8gJHtwYWdlSW5mby5tYXhMb29rYmFja0RheXN9IGRheXMuYDtcbn07XG5cbmNvbnN0IHNob3dQYWdlSW5mb1VwZ3JhZGVIaW50ID0gKFxuICBwYWdlSW5mbzogQW5hbHl0aWNzUGFnZUluZm8gfCB1bmRlZmluZWRcbik6IHZvaWQgPT4ge1xuICBjb25zdCBoaW50ID0gZ2V0UGFnZUluZm9VcGdyYWRlSGludChwYWdlSW5mbyk7XG4gIGlmIChoaW50KSB7XG4gICAgbG9nZ2VyLmluZm8oaGludCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2VuZXJpYyBwYWdpbmF0aW9uIGhhbmRsZXIgZm9yIGxpc3Qgb3BlcmF0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RQYWdpbmF0aW9uT3B0aW9uczxURGF0YT4ge1xuICAvKipcbiAgICogSW5pdGlhbCBjdXJzb3IgZnJvbSBDTEkgb3B0aW9uc1xuICAgKi9cbiAgaW5pdGlhbEN1cnNvcj86IHN0cmluZztcblxuICAvKipcbiAgICogRmV0Y2ggZnVuY3Rpb24gdGhhdCByZXR1cm5zIHBhZ2luYXRlZCBkYXRhXG4gICAqL1xuICBmZXRjaFBhZ2U6IChjdXJzb3I6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gUHJvbWlzZTxQYWdlRGF0YTxURGF0YT4+O1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IGZ1bmN0aW9uIHRoYXQgcmVuZGVycyB0aGUgY3VycmVudCBwYWdlXG4gICAqL1xuICBkaXNwbGF5UGFnZTogKFxuICAgIGRhdGE6IFREYXRhW10sXG4gICAgcGFnZUluZGV4OiBudW1iZXIsXG4gICAgcGFnZTogUGFnZURhdGE8VERhdGE+XG4gICkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIGZvciB3aGVuIGZldGNoaW5nIHN0YXJ0c1xuICAgKi9cbiAgb25GZXRjaFN0YXJ0PzogKHBhZ2VJbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgaW50ZXJhY3RpdmUgcGFnaW5hdGlvbiB3aXRoIGtleWJvYXJkIGNvbnRyb2xzXG4gICAqL1xuICBpbnRlcmFjdGl2ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU2V0dXAgcGFnaW5hdGlvbiBmb3IgbGlzdCBvcGVyYXRpb25zIHdpdGggcGFnZSBjYWNoaW5nXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXR1cExpc3RQYWdpbmF0aW9uPFREYXRhPihcbiAgb3B0aW9uczogTGlzdFBhZ2luYXRpb25PcHRpb25zPFREYXRhPlxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgaW5pdGlhbEN1cnNvciwgZmV0Y2hQYWdlLCBkaXNwbGF5UGFnZSwgb25GZXRjaFN0YXJ0LCBpbnRlcmFjdGl2ZSB9ID1cbiAgICBvcHRpb25zO1xuXG4gIC8vIEludGVyYWN0aXZlIG1vZGUgcmVxdWlyZXMgYm90aCBUVFkgc3VwcG9ydCBhbmQgZXhwbGljaXQgLS1pbnRlcmFjdGl2ZSBmbGFnXG4gIGNvbnN0IGVuYWJsZUludGVyYWN0aXZlID0gaW50ZXJhY3RpdmUgJiYgaXNJbnRlcmFjdGl2ZSgpO1xuXG4gIC8vIFBhZ2VzIHN0YWNrIC0gc3RvcmVzIGFsbCBmZXRjaGVkIHBhZ2VzXG4gIGNvbnN0IHBhZ2VzOiBQYWdlRGF0YTxURGF0YT5bXSA9IFtdO1xuXG4gIC8vIEN1cnJlbnQgcGFnZSBpbmRleCAoMC1iYXNlZClcbiAgbGV0IHBhZ2VJbmRleCA9IDA7XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuZCBkaXNwbGF5IGEgc3BlY2lmaWMgcGFnZVxuICAgKi9cbiAgY29uc3Qgc2hvd1BhZ2UgPSBhc3luYyAoaW5kZXg6IG51bWJlciwgY3Vyc29yPzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG9uRmV0Y2hTdGFydCkge1xuICAgICAgb25GZXRjaFN0YXJ0KGluZGV4KTtcbiAgICB9XG5cbiAgICBjb25zdCBwYWdlID0gYXdhaXQgZmV0Y2hQYWdlKGN1cnNvcik7XG4gICAgcGFnZXNbaW5kZXhdID0gcGFnZTtcbiAgICBwYWdlSW5kZXggPSBpbmRleDtcblxuICAgIC8vIENsZWFyIHNjcmVlbiBmb3Igc3Vic2VxdWVudCBwYWdlcyBpbiBpbnRlcmFjdGl2ZSBtb2RlXG4gICAgaWYgKGVuYWJsZUludGVyYWN0aXZlKSB7XG4gICAgICBjb25zb2xlLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZGlzcGxheVBhZ2UocGFnZS5kYXRhLCBpbmRleCwgcGFnZSk7XG4gICAgc2hvd1BhZ2VJbmZvVXBncmFkZUhpbnQocGFnZS5wYWdlSW5mbyk7XG4gICAgcmV0dXJuIHBhZ2U7XG4gIH07XG5cbiAgLy8gRmV0Y2ggYW5kIGRpc3BsYXkgZmlyc3QgcGFnZVxuICBjb25zdCBmaXJzdFBhZ2UgPSBhd2FpdCBzaG93UGFnZSgwLCBpbml0aWFsQ3Vyc29yKTtcblxuICAvLyBJbiBub24taW50ZXJhY3RpdmUgbW9kZSwgc2hvdyBpbmZvIGlmIHRoZXJlIGFyZSBtb3JlIHBhZ2VzXG4gIGlmICghZW5hYmxlSW50ZXJhY3RpdmUpIHtcbiAgICBpZiAoZmlyc3RQYWdlLmhhc01vcmUpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICAnXFxuTW9yZSByZXN1bHRzIGF2YWlsYWJsZS4gVXNlIC0taW50ZXJhY3RpdmUgKC1pKSB0byBwYWdpbmF0ZSB0aHJvdWdoIHJlc3VsdHMuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gU2V0dXAgcGFnaW5hdGlvbiBzdGF0ZVxuICBjb25zdCBwYWdpbmF0aW9uU3RhdGU6IFBhZ2luYXRpb25TdGF0ZSA9IHtcbiAgICBjdXJzb3I6IGZpcnN0UGFnZS5jdXJzb3IsXG4gICAgaGFzTW9yZTogZmlyc3RQYWdlLmhhc01vcmUsXG4gICAgaGFzUHJldmlvdXM6IGZhbHNlLFxuICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgIHRvdGFsUGFnZXM6IDEsXG4gICAgaGFzTW9yZVBhZ2VzQXZhaWxhYmxlOiBmaXJzdFBhZ2UuaGFzTW9yZSxcbiAgfTtcblxuICBzaG93UGFnaW5hdGlvblN0YXRlKHBhZ2luYXRpb25TdGF0ZSk7XG5cbiAgY29uc3QgY2xlYW51cCA9IHNldHVwUGFnaW5hdGlvbkxpc3RlbmVyKHBhZ2luYXRpb25TdGF0ZSwge1xuICAgIG9uTmV4dDogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbmV3UGFnZUluZGV4ID0gcGFnZUluZGV4ICsgMTtcblxuICAgICAgLy8gQ2hlY2sgaWYgd2UgYWxyZWFkeSBoYXZlIHRoaXMgcGFnZSBjYWNoZWRcbiAgICAgIGlmIChwYWdlc1tuZXdQYWdlSW5kZXhdKSB7XG4gICAgICAgIHBhZ2VJbmRleCA9IG5ld1BhZ2VJbmRleDtcbiAgICAgICAgY29uc3QgY2FjaGVkUGFnZSA9IHBhZ2VzW25ld1BhZ2VJbmRleF07XG5cbiAgICAgICAgaWYgKGVuYWJsZUludGVyYWN0aXZlKSB7XG4gICAgICAgICAgY29uc29sZS5jbGVhcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgZGlzcGxheVBhZ2UoY2FjaGVkUGFnZS5kYXRhLCBwYWdlSW5kZXgsIGNhY2hlZFBhZ2UpO1xuICAgICAgICBzaG93UGFnZUluZm9VcGdyYWRlSGludChjYWNoZWRQYWdlLnBhZ2VJbmZvKTtcblxuICAgICAgICBwYWdpbmF0aW9uU3RhdGUuY3Vyc29yID0gY2FjaGVkUGFnZS5jdXJzb3I7XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS5oYXNNb3JlID0gY2FjaGVkUGFnZS5oYXNNb3JlO1xuICAgICAgICBwYWdpbmF0aW9uU3RhdGUuaGFzUHJldmlvdXMgPSBwYWdlSW5kZXggPiAwO1xuICAgICAgICBwYWdpbmF0aW9uU3RhdGUuY3VycmVudFBhZ2UgPSBwYWdlSW5kZXggKyAxO1xuICAgICAgICBwYWdpbmF0aW9uU3RhdGUudG90YWxQYWdlcyA9IHBhZ2VzLmxlbmd0aDtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGxhc3QgcGFnZSBpbiBjYWNoZSBoYXMgbW9yZSBkYXRhXG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS5oYXNNb3JlUGFnZXNBdmFpbGFibGUgPSBwYWdlc1twYWdlcy5sZW5ndGggLSAxXS5oYXNNb3JlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRmV0Y2ggbmV3IHBhZ2UgdXNpbmcgY3Vyc29yIGZyb20gY3VycmVudCBwYWdlXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gcGFnZXNbcGFnZUluZGV4XTtcbiAgICAgICAgY29uc3QgbmV4dFBhZ2UgPSBhd2FpdCBzaG93UGFnZShcbiAgICAgICAgICBuZXdQYWdlSW5kZXgsXG4gICAgICAgICAgY3VycmVudFBhZ2UuY3Vyc29yIHx8IHVuZGVmaW5lZFxuICAgICAgICApO1xuXG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS5jdXJzb3IgPSBuZXh0UGFnZS5jdXJzb3I7XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS5oYXNNb3JlID0gbmV4dFBhZ2UuaGFzTW9yZTtcbiAgICAgICAgcGFnaW5hdGlvblN0YXRlLmhhc1ByZXZpb3VzID0gcGFnZUluZGV4ID4gMDtcbiAgICAgICAgcGFnaW5hdGlvblN0YXRlLmN1cnJlbnRQYWdlID0gcGFnZUluZGV4ICsgMTtcbiAgICAgICAgcGFnaW5hdGlvblN0YXRlLnRvdGFsUGFnZXMgPSBwYWdlcy5sZW5ndGg7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IHBhZ2UgaW4gY2FjaGUgaGFzIG1vcmUgZGF0YVxuICAgICAgICBwYWdpbmF0aW9uU3RhdGUuaGFzTW9yZVBhZ2VzQXZhaWxhYmxlID0gcGFnZXNbcGFnZXMubGVuZ3RoIC0gMV0uaGFzTW9yZTtcbiAgICAgIH1cblxuICAgICAgc2hvd1BhZ2luYXRpb25TdGF0ZShwYWdpbmF0aW9uU3RhdGUpO1xuICAgIH0sXG4gICAgb25QcmV2aW91czogYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlOiBvbiBmaXJzdCBwYWdlLCByZWxvYWRcbiAgICAgIGlmIChwYWdlSW5kZXggPT09IDApIHtcbiAgICAgICAgcGFnZXMubGVuZ3RoID0gMDsgLy8gQ2xlYXIgY2FjaGVcbiAgICAgICAgY29uc3QgcmVsb2FkZWRQYWdlID0gYXdhaXQgc2hvd1BhZ2UoMCwgaW5pdGlhbEN1cnNvcik7XG5cbiAgICAgICAgcGFnaW5hdGlvblN0YXRlLmN1cnNvciA9IHJlbG9hZGVkUGFnZS5jdXJzb3I7XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS5oYXNNb3JlID0gcmVsb2FkZWRQYWdlLmhhc01vcmU7XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS5oYXNQcmV2aW91cyA9IGZhbHNlO1xuICAgICAgICBwYWdpbmF0aW9uU3RhdGUuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICBwYWdpbmF0aW9uU3RhdGUudG90YWxQYWdlcyA9IDE7XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS5oYXNNb3JlUGFnZXNBdmFpbGFibGUgPSByZWxvYWRlZFBhZ2UuaGFzTW9yZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEdvIHRvIHByZXZpb3VzIGNhY2hlZCBwYWdlXG4gICAgICAgIHBhZ2VJbmRleC0tO1xuICAgICAgICBjb25zdCBwcmV2UGFnZSA9IHBhZ2VzW3BhZ2VJbmRleF07XG5cbiAgICAgICAgaWYgKGVuYWJsZUludGVyYWN0aXZlKSB7XG4gICAgICAgICAgY29uc29sZS5jbGVhcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgZGlzcGxheVBhZ2UocHJldlBhZ2UuZGF0YSwgcGFnZUluZGV4LCBwcmV2UGFnZSk7XG4gICAgICAgIHNob3dQYWdlSW5mb1VwZ3JhZGVIaW50KHByZXZQYWdlLnBhZ2VJbmZvKTtcblxuICAgICAgICBwYWdpbmF0aW9uU3RhdGUuY3Vyc29yID0gcHJldlBhZ2UuY3Vyc29yO1xuICAgICAgICBwYWdpbmF0aW9uU3RhdGUuaGFzTW9yZSA9IHByZXZQYWdlLmhhc01vcmU7XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS5oYXNQcmV2aW91cyA9IHBhZ2VJbmRleCA+IDA7XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS5jdXJyZW50UGFnZSA9IHBhZ2VJbmRleCArIDE7XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZS50b3RhbFBhZ2VzID0gcGFnZXMubGVuZ3RoO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgbGFzdCBwYWdlIGluIGNhY2hlIGhhcyBtb3JlIGRhdGFcbiAgICAgICAgcGFnaW5hdGlvblN0YXRlLmhhc01vcmVQYWdlc0F2YWlsYWJsZSA9IHBhZ2VzW3BhZ2VzLmxlbmd0aCAtIDFdLmhhc01vcmU7XG4gICAgICB9XG5cbiAgICAgIHNob3dQYWdpbmF0aW9uU3RhdGUocGFnaW5hdGlvblN0YXRlKTtcbiAgICB9LFxuICAgIG9uRXhpdDogKCkgPT4ge1xuICAgICAgY2xlYW51cCgpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIEtlZXAgcHJvY2VzcyBhbGl2ZVxuICByZXR1cm4gbmV3IFByb21pc2UoKCkgPT4ge30pO1xufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/run.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG1D,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAaD,eAAO,MAAM,QAAQ,GACnB,OAAO,KAAK,EACZ,qBAAqB,MAAM,EAC3B,MAAM,aAAa,EACnB,MAAM,MAAM,EAAE,kBA8Df,CAAC"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/run.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI7C,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAaD,eAAO,MAAM,QAAQ,GACnB,OAAO,KAAK,EACZ,qBAAqB,MAAM,EAC3B,MAAM,aAAa,EACnB,MAAM,MAAM,EAAE,kBAuFf,CAAC"}
@@ -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`);
@@ -49,7 +72,7 @@ export const startRun = async (world, workflowNameOrRunId, opts, args) => {
49
72
  // (e.g. old deployment without health check support).
50
73
  let specVersion = run.specVersion;
51
74
  try {
52
- const hc = await healthCheck(world, 'workflow', {
75
+ const hc = await healthCheck(world, {
53
76
  deploymentId,
54
77
  timeout: 10_000,
55
78
  });
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU8vRCxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQUUsS0FBWSxFQUFFLFdBQW1CLEVBQUUsRUFBRTtJQUNsRSxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxXQUFXLFlBQVksQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQzNCLEtBQVksRUFDWixtQkFBMkIsRUFDM0IsSUFBbUIsRUFDbkIsSUFBYyxFQUNkLEVBQUU7SUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLElB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RCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUU7UUFDbkQsWUFBWTtRQUNaLFdBQVc7S0FDWixDQUFDLENBQUM7SUFFSCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RhcnQgfSBmcm9tICdAd29ya2Zsb3cvY29yZS9ydW50aW1lJztcbmltcG9ydCB7IGhlYWx0aENoZWNrIH0gZnJvbSAnQHdvcmtmbG93L2NvcmUvcnVudGltZS9oZWxwZXJzJztcbmltcG9ydCB0eXBlIHsgV29ybGQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vY29uZmlnL2xvZy5qcyc7XG5pbXBvcnQgeyBwbGFuV2luZG93U3RhcnRGcm9tUmVzcG9uc2UgfSBmcm9tICcuL3RpbWUtd2luZG93LmpzJztcblxuaW50ZXJmYWNlIENMSUNyZWF0ZU9wdHMge1xuICBqc29uPzogYm9vbGVhbjtcbiAgdmVyYm9zZT86IGJvb2xlYW47XG59XG5cbmNvbnN0IGdldFdvcmtmbG93TmFtZSA9IGFzeW5jICh3b3JsZDogV29ybGQsIHJ1bk5hbWVPcklkOiBzdHJpbmcpID0+IHtcbiAgaWYgKHJ1bk5hbWVPcklkLnN0YXJ0c1dpdGgoJ3dydW5fJykpIHtcbiAgICBjb25zdCBydW4gPSBhd2FpdCB3b3JsZC5ydW5zLmdldChydW5OYW1lT3JJZCk7XG4gICAgaWYgKCFydW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUnVuICR7cnVuTmFtZU9ySWR9IG5vdCBmb3VuZGApO1xuICAgIH1cbiAgICByZXR1cm4gcnVuLndvcmtmbG93TmFtZTtcbiAgfVxuICByZXR1cm4gcnVuTmFtZU9ySWQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhcnRSdW4gPSBhc3luYyAoXG4gIHdvcmxkOiBXb3JsZCxcbiAgd29ya2Zsb3dOYW1lT3JSdW5JZDogc3RyaW5nLFxuICBvcHRzOiBDTElDcmVhdGVPcHRzLFxuICBhcmdzOiBzdHJpbmdbXVxuKSA9PiB7XG4gIGNvbnN0IGpzb25BcmdzID0gYXJncy5tYXAoKGFyZykgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShhcmcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIud2FybihgRmFpbGVkIHRvIHBhcnNlIGFyZ3VtZW50IFwiJHthcmd9XCIgYXMgSlNPTjogJHtlcnJvcn1gKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gT25seSBkZXBsb3ltZW50L3NwZWMgbWV0YWRhdGEgaXMgbmVlZGVkIHRvIHN0YXJ0IGEgbmV3IHJ1biwgc28gdGhpc1xuICAvLyBhY2NlcHRzIGVpdGhlciBhIGZ1bGwgcnVuIHJlY29yZCBvciBhbiBhbmFseXRpY3MgKG1ldGFkYXRhLW9ubHkpIHJvdy5cbiAgbGV0IHJ1bjpcbiAgICB8IHsgZGVwbG95bWVudElkOiBzdHJpbmc7IHNwZWNWZXJzaW9uPzogbnVtYmVyOyB3b3JrZmxvd05hbWU6IHN0cmluZyB9XG4gICAgfCB1bmRlZmluZWQ7XG4gIC8vIElmIHRoZSB3b3JrZmxvd05hbWVPclJ1bklkIGlzIGEgcnVuIElELCBnZXQgdGhlIHJ1blxuICBpZiAod29ya2Zsb3dOYW1lT3JSdW5JZC5zdGFydHNXaXRoKCd3cnVuXycpKSB7XG4gICAgcnVuID0gYXdhaXQgd29ybGQucnVucy5nZXQod29ya2Zsb3dOYW1lT3JSdW5JZCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBmaXJzdCBydW4gZm9yIHRoYXQgbmFtZSwgaG9wZWZ1bGx5IHRoZSBuZXdlc3QgZGVwbG95bWVudCxcbiAgICAvLyBidXQgY2FuJ3QgZ3VhcmFudGVlIHRoYXQuIFRoaXMgaXMgbWV0YWRhdGEgb25seSwgc28gcHJlZmVyIHRoZVxuICAgIC8vIGFuYWx5dGljcyByZWFkIHBhdGggd2hlbiB0aGUgYmFja2VuZCBwcm92aWRlcyBvbmUuXG4gICAgY29uc3QgcnVuTGlzdCA9IHdvcmxkLmFuYWx5dGljc1xuICAgICAgPyBhd2FpdCB3b3JsZC5hbmFseXRpY3MucnVucy5saXN0KHtcbiAgICAgICAgICB3b3JrZmxvd05hbWU6IHdvcmtmbG93TmFtZU9yUnVuSWQsXG4gICAgICAgICAgcGFnaW5hdGlvbjogeyBzb3J0T3JkZXI6ICdkZXNjJywgbGltaXQ6IDEgfSxcbiAgICAgICAgfSlcbiAgICAgIDogYXdhaXQgd29ybGQucnVucy5saXN0KHtcbiAgICAgICAgICB3b3JrZmxvd05hbWU6IHdvcmtmbG93TmFtZU9yUnVuSWQsXG4gICAgICAgICAgcGFnaW5hdGlvbjogeyBzb3J0T3JkZXI6ICdkZXNjJywgbGltaXQ6IDEgfSxcbiAgICAgICAgICByZXNvbHZlRGF0YTogJ25vbmUnLFxuICAgICAgICB9KTtcbiAgICBydW4gPSBydW5MaXN0LmRhdGFbMF07XG5cbiAgICAvLyBUaGUgYW5hbHl0aWNzIGJhY2tlbmQgZGVmYXVsdHMgaXRzIGxpc3RpbmcgdG8gYSByZWNlbnQgd2luZG93XG4gICAgLy8gKHRyYWlsaW5nIDI0aCBvbiB0aGUgVmVyY2VsIGJhY2tlbmQpLiBXaGVuIHRoZSBuYW1lIHdhc24ndCBmb3VuZFxuICAgIC8vIHRoZXJlLCByZXRyeSBhY3Jvc3MgdGhlIHBsYW4ncyB3aG9sZSBvYnNlcnZhYmlsaXR5IHdpbmRvdyB1c2luZyB0aGVcbiAgICAvLyB3aW5kb3cgYm91bmRzIGZyb20gdGhlIHJlc3BvbnNlJ3MgcGFnZSBtZXRhZGF0YS5cbiAgICBpZiAoIXJ1biAmJiB3b3JsZC5hbmFseXRpY3MpIHtcbiAgICAgIGNvbnN0IHdpbmRvd1N0YXJ0ID0gcGxhbldpbmRvd1N0YXJ0RnJvbVJlc3BvbnNlKHJ1bkxpc3QpO1xuICAgICAgaWYgKHdpbmRvd1N0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHdpZGVuZWQgPSBhd2FpdCB3b3JsZC5hbmFseXRpY3MucnVucy5saXN0KHtcbiAgICAgICAgICB3b3JrZmxvd05hbWU6IHdvcmtmbG93TmFtZU9yUnVuSWQsXG4gICAgICAgICAgc3RhcnRUaW1lOiB3aW5kb3dTdGFydCxcbiAgICAgICAgICBlbmRUaW1lOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgcGFnaW5hdGlvbjogeyBzb3J0T3JkZXI6ICdkZXNjJywgbGltaXQ6IDEgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJ1biA9IHdpZGVuZWQuZGF0YVswXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIXJ1bikge1xuICAgIHRocm93IG5ldyBFcnJvcihgUnVuIFwiJHt3b3JrZmxvd05hbWVPclJ1bklkfVwiIG5vdCBmb3VuZGApO1xuICB9XG5cbiAgY29uc3QgZGVwbG95bWVudElkID0gcnVuLmRlcGxveW1lbnRJZDtcbiAgY29uc3Qgd29ya2Zsb3dJZCA9IGF3YWl0IGdldFdvcmtmbG93TmFtZSh3b3JsZCwgd29ya2Zsb3dOYW1lT3JSdW5JZCk7XG5cbiAgLy8gUHJvYmUgdGhlIGRlcGxveW1lbnQncyBzcGVjVmVyc2lvbiB2aWEgaGVhbHRoIGNoZWNrIHNvIHdlIHVzZSB0aGVcbiAgLy8gY29ycmVjdCBxdWV1ZSB0cmFuc3BvcnQgKEpTT04gZm9yIG9sZCBkZXBsb3ltZW50cywgQ0JPUiBmb3IgbmV3KS5cbiAgLy8gRmFsbHMgYmFjayB0byB0aGUgcnVuJ3Mgc3BlY1ZlcnNpb24gaWYgdGhlIGhlYWx0aCBjaGVjayBmYWlsc1xuICAvLyAoZS5nLiBvbGQgZGVwbG95bWVudCB3aXRob3V0IGhlYWx0aCBjaGVjayBzdXBwb3J0KS5cbiAgbGV0IHNwZWNWZXJzaW9uID0gcnVuLnNwZWNWZXJzaW9uO1xuICB0cnkge1xuICAgIGNvbnN0IGhjID0gYXdhaXQgaGVhbHRoQ2hlY2sod29ybGQsIHtcbiAgICAgIGRlcGxveW1lbnRJZCxcbiAgICAgIHRpbWVvdXQ6IDEwXzAwMCxcbiAgICB9KTtcbiAgICBpZiAoaGMuaGVhbHRoeSAmJiBoYy5zcGVjVmVyc2lvbiAhPSBudWxsKSB7XG4gICAgICBzcGVjVmVyc2lvbiA9IGhjLnNwZWNWZXJzaW9uO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gSGVhbHRoIGNoZWNrIGZhaWxlZCDigJQgdXNlIHJ1bidzIHNwZWNWZXJzaW9uIGFzIGZhbGxiYWNrXG4gIH1cblxuICBjb25zdCBuZXdSdW4gPSBhd2FpdCBzdGFydCh7IHdvcmtmbG93SWQgfSwganNvbkFyZ3MsIHtcbiAgICBkZXBsb3ltZW50SWQsXG4gICAgc3BlY1ZlcnNpb24sXG4gIH0pO1xuXG4gIGlmIChvcHRzLmpzb24pIHtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShuZXdSdW4sIG51bGwsIDIpKTtcbiAgfSBlbHNlIHtcbiAgICBsb2dnZXIubG9nKG5ld1J1bik7XG4gIH1cbn07XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3Qvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBRSxXQUFXLElBQUksbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxJQUFJLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0UsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUVsQixZQUFZLEdBQ2IsTUFBTSxVQUFVLENBQUM7QUFFbEI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQ2hDLEtBUUMsRUFDRCxPQUFlLEVBQ2YsMkJBQTJCLEdBQUcsS0FBSyxFQUNuQyxFQUFFO0lBQ0YsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXZDLG9CQUFv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QUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUd2RCxDQUFDO0lBQ0Ysd0VBQXdFO0lBQ3hFLG9EQUFvRDtJQUNwRCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO0lBQ2xFLElBQUksT0FBTyxhQUFhLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FDYiw2QkFBNkIsU0FBUyxrQ0FBa0MsQ0FDekUsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGFBQWEsRUFBRSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSAnbm9kZTptb2R1bGUnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgc2V0V29ybGQgfSBmcm9tICdAd29ya2Zsb3cvY29yZS9ydW50aW1lJztcbmltcG9ydCB7IGlzVmVyY2VsV29ybGRUYXJnZXQgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBXb3JsZCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBjcmVhdGVXb3JsZCBhcyBjcmVhdGVMb2NhbENsaVdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLWxvY2FsJztcbmltcG9ydCB7IGNyZWF0ZVdvcmxkIGFzIGNyZWF0ZVZlcmNlbENsaVdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLXZlcmNlbCc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHRlcm1pbmFsTGluayBmcm9tICd0ZXJtaW5hbC1saW5rJztcbmltcG9ydCB7IGxvZ2dlciwgc2V0SnNvbk1vZGUsIHNldFZlcmJvc2VNb2RlIH0gZnJvbSAnLi4vY29uZmlnL2xvZy5qcyc7XG5pbXBvcnQgeyBjaGVja0ZvclVwZGF0ZUNhY2hlZCB9IGZyb20gJy4uL3VwZGF0ZS1jaGVjay5qcyc7XG5pbXBvcnQge1xuICBpbmZlckxvY2FsV29ybGRFbnZWYXJzLFxuICBpbmZlclZlcmNlbEVudlZhcnMsXG4gIHR5cGUgVmVyY2VsRW52VmFycyxcbiAgd3JpdGVFbnZWYXJzLFxufSBmcm9tICcuL2Vudi5qcyc7XG5cbi8qKlxuICogU2V0dXAgQ0xJIHdvcmxkIGNvbmZpZ3VyYXRpb24uXG4gKiBJZiB0aHJvd09uQ29uZmlnRXJyb3IgaXMgZmFsc2UsIHdpbGwgcmV0dXJuIG51bGwgd29ybGQgd2l0aCB0aGUgZXJyb3IgbWVzc2FnZVxuICogaW5zdGVhZCBvZiB0aHJvd2luZywgYWxsb3dpbmcgdGhlIHdlYiBVSSB0byBvcGVuIGZvciBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgY29uc3Qgc2V0dXBDbGlXb3JsZCA9IGFzeW5jIChcbiAgZmxhZ3M6IHtcbiAgICBqc29uOiBib29sZWFuO1xuICAgIHZlcmJvc2U6IGJvb2xlYW47XG4gICAgYmFja2VuZDogc3RyaW5nO1xuICAgIGVudjogc3RyaW5nO1xuICAgIGF1dGhUb2tlbjogc3RyaW5nO1xuICAgIHByb2plY3Q6IHN0cmluZztcbiAgICB0ZWFtOiBzdHJpbmc7XG4gIH0sXG4gIHZlcnNpb246IHN0cmluZyxcbiAgaWdub3JlTG9jYWxXb3JsZENvbmZpZ0Vycm9yID0gZmFsc2VcbikgPT4ge1xuICBzZXRKc29uTW9kZShCb29sZWFuKGZsYWdzLmpzb24pKTtcbiAgc2V0VmVyYm9zZU1vZGUoQm9vbGVhbihmbGFncy52ZXJib3NlKSk7XG5cbiAgLy8gQ2hlY2sgZm9yIHVwZGF0ZXNcbiAgY29uc3QgdXBkYXRlQ2hlY2sgPSBhd2FpdCBjaGVja0ZvclVwZGF0ZUNhY2hlZCh2ZXJzaW9uKTtcblxuICBjb25zdCB3aXRoQW5zaUxpbmtzID0gIWZsYWdzLmpzb247XG4gIGNvbnN0IGRvY3NVcmwgPSB3aXRoQW5zaUxpbmtzXG4gICAgPyB0ZXJtaW5hbExpbmsoJ2h0dHBzOi8vd29ya2Zsb3ctc2RrLmRldi8nLCAnaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2LycpXG4gICAgOiAnaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2Lyc7XG5cbiAgLy8gUHJlcGFyZSBzaG93Qm94IGxpbmVzXG4gIGNvbnN0IGJveExpbmVzID0gW1xuICAgIGBXb3JrZmxvdyBDTEkgdiR7dmVyc2lvbn1gLFxuICAgIGBEb2NzIGF0ICR7ZG9jc1VybH1gLFxuICAgIGNoYWxrLnllbGxvdygnVGhpcyBpcyBhIGJldGEgcmVsZWFzZScpLFxuICBdO1xuXG4gIC8vIEFkZCB1cGRhdGUgbWVzc2FnZSBpZiBhdmFpbGFibGVcbiAgaWYgKHVwZGF0ZUNoZWNrLm5lZWRzVXBkYXRlICYmIHVwZGF0ZUNoZWNrLmxhdGVzdFZlcnNpb24pIHtcbiAgICBib3hMaW5lcy5wdXNoKFxuICAgICAgJycsXG4gICAgICBjaGFsay5jeWFuKFxuICAgICAgICBgVXBkYXRlIGF2YWlsYWJsZTogJHt1cGRhdGVDaGVjay5jdXJyZW50VmVyc2lvbn0g4oaSICR7dXBkYXRlQ2hlY2subGF0ZXN0VmVyc2lvbn1gXG4gICAgICApLFxuICAgICAgLy8gTm90ZSB0aGF0IHdlJ3JlIHN1Z2dlc3RpbmcgaW5zdGFsbCBcImxhdGVzdFwiIGluc3RlYWQgb2YgdGhlIHJlbGVhc2UgdGFnIHRoYXQgdGhlIHVzZXIgaXNcbiAgICAgIC8vIG9uLCBiZWNhdXNlIHdlIGN1cnJlbnRseSB0YWcgYmV0YSByZWxlYXNlcyBhcyBcImxhdGVzdFwiLiBBZnRlciBHQSwgd2UgbmVlZCB0byBhZGp1c3RcbiAgICAgIC8vIHRoaXMgdG8gaW5zdGFsbCB0aGUgcmVsZWFzZSB0YWcgdGhhdCB0aGUgdXNlciBpcyBvbi5cbiAgICAgIGNoYWxrLmdyYXkoXG4gICAgICAgIGBSdW46IFxcYFtucG18YnVufHBucG1dIGkgd29ya2Zsb3dAJHt1cGRhdGVDaGVjay5sYXRlc3RWZXJzaW9ufVxcYGBcbiAgICAgICksXG4gICAgICBjaGFsay5ncmF5KFxuICAgICAgICB0ZXJtaW5hbExpbmsoXG4gICAgICAgICAgJ1ZpZXcgY2hhbmdlbG9nJyxcbiAgICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC93b3JrZmxvdy9yZWxlYXNlcydcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBsb2dnZXIuc2hvd0JveCgnZ3JlZW4nLCAuLi5ib3hMaW5lcyk7XG5cbiAgbG9nZ2VyLmRlYnVnKCdJbmZlcnJpbmcgZW52IHZhcnMsIGJhY2tlbmQ6JywgZmxhZ3MuYmFja2VuZCk7XG4gIHdyaXRlRW52VmFycyh7XG4gICAgREVCVUc6IGZsYWdzLnZlcmJvc2UgPyAnMScgOiAnJyxcbiAgICBXT1JLRkxPV19UQVJHRVRfV09STEQ6IGZsYWdzLmJhY2tlbmQsXG4gIH0pO1xuXG4gIGxldCB2ZXJjZWxFbnZWYXJzOiBWZXJjZWxFbnZWYXJzIHwgdW5kZWZpbmVkO1xuICBpZiAoaXNWZXJjZWxXb3JsZFRhcmdldChmbGFncy5iYWNrZW5kKSkge1xuICAgIC8vIFNlZWQgdGhlIGluaXRpYWwgZmxhZ3MgaW50byBwcm9jZXNzLmVudiBzbyBpbmZlclZlcmNlbEVudlZhcnMoKSBjYW5cbiAgICAvLyByZWFkIHRoZW0gdmlhIGdldEVudlZhcnMoKSBhcyBzdGFydGluZyB2YWx1ZXMgYmVmb3JlIGluZmVyZW5jZS5cbiAgICB3cml0ZUVudlZhcnMoe1xuICAgICAgV09SS0ZMT1dfVkVSQ0VMX0VOVjogZmxhZ3MuZW52LFxuICAgICAgV09SS0ZMT1dfVkVSQ0VMX0FVVEhfVE9LRU46IGZsYWdzLmF1dGhUb2tlbixcbiAgICAgIFdPUktGTE9XX1ZFUkNFTF9QUk9KRUNUOiBmbGFncy5wcm9qZWN0LFxuICAgICAgV09SS0ZMT1dfVkVSQ0VMX1RFQU06IGZsYWdzLnRlYW0sXG4gICAgfSk7XG4gICAgdmVyY2VsRW52VmFycyA9IGF3YWl0IGluZmVyVmVyY2VsRW52VmFycygpO1xuICB9IGVsc2UgaWYgKFxuICAgIGZsYWdzLmJhY2tlbmQgPT09ICdsb2NhbCcgfHxcbiAgICBmbGFncy5iYWNrZW5kID09PSAnQHdvcmtmbG93L3dvcmxkLWxvY2FsJ1xuICApIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgaW5mZXJMb2NhbFdvcmxkRW52VmFycygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoaWdub3JlTG9jYWxXb3JsZENvbmZpZ0Vycm9yKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9yID1cbiAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICA/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luc3BlY3QvdGVybWluYWwtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxHQUFZLEVBQUU7SUFDaEMsT0FBTyxDQUFDLENBQUMsQ0FDUCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQjtRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVk7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUztRQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVE7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVM7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQ3JCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFZLEVBQUU7SUFDekMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQVcsRUFBRTtJQUMzQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlDQUFpQztBQUN4RSxDQUFDLENBQUM7QUFjRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxhQUFxQixFQUNyQixRQUFpQixFQUNqQixhQUFzQixJQUFJLEVBQ1QsRUFBRTtJQUNuQiw2REFBNkQ7SUFDN0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakUsMkJBQTJCO0lBQzNCLE1BQU0sUUFBUSxHQUFvQjtRQUNoQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSw0Q0FBNEM7UUFDMUUsY0FBYyxFQUFFLEVBQUU7UUFDbEIsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixtQkFBbUIsRUFBRSxFQUFFO1FBQ3ZCLHNCQUFzQixFQUFFLEtBQUs7UUFDN0IsZUFBZSxFQUFFLEtBQUs7S0FDdkIsQ0FBQztJQUVGLG1EQUFtRDtJQUNuRCxJQUFJLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUMvQixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLElBQUksY0FBYyxHQUFHLFNBQVMsQ0FBQztJQUUvQiw4Q0FBOEM7SUFDOUMsSUFBSSxRQUFRLENBQUMsaUJBQWlCLElBQUksYUFBYSxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQ2pFLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsY0FBYyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLElBQ0UsUUFBUTtRQUNSLFFBQVEsQ0FBQyxjQUFjLEtBQUssRUFBRTtRQUM5QixhQUFhLEdBQUcsY0FBYyxFQUM5QixDQUFDO1FBQ0QsUUFBUSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDNUIsY0FBYyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsOERBQThEO0lBQzlELElBQUksYUFBYSxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDakMsY0FBYyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELElBQUksUUFBUSxDQUFDLG1CQUFtQixLQUFLLEVBQUUsSUFBSSxhQUFhLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDMUUsUUFBUSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUNsQyxjQUFjLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsSUFBSSxhQUFhLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDbkMsUUFBUSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDaEMsY0FBYyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLElBQUksYUFBYSxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDdkMsY0FBYyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBYyxFQUFFLFdBQW9CLEVBQVUsRUFBRTtJQUMzRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixNQUFNLFNBQVMsR0FBMkI7UUFDeEMsT0FBTyxFQUFFLEdBQUc7UUFDWixTQUFTLEVBQUUsR0FBRztRQUNkLE1BQU0sRUFBRSxHQUFHO1FBQ1gsU0FBUyxFQUFFLEdBQUc7UUFDZCxPQUFPLEVBQUUsR0FBRztLQUNiLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzNFLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBVSxFQUFVLEVBQUU7SUFDbEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLG9DQUFvQztJQUNwQyxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXRpZXMgZm9yIHRlcm1pbmFsIGRpc3BsYXkgYW5kIGVudmlyb25tZW50IGRldGVjdGlvblxuICovXG5cbi8qKlxuICogQ2hlY2sgaWYgcnVubmluZyBpbiBDSSBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgY29uc3QgaXNDSSA9ICgpOiBib29sZWFuID0+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"}