deepline 0.1.252 → 0.1.254
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/bundling-sources/sdk/src/release.ts +8 -7
- package/dist/bundling-sources/sdk/src/types.ts +2 -0
- package/dist/bundling-sources/shared_libs/play-runtime/context.ts +261 -162
- package/dist/bundling-sources/shared_libs/play-runtime/governor/governor.ts +37 -35
- package/dist/bundling-sources/shared_libs/play-runtime/ledger-safe-payload.ts +20 -5
- package/dist/bundling-sources/shared_libs/play-runtime/output-size-limits.ts +462 -29
- package/dist/bundling-sources/shared_libs/play-runtime/protocol.ts +16 -0
- package/dist/bundling-sources/shared_libs/play-runtime/resource-governor.ts +11 -0
- package/dist/bundling-sources/shared_libs/play-runtime/run-failure.ts +44 -1
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-lifecycle.ts +7 -4
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-payload-transport.ts +98 -13
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-runtime-watchdog.ts +117 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona.ts +19 -3
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/types.ts +1 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-api-paths.ts +4 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-constants.ts +13 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-contract.ts +22 -0
- package/dist/bundling-sources/shared_libs/play-runtime/secret-resolution-retry-policy.ts +80 -0
- package/dist/cli/index.js +80 -51
- package/dist/cli/index.mjs +80 -51
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +13 -10
- package/dist/index.mjs +13 -10
- package/package.json +1 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export const SECRET_RESOLUTION_MAX_ATTEMPTS = 3;
|
|
2
|
+
export const SECRET_RESOLUTION_MAX_RETRY_AFTER_MS = 2_000;
|
|
3
|
+
|
|
4
|
+
const SECRET_RESOLUTION_RETRY_JITTER_CAPS_MS = [100, 250] as const;
|
|
5
|
+
|
|
6
|
+
export type SecretResolutionRetryDecision = {
|
|
7
|
+
retry: boolean;
|
|
8
|
+
retryDelayMs: number;
|
|
9
|
+
retryAfterMs: number | null;
|
|
10
|
+
retryAfterExceedsCap: boolean;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export function isRetryableSecretResolutionStatus(status: number): boolean {
|
|
14
|
+
return status === 429 || (status >= 500 && status <= 599);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function parsedRetryAfterMs(
|
|
18
|
+
value: string | null,
|
|
19
|
+
nowMs: number,
|
|
20
|
+
): number | null {
|
|
21
|
+
const normalized = value?.trim();
|
|
22
|
+
if (!normalized) return null;
|
|
23
|
+
if (/^\d+$/.test(normalized)) {
|
|
24
|
+
const seconds = Number(normalized);
|
|
25
|
+
const milliseconds = seconds * 1_000;
|
|
26
|
+
return Number.isSafeInteger(milliseconds) ? milliseconds : null;
|
|
27
|
+
}
|
|
28
|
+
const deadlineMs = Date.parse(normalized);
|
|
29
|
+
if (!Number.isFinite(deadlineMs) || deadlineMs <= nowMs) return null;
|
|
30
|
+
return deadlineMs - nowMs;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function boundedRandom(value: number): number {
|
|
34
|
+
if (!Number.isFinite(value)) return 0;
|
|
35
|
+
return Math.min(Math.max(value, 0), 1);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function secretResolutionRetryDecision(input: {
|
|
39
|
+
attempt: number;
|
|
40
|
+
retryAfter: string | null;
|
|
41
|
+
nowMs?: number;
|
|
42
|
+
random?: () => number;
|
|
43
|
+
}): SecretResolutionRetryDecision {
|
|
44
|
+
if (input.attempt >= SECRET_RESOLUTION_MAX_ATTEMPTS) {
|
|
45
|
+
return {
|
|
46
|
+
retry: false,
|
|
47
|
+
retryDelayMs: 0,
|
|
48
|
+
retryAfterMs: null,
|
|
49
|
+
retryAfterExceedsCap: false,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const retryAfterMs = parsedRetryAfterMs(
|
|
54
|
+
input.retryAfter,
|
|
55
|
+
input.nowMs ?? Date.now(),
|
|
56
|
+
);
|
|
57
|
+
if (retryAfterMs !== null) {
|
|
58
|
+
const retryAfterExceedsCap =
|
|
59
|
+
retryAfterMs > SECRET_RESOLUTION_MAX_RETRY_AFTER_MS;
|
|
60
|
+
return {
|
|
61
|
+
retry: !retryAfterExceedsCap,
|
|
62
|
+
retryDelayMs: retryAfterExceedsCap ? 0 : retryAfterMs,
|
|
63
|
+
retryAfterMs,
|
|
64
|
+
retryAfterExceedsCap,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const jitterCapMs =
|
|
69
|
+
SECRET_RESOLUTION_RETRY_JITTER_CAPS_MS[input.attempt - 1] ??
|
|
70
|
+
SECRET_RESOLUTION_RETRY_JITTER_CAPS_MS[1];
|
|
71
|
+
const retryDelayMs = Math.floor(
|
|
72
|
+
boundedRandom((input.random ?? Math.random)()) * (jitterCapMs + 1),
|
|
73
|
+
);
|
|
74
|
+
return {
|
|
75
|
+
retry: true,
|
|
76
|
+
retryDelayMs: Math.min(retryDelayMs, jitterCapMs),
|
|
77
|
+
retryAfterMs: null,
|
|
78
|
+
retryAfterExceedsCap: false,
|
|
79
|
+
};
|
|
80
|
+
}
|
package/dist/cli/index.js
CHANGED
|
@@ -184,7 +184,7 @@ configureProxyFromEnv();
|
|
|
184
184
|
var import_promises6 = require("fs/promises");
|
|
185
185
|
var import_node_path20 = require("path");
|
|
186
186
|
var import_node_os15 = require("os");
|
|
187
|
-
var
|
|
187
|
+
var import_commander4 = require("commander");
|
|
188
188
|
|
|
189
189
|
// src/config.ts
|
|
190
190
|
var import_node_fs = require("fs");
|
|
@@ -635,7 +635,8 @@ var SDK_RELEASE = {
|
|
|
635
635
|
// 0.1.252 hard-cuts the customer Monitor catalog to the two launched
|
|
636
636
|
// Deepline-native radars. Older clients must update before discovering,
|
|
637
637
|
// checking, or deploying an unlaunched monitor integration.
|
|
638
|
-
|
|
638
|
+
// 0.1.253 makes play-page browser opening opt-in and retires --no-open.
|
|
639
|
+
version: "0.1.254",
|
|
639
640
|
apiContract: "2026-07-native-monitor-launch-hard-cutover",
|
|
640
641
|
supportPolicy: {
|
|
641
642
|
minimumSupported: "0.1.53",
|
|
@@ -643,8 +644,8 @@ var SDK_RELEASE = {
|
|
|
643
644
|
commandMinimumSupported: [
|
|
644
645
|
{
|
|
645
646
|
command: "enrich",
|
|
646
|
-
minimumSupported: "0.1.
|
|
647
|
-
reason: 'Older SDK CLI enrich generated stale play source; SDK CLI enrich 0.1.153 generated removed StepOptions fields in play source; SDK CLI enrich before 0.1.175 could silently succeed on the empty-waterfall bug when a requested waterfall returned no values for selected rows; SDK CLI enrich before 0.1.230 could convert extractor failures into successful unmatched results; SDK CLI enrich before 0.1.238 could drop a nested provider email match during generic pick("email") extraction and materialize it as NO_MATCH.'
|
|
647
|
+
minimumSupported: "0.1.253",
|
|
648
|
+
reason: 'Older SDK CLI enrich generated stale play source; SDK CLI enrich 0.1.153 generated removed StepOptions fields in play source; SDK CLI enrich before 0.1.175 could silently succeed on the empty-waterfall bug when a requested waterfall returned no values for selected rows; SDK CLI enrich before 0.1.230 could convert extractor failures into successful unmatched results; SDK CLI enrich before 0.1.238 could drop a nested provider email match during generic pick("email") extraction and materialize it as NO_MATCH; SDK CLI enrich before 0.1.253 opens the generated play page by default and accepts the removed --no-open flag.'
|
|
648
649
|
},
|
|
649
650
|
{
|
|
650
651
|
command: "plays",
|
|
@@ -653,14 +654,14 @@ var SDK_RELEASE = {
|
|
|
653
654
|
},
|
|
654
655
|
{
|
|
655
656
|
command: "plays run",
|
|
656
|
-
minimumSupported: "0.1.
|
|
657
|
-
reason: "Older SDK CLI versions predate dataset-native Play results and can emit the retired esm_workers artifact contract."
|
|
657
|
+
minimumSupported: "0.1.253",
|
|
658
|
+
reason: "Older SDK CLI versions predate dataset-native Play results and can emit the retired esm_workers artifact contract; versions before 0.1.253 open the play page by default and accept the removed --no-open flag."
|
|
658
659
|
},
|
|
659
660
|
{
|
|
660
661
|
command: "run",
|
|
661
662
|
displayCommand: "plays run",
|
|
662
|
-
minimumSupported: "0.1.
|
|
663
|
-
reason: "Older SDK CLI versions predate dataset-native Play results and can emit the retired esm_workers artifact contract."
|
|
663
|
+
minimumSupported: "0.1.253",
|
|
664
|
+
reason: "Older SDK CLI versions predate dataset-native Play results and can emit the retired esm_workers artifact contract; versions before 0.1.253 open the play page by default and accept the removed --no-open flag."
|
|
664
665
|
},
|
|
665
666
|
{
|
|
666
667
|
command: "plays check",
|
|
@@ -1482,12 +1483,14 @@ function createSecretRedactionContext(initialValues = []) {
|
|
|
1482
1483
|
}
|
|
1483
1484
|
|
|
1484
1485
|
// ../shared_libs/play-runtime/output-size-limits.ts
|
|
1485
|
-
var
|
|
1486
|
+
var TERMINAL_RUN_RESULT_MAX_BYTES = 6 * 1024 * 1024;
|
|
1486
1487
|
var LEDGER_TERMINAL_RESULT_MAX_BYTES = 256 * 1024;
|
|
1487
|
-
var CUSTOMER_OUTPUT_VALUE_MAX_BYTES =
|
|
1488
|
-
var CUSTOMER_OUTPUT_TOTAL_MAX_BYTES =
|
|
1488
|
+
var CUSTOMER_OUTPUT_VALUE_MAX_BYTES = 5 * 1024 * 1024;
|
|
1489
|
+
var CUSTOMER_OUTPUT_TOTAL_MAX_BYTES = 5 * 1024 * 1024;
|
|
1489
1490
|
var RUNTIME_RECEIPT_OUTPUT_MAX_BYTES = 10 * 1024 * 1024;
|
|
1490
1491
|
var RUNTIME_RECEIPT_COMPLETION_BUFFER_MAX_BYTES = 32 * 1024 * 1024;
|
|
1492
|
+
var RUNNER_TERMINAL_PUSH_MAX_BODY_BYTES = 16 * 1024 * 1024;
|
|
1493
|
+
var RUNNER_POST_TERMINAL_DIAGNOSTIC_MAX_BYTES = 64 * 1024;
|
|
1491
1494
|
|
|
1492
1495
|
// ../shared_libs/play-runtime/ledger-safe-payload.ts
|
|
1493
1496
|
var ledgerIngressRedactor = createSecretRedactionContext();
|
|
@@ -9015,6 +9018,7 @@ Examples:
|
|
|
9015
9018
|
var import_promises3 = require("fs/promises");
|
|
9016
9019
|
var import_node_os8 = require("os");
|
|
9017
9020
|
var import_node_path12 = require("path");
|
|
9021
|
+
var import_commander2 = require("commander");
|
|
9018
9022
|
|
|
9019
9023
|
// src/cli/commands/play.ts
|
|
9020
9024
|
var import_node_crypto4 = require("crypto");
|
|
@@ -11268,7 +11272,7 @@ var PLAY_RUN_RESERVED_BOOLEAN_FLAGS = /* @__PURE__ */ new Set([
|
|
|
11268
11272
|
"--logs",
|
|
11269
11273
|
"--full",
|
|
11270
11274
|
"--force",
|
|
11271
|
-
"--
|
|
11275
|
+
"--open",
|
|
11272
11276
|
"--debug-map-latency"
|
|
11273
11277
|
]);
|
|
11274
11278
|
function traceCliSync(phase, fields, run) {
|
|
@@ -12555,11 +12559,10 @@ function buildPlayDashboardUrl(baseUrl, playName) {
|
|
|
12555
12559
|
const encodedPlayName = encodeURIComponent(playName);
|
|
12556
12560
|
return `${trimmedBase}/dashboard/plays/${encodedPlayName}`;
|
|
12557
12561
|
}
|
|
12558
|
-
function openPlayDashboard(
|
|
12559
|
-
if (
|
|
12560
|
-
|
|
12562
|
+
function openPlayDashboard(dashboardUrl, open) {
|
|
12563
|
+
if (open && dashboardUrl) {
|
|
12564
|
+
openInBrowser(dashboardUrl);
|
|
12561
12565
|
}
|
|
12562
|
-
openInBrowser(input2.dashboardUrl);
|
|
12563
12566
|
}
|
|
12564
12567
|
function printPlayLogLines(input2) {
|
|
12565
12568
|
for (const line of input2.lines) {
|
|
@@ -12878,10 +12881,7 @@ async function startAndWaitForPlayCompletionByStreamOnce(input2) {
|
|
|
12878
12881
|
progress: input2.progress
|
|
12879
12882
|
});
|
|
12880
12883
|
}
|
|
12881
|
-
openPlayDashboard(
|
|
12882
|
-
dashboardUrl,
|
|
12883
|
-
noOpen: input2.noOpen
|
|
12884
|
-
});
|
|
12884
|
+
openPlayDashboard(dashboardUrl, input2.open ?? false);
|
|
12885
12885
|
input2.progress.phase("running");
|
|
12886
12886
|
emittedDashboardUrl = true;
|
|
12887
12887
|
}
|
|
@@ -13330,15 +13330,24 @@ function collectDatasetHandleLines(value, path = "result") {
|
|
|
13330
13330
|
return lines;
|
|
13331
13331
|
}
|
|
13332
13332
|
function buildRunWarnings(status, rowsInfo) {
|
|
13333
|
+
const result = readRecord(status.result);
|
|
13334
|
+
const metadata = readRecord(result?._metadata);
|
|
13335
|
+
const outputWarnings = Array.isArray(metadata?.outputWarnings) ? metadata.outputWarnings.map((warning) => readRecord(warning)).filter((warning) => {
|
|
13336
|
+
if (!warning) return false;
|
|
13337
|
+
return !(rowsInfo && !rowsInfo.complete && warning.reason === "array_preview_limit" && warning.originalItems === rowsInfo.totalRows && warning.retainedItems === rowsInfo.rows.length);
|
|
13338
|
+
}).map((warning) => warning?.message).filter(
|
|
13339
|
+
(message) => typeof message === "string" && message.trim().length > 0
|
|
13340
|
+
).slice(0, 16) : [];
|
|
13333
13341
|
if (status.status === "completed" && rowsInfo?.totalRows === 0) {
|
|
13334
|
-
return ["Run completed with 0 output rows."];
|
|
13342
|
+
return ["Run completed with 0 output rows.", ...outputWarnings];
|
|
13335
13343
|
}
|
|
13336
13344
|
if (rowsInfo && !rowsInfo.complete) {
|
|
13337
13345
|
return [
|
|
13338
|
-
`Run output is partial: showing ${rowsInfo.rows.length} preview row(s) of ${rowsInfo.totalRows}
|
|
13346
|
+
`Run output is partial: showing ${rowsInfo.rows.length} preview row(s) of ${rowsInfo.totalRows}.`,
|
|
13347
|
+
...outputWarnings
|
|
13339
13348
|
];
|
|
13340
13349
|
}
|
|
13341
|
-
return
|
|
13350
|
+
return outputWarnings;
|
|
13342
13351
|
}
|
|
13343
13352
|
function buildRunNextCommands(status) {
|
|
13344
13353
|
const runId = status.runId?.trim();
|
|
@@ -14064,6 +14073,14 @@ function buildRunPackageTextLines(packaged) {
|
|
|
14064
14073
|
if (failedLogWarning) {
|
|
14065
14074
|
lines.push(` warning: ${failedLogWarning}`);
|
|
14066
14075
|
}
|
|
14076
|
+
const packageWarnings = Array.isArray(packaged.warnings) ? Array.from(
|
|
14077
|
+
new Set(
|
|
14078
|
+
packaged.warnings.filter(
|
|
14079
|
+
(warning) => typeof warning === "string" && warning.trim().length > 0
|
|
14080
|
+
)
|
|
14081
|
+
)
|
|
14082
|
+
).slice(0, 16) : [];
|
|
14083
|
+
lines.push(...packageWarnings.map((warning) => ` warning: ${warning}`));
|
|
14067
14084
|
const failedLogNext = readRecord(failedLogs?.next);
|
|
14068
14085
|
if (failedLogWarning && typeof failedLogNext?.logs === "string") {
|
|
14069
14086
|
lines.push(
|
|
@@ -14137,7 +14154,7 @@ function buildOrdinaryPlayRunCommand(options, resolvedRevisionId) {
|
|
|
14137
14154
|
if (options.waitTimeoutMs !== null) {
|
|
14138
14155
|
parts.push("--tail-timeout-ms", String(options.waitTimeoutMs));
|
|
14139
14156
|
}
|
|
14140
|
-
if (options.
|
|
14157
|
+
if (options.open) parts.push("--open");
|
|
14141
14158
|
if (options.fullJson) parts.push("--full");
|
|
14142
14159
|
if (options.jsonOutput && options.emitLogs) parts.push("--logs");
|
|
14143
14160
|
if (options.jsonOutput) parts.push("--json");
|
|
@@ -14974,7 +14991,7 @@ function writeStartedPlayRun(input2) {
|
|
|
14974
14991
|
);
|
|
14975
14992
|
}
|
|
14976
14993
|
function parsePlayRunOptions(args) {
|
|
14977
|
-
const usage = "Usage: deepline plays run <play-name> [--input '{...}'] [--no-wait] [--tail-timeout-ms 30000] [--force] [--full] [--<input> value]\n deepline plays run <play-file.ts> [--input '{...}'] [--no-wait] [--tail-timeout-ms 30000] [--force] [--full] [--<input> value]\n deepline plays run --file <play-file.ts> [--input '{...}'] [--profile <id>] [--no-wait] [--tail-timeout-ms 30000] [--force] [--full] [--<input> value]\n deepline plays run --name <name> [--input '{...}'] [--profile <id>] [--live|--latest|--revision-id <id>] [--no-wait] [--tail-timeout-ms 30000] [--force] [--
|
|
14994
|
+
const usage = "Usage: deepline plays run <play-name> [--input '{...}'] [--no-wait] [--tail-timeout-ms 30000] [--force] [--open] [--full] [--<input> value]\n deepline plays run <play-file.ts> [--input '{...}'] [--no-wait] [--tail-timeout-ms 30000] [--force] [--open] [--full] [--<input> value]\n deepline plays run --file <play-file.ts> [--input '{...}'] [--profile <id>] [--no-wait] [--tail-timeout-ms 30000] [--force] [--open] [--full] [--<input> value]\n deepline plays run --name <name> [--input '{...}'] [--profile <id>] [--live|--latest|--revision-id <id>] [--no-wait] [--tail-timeout-ms 30000] [--force] [--open] [--json] [--full] [--<input> value]\n Runs use the Absurd CJS runtime.\n Unknown --<input> value flags, such as --limit 5, are passed into play input.\nRun `deepline plays run --help` for idempotent call caching and ctx.dataset guidance.";
|
|
14978
14995
|
let filePath = null;
|
|
14979
14996
|
let playName = null;
|
|
14980
14997
|
let input2 = null;
|
|
@@ -14985,7 +15002,7 @@ function parsePlayRunOptions(args) {
|
|
|
14985
15002
|
const fullJson = args.includes("--full");
|
|
14986
15003
|
const emitLogs = !jsonOutput || args.includes("--logs");
|
|
14987
15004
|
const force = args.includes("--force");
|
|
14988
|
-
const
|
|
15005
|
+
const open = args.includes("--open");
|
|
14989
15006
|
const debugMapLatency = args.includes("--debug-map-latency");
|
|
14990
15007
|
let waitTimeoutMs = null;
|
|
14991
15008
|
let profile = null;
|
|
@@ -15030,6 +15047,11 @@ function parsePlayRunOptions(args) {
|
|
|
15030
15047
|
"--out is not a plays run flag. Run the play first, then export rows with: deepline runs export <run-id> --out output.csv"
|
|
15031
15048
|
);
|
|
15032
15049
|
}
|
|
15050
|
+
if (arg === "--no-open" || arg.startsWith("--no-open=")) {
|
|
15051
|
+
throw new Error(
|
|
15052
|
+
"--no-open was removed for `plays run`. Play page URLs are printed by default; pass --open to launch a browser."
|
|
15053
|
+
);
|
|
15054
|
+
}
|
|
15033
15055
|
if (arg === "--poll-interval-ms" || arg === "--interval-ms") {
|
|
15034
15056
|
throw new Error(
|
|
15035
15057
|
`${arg} was removed. --watch uses the canonical run stream directly.`
|
|
@@ -15104,7 +15126,7 @@ function parsePlayRunOptions(args) {
|
|
|
15104
15126
|
fullJson,
|
|
15105
15127
|
waitTimeoutMs,
|
|
15106
15128
|
force,
|
|
15107
|
-
|
|
15129
|
+
open,
|
|
15108
15130
|
profile,
|
|
15109
15131
|
debugMapLatency
|
|
15110
15132
|
};
|
|
@@ -15686,7 +15708,7 @@ async function handleFileBackedRun(options, hooks) {
|
|
|
15686
15708
|
jsonOutput: options.jsonOutput,
|
|
15687
15709
|
emitLogs: options.emitLogs,
|
|
15688
15710
|
waitTimeoutMs: options.waitTimeoutMs,
|
|
15689
|
-
|
|
15711
|
+
open: options.open,
|
|
15690
15712
|
progress,
|
|
15691
15713
|
onRunStarted: hooks?.onRunStarted
|
|
15692
15714
|
}).catch(async (error) => {
|
|
@@ -15729,10 +15751,7 @@ async function handleFileBackedRun(options, hooks) {
|
|
|
15729
15751
|
})
|
|
15730
15752
|
);
|
|
15731
15753
|
const resolvedDashboardUrl = buildPlayDashboardUrl(client2.baseUrl, playName);
|
|
15732
|
-
openPlayDashboard(
|
|
15733
|
-
dashboardUrl: resolvedDashboardUrl,
|
|
15734
|
-
noOpen: options.noOpen
|
|
15735
|
-
});
|
|
15754
|
+
openPlayDashboard(resolvedDashboardUrl, options.open);
|
|
15736
15755
|
progress.phase("started run");
|
|
15737
15756
|
progress.complete();
|
|
15738
15757
|
writeStartedPlayRun({
|
|
@@ -15853,7 +15872,7 @@ async function handleNamedRun(options, hooks) {
|
|
|
15853
15872
|
jsonOutput: options.jsonOutput,
|
|
15854
15873
|
emitLogs: options.emitLogs,
|
|
15855
15874
|
waitTimeoutMs: options.waitTimeoutMs,
|
|
15856
|
-
|
|
15875
|
+
open: options.open,
|
|
15857
15876
|
progress,
|
|
15858
15877
|
onRunStarted: hooks?.onRunStarted
|
|
15859
15878
|
}).catch(async (error) => {
|
|
@@ -15901,10 +15920,7 @@ async function handleNamedRun(options, hooks) {
|
|
|
15901
15920
|
})
|
|
15902
15921
|
);
|
|
15903
15922
|
const resolvedDashboardUrl = buildPlayDashboardUrl(client2.baseUrl, playName);
|
|
15904
|
-
openPlayDashboard(
|
|
15905
|
-
dashboardUrl: resolvedDashboardUrl,
|
|
15906
|
-
noOpen: options.noOpen
|
|
15907
|
-
});
|
|
15923
|
+
openPlayDashboard(resolvedDashboardUrl, options.open);
|
|
15908
15924
|
progress.phase("started run");
|
|
15909
15925
|
progress.complete();
|
|
15910
15926
|
writeStartedPlayRun({
|
|
@@ -17202,8 +17218,7 @@ Notes:
|
|
|
17202
17218
|
next commands. --watch and --wait are accepted compatibility aliases for the
|
|
17203
17219
|
default behavior. Use --no-wait only when you intentionally want
|
|
17204
17220
|
a fire-and-forget run id.
|
|
17205
|
-
The play page
|
|
17206
|
-
to only print the URL.
|
|
17221
|
+
The play page URL is printed when the run starts. Pass --open to open it in a browser.
|
|
17207
17222
|
Concurrent runs for the same play are allowed.
|
|
17208
17223
|
--force starts a fresh run graph without refreshing completed provider calls.
|
|
17209
17224
|
It does not cancel active sibling runs.
|
|
@@ -17258,10 +17273,10 @@ Examples:
|
|
|
17258
17273
|
).option("--watch", "Compatibility alias; run waits by default").option("--wait", "Compatibility alias; run waits by default").option("--no-wait", "Start the run and return immediately").option(
|
|
17259
17274
|
"--logs",
|
|
17260
17275
|
"When output is non-interactive, stream play logs to stderr while waiting"
|
|
17261
|
-
).option("--tail-timeout-ms <ms>", "Timeout while watching the run stream").option("--force", "Start a fresh run graph").option(
|
|
17276
|
+
).option("--tail-timeout-ms <ms>", "Timeout while watching the run stream").option("--force", "Start a fresh run graph").option("--open", "Open the play page in a browser after the run starts").option(
|
|
17262
17277
|
"--debug-map-latency",
|
|
17263
17278
|
"Internal diagnostics: emit one aggregate latency profile per dataset map"
|
|
17264
|
-
).option("--
|
|
17279
|
+
).option("--json", "Emit JSON output").option("--full", "Debug only: with --json, emit the raw status payload").addHelpText(
|
|
17265
17280
|
"afterAll",
|
|
17266
17281
|
`
|
|
17267
17282
|
Pass-through input flags:
|
|
@@ -17297,8 +17312,8 @@ Pass-through input flags:
|
|
|
17297
17312
|
...options.logs ? ["--logs"] : [],
|
|
17298
17313
|
...options.tailTimeoutMs ? ["--tail-timeout-ms", options.tailTimeoutMs] : [],
|
|
17299
17314
|
...options.force ? ["--force"] : [],
|
|
17315
|
+
...options.open ? ["--open"] : [],
|
|
17300
17316
|
...options.debugMapLatency ? ["--debug-map-latency"] : [],
|
|
17301
|
-
...options.noOpen || options.open === false ? ["--no-open"] : [],
|
|
17302
17317
|
...options.json ? ["--json"] : [],
|
|
17303
17318
|
...options.full ? ["--full"] : [],
|
|
17304
17319
|
...passthroughArgs
|
|
@@ -19884,11 +19899,11 @@ async function buildPlanArgs(args) {
|
|
|
19884
19899
|
const localBooleanOptions = /* @__PURE__ */ new Set([
|
|
19885
19900
|
"--dry-run",
|
|
19886
19901
|
"--json",
|
|
19902
|
+
"--open",
|
|
19887
19903
|
"--force",
|
|
19888
19904
|
"--fail-fast",
|
|
19889
19905
|
"--all",
|
|
19890
19906
|
"--in-place",
|
|
19891
|
-
"--no-open",
|
|
19892
19907
|
"--debug-map-latency"
|
|
19893
19908
|
]);
|
|
19894
19909
|
const planArgs = [];
|
|
@@ -22880,7 +22895,15 @@ function registerEnrichCommand(program) {
|
|
|
22880
22895
|
).option("--all", "Run all rows.").option(
|
|
22881
22896
|
"--dry-run",
|
|
22882
22897
|
"Compile and print the generated plan without starting a run."
|
|
22883
|
-
).option("--json", "Emit JSON.").option(
|
|
22898
|
+
).option("--json", "Emit JSON.").option(
|
|
22899
|
+
"--open",
|
|
22900
|
+
"Open the generated play page in a browser after the run starts."
|
|
22901
|
+
).addOption(
|
|
22902
|
+
new import_commander2.Option(
|
|
22903
|
+
"--no-open [legacy-value]",
|
|
22904
|
+
"Removed legacy option"
|
|
22905
|
+
).hideHelp()
|
|
22906
|
+
).option("--force", "Force rerun for all enrich aliases.").option(
|
|
22884
22907
|
"--with-force <aliases>",
|
|
22885
22908
|
"Force rerun for selected aliases.",
|
|
22886
22909
|
(value, previous = []) => [...previous, value]
|
|
@@ -22897,6 +22920,13 @@ function registerEnrichCommand(program) {
|
|
|
22897
22920
|
"--fail-fast",
|
|
22898
22921
|
"Fail the generated play when any selected row errors, while preserving recovered runtime-sheet rows for export."
|
|
22899
22922
|
).action(async (options, _command) => {
|
|
22923
|
+
if (currentEnrichArgs().some(
|
|
22924
|
+
(arg) => arg === "--no-open" || arg.startsWith("--no-open=")
|
|
22925
|
+
)) {
|
|
22926
|
+
throw new Error(
|
|
22927
|
+
"--no-open was removed for `enrich`. Play page URLs are printed by default; pass --open to launch a browser."
|
|
22928
|
+
);
|
|
22929
|
+
}
|
|
22900
22930
|
if (options.inPlace && options.dryRun) {
|
|
22901
22931
|
throw new Error("--in-place is not supported with --dry-run.");
|
|
22902
22932
|
}
|
|
@@ -23057,8 +23087,8 @@ function registerEnrichCommand(program) {
|
|
|
23057
23087
|
if (options.debugMapLatency) {
|
|
23058
23088
|
runArgs.push("--debug-map-latency");
|
|
23059
23089
|
}
|
|
23060
|
-
if (options.
|
|
23061
|
-
runArgs.push("--
|
|
23090
|
+
if (options.open) {
|
|
23091
|
+
runArgs.push("--open");
|
|
23062
23092
|
}
|
|
23063
23093
|
if (input2.json) {
|
|
23064
23094
|
runArgs.push("--json");
|
|
@@ -26186,7 +26216,7 @@ Examples:
|
|
|
26186
26216
|
}
|
|
26187
26217
|
|
|
26188
26218
|
// src/cli/commands/tools.ts
|
|
26189
|
-
var
|
|
26219
|
+
var import_commander3 = require("commander");
|
|
26190
26220
|
var import_node_fs15 = require("fs");
|
|
26191
26221
|
var import_node_os12 = require("os");
|
|
26192
26222
|
var import_node_path16 = require("path");
|
|
@@ -26911,12 +26941,12 @@ Examples:
|
|
|
26911
26941
|
"--examples-only",
|
|
26912
26942
|
"Only print runnable examples and sample payloads"
|
|
26913
26943
|
).option("--getters-only", "Only print extracted list/value getters").addOption(
|
|
26914
|
-
new
|
|
26944
|
+
new import_commander3.Option(
|
|
26915
26945
|
"--compact",
|
|
26916
26946
|
"Compatibility alias for the default compact view"
|
|
26917
26947
|
).hideHelp()
|
|
26918
26948
|
).addOption(
|
|
26919
|
-
new
|
|
26949
|
+
new import_commander3.Option(
|
|
26920
26950
|
"--contract-json",
|
|
26921
26951
|
"Compatibility alias for compact contract JSON"
|
|
26922
26952
|
).hideHelp()
|
|
@@ -30160,7 +30190,6 @@ async function runPlayRunnerHealthCheck() {
|
|
|
30160
30190
|
"--input",
|
|
30161
30191
|
"{}",
|
|
30162
30192
|
"--watch",
|
|
30163
|
-
"--no-open",
|
|
30164
30193
|
"--json"
|
|
30165
30194
|
]);
|
|
30166
30195
|
} finally {
|
|
@@ -30309,7 +30338,7 @@ async function main() {
|
|
|
30309
30338
|
if (printStartupPhase) {
|
|
30310
30339
|
progress?.phase("loading deepline cli");
|
|
30311
30340
|
}
|
|
30312
|
-
const program = new
|
|
30341
|
+
const program = new import_commander4.Command();
|
|
30313
30342
|
program.name("deepline").description(
|
|
30314
30343
|
"Deepline CLI \u2014 GTM enrichment tools, plays, and runs from your terminal."
|
|
30315
30344
|
).version(SDK_VERSION, "-v, --version", "Show version").exitOverride().showHelpAfterError().showSuggestionAfterError(true).addHelpText(
|