@runcofactor/cli 0.10.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{api-catalog-GFGCLVS4.js → api-catalog-7HLEN7C2.js} +5 -4
- package/dist/{api-catalog-GFGCLVS4.js.map → api-catalog-7HLEN7C2.js.map} +1 -1
- package/dist/{attachment-SJC7D7FY.js → attachment-OVNQD6Z2.js} +5 -4
- package/dist/{attachment-SJC7D7FY.js.map → attachment-OVNQD6Z2.js.map} +1 -1
- package/dist/{auth-EN6NQCJY.js → auth-VUHL74FH.js} +3 -2
- package/dist/{chunk-IMPZAX6L.js → chunk-5GD47G2D.js} +37 -1
- package/dist/{chunk-IMPZAX6L.js.map → chunk-5GD47G2D.js.map} +1 -1
- package/dist/{chunk-WOHL4FTB.js → chunk-CQE46HSM.js} +5 -5
- package/dist/chunk-CQE46HSM.js.map +1 -0
- package/dist/{chunk-52IO7ACJ.js → chunk-CRHPDPRS.js} +39 -3
- package/dist/{chunk-52IO7ACJ.js.map → chunk-CRHPDPRS.js.map} +1 -1
- package/dist/{chunk-XQXVG7RA.js → chunk-EEN2TZUQ.js} +3 -3
- package/dist/{chunk-I4QLI3JO.js → chunk-EJ4U242G.js} +2 -2
- package/dist/{chunk-CLAWT7BJ.js → chunk-ENDHMYEJ.js} +3 -3
- package/dist/chunk-G4UYGRZR.js +2 -0
- package/dist/chunk-JZMJUPZP.js +92 -0
- package/dist/chunk-JZMJUPZP.js.map +1 -0
- package/dist/{chunk-GKY2KXO5.js → chunk-NL7CVG56.js} +105 -35
- package/dist/chunk-NL7CVG56.js.map +1 -0
- package/dist/{chunk-A4OFTUVV.js → chunk-PZ4LCN6K.js} +7 -4
- package/dist/chunk-PZ4LCN6K.js.map +1 -0
- package/dist/{chunk-SJJW77WN.js → chunk-QGI4UCJX.js} +69 -5
- package/dist/chunk-QGI4UCJX.js.map +1 -0
- package/dist/{chunk-4PNOV7OV.js → chunk-QQVWGWPI.js} +1023 -150
- package/dist/chunk-QQVWGWPI.js.map +1 -0
- package/dist/{chunk-N7HFALX3.js → chunk-VGTKUOYS.js} +2 -2
- package/dist/{chunk-B2VISN2V.js → chunk-YN763NWQ.js} +230 -66
- package/dist/chunk-YN763NWQ.js.map +1 -0
- package/dist/{chunk-QFDOWABX.js → chunk-Z5LUTUDN.js} +6 -3
- package/dist/chunk-Z5LUTUDN.js.map +1 -0
- package/dist/{chunk-Q4BO4Z5V.js → chunk-ZTOE3ND3.js} +4 -4
- package/dist/{credential-COLTBV6D.js → credential-LO2SEEHU.js} +24 -20
- package/dist/credential-LO2SEEHU.js.map +1 -0
- package/dist/{credential-template-EEPYFG7R.js → credential-template-ZN7W7734.js} +30 -28
- package/dist/credential-template-ZN7W7734.js.map +1 -0
- package/dist/{debug-workflow-KOVH5GOP.js → debug-workflow-R3RYYAXK.js} +5 -4
- package/dist/{debug-workflow-KOVH5GOP.js.map → debug-workflow-R3RYYAXK.js.map} +1 -1
- package/dist/{docs-3SSORHB5.js → docs-DIAFBDXQ.js} +5 -4
- package/dist/{docs-3SSORHB5.js.map → docs-DIAFBDXQ.js.map} +1 -1
- package/dist/{doctor-OTSIWV6G.js → doctor-NZPUSCRE.js} +9 -5
- package/dist/doctor-NZPUSCRE.js.map +1 -0
- package/dist/environment-RQVU4P5M.js +221 -0
- package/dist/environment-RQVU4P5M.js.map +1 -0
- package/dist/{feature-flag-T2LRZME3.js → feature-flag-XG26RURR.js} +72 -10
- package/dist/feature-flag-XG26RURR.js.map +1 -0
- package/dist/index.js +57 -48
- package/dist/index.js.map +1 -1
- package/dist/{init-TGWRECT2.js → init-EDNLKGPT.js} +5 -4
- package/dist/{init-TGWRECT2.js.map → init-EDNLKGPT.js.map} +1 -1
- package/dist/{install-DXSNWZKO.js → install-FYZ3HNZK.js} +7 -7
- package/dist/{issues-XIZOPX6T.js → issues-NNRVTJ4L.js} +5 -4
- package/dist/{issues-XIZOPX6T.js.map → issues-NNRVTJ4L.js.map} +1 -1
- package/dist/{knobs-NBINZIUB.js → knobs-A2BOBH22.js} +5 -4
- package/dist/{knobs-NBINZIUB.js.map → knobs-A2BOBH22.js.map} +1 -1
- package/dist/{list-3TDHK637.js → list-F33VZ4BJ.js} +5 -4
- package/dist/{list-3TDHK637.js.map → list-F33VZ4BJ.js.map} +1 -1
- package/dist/{local-HICVD6PU.js → local-DQDTM3XA.js} +7 -6
- package/dist/{local-HICVD6PU.js.map → local-DQDTM3XA.js.map} +1 -1
- package/dist/{login-UOIUXVUK.js → login-BUMVIB36.js} +5 -4
- package/dist/{login-UOIUXVUK.js.map → login-BUMVIB36.js.map} +1 -1
- package/dist/{mcp-54IJEOUA.js → mcp-B5Y5CDMQ.js} +23 -24
- package/dist/mcp-B5Y5CDMQ.js.map +1 -0
- package/dist/{property-UXLOLPTD.js → property-NJ4SRXQG.js} +76 -4
- package/dist/property-NJ4SRXQG.js.map +1 -0
- package/dist/{psql-BYUUNLGG.js → psql-VBZFCMNR.js} +3 -2
- package/dist/{psql-BYUUNLGG.js.map → psql-VBZFCMNR.js.map} +1 -1
- package/dist/{record-4TR2UIIS.js → record-WAO36O7G.js} +16 -17
- package/dist/record-WAO36O7G.js.map +1 -0
- package/dist/{redis-35VBUYW7.js → redis-DHZXHL4S.js} +3 -2
- package/dist/{redis-35VBUYW7.js.map → redis-DHZXHL4S.js.map} +1 -1
- package/dist/{release-OOLTUBUT.js → release-STJKUKTE.js} +5 -4
- package/dist/{release-OOLTUBUT.js.map → release-STJKUKTE.js.map} +1 -1
- package/dist/{sandbox-XGSUU6G7.js → sandbox-DWSGLY7B.js} +9 -8
- package/dist/{sandbox-XGSUU6G7.js.map → sandbox-DWSGLY7B.js.map} +1 -1
- package/dist/{scenarios-GWLJEGHA.js → scenarios-HCIDY725.js} +5 -4
- package/dist/{scenarios-GWLJEGHA.js.map → scenarios-HCIDY725.js.map} +1 -1
- package/dist/{session-MYFNZPRP.js → session-Y5RHU54D.js} +76 -8
- package/dist/session-Y5RHU54D.js.map +1 -0
- package/dist/{skill-KM34LDMO.js → skill-23WAHUOB.js} +217 -67
- package/dist/skill-23WAHUOB.js.map +1 -0
- package/dist/skills/debug-run/SKILL.md +33 -22
- package/dist/skills/debug-run/history/1.2.0.md +262 -0
- package/dist/skills/debug-run/history/1.3.0.md +273 -0
- package/dist/skills/debug-run/version.json +1 -1
- package/dist/skills/optimize-cache/SKILL.md +206 -0
- package/dist/{spec-RA3CFEKG.js → spec-LM5XHOQ5.js} +54 -25
- package/dist/spec-LM5XHOQ5.js.map +1 -0
- package/dist/{src-LB4HBTJQ.js → src-22RI5VP2.js} +19 -11
- package/dist/src-22RI5VP2.js.map +1 -0
- package/dist/src-BGDRMOKC.js +5748 -0
- package/dist/src-BGDRMOKC.js.map +1 -0
- package/dist/{src-N3TPKGTY.js → src-NCJPUAE6.js} +3 -2
- package/dist/{src-UVDX5UP6.js → src-Y3K7UJEF.js} +4 -2
- package/dist/{start-PSEQSQA3.js → start-SWY55CZX.js} +5 -4
- package/dist/{start-PSEQSQA3.js.map → start-SWY55CZX.js.map} +1 -1
- package/dist/{tag-YY6YAABQ.js → tag-YSU2XXPI.js} +6 -5
- package/dist/{task-IQC3YR5K.js → task-NLBKLD7D.js} +5 -4
- package/dist/{task-IQC3YR5K.js.map → task-NLBKLD7D.js.map} +1 -1
- package/dist/{test-suite-DZNJFXDW.js → test-suite-QCPWZ2LS.js} +9 -6
- package/dist/{test-suite-DZNJFXDW.js.map → test-suite-QCPWZ2LS.js.map} +1 -1
- package/dist/{trace-HXIW7U2D.js → trace-A3ZY6K26.js} +6 -4
- package/dist/{triage-ORG45R5W.js → triage-TT4BMDBU.js} +6 -5
- package/dist/triage-TT4BMDBU.js.map +1 -0
- package/dist/{upgrade-L2VYMP2V.js → upgrade-6ZUFETKX.js} +3 -3
- package/dist/{workflow-XYFH5LTP.js → workflow-2CX3ZNOQ.js} +241 -237
- package/dist/workflow-2CX3ZNOQ.js.map +1 -0
- package/dist/{workflow-cache-NQJQFWMV.js → workflow-cache-GXNE6SU2.js} +140 -7
- package/dist/workflow-cache-GXNE6SU2.js.map +1 -0
- package/dist/{workflow-debug-BGD4UIXU.js → workflow-debug-PRX3DWGD.js} +8 -7
- package/dist/{workflow-debug-BGD4UIXU.js.map → workflow-debug-PRX3DWGD.js.map} +1 -1
- package/dist/{workflow-proposals-MTUDX46O.js → workflow-proposals-BW327WGL.js} +5 -4
- package/dist/{workflow-proposals-MTUDX46O.js.map → workflow-proposals-BW327WGL.js.map} +1 -1
- package/package.json +2 -1
- package/dist/chunk-4PNOV7OV.js.map +0 -1
- package/dist/chunk-A4OFTUVV.js.map +0 -1
- package/dist/chunk-B2VISN2V.js.map +0 -1
- package/dist/chunk-GKY2KXO5.js.map +0 -1
- package/dist/chunk-JICSYFRJ.js +0 -46
- package/dist/chunk-JICSYFRJ.js.map +0 -1
- package/dist/chunk-QFDOWABX.js.map +0 -1
- package/dist/chunk-SJJW77WN.js.map +0 -1
- package/dist/chunk-WOHL4FTB.js.map +0 -1
- package/dist/credential-COLTBV6D.js.map +0 -1
- package/dist/credential-template-EEPYFG7R.js.map +0 -1
- package/dist/doctor-OTSIWV6G.js.map +0 -1
- package/dist/feature-flag-T2LRZME3.js.map +0 -1
- package/dist/mcp-54IJEOUA.js.map +0 -1
- package/dist/property-UXLOLPTD.js.map +0 -1
- package/dist/record-4TR2UIIS.js.map +0 -1
- package/dist/session-MYFNZPRP.js.map +0 -1
- package/dist/skill-KM34LDMO.js.map +0 -1
- package/dist/spec-RA3CFEKG.js.map +0 -1
- package/dist/src-LB4HBTJQ.js.map +0 -1
- package/dist/workflow-XYFH5LTP.js.map +0 -1
- package/dist/workflow-cache-NQJQFWMV.js.map +0 -1
- /package/dist/{auth-EN6NQCJY.js.map → auth-VUHL74FH.js.map} +0 -0
- /package/dist/{chunk-XQXVG7RA.js.map → chunk-EEN2TZUQ.js.map} +0 -0
- /package/dist/{chunk-I4QLI3JO.js.map → chunk-EJ4U242G.js.map} +0 -0
- /package/dist/{chunk-CLAWT7BJ.js.map → chunk-ENDHMYEJ.js.map} +0 -0
- /package/dist/{src-N3TPKGTY.js.map → chunk-G4UYGRZR.js.map} +0 -0
- /package/dist/{chunk-N7HFALX3.js.map → chunk-VGTKUOYS.js.map} +0 -0
- /package/dist/{chunk-Q4BO4Z5V.js.map → chunk-ZTOE3ND3.js.map} +0 -0
- /package/dist/{install-DXSNWZKO.js.map → install-FYZ3HNZK.js.map} +0 -0
- /package/dist/{src-UVDX5UP6.js.map → src-NCJPUAE6.js.map} +0 -0
- /package/dist/{tag-YY6YAABQ.js.map → src-Y3K7UJEF.js.map} +0 -0
- /package/dist/{trace-HXIW7U2D.js.map → tag-YSU2XXPI.js.map} +0 -0
- /package/dist/{triage-ORG45R5W.js.map → trace-A3ZY6K26.js.map} +0 -0
- /package/dist/{upgrade-L2VYMP2V.js.map → upgrade-6ZUFETKX.js.map} +0 -0
|
@@ -2,13 +2,14 @@ import { createRequire as __cr } from "module"; const require = __cr(import.meta
|
|
|
2
2
|
import {
|
|
3
3
|
apiRequest,
|
|
4
4
|
promptInput
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-SJJW77WN.js";
|
|
5
|
+
} from "./chunk-CQE46HSM.js";
|
|
7
6
|
import "./chunk-3CZU7XCS.js";
|
|
8
7
|
import {
|
|
9
8
|
hasFlag
|
|
10
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PZ4LCN6K.js";
|
|
10
|
+
import "./chunk-JZMJUPZP.js";
|
|
11
11
|
import "./chunk-JWHYXEA2.js";
|
|
12
|
+
import "./chunk-QGI4UCJX.js";
|
|
12
13
|
import "./chunk-VKVL7WBN.js";
|
|
13
14
|
|
|
14
15
|
// src/workflow-cache.ts
|
|
@@ -62,7 +63,10 @@ function printUsage() {
|
|
|
62
63
|
"Usage:",
|
|
63
64
|
" canary workflow cache status <workflowId> [--json]",
|
|
64
65
|
" canary workflow cache clear <workflowId> <mode> [--json]",
|
|
65
|
-
" canary workflow cache optimize <workflowId> [--json]",
|
|
66
|
+
" canary workflow cache optimize <workflowId> [--run <runId>] [--json]",
|
|
67
|
+
" canary workflow cache substrate --workspace <dir> --action <idx> [--phase before|after]",
|
|
68
|
+
" canary workflow cache locator --workspace <dir> --action <idx> --ref <ref> [--var k=v ...]",
|
|
69
|
+
" canary workflow cache commit <workflowId> --node <nodeId> --recipe <file.json> [--json]",
|
|
66
70
|
"",
|
|
67
71
|
"Cache clear modes (pick exactly one):",
|
|
68
72
|
" --node <nodeId> Invalidate one node's cache row",
|
|
@@ -95,6 +99,15 @@ async function handleWorkflowCache(argv, apiUrl, token) {
|
|
|
95
99
|
case "optimize":
|
|
96
100
|
await handleOptimize(rest, apiUrl, token);
|
|
97
101
|
return;
|
|
102
|
+
case "substrate":
|
|
103
|
+
await handleSubstrate(rest);
|
|
104
|
+
return;
|
|
105
|
+
case "locator":
|
|
106
|
+
await handleLocator(rest);
|
|
107
|
+
return;
|
|
108
|
+
case "commit":
|
|
109
|
+
await handleCommit(rest, apiUrl, token);
|
|
110
|
+
return;
|
|
98
111
|
default:
|
|
99
112
|
console.error(`Unknown cache sub-command: ${sub}`);
|
|
100
113
|
printUsage();
|
|
@@ -229,11 +242,13 @@ async function handleOptimize(argv, apiUrl, token) {
|
|
|
229
242
|
process.exit(1);
|
|
230
243
|
}
|
|
231
244
|
const json = hasFlag(argv, "--json");
|
|
245
|
+
const runId = flagValue(argv, "--run");
|
|
232
246
|
const result = await apiRequest(
|
|
233
247
|
apiUrl,
|
|
234
248
|
token,
|
|
235
249
|
"POST",
|
|
236
|
-
`/workflows/${workflowId}/optimize-cache
|
|
250
|
+
`/workflows/${workflowId}/optimize-cache`,
|
|
251
|
+
runId ? { runId } : {}
|
|
237
252
|
);
|
|
238
253
|
if (!result.ok) {
|
|
239
254
|
if (json) console.log(JSON.stringify(result, null, 2));
|
|
@@ -244,10 +259,128 @@ async function handleOptimize(argv, apiUrl, token) {
|
|
|
244
259
|
console.log(JSON.stringify(result, null, 2));
|
|
245
260
|
return;
|
|
246
261
|
}
|
|
247
|
-
console.log(`
|
|
262
|
+
console.log(`Cache optimizer job enqueued: ${result.jobId} (harvesting run ${result.runId})`);
|
|
263
|
+
}
|
|
264
|
+
async function handleSubstrate(argv) {
|
|
265
|
+
const workspace = flagValue(argv, "--workspace");
|
|
266
|
+
const actionIndexRaw = flagValue(argv, "--action");
|
|
267
|
+
const phase = flagValue(argv, "--phase") ?? "before";
|
|
268
|
+
if (!workspace || actionIndexRaw === void 0) {
|
|
269
|
+
console.error("Usage: canary workflow cache substrate --workspace <dir> --action <idx> [--phase before|after]");
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
const actionIndex = Number(actionIndexRaw);
|
|
273
|
+
const { SubstrateMaterializer } = await import("./src-BGDRMOKC.js");
|
|
274
|
+
const path = await import("path");
|
|
275
|
+
const materializer = new SubstrateMaterializer({
|
|
276
|
+
traceZipPath: path.join(workspace, "browser", "trace.zip"),
|
|
277
|
+
outDir: path.join(workspace, "optimizer", "substrates")
|
|
278
|
+
});
|
|
279
|
+
try {
|
|
280
|
+
const result = await materializer.materialize(actionIndex, phase);
|
|
281
|
+
console.log(
|
|
282
|
+
JSON.stringify(
|
|
283
|
+
{ substratePath: result.substratePath, domPath: result.domPath },
|
|
284
|
+
null,
|
|
285
|
+
2
|
|
286
|
+
)
|
|
287
|
+
);
|
|
288
|
+
} finally {
|
|
289
|
+
await materializer.close();
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
async function handleLocator(argv) {
|
|
293
|
+
const workspace = flagValue(argv, "--workspace");
|
|
294
|
+
const actionIndexRaw = flagValue(argv, "--action");
|
|
295
|
+
const ref = flagValue(argv, "--ref");
|
|
296
|
+
const phase = flagValue(argv, "--phase") ?? "before";
|
|
297
|
+
if (!workspace || actionIndexRaw === void 0 || !ref) {
|
|
298
|
+
console.error("Usage: canary workflow cache locator --workspace <dir> --action <idx> --ref <ref> [--var name=value ...]");
|
|
299
|
+
process.exit(1);
|
|
300
|
+
}
|
|
301
|
+
const variableValues = {};
|
|
302
|
+
for (let i = 0; i < argv.length - 1; i++) {
|
|
303
|
+
if (argv[i] === "--var") {
|
|
304
|
+
const [name, ...valueParts] = (argv[i + 1] ?? "").split("=");
|
|
305
|
+
if (name && valueParts.length > 0) variableValues[name] = valueParts.join("=");
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
const actionIndex = Number(actionIndexRaw);
|
|
309
|
+
const { HeadlessDomSession, SubstrateMaterializer, LocatorVerifier, buildLocator } = await import("./src-BGDRMOKC.js");
|
|
310
|
+
const { parseSnapshot } = await import("./src-NCJPUAE6.js");
|
|
311
|
+
const path = await import("path");
|
|
312
|
+
const session = new HeadlessDomSession();
|
|
313
|
+
const materializer = new SubstrateMaterializer({
|
|
314
|
+
traceZipPath: path.join(workspace, "browser", "trace.zip"),
|
|
315
|
+
outDir: path.join(workspace, "optimizer", "substrates"),
|
|
316
|
+
session
|
|
317
|
+
});
|
|
318
|
+
const verifier = new LocatorVerifier({ session });
|
|
319
|
+
try {
|
|
320
|
+
const substrate = await materializer.materialize(actionIndex, phase);
|
|
321
|
+
const snapshot = parseSnapshot(substrate.substrateYaml);
|
|
322
|
+
const built = buildLocator(snapshot, ref, variableValues);
|
|
323
|
+
if (built.irreducible) {
|
|
324
|
+
console.log(
|
|
325
|
+
JSON.stringify(
|
|
326
|
+
{ verified: false, irreducible: true, reason: "no unique predicate \u2014 mark as gap" },
|
|
327
|
+
null,
|
|
328
|
+
2
|
|
329
|
+
)
|
|
330
|
+
);
|
|
331
|
+
process.exit(2);
|
|
332
|
+
}
|
|
333
|
+
const verification = await verifier.verify({
|
|
334
|
+
domPath: substrate.domPath,
|
|
335
|
+
targetRef: ref,
|
|
336
|
+
strategy: built.selectors,
|
|
337
|
+
variableValues
|
|
338
|
+
});
|
|
339
|
+
console.log(
|
|
340
|
+
JSON.stringify(
|
|
341
|
+
{ verified: verification.verdict, predicate: built.predicate, selectors: built.selectors, verification },
|
|
342
|
+
null,
|
|
343
|
+
2
|
|
344
|
+
)
|
|
345
|
+
);
|
|
346
|
+
if (!verification.verdict) process.exit(2);
|
|
347
|
+
} finally {
|
|
348
|
+
await session.close();
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
async function handleCommit(argv, apiUrl, token) {
|
|
352
|
+
const workflowId = argv.find((a) => !a.startsWith("-"));
|
|
353
|
+
const nodeId = flagValue(argv, "--node");
|
|
354
|
+
const recipePath = flagValue(argv, "--recipe");
|
|
355
|
+
const json = hasFlag(argv, "--json");
|
|
356
|
+
if (!workflowId || !nodeId || !recipePath) {
|
|
357
|
+
console.error("Usage: canary workflow cache commit <workflowId> --node <nodeId> --recipe <file.json>");
|
|
358
|
+
process.exit(1);
|
|
359
|
+
}
|
|
360
|
+
const fs = await import("fs/promises");
|
|
361
|
+
const recipe = JSON.parse(await fs.readFile(recipePath, "utf-8"));
|
|
362
|
+
const result = await apiRequest(
|
|
363
|
+
apiUrl,
|
|
364
|
+
token,
|
|
365
|
+
"POST",
|
|
366
|
+
`/workflows/${workflowId}/nodes/${nodeId}/cache-recipe`,
|
|
367
|
+
recipe
|
|
368
|
+
);
|
|
369
|
+
if (!result.ok) {
|
|
370
|
+
if (json) console.log(JSON.stringify(result, null, 2));
|
|
371
|
+
else console.error(`Error: ${result.error ?? "Unknown error"}`);
|
|
372
|
+
process.exit(1);
|
|
373
|
+
}
|
|
374
|
+
if (json) {
|
|
375
|
+
console.log(JSON.stringify(result, null, 2));
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
console.log(
|
|
379
|
+
`Recipe committed: cache ${result.cacheId} under hash ${result.nodeHash} (${result.cachedStepCount} cached, ${result.gapStepCount} gap steps)`
|
|
380
|
+
);
|
|
248
381
|
}
|
|
249
382
|
export {
|
|
250
383
|
buildCacheClearBody,
|
|
251
384
|
handleWorkflowCache
|
|
252
385
|
};
|
|
253
|
-
//# sourceMappingURL=workflow-cache-
|
|
386
|
+
//# sourceMappingURL=workflow-cache-GXNE6SU2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/workflow-cache.ts"],"sourcesContent":["/**\n * CLI handlers for `canary workflow cache {status,clear,optimize,substrate,locator,commit}`.\n *\n * @module WorkflowCacheCLI\n */\n\nimport process from 'node:process';\nimport { hasFlag } from './auth.js';\nimport { apiRequest, promptInput } from './cli-helpers.js';\n\ntype CacheStatusResponse = {\n ok: boolean;\n error?: string;\n workflowId?: string;\n nodes?: Array<{\n nodeId: string;\n cacheId: string;\n compilerVersion: number | null;\n playbookHealth: string | null;\n stepFailureCounts: Record<string, number> | null;\n cachedAt: string | null;\n lastUsedAt: string | null;\n useCount: number;\n gapCount: number;\n }>;\n};\n\ntype CacheClearResponse = {\n ok: boolean;\n error?: string;\n invalidated?: number;\n mode?: string;\n};\n\ntype WorkflowResetResponse = {\n ok: boolean;\n error?: string;\n nodesReset?: number;\n};\n\ntype OptimizeResponse = {\n ok: boolean;\n error?: string;\n jobId?: string;\n runId?: string;\n};\n\ntype CacheRecipeResponse = {\n ok: boolean;\n error?: string;\n cacheId?: string;\n nodeHash?: string;\n cachedStepCount?: number;\n gapStepCount?: number;\n};\n\nfunction flagValue(argv: string[], name: string): string | undefined {\n const i = argv.indexOf(name);\n if (i === -1 || i === argv.length - 1) return undefined;\n return argv[i + 1];\n}\n\n/**\n * Pure helper: build the `cache-clear` request body from parsed argv flags.\n * Returns a discriminated result so callers can surface parse errors without\n * the helper itself writing to stderr or calling `process.exit`.\n *\n * Exported for unit testing.\n */\nexport function buildCacheClearBody(opts: {\n nodeId?: string;\n belowVersionRaw?: string;\n staleOnly?: boolean;\n mode?: string;\n}):\n | { ok: true; body: Record<string, unknown> }\n | { ok: false; error: string } {\n const body: Record<string, unknown> = {};\n if (opts.nodeId) body.nodeId = opts.nodeId;\n if (opts.belowVersionRaw !== undefined) {\n const n = Number(opts.belowVersionRaw);\n if (!Number.isInteger(n) || n <= 0) {\n return {\n ok: false,\n error: `--below-version must be a positive integer, got \"${opts.belowVersionRaw}\"`,\n };\n }\n body.belowVersion = n;\n }\n if (opts.staleOnly) body.staleOnly = true;\n if (opts.mode) {\n if (opts.mode !== 'all' && opts.mode !== 'hard') {\n return {\n ok: false,\n error: `--mode must be \"all\" or \"hard\", got \"${opts.mode}\"`,\n };\n }\n body.mode = opts.mode;\n }\n\n const modeCount =\n (body.nodeId !== undefined ? 1 : 0) +\n (body.belowVersion !== undefined ? 1 : 0) +\n (body.staleOnly !== undefined ? 1 : 0) +\n (body.mode !== undefined ? 1 : 0);\n if (modeCount === 0) {\n return {\n ok: false,\n error:\n 'cache clear requires one of: --node <id>, --below-version <n>, --stale-only, --mode all, or --mode hard',\n };\n }\n if (modeCount > 1) {\n return {\n ok: false,\n error: 'cache clear accepts exactly one of --node / --below-version / --stale-only / --mode',\n };\n }\n return { ok: true, body };\n}\n\nfunction printUsage(): void {\n console.error(\n [\n 'Usage:',\n ' canary workflow cache status <workflowId> [--json]',\n ' canary workflow cache clear <workflowId> <mode> [--json]',\n ' canary workflow cache optimize <workflowId> [--run <runId>] [--json]',\n ' canary workflow cache substrate --workspace <dir> --action <idx> [--phase before|after]',\n ' canary workflow cache locator --workspace <dir> --action <idx> --ref <ref> [--var k=v ...]',\n ' canary workflow cache commit <workflowId> --node <nodeId> --recipe <file.json> [--json]',\n '',\n 'Cache clear modes (pick exactly one):',\n ' --node <nodeId> Invalidate one node\\'s cache row',\n ' --below-version <n> Invalidate caches with compilerVersion < n',\n ' --stale-only Invalidate caches whose playbookHealth = \"stale\"',\n ' --mode all Invalidate every cache row (rows kept, isValid=false)',\n ' --mode hard DESTRUCTIVE: delete cache rows, strip playbookSteps',\n ' from node configs, and null lastRunId. Equivalent to',\n ' the UI \"Reset flow\" button. Requires --yes.',\n '',\n 'Options:',\n ' --yes Skip the interactive confirmation for --mode hard',\n ' --json Output raw JSON',\n ].join('\\n')\n );\n}\n\nexport async function handleWorkflowCache(\n argv: string[],\n apiUrl: string,\n token: string\n): Promise<void> {\n const [sub, ...rest] = argv;\n if (!sub || hasFlag(argv, '--help', '-h')) {\n printUsage();\n return;\n }\n\n switch (sub) {\n case 'status':\n await handleStatus(rest, apiUrl, token);\n return;\n case 'clear':\n await handleClear(rest, apiUrl, token);\n return;\n case 'optimize':\n await handleOptimize(rest, apiUrl, token);\n return;\n case 'substrate':\n await handleSubstrate(rest);\n return;\n case 'locator':\n await handleLocator(rest);\n return;\n case 'commit':\n await handleCommit(rest, apiUrl, token);\n return;\n default:\n console.error(`Unknown cache sub-command: ${sub}`);\n printUsage();\n process.exit(1);\n }\n}\n\nasync function handleStatus(argv: string[], apiUrl: string, token: string): Promise<void> {\n const workflowId = argv.find((a) => !a.startsWith('-'));\n if (!workflowId) {\n console.error('Missing workflowId.');\n printUsage();\n process.exit(1);\n }\n const json = hasFlag(argv, '--json');\n\n const result = await apiRequest<CacheStatusResponse>(\n apiUrl,\n token,\n 'GET',\n `/workflows/${workflowId}/cache-status`\n );\n\n if (!result.ok) {\n if (json) console.log(JSON.stringify(result, null, 2));\n else console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n if (json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n const nodes = result.nodes ?? [];\n console.log(`Cache status for workflow ${workflowId} (${nodes.length} valid cache rows)\\n`);\n if (nodes.length === 0) {\n console.log(' No valid caches.');\n return;\n }\n\n for (const n of nodes) {\n const health = n.playbookHealth ?? '—';\n const ver = n.compilerVersion ?? 'pre-v2';\n const gaps = n.gapCount;\n const age = n.cachedAt ? new Date(n.cachedAt).toISOString().slice(0, 10) : '—';\n console.log(\n ` node=${n.nodeId.slice(0, 8)} compilerVersion=${ver} health=${health} gaps=${gaps} cachedAt=${age} uses=${n.useCount}`\n );\n }\n}\n\nasync function handleClear(argv: string[], apiUrl: string, token: string): Promise<void> {\n const workflowId = argv.find((a) => !a.startsWith('-'));\n if (!workflowId) {\n console.error('Missing workflowId.');\n printUsage();\n process.exit(1);\n }\n const json = hasFlag(argv, '--json');\n\n const built = buildCacheClearBody({\n nodeId: flagValue(argv, '--node'),\n belowVersionRaw: flagValue(argv, '--below-version'),\n staleOnly: hasFlag(argv, '--stale-only'),\n mode: flagValue(argv, '--mode'),\n });\n if (!built.ok) {\n console.error(built.error);\n process.exit(1);\n }\n const body = built.body;\n\n if (body.mode === 'hard') {\n await handleHardReset(workflowId, hasFlag(argv, '--yes'), json, apiUrl, token);\n return;\n }\n\n const result = await apiRequest<CacheClearResponse>(\n apiUrl,\n token,\n 'POST',\n `/workflows/${workflowId}/cache-clear`,\n body\n );\n\n if (!result.ok) {\n if (json) console.log(JSON.stringify(result, null, 2));\n else console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n if (json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n console.log(`Cleared (${result.mode}): ${result.invalidated ?? 0} cache row(s)`);\n}\n\nasync function handleHardReset(\n workflowId: string,\n yesFlag: boolean,\n json: boolean,\n apiUrl: string,\n token: string\n): Promise<void> {\n if (!yesFlag) {\n console.log(\n [\n '',\n `Hard reset on workflow ${workflowId} will:`,\n ' - DELETE all cached browser actions for this workflow',\n ' - REMOVE playbookSteps from every node config',\n ' - CLEAR the workflow lastRunId',\n '',\n 'This is equivalent to the UI \"Reset flow\" button and cannot be undone.',\n '',\n ].join('\\n')\n );\n const answer = await promptInput('Type \"yes\" to confirm');\n if (answer.toLowerCase() !== 'yes') {\n console.error('Aborted.');\n process.exit(1);\n }\n }\n\n const result = await apiRequest<WorkflowResetResponse>(\n apiUrl,\n token,\n 'POST',\n `/workflows/${workflowId}/reset`\n );\n\n if (!result.ok) {\n if (json) console.log(JSON.stringify(result, null, 2));\n else console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n if (json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n console.log(\n `Reset workflow: ${result.nodesReset ?? 0} node(s) cleared (cache rows deleted, playbook steps removed, lastRunId cleared)`\n );\n}\n\nasync function handleOptimize(argv: string[], apiUrl: string, token: string): Promise<void> {\n const workflowId = argv.find((a) => !a.startsWith('-'));\n if (!workflowId) {\n console.error('Missing workflowId.');\n printUsage();\n process.exit(1);\n }\n const json = hasFlag(argv, '--json');\n const runId = flagValue(argv, '--run');\n\n const result = await apiRequest<OptimizeResponse>(\n apiUrl,\n token,\n 'POST',\n `/workflows/${workflowId}/optimize-cache`,\n runId ? { runId } : {}\n );\n\n if (!result.ok) {\n if (json) console.log(JSON.stringify(result, null, 2));\n else console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n\n if (json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n console.log(`Cache optimizer job enqueued: ${result.jobId} (harvesting run ${result.runId})`);\n}\n\n/**\n * Reconstruct one trace action's page state and capture its substrate-v2,\n * entirely locally against a materialized run workspace\n * (`canary workflow debug materialize <runId> --out <dir>`).\n */\nasync function handleSubstrate(argv: string[]): Promise<void> {\n const workspace = flagValue(argv, '--workspace');\n const actionIndexRaw = flagValue(argv, '--action');\n const phase = (flagValue(argv, '--phase') ?? 'before') as 'before' | 'after';\n if (!workspace || actionIndexRaw === undefined) {\n console.error('Usage: canary workflow cache substrate --workspace <dir> --action <idx> [--phase before|after]');\n process.exit(1);\n }\n const actionIndex = Number(actionIndexRaw);\n const { SubstrateMaterializer } = await import('@chatsdet/workflow-cache');\n const path = await import('node:path');\n const materializer = new SubstrateMaterializer({\n traceZipPath: path.join(workspace, 'browser', 'trace.zip'),\n outDir: path.join(workspace, 'optimizer', 'substrates'),\n });\n try {\n const result = await materializer.materialize(actionIndex, phase);\n console.log(\n JSON.stringify(\n { substratePath: result.substratePath, domPath: result.domPath },\n null,\n 2\n )\n );\n } finally {\n await materializer.close();\n }\n}\n\n/**\n * Derive a deterministic locator for an element (by aria-ref) and verify it\n * offline against the trace-reconstructed DOM. Locally, no API.\n */\nasync function handleLocator(argv: string[]): Promise<void> {\n const workspace = flagValue(argv, '--workspace');\n const actionIndexRaw = flagValue(argv, '--action');\n const ref = flagValue(argv, '--ref');\n const phase = (flagValue(argv, '--phase') ?? 'before') as 'before' | 'after';\n if (!workspace || actionIndexRaw === undefined || !ref) {\n console.error('Usage: canary workflow cache locator --workspace <dir> --action <idx> --ref <ref> [--var name=value ...]');\n process.exit(1);\n }\n const variableValues: Record<string, string> = {};\n for (let i = 0; i < argv.length - 1; i++) {\n if (argv[i] === '--var') {\n const [name, ...valueParts] = (argv[i + 1] ?? '').split('=');\n if (name && valueParts.length > 0) variableValues[name] = valueParts.join('=');\n }\n }\n const actionIndex = Number(actionIndexRaw);\n const { HeadlessDomSession, SubstrateMaterializer, LocatorVerifier, buildLocator } = await import(\n '@chatsdet/workflow-cache'\n );\n const { parseSnapshot } = await import('@chatsdet/browser-core');\n const path = await import('node:path');\n // One Chromium for capture + verification — they must share a rendering\n // environment or the aria-ref table shifts between the two.\n const session = new HeadlessDomSession();\n const materializer = new SubstrateMaterializer({\n traceZipPath: path.join(workspace, 'browser', 'trace.zip'),\n outDir: path.join(workspace, 'optimizer', 'substrates'),\n session,\n });\n const verifier = new LocatorVerifier({ session });\n try {\n const substrate = await materializer.materialize(actionIndex, phase);\n const snapshot = parseSnapshot(substrate.substrateYaml);\n const built = buildLocator(snapshot, ref, variableValues);\n if (built.irreducible) {\n console.log(\n JSON.stringify(\n { verified: false, irreducible: true, reason: 'no unique predicate — mark as gap' },\n null,\n 2\n )\n );\n process.exit(2);\n }\n const verification = await verifier.verify({\n domPath: substrate.domPath,\n targetRef: ref,\n strategy: built.selectors,\n variableValues,\n });\n console.log(\n JSON.stringify(\n { verified: verification.verdict, predicate: built.predicate, selectors: built.selectors, verification },\n null,\n 2\n )\n );\n if (!verification.verdict) process.exit(2);\n } finally {\n await session.close();\n }\n}\n\n/** Commit an optimizer-authored recipe through the server-validated endpoint. */\nasync function handleCommit(argv: string[], apiUrl: string, token: string): Promise<void> {\n const workflowId = argv.find((a) => !a.startsWith('-'));\n const nodeId = flagValue(argv, '--node');\n const recipePath = flagValue(argv, '--recipe');\n const json = hasFlag(argv, '--json');\n if (!workflowId || !nodeId || !recipePath) {\n console.error('Usage: canary workflow cache commit <workflowId> --node <nodeId> --recipe <file.json>');\n process.exit(1);\n }\n const fs = await import('node:fs/promises');\n const recipe = JSON.parse(await fs.readFile(recipePath, 'utf-8')) as Record<string, unknown>;\n const result = await apiRequest<CacheRecipeResponse>(\n apiUrl,\n token,\n 'POST',\n `/workflows/${workflowId}/nodes/${nodeId}/cache-recipe`,\n recipe\n );\n if (!result.ok) {\n if (json) console.log(JSON.stringify(result, null, 2));\n else console.error(`Error: ${result.error ?? 'Unknown error'}`);\n process.exit(1);\n }\n if (json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n console.log(\n `Recipe committed: cache ${result.cacheId} under hash ${result.nodeHash} ` +\n `(${result.cachedStepCount} cached, ${result.gapStepCount} gap steps)`\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAMA,OAAO,aAAa;AAkDpB,SAAS,UAAU,MAAgB,MAAkC;AACnE,QAAM,IAAI,KAAK,QAAQ,IAAI;AAC3B,MAAI,MAAM,MAAM,MAAM,KAAK,SAAS,EAAG,QAAO;AAC9C,SAAO,KAAK,IAAI,CAAC;AACnB;AASO,SAAS,oBAAoB,MAOH;AAC/B,QAAM,OAAgC,CAAC;AACvC,MAAI,KAAK,OAAQ,MAAK,SAAS,KAAK;AACpC,MAAI,KAAK,oBAAoB,QAAW;AACtC,UAAM,IAAI,OAAO,KAAK,eAAe;AACrC,QAAI,CAAC,OAAO,UAAU,CAAC,KAAK,KAAK,GAAG;AAClC,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,OAAO,oDAAoD,KAAK,eAAe;AAAA,MACjF;AAAA,IACF;AACA,SAAK,eAAe;AAAA,EACtB;AACA,MAAI,KAAK,UAAW,MAAK,YAAY;AACrC,MAAI,KAAK,MAAM;AACb,QAAI,KAAK,SAAS,SAAS,KAAK,SAAS,QAAQ;AAC/C,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,OAAO,wCAAwC,KAAK,IAAI;AAAA,MAC1D;AAAA,IACF;AACA,SAAK,OAAO,KAAK;AAAA,EACnB;AAEA,QAAM,aACH,KAAK,WAAW,SAAY,IAAI,MAChC,KAAK,iBAAiB,SAAY,IAAI,MACtC,KAAK,cAAc,SAAY,IAAI,MACnC,KAAK,SAAS,SAAY,IAAI;AACjC,MAAI,cAAc,GAAG;AACnB,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,OACE;AAAA,IACJ;AAAA,EACF;AACA,MAAI,YAAY,GAAG;AACjB,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,OAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,EAAE,IAAI,MAAM,KAAK;AAC1B;AAEA,SAAS,aAAmB;AAC1B,UAAQ;AAAA,IACN;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,eAAsB,oBACpB,MACA,QACA,OACe;AACf,QAAM,CAAC,KAAK,GAAG,IAAI,IAAI;AACvB,MAAI,CAAC,OAAO,QAAQ,MAAM,UAAU,IAAI,GAAG;AACzC,eAAW;AACX;AAAA,EACF;AAEA,UAAQ,KAAK;AAAA,IACX,KAAK;AACH,YAAM,aAAa,MAAM,QAAQ,KAAK;AACtC;AAAA,IACF,KAAK;AACH,YAAM,YAAY,MAAM,QAAQ,KAAK;AACrC;AAAA,IACF,KAAK;AACH,YAAM,eAAe,MAAM,QAAQ,KAAK;AACxC;AAAA,IACF,KAAK;AACH,YAAM,gBAAgB,IAAI;AAC1B;AAAA,IACF,KAAK;AACH,YAAM,cAAc,IAAI;AACxB;AAAA,IACF,KAAK;AACH,YAAM,aAAa,MAAM,QAAQ,KAAK;AACtC;AAAA,IACF;AACE,cAAQ,MAAM,8BAA8B,GAAG,EAAE;AACjD,iBAAW;AACX,cAAQ,KAAK,CAAC;AAAA,EAClB;AACF;AAEA,eAAe,aAAa,MAAgB,QAAgB,OAA8B;AACxF,QAAM,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC;AACtD,MAAI,CAAC,YAAY;AACf,YAAQ,MAAM,qBAAqB;AACnC,eAAW;AACX,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,OAAO,QAAQ,MAAM,QAAQ;AAEnC,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,UAAU;AAAA,EAC1B;AAEA,MAAI,CAAC,OAAO,IAAI;AACd,QAAI,KAAM,SAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,QAChD,SAAQ,MAAM,UAAU,OAAO,SAAS,eAAe,EAAE;AAC9D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,MAAM;AACR,YAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,EACF;AAEA,QAAM,QAAQ,OAAO,SAAS,CAAC;AAC/B,UAAQ,IAAI,6BAA6B,UAAU,KAAK,MAAM,MAAM;AAAA,CAAsB;AAC1F,MAAI,MAAM,WAAW,GAAG;AACtB,YAAQ,IAAI,oBAAoB;AAChC;AAAA,EACF;AAEA,aAAW,KAAK,OAAO;AACrB,UAAM,SAAS,EAAE,kBAAkB;AACnC,UAAM,MAAM,EAAE,mBAAmB;AACjC,UAAM,OAAO,EAAE;AACf,UAAM,MAAM,EAAE,WAAW,IAAI,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE,IAAI;AAC3E,YAAQ;AAAA,MACN,UAAU,EAAE,OAAO,MAAM,GAAG,CAAC,CAAC,qBAAqB,GAAG,YAAY,MAAM,UAAU,IAAI,cAAc,GAAG,UAAU,EAAE,QAAQ;AAAA,IAC7H;AAAA,EACF;AACF;AAEA,eAAe,YAAY,MAAgB,QAAgB,OAA8B;AACvF,QAAM,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC;AACtD,MAAI,CAAC,YAAY;AACf,YAAQ,MAAM,qBAAqB;AACnC,eAAW;AACX,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,OAAO,QAAQ,MAAM,QAAQ;AAEnC,QAAM,QAAQ,oBAAoB;AAAA,IAChC,QAAQ,UAAU,MAAM,QAAQ;AAAA,IAChC,iBAAiB,UAAU,MAAM,iBAAiB;AAAA,IAClD,WAAW,QAAQ,MAAM,cAAc;AAAA,IACvC,MAAM,UAAU,MAAM,QAAQ;AAAA,EAChC,CAAC;AACD,MAAI,CAAC,MAAM,IAAI;AACb,YAAQ,MAAM,MAAM,KAAK;AACzB,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,OAAO,MAAM;AAEnB,MAAI,KAAK,SAAS,QAAQ;AACxB,UAAM,gBAAgB,YAAY,QAAQ,MAAM,OAAO,GAAG,MAAM,QAAQ,KAAK;AAC7E;AAAA,EACF;AAEA,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,UAAU;AAAA,IACxB;AAAA,EACF;AAEA,MAAI,CAAC,OAAO,IAAI;AACd,QAAI,KAAM,SAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,QAChD,SAAQ,MAAM,UAAU,OAAO,SAAS,eAAe,EAAE;AAC9D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,MAAM;AACR,YAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,EACF;AAEA,UAAQ,IAAI,YAAY,OAAO,IAAI,MAAM,OAAO,eAAe,CAAC,eAAe;AACjF;AAEA,eAAe,gBACb,YACA,SACA,MACA,QACA,OACe;AACf,MAAI,CAAC,SAAS;AACZ,YAAQ;AAAA,MACN;AAAA,QACE;AAAA,QACA,0BAA0B,UAAU;AAAA,QACpC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,IACb;AACA,UAAM,SAAS,MAAM,YAAY,uBAAuB;AACxD,QAAI,OAAO,YAAY,MAAM,OAAO;AAClC,cAAQ,MAAM,UAAU;AACxB,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,UAAU;AAAA,EAC1B;AAEA,MAAI,CAAC,OAAO,IAAI;AACd,QAAI,KAAM,SAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,QAChD,SAAQ,MAAM,UAAU,OAAO,SAAS,eAAe,EAAE;AAC9D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,MAAM;AACR,YAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,EACF;AAEA,UAAQ;AAAA,IACN,mBAAmB,OAAO,cAAc,CAAC;AAAA,EAC3C;AACF;AAEA,eAAe,eAAe,MAAgB,QAAgB,OAA8B;AAC1F,QAAM,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC;AACtD,MAAI,CAAC,YAAY;AACf,YAAQ,MAAM,qBAAqB;AACnC,eAAW;AACX,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,OAAO,QAAQ,MAAM,QAAQ;AACnC,QAAM,QAAQ,UAAU,MAAM,OAAO;AAErC,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,UAAU;AAAA,IACxB,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA,EACvB;AAEA,MAAI,CAAC,OAAO,IAAI;AACd,QAAI,KAAM,SAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,QAChD,SAAQ,MAAM,UAAU,OAAO,SAAS,eAAe,EAAE;AAC9D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,MAAM;AACR,YAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,EACF;AAEA,UAAQ,IAAI,iCAAiC,OAAO,KAAK,oBAAoB,OAAO,KAAK,GAAG;AAC9F;AAOA,eAAe,gBAAgB,MAA+B;AAC5D,QAAM,YAAY,UAAU,MAAM,aAAa;AAC/C,QAAM,iBAAiB,UAAU,MAAM,UAAU;AACjD,QAAM,QAAS,UAAU,MAAM,SAAS,KAAK;AAC7C,MAAI,CAAC,aAAa,mBAAmB,QAAW;AAC9C,YAAQ,MAAM,gGAAgG;AAC9G,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,cAAc,OAAO,cAAc;AACzC,QAAM,EAAE,sBAAsB,IAAI,MAAM,OAAO,mBAA0B;AACzE,QAAM,OAAO,MAAM,OAAO,MAAW;AACrC,QAAM,eAAe,IAAI,sBAAsB;AAAA,IAC7C,cAAc,KAAK,KAAK,WAAW,WAAW,WAAW;AAAA,IACzD,QAAQ,KAAK,KAAK,WAAW,aAAa,YAAY;AAAA,EACxD,CAAC;AACD,MAAI;AACF,UAAM,SAAS,MAAM,aAAa,YAAY,aAAa,KAAK;AAChE,YAAQ;AAAA,MACN,KAAK;AAAA,QACH,EAAE,eAAe,OAAO,eAAe,SAAS,OAAO,QAAQ;AAAA,QAC/D;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF,UAAE;AACA,UAAM,aAAa,MAAM;AAAA,EAC3B;AACF;AAMA,eAAe,cAAc,MAA+B;AAC1D,QAAM,YAAY,UAAU,MAAM,aAAa;AAC/C,QAAM,iBAAiB,UAAU,MAAM,UAAU;AACjD,QAAM,MAAM,UAAU,MAAM,OAAO;AACnC,QAAM,QAAS,UAAU,MAAM,SAAS,KAAK;AAC7C,MAAI,CAAC,aAAa,mBAAmB,UAAa,CAAC,KAAK;AACtD,YAAQ,MAAM,0GAA0G;AACxH,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,iBAAyC,CAAC;AAChD,WAAS,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;AACxC,QAAI,KAAK,CAAC,MAAM,SAAS;AACvB,YAAM,CAAC,MAAM,GAAG,UAAU,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,MAAM,GAAG;AAC3D,UAAI,QAAQ,WAAW,SAAS,EAAG,gBAAe,IAAI,IAAI,WAAW,KAAK,GAAG;AAAA,IAC/E;AAAA,EACF;AACA,QAAM,cAAc,OAAO,cAAc;AACzC,QAAM,EAAE,oBAAoB,uBAAuB,iBAAiB,aAAa,IAAI,MAAM,OACzF,mBACF;AACA,QAAM,EAAE,cAAc,IAAI,MAAM,OAAO,mBAAwB;AAC/D,QAAM,OAAO,MAAM,OAAO,MAAW;AAGrC,QAAM,UAAU,IAAI,mBAAmB;AACvC,QAAM,eAAe,IAAI,sBAAsB;AAAA,IAC7C,cAAc,KAAK,KAAK,WAAW,WAAW,WAAW;AAAA,IACzD,QAAQ,KAAK,KAAK,WAAW,aAAa,YAAY;AAAA,IACtD;AAAA,EACF,CAAC;AACD,QAAM,WAAW,IAAI,gBAAgB,EAAE,QAAQ,CAAC;AAChD,MAAI;AACF,UAAM,YAAY,MAAM,aAAa,YAAY,aAAa,KAAK;AACnE,UAAM,WAAW,cAAc,UAAU,aAAa;AACtD,UAAM,QAAQ,aAAa,UAAU,KAAK,cAAc;AACxD,QAAI,MAAM,aAAa;AACrB,cAAQ;AAAA,QACN,KAAK;AAAA,UACH,EAAE,UAAU,OAAO,aAAa,MAAM,QAAQ,yCAAoC;AAAA,UAClF;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,UAAM,eAAe,MAAM,SAAS,OAAO;AAAA,MACzC,SAAS,UAAU;AAAA,MACnB,WAAW;AAAA,MACX,UAAU,MAAM;AAAA,MAChB;AAAA,IACF,CAAC;AACD,YAAQ;AAAA,MACN,KAAK;AAAA,QACH,EAAE,UAAU,aAAa,SAAS,WAAW,MAAM,WAAW,WAAW,MAAM,WAAW,aAAa;AAAA,QACvG;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,aAAa,QAAS,SAAQ,KAAK,CAAC;AAAA,EAC3C,UAAE;AACA,UAAM,QAAQ,MAAM;AAAA,EACtB;AACF;AAGA,eAAe,aAAa,MAAgB,QAAgB,OAA8B;AACxF,QAAM,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC;AACtD,QAAM,SAAS,UAAU,MAAM,QAAQ;AACvC,QAAM,aAAa,UAAU,MAAM,UAAU;AAC7C,QAAM,OAAO,QAAQ,MAAM,QAAQ;AACnC,MAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY;AACzC,YAAQ,MAAM,uFAAuF;AACrG,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,KAAK,MAAM,OAAO,aAAkB;AAC1C,QAAM,SAAS,KAAK,MAAM,MAAM,GAAG,SAAS,YAAY,OAAO,CAAC;AAChE,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,UAAU,UAAU,MAAM;AAAA,IACxC;AAAA,EACF;AACA,MAAI,CAAC,OAAO,IAAI;AACd,QAAI,KAAM,SAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,QAChD,SAAQ,MAAM,UAAU,OAAO,SAAS,eAAe,EAAE;AAC9D,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,MAAI,MAAM;AACR,YAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,EACF;AACA,UAAQ;AAAA,IACN,2BAA2B,OAAO,OAAO,eAAe,OAAO,QAAQ,KACjE,OAAO,eAAe,YAAY,OAAO,YAAY;AAAA,EAC7D;AACF;","names":[]}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { createRequire as __cr } from "module"; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
runTrace
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZTOE3ND3.js";
|
|
5
5
|
import {
|
|
6
6
|
apiRequest
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-SJJW77WN.js";
|
|
7
|
+
} from "./chunk-CQE46HSM.js";
|
|
9
8
|
import "./chunk-3CZU7XCS.js";
|
|
10
9
|
import {
|
|
11
10
|
getArgValue,
|
|
12
11
|
hasFlag
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-PZ4LCN6K.js";
|
|
13
|
+
import "./chunk-JZMJUPZP.js";
|
|
14
|
+
import "./chunk-QQVWGWPI.js";
|
|
15
15
|
import "./chunk-JWHYXEA2.js";
|
|
16
|
+
import "./chunk-QGI4UCJX.js";
|
|
16
17
|
import "./chunk-6LEZCKKV.js";
|
|
17
18
|
import "./chunk-ZD3KHESI.js";
|
|
18
19
|
import "./chunk-VKVL7WBN.js";
|
|
@@ -874,7 +875,7 @@ async function handleMaterialize(argv, apiUrl, token) {
|
|
|
874
875
|
const runId = requireRunId(argv);
|
|
875
876
|
const workflowId = await resolveWorkflowId(argv, runId, apiUrl, token);
|
|
876
877
|
const outDir = getArgValue(argv, "--out") ?? `./diag-${runId}`;
|
|
877
|
-
const { assembleWorkspace } = await import("./src-
|
|
878
|
+
const { assembleWorkspace } = await import("./src-22RI5VP2.js");
|
|
878
879
|
const dataUrl = `${apiUrl}/workflows/${encodeURIComponent(workflowId)}/runs/${encodeURIComponent(runId)}/debug/materialize-data`;
|
|
879
880
|
const dataRes = await fetch(dataUrl, { headers: { Authorization: `Bearer ${token}` } });
|
|
880
881
|
if (!dataRes.ok) {
|
|
@@ -924,4 +925,4 @@ async function handleMaterialize(argv, apiUrl, token) {
|
|
|
924
925
|
export {
|
|
925
926
|
handleWorkflowDebug
|
|
926
927
|
};
|
|
927
|
-
//# sourceMappingURL=workflow-debug-
|
|
928
|
+
//# sourceMappingURL=workflow-debug-PRX3DWGD.js.map
|