deepline 0.3.145 → 0.3.146
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/client.ts +1 -1
- package/dist/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/shared_libs/play-runtime/async-operation.ts +40 -4
- package/dist/bundling-sources/shared_libs/play-runtime/context.ts +259 -7
- package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +10 -0
- package/dist/bundling-sources/shared_libs/play-runtime/protocol.ts +10 -0
- package/dist/bundling-sources/shared_libs/play-runtime/run-ledger.ts +58 -19
- package/dist/bundling-sources/shared_libs/play-runtime/run-snapshot-stream.ts +17 -11
- package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +57 -2
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-progress.ts +73 -16
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +57 -3
- package/dist/bundling-sources/shared_libs/play-runtime/step-progress.ts +7 -0
- package/dist/bundling-sources/shared_libs/play-runtime/worker-api-types.ts +1 -0
- package/dist/cli/index.js +57 -17
- package/dist/cli/index.mjs +57 -17
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +25 -9
- package/dist/index.mjs +25 -9
- package/dist/release.d.mts +1 -1
- package/dist/release.d.ts +1 -1
- package/dist/release.js +1 -1
- package/dist/release.mjs +1 -1
- package/package.json +1 -1
|
@@ -9099,6 +9099,9 @@ export async function directCompletePostgresSchedulerRunnerTerminal(
|
|
|
9099
9099
|
input.result,
|
|
9100
9100
|
{ logMetadata: input.completionLogMetadata ?? 'attach' },
|
|
9101
9101
|
);
|
|
9102
|
+
const resultSummary = terminalRowOutcomesSummary(
|
|
9103
|
+
(input.result as { rowOutcomes?: unknown }).rowOutcomes,
|
|
9104
|
+
);
|
|
9102
9105
|
const terminalResult = assertTerminalRunResultWithinLimit(terminalOutput);
|
|
9103
9106
|
const ledgerTerminalResult = terminalRunResultForLedger(terminalResult, {
|
|
9104
9107
|
content: 'full',
|
|
@@ -9352,7 +9355,8 @@ export async function directCompletePostgresSchedulerRunnerTerminal(
|
|
|
9352
9355
|
jsonb_build_object(
|
|
9353
9356
|
'output', $6::jsonb,
|
|
9354
9357
|
'terminalLogLines', $7::jsonb,
|
|
9355
|
-
'terminalProgressEvents', $8::jsonb
|
|
9358
|
+
'terminalProgressEvents', $8::jsonb,
|
|
9359
|
+
'resultSummary', $16::jsonb
|
|
9356
9360
|
),
|
|
9357
9361
|
${causalOutboxCreatedAt('run_terminal.run_id', options)}
|
|
9358
9362
|
FROM run_terminal
|
|
@@ -9386,6 +9390,7 @@ export async function directCompletePostgresSchedulerRunnerTerminal(
|
|
|
9386
9390
|
input.engineWake.eventName,
|
|
9387
9391
|
input.engineWake.wakeChannel,
|
|
9388
9392
|
input.allowCappedCompletion === true,
|
|
9393
|
+
stringifyPostgresJson(resultSummary),
|
|
9389
9394
|
],
|
|
9390
9395
|
);
|
|
9391
9396
|
if (completed.rows.length > 0) return 'completed';
|
|
@@ -11271,6 +11276,7 @@ export async function completePostgresSchedulerAttempt(
|
|
|
11271
11276
|
attempt: number;
|
|
11272
11277
|
leaseToken: string;
|
|
11273
11278
|
output: unknown;
|
|
11279
|
+
rowOutcomes?: unknown;
|
|
11274
11280
|
runtimeTiming?: PlayRunnerRuntimeTiming | null;
|
|
11275
11281
|
terminalLogLines?: readonly string[] | null;
|
|
11276
11282
|
},
|
|
@@ -11280,6 +11286,7 @@ export async function completePostgresSchedulerAttempt(
|
|
|
11280
11286
|
const ledgerTerminalResult = terminalRunResultForLedger(terminalResult, {
|
|
11281
11287
|
content: 'full',
|
|
11282
11288
|
});
|
|
11289
|
+
const resultSummary = terminalRowOutcomesSummary(input.rowOutcomes);
|
|
11283
11290
|
const terminalLogLines = (input.terminalLogLines ?? [])
|
|
11284
11291
|
.map((line) => line.trim())
|
|
11285
11292
|
.filter(Boolean)
|
|
@@ -11458,7 +11465,8 @@ export async function completePostgresSchedulerAttempt(
|
|
|
11458
11465
|
'run.completed',
|
|
11459
11466
|
jsonb_build_object(
|
|
11460
11467
|
'output', $9::jsonb,
|
|
11461
|
-
'terminalLogLines', $8::jsonb
|
|
11468
|
+
'terminalLogLines', $8::jsonb,
|
|
11469
|
+
'resultSummary', $10::jsonb
|
|
11462
11470
|
),
|
|
11463
11471
|
${causalOutboxCreatedAt('run_terminal.run_id', options)}
|
|
11464
11472
|
FROM run_terminal
|
|
@@ -11479,6 +11487,7 @@ export async function completePostgresSchedulerAttempt(
|
|
|
11479
11487
|
JSON.stringify({ runId: input.runId, status: 'completed' }),
|
|
11480
11488
|
JSON.stringify(terminalLogLines),
|
|
11481
11489
|
stringifyPostgresJson(ledgerTerminalResult ?? null),
|
|
11490
|
+
stringifyPostgresJson(resultSummary),
|
|
11482
11491
|
],
|
|
11483
11492
|
);
|
|
11484
11493
|
if (completed.rows.length === 0) {
|
|
@@ -11522,6 +11531,9 @@ export async function failPostgresSchedulerAttempt(
|
|
|
11522
11531
|
terminalResult === undefined ? (input.result ?? null) : terminalResult,
|
|
11523
11532
|
terminalResult === undefined ? {} : { content: 'full' },
|
|
11524
11533
|
);
|
|
11534
|
+
const resultSummary = terminalRowOutcomesSummary(
|
|
11535
|
+
(input.result as { rowOutcomes?: unknown } | null)?.rowOutcomes,
|
|
11536
|
+
);
|
|
11525
11537
|
// Keep the recovery tail separate from result: large failures are represented
|
|
11526
11538
|
// by a result reference, but their customer guidance must still be logged.
|
|
11527
11539
|
const terminalLogLines = (input.terminalLogLines ?? [])
|
|
@@ -11762,7 +11774,8 @@ export async function failPostgresSchedulerAttempt(
|
|
|
11762
11774
|
jsonb_build_object(
|
|
11763
11775
|
'error', $4::jsonb ->> 'message',
|
|
11764
11776
|
'result', $8::jsonb,
|
|
11765
|
-
'terminalLogLines', $12::jsonb
|
|
11777
|
+
'terminalLogLines', $12::jsonb,
|
|
11778
|
+
'resultSummary', $13::jsonb
|
|
11766
11779
|
),
|
|
11767
11780
|
${causalOutboxCreatedAt('run_terminal.run_id', options)}
|
|
11768
11781
|
FROM run_terminal
|
|
@@ -11786,6 +11799,7 @@ export async function failPostgresSchedulerAttempt(
|
|
|
11786
11799
|
stringifyPostgresJson(input.sandboxCrashDiagnostic ?? null),
|
|
11787
11800
|
input.preserveRunnerTerminal === true,
|
|
11788
11801
|
JSON.stringify(terminalLogLines),
|
|
11802
|
+
stringifyPostgresJson(resultSummary),
|
|
11789
11803
|
],
|
|
11790
11804
|
);
|
|
11791
11805
|
return failed.rows.length > 0;
|
|
@@ -12265,6 +12279,23 @@ function finiteRunnerNumber(value: unknown): number | null {
|
|
|
12265
12279
|
: null;
|
|
12266
12280
|
}
|
|
12267
12281
|
|
|
12282
|
+
function terminalRowOutcomesSummary(value: unknown): {
|
|
12283
|
+
rowOutcomes: Record<string, number>;
|
|
12284
|
+
} | null {
|
|
12285
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) return null;
|
|
12286
|
+
const record = value as Record<string, unknown>;
|
|
12287
|
+
const completedRows = finiteRunnerNumber(record.completedRows);
|
|
12288
|
+
const failedRows = finiteRunnerNumber(record.failedRows);
|
|
12289
|
+
const totalRows = finiteRunnerNumber(record.totalRows);
|
|
12290
|
+
const supersededRows = finiteRunnerNumber(record.supersededRows);
|
|
12291
|
+
const rowOutcomes: Record<string, number> = {};
|
|
12292
|
+
if (completedRows !== null) rowOutcomes.completedRows = completedRows;
|
|
12293
|
+
if (failedRows !== null) rowOutcomes.failedRows = failedRows;
|
|
12294
|
+
if (totalRows !== null) rowOutcomes.totalRows = totalRows;
|
|
12295
|
+
if (supersededRows !== null) rowOutcomes.supersededRows = supersededRows;
|
|
12296
|
+
return Object.keys(rowOutcomes).length > 0 ? { rowOutcomes } : null;
|
|
12297
|
+
}
|
|
12298
|
+
|
|
12268
12299
|
function readPlayRunnerRuntimeTiming(
|
|
12269
12300
|
value: unknown,
|
|
12270
12301
|
): PlayRunnerRuntimeTiming | null {
|
|
@@ -12425,6 +12456,18 @@ function attachRunnerWorkProgressMetadata(
|
|
|
12425
12456
|
const skipped = finiteRunnerNumber(
|
|
12426
12457
|
(runnerResult as { skipped?: unknown }).skipped,
|
|
12427
12458
|
);
|
|
12459
|
+
const runnerRowOutcomes = terminalRowOutcomesSummary(
|
|
12460
|
+
(runnerResult as { rowOutcomes?: unknown }).rowOutcomes,
|
|
12461
|
+
)?.rowOutcomes;
|
|
12462
|
+
const existingRowOutcomes =
|
|
12463
|
+
metadata?.rowOutcomes &&
|
|
12464
|
+
typeof metadata.rowOutcomes === 'object' &&
|
|
12465
|
+
!Array.isArray(metadata.rowOutcomes)
|
|
12466
|
+
? (metadata.rowOutcomes as Record<string, unknown>)
|
|
12467
|
+
: null;
|
|
12468
|
+
const rowOutcomes = runnerRowOutcomes
|
|
12469
|
+
? { ...(existingRowOutcomes ?? {}), ...runnerRowOutcomes }
|
|
12470
|
+
: null;
|
|
12428
12471
|
const logs = Array.isArray((runnerResult as { logs?: unknown }).logs)
|
|
12429
12472
|
? (runnerResult as { logs: unknown[] }).logs.filter(
|
|
12430
12473
|
(line): line is string =>
|
|
@@ -12480,6 +12523,7 @@ function attachRunnerWorkProgressMetadata(
|
|
|
12480
12523
|
(total === null || skipped === null || metadata?.workProgress) &&
|
|
12481
12524
|
!runLogTail &&
|
|
12482
12525
|
!runtimeResources &&
|
|
12526
|
+
!rowOutcomes &&
|
|
12483
12527
|
mergedOutputWarnings.length === 0
|
|
12484
12528
|
) {
|
|
12485
12529
|
return output;
|
|
@@ -12511,6 +12555,7 @@ function attachRunnerWorkProgressMetadata(
|
|
|
12511
12555
|
_metadata: {
|
|
12512
12556
|
...(metadata ?? {}),
|
|
12513
12557
|
...(workProgress ? { workProgress } : {}),
|
|
12558
|
+
...(rowOutcomes ? { rowOutcomes } : {}),
|
|
12514
12559
|
...(runLogTail ? { runLogTail } : {}),
|
|
12515
12560
|
...(runtimeResources ? { runtimeResources } : {}),
|
|
12516
12561
|
...(mergedOutputWarnings.length > 0
|
|
@@ -12608,6 +12653,7 @@ export async function executePostgresSchedulerClaim(
|
|
|
12608
12653
|
attempt: claim.attempt,
|
|
12609
12654
|
leaseToken: claim.leaseToken,
|
|
12610
12655
|
output: terminalOutput,
|
|
12656
|
+
rowOutcomes: (output as { rowOutcomes?: unknown } | null)?.rowOutcomes,
|
|
12611
12657
|
runtimeTiming: extractRunnerRuntimeTiming(output),
|
|
12612
12658
|
terminalLogLines: terminalLogLinesForOutbox(
|
|
12613
12659
|
output,
|
|
@@ -15736,6 +15782,7 @@ export function buildRunLedgerEventsFromPostgresSchedulerOutbox(
|
|
|
15736
15782
|
event.runId,
|
|
15737
15783
|
);
|
|
15738
15784
|
const lines = stringArrayPayloadField(event.payload, 'terminalLogLines');
|
|
15785
|
+
const resultSummary = payloadField(event.payload, 'resultSummary');
|
|
15739
15786
|
return [
|
|
15740
15787
|
...progressEvents,
|
|
15741
15788
|
...(lines.length === 0
|
|
@@ -15757,6 +15804,9 @@ export function buildRunLedgerEventsFromPostgresSchedulerOutbox(
|
|
|
15757
15804
|
result: terminalRunResultForLedger(
|
|
15758
15805
|
payloadField(event.payload, 'output'),
|
|
15759
15806
|
),
|
|
15807
|
+
...(resultSummary === undefined || resultSummary === null
|
|
15808
|
+
? {}
|
|
15809
|
+
: { resultSummary }),
|
|
15760
15810
|
},
|
|
15761
15811
|
];
|
|
15762
15812
|
}
|
|
@@ -15770,6 +15820,7 @@ export function buildRunLedgerEventsFromPostgresSchedulerOutbox(
|
|
|
15770
15820
|
const result = terminalRunResultForLedger(
|
|
15771
15821
|
payloadField(event.payload, 'result'),
|
|
15772
15822
|
);
|
|
15823
|
+
const resultSummary = payloadField(event.payload, 'resultSummary');
|
|
15773
15824
|
return [
|
|
15774
15825
|
...progressEvents,
|
|
15775
15826
|
...(lines.length === 0
|
|
@@ -15790,6 +15841,9 @@ export function buildRunLedgerEventsFromPostgresSchedulerOutbox(
|
|
|
15790
15841
|
source: 'system',
|
|
15791
15842
|
error: stringPayloadField(event.payload, 'error'),
|
|
15792
15843
|
...(result === null || result === undefined ? {} : { result }),
|
|
15844
|
+
...(resultSummary === undefined || resultSummary === null
|
|
15845
|
+
? {}
|
|
15846
|
+
: { resultSummary }),
|
|
15793
15847
|
},
|
|
15794
15848
|
];
|
|
15795
15849
|
}
|
|
@@ -25,6 +25,7 @@ export type PlayVisualNodeProgress = {
|
|
|
25
25
|
activeRows?: number;
|
|
26
26
|
waitingRows?: number;
|
|
27
27
|
completedRows?: number;
|
|
28
|
+
supersededRows?: number;
|
|
28
29
|
message?: string;
|
|
29
30
|
updatedAt?: number | null;
|
|
30
31
|
startedAt?: number | null;
|
|
@@ -129,6 +130,11 @@ export function normalizePlayVisualNodeProgressMap(
|
|
|
129
130
|
Number.isFinite(rawProgress.completedRows)
|
|
130
131
|
? rawProgress.completedRows
|
|
131
132
|
: undefined;
|
|
133
|
+
const supersededRows =
|
|
134
|
+
typeof rawProgress.supersededRows === 'number' &&
|
|
135
|
+
Number.isFinite(rawProgress.supersededRows)
|
|
136
|
+
? rawProgress.supersededRows
|
|
137
|
+
: undefined;
|
|
132
138
|
const updatedAt =
|
|
133
139
|
typeof rawProgress.updatedAt === 'number' &&
|
|
134
140
|
Number.isFinite(rawProgress.updatedAt)
|
|
@@ -165,6 +171,7 @@ export function normalizePlayVisualNodeProgressMap(
|
|
|
165
171
|
...(activeRows !== undefined ? { activeRows } : {}),
|
|
166
172
|
...(waitingRows !== undefined ? { waitingRows } : {}),
|
|
167
173
|
...(completedRows !== undefined ? { completedRows } : {}),
|
|
174
|
+
...(supersededRows !== undefined ? { supersededRows } : {}),
|
|
168
175
|
...(updatedAt !== undefined ? { updatedAt } : {}),
|
|
169
176
|
...(startedAt !== undefined ? { startedAt } : {}),
|
|
170
177
|
...(completedAt !== undefined ? { completedAt } : {}),
|
package/dist/cli/index.js
CHANGED
|
@@ -3068,7 +3068,7 @@ var SDK_RELEASE = {
|
|
|
3068
3068
|
// getters keep their established compatibility behavior.
|
|
3069
3069
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
3070
3070
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
3071
|
-
version: "0.3.
|
|
3071
|
+
version: "0.3.146",
|
|
3072
3072
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
3073
3073
|
packageCapabilities: {
|
|
3074
3074
|
updatePreferences: 1
|
|
@@ -5313,19 +5313,32 @@ function summarizeRunRowOutcomes(snapshot) {
|
|
|
5313
5313
|
let completedRows = 0;
|
|
5314
5314
|
let failedRows = 0;
|
|
5315
5315
|
let totalRows = 0;
|
|
5316
|
+
let supersededRows = 0;
|
|
5316
5317
|
for (const step of Object.values(snapshot.stepsById)) {
|
|
5317
5318
|
const progress = step.progress;
|
|
5318
5319
|
if (!progress) continue;
|
|
5319
5320
|
completedRows += Math.max(0, finiteNumber(progress.completed) ?? 0);
|
|
5320
5321
|
failedRows += Math.max(0, finiteNumber(progress.failed) ?? 0);
|
|
5322
|
+
supersededRows += Math.max(0, finiteNumber(progress.supersededRows) ?? 0);
|
|
5321
5323
|
const stepTotal = finiteNumber(progress.total);
|
|
5322
|
-
totalRows += stepTotal !== null && stepTotal >= 0 ? stepTotal : Math.max(0, finiteNumber(progress.completed) ?? 0) + Math.max(0, finiteNumber(progress.failed) ?? 0);
|
|
5323
|
-
}
|
|
5324
|
+
totalRows += stepTotal !== null && stepTotal >= 0 ? stepTotal : Math.max(0, finiteNumber(progress.completed) ?? 0) + Math.max(0, finiteNumber(progress.failed) ?? 0) + Math.max(0, finiteNumber(progress.supersededRows) ?? 0);
|
|
5325
|
+
}
|
|
5326
|
+
const resultSummary = isRecord5(snapshot.resultSummary) ? snapshot.resultSummary : null;
|
|
5327
|
+
const resultRowOutcomes = isRecord5(resultSummary?.rowOutcomes) ? resultSummary.rowOutcomes : null;
|
|
5328
|
+
const terminalCompletedRows = finiteNumber(resultRowOutcomes?.completedRows);
|
|
5329
|
+
const terminalFailedRows = finiteNumber(resultRowOutcomes?.failedRows);
|
|
5330
|
+
const terminalTotalRows = finiteNumber(resultRowOutcomes?.totalRows);
|
|
5331
|
+
const terminalSupersededRows = finiteNumber(
|
|
5332
|
+
resultRowOutcomes?.supersededRows
|
|
5333
|
+
);
|
|
5334
|
+
const settledCompletedRows = terminalCompletedRows ?? completedRows;
|
|
5335
|
+
const settledFailedRows = terminalFailedRows ?? failedRows;
|
|
5324
5336
|
return {
|
|
5325
|
-
completedRows,
|
|
5326
|
-
failedRows,
|
|
5327
|
-
totalRows,
|
|
5328
|
-
hasRowFailures:
|
|
5337
|
+
completedRows: settledCompletedRows,
|
|
5338
|
+
failedRows: settledFailedRows,
|
|
5339
|
+
totalRows: terminalTotalRows ?? totalRows,
|
|
5340
|
+
hasRowFailures: settledFailedRows > 0,
|
|
5341
|
+
...(terminalSupersededRows ?? supersededRows) > 0 ? { supersededRows: terminalSupersededRows ?? supersededRows } : {}
|
|
5329
5342
|
};
|
|
5330
5343
|
}
|
|
5331
5344
|
function createEmptyPlayRunLedgerSnapshot(input2) {
|
|
@@ -5483,6 +5496,7 @@ function normalizeStepProgress(value) {
|
|
|
5483
5496
|
...optionalFiniteNumber(value.activeRows) !== void 0 ? { activeRows: optionalFiniteNumber(value.activeRows) } : {},
|
|
5484
5497
|
...optionalFiniteNumber(value.waitingRows) !== void 0 ? { waitingRows: optionalFiniteNumber(value.waitingRows) } : {},
|
|
5485
5498
|
...optionalFiniteNumber(value.completedRows) !== void 0 ? { completedRows: optionalFiniteNumber(value.completedRows) } : {},
|
|
5499
|
+
...optionalFiniteNumber(value.supersededRows) !== void 0 ? { supersededRows: optionalFiniteNumber(value.supersededRows) } : {},
|
|
5486
5500
|
...optionalString(value.message) ? { message: optionalString(value.message) } : {},
|
|
5487
5501
|
...optionalNullableString(value.artifactTableNamespace) !== void 0 ? {
|
|
5488
5502
|
artifactTableNamespace: optionalNullableString(
|
|
@@ -5734,6 +5748,7 @@ function buildSnapshotFromLedger(snapshot) {
|
|
|
5734
5748
|
activeRows: step.progress.activeRows,
|
|
5735
5749
|
waitingRows: step.progress.waitingRows,
|
|
5736
5750
|
completedRows: step.progress.completedRows,
|
|
5751
|
+
supersededRows: step.progress.supersededRows,
|
|
5737
5752
|
message: step.progress.message,
|
|
5738
5753
|
artifactTableNamespace: step.progress.artifactTableNamespace ?? step.artifactTableNamespace ?? null,
|
|
5739
5754
|
startedAt: step.startedAt ?? null,
|
|
@@ -5747,7 +5762,8 @@ function buildSnapshotFromLedger(snapshot) {
|
|
|
5747
5762
|
...step.progress?.nodeIo ? { nodeIo: step.progress.nodeIo } : {}
|
|
5748
5763
|
}));
|
|
5749
5764
|
const liveStatus = normalizePlayRunLiveStatus(snapshot.status);
|
|
5750
|
-
const
|
|
5765
|
+
const terminalRowOutcomes = isTerminalPlayRunLiveStatus(liveStatus) ? summarizeRunRowOutcomes(snapshot) : null;
|
|
5766
|
+
const rowOutcomes = terminalRowOutcomes && (Object.keys(snapshot.stepsById).length > 0 || terminalRowOutcomes.totalRows > 0 || (terminalRowOutcomes.supersededRows ?? 0) > 0) ? terminalRowOutcomes : null;
|
|
5751
5767
|
return {
|
|
5752
5768
|
runId: snapshot.runId,
|
|
5753
5769
|
status: liveStatus,
|
|
@@ -7435,7 +7451,7 @@ var DeeplineClient = class _DeeplineClient {
|
|
|
7435
7451
|
* guaranteed support for every model. Runtime AI SDK/Gateway errors remain
|
|
7436
7452
|
* authoritative for model-gated values.
|
|
7437
7453
|
*
|
|
7438
|
-
* @param model - Gateway model id such as `"openai/gpt-5.
|
|
7454
|
+
* @param model - Exact-case Gateway model id such as `"openai/gpt-5.6-luna"`
|
|
7439
7455
|
* @returns Model metadata, provider option shapes, and runnable examples
|
|
7440
7456
|
*/
|
|
7441
7457
|
async describeModel(model) {
|
|
@@ -23656,14 +23672,18 @@ function getProgressLinesFromLiveEvent(event) {
|
|
|
23656
23672
|
const rowOutcomes = readRowOutcomeSummary({
|
|
23657
23673
|
rowOutcomes: payload.rowOutcomes
|
|
23658
23674
|
});
|
|
23659
|
-
if (rowOutcomes
|
|
23675
|
+
if (rowOutcomes && (rowOutcomes.hasRowFailures || (rowOutcomes.supersededRows ?? 0) > 0)) {
|
|
23660
23676
|
const counts = formatProgressCounts({
|
|
23661
23677
|
completed: rowOutcomes.completedRows,
|
|
23662
23678
|
total: rowOutcomes.totalRows,
|
|
23663
23679
|
failed: rowOutcomes.failedRows
|
|
23664
23680
|
});
|
|
23665
|
-
|
|
23666
|
-
|
|
23681
|
+
const outcomeParts = [
|
|
23682
|
+
counts,
|
|
23683
|
+
...rowOutcomes && (rowOutcomes.supersededRows ?? 0) > 0 ? [formatSupersededRowsNotice(rowOutcomes.supersededRows)] : []
|
|
23684
|
+
].filter((part) => Boolean(part));
|
|
23685
|
+
if (outcomeParts.length > 0) {
|
|
23686
|
+
lines.push(`progress run outcomes: ${outcomeParts.join(", ")}`);
|
|
23667
23687
|
}
|
|
23668
23688
|
}
|
|
23669
23689
|
return lines;
|
|
@@ -24542,9 +24562,13 @@ function buildRunWarnings(status, rowsInfo) {
|
|
|
24542
24562
|
const rowOutcomeWarnings = rowOutcomes?.hasRowFailures ? [
|
|
24543
24563
|
`${status.status === "completed" ? "Run completed" : "Run ended"} with ${formatInteger(rowOutcomes.failedRows)} failed row(s); inspect the persisted failed rows before treating the output as complete.`
|
|
24544
24564
|
] : [];
|
|
24565
|
+
const supersededRowNotices = (rowOutcomes?.supersededRows ?? 0) > 0 ? [
|
|
24566
|
+
`Latest-write-wins: ${formatSupersededRowsNotice(rowOutcomes.supersededRows ?? 0)}; the newer write still owns that Runtime Sheet row.`
|
|
24567
|
+
] : [];
|
|
24545
24568
|
if (status.status === "completed" && rowsInfo?.totalRows === 0) {
|
|
24546
24569
|
return [
|
|
24547
24570
|
...rowOutcomeWarnings,
|
|
24571
|
+
...supersededRowNotices,
|
|
24548
24572
|
"Run completed with 0 output rows.",
|
|
24549
24573
|
...outputWarnings
|
|
24550
24574
|
];
|
|
@@ -24552,11 +24576,12 @@ function buildRunWarnings(status, rowsInfo) {
|
|
|
24552
24576
|
if (rowsInfo && !rowsInfo.complete) {
|
|
24553
24577
|
return [
|
|
24554
24578
|
...rowOutcomeWarnings,
|
|
24579
|
+
...supersededRowNotices,
|
|
24555
24580
|
`Run output is partial: showing ${rowsInfo.rows.length} preview row(s) of ${rowsInfo.totalRows}.`,
|
|
24556
24581
|
...outputWarnings
|
|
24557
24582
|
];
|
|
24558
24583
|
}
|
|
24559
|
-
return [...rowOutcomeWarnings, ...outputWarnings];
|
|
24584
|
+
return [...rowOutcomeWarnings, ...supersededRowNotices, ...outputWarnings];
|
|
24560
24585
|
}
|
|
24561
24586
|
function buildRunNextCommands(status) {
|
|
24562
24587
|
const runId = status.runId?.trim();
|
|
@@ -24592,6 +24617,9 @@ function getNumericField(value, key) {
|
|
|
24592
24617
|
const field = getRecordField(value, key);
|
|
24593
24618
|
return typeof field === "number" && Number.isFinite(field) ? field : null;
|
|
24594
24619
|
}
|
|
24620
|
+
function formatSupersededRowsNotice(count) {
|
|
24621
|
+
return `${formatInteger(count)} row${count === 1 ? "" : "s"} skipped because a newer Runtime Sheet write took precedence`;
|
|
24622
|
+
}
|
|
24595
24623
|
function readRowOutcomeSummary(value) {
|
|
24596
24624
|
const record3 = getRecordField(value, "rowOutcomes");
|
|
24597
24625
|
if (!record3) return null;
|
|
@@ -24602,11 +24630,13 @@ function readRowOutcomeSummary(value) {
|
|
|
24602
24630
|
return null;
|
|
24603
24631
|
}
|
|
24604
24632
|
const explicitHasFailures = getRecordField(record3, "hasRowFailures");
|
|
24633
|
+
const supersededRows = getNumericField(record3, "supersededRows");
|
|
24605
24634
|
return {
|
|
24606
24635
|
completedRows,
|
|
24607
24636
|
failedRows,
|
|
24608
24637
|
totalRows,
|
|
24609
|
-
hasRowFailures: typeof explicitHasFailures === "boolean" ? explicitHasFailures : failedRows > 0
|
|
24638
|
+
hasRowFailures: typeof explicitHasFailures === "boolean" ? explicitHasFailures : failedRows > 0,
|
|
24639
|
+
...supersededRows !== null ? { supersededRows: Math.max(0, supersededRows) } : {}
|
|
24610
24640
|
};
|
|
24611
24641
|
}
|
|
24612
24642
|
function getStringField(value, key) {
|
|
@@ -24849,12 +24879,16 @@ function normalizeProgressForEnvelope(status, rowsInfo) {
|
|
|
24849
24879
|
const total = rowOutcomes?.totalRows ?? getNumericField(progress, "totalRows") ?? getNumericField(progress, "total") ?? rowsInfo?.totalRows ?? null;
|
|
24850
24880
|
const failed = rowOutcomes?.failedRows ?? getNumericField(progress, "failed") ?? getNumericField(progress, "failedRows") ?? null;
|
|
24851
24881
|
const completed = rowOutcomes?.completedRows ?? getNumericField(progress, "completed") ?? getNumericField(progress, "completedRows") ?? (status.status === "completed" ? total : null);
|
|
24852
|
-
const
|
|
24882
|
+
const supersededRows = rowOutcomes?.supersededRows ?? getNumericField(progress, "supersededRows");
|
|
24883
|
+
const supersededOffset = supersededRows ?? 0;
|
|
24884
|
+
const progressPending = getNumericField(progress, "pending");
|
|
24885
|
+
const pending = (progressPending !== null ? Math.max(0, progressPending - supersededOffset) : null) ?? (typeof total === "number" && typeof completed === "number" && typeof failed === "number" ? Math.max(0, total - completed - failed - supersededOffset) : null);
|
|
24853
24886
|
return {
|
|
24854
24887
|
total,
|
|
24855
24888
|
totalRows: total,
|
|
24856
24889
|
completed,
|
|
24857
24890
|
completedRows: completed,
|
|
24891
|
+
...supersededRows !== null ? { supersededRows: Math.max(0, supersededRows) } : {},
|
|
24858
24892
|
pending,
|
|
24859
24893
|
failed,
|
|
24860
24894
|
executed: getNumericField(progress, "executed"),
|
|
@@ -24985,6 +25019,9 @@ function compactPlayStatus(status) {
|
|
|
24985
25019
|
) : [],
|
|
24986
25020
|
...rowOutcomes2.hasRowFailures ? [
|
|
24987
25021
|
`${status.status === "completed" ? "Run completed" : "Run ended"} with ${formatInteger(rowOutcomes2.failedRows)} failed row(s); inspect the persisted failed rows before treating the output as complete.`
|
|
25022
|
+
] : [],
|
|
25023
|
+
...(rowOutcomes2.supersededRows ?? 0) > 0 ? [
|
|
25024
|
+
`Latest-write-wins: ${formatSupersededRowsNotice(rowOutcomes2.supersededRows ?? 0)}; the newer write still owns that Runtime Sheet row.`
|
|
24988
25025
|
] : []
|
|
24989
25026
|
]
|
|
24990
25027
|
} : packaged;
|
|
@@ -47939,7 +47976,7 @@ Examples:
|
|
|
47939
47976
|
deepline tools describe hunter_email_verifier --schema-only
|
|
47940
47977
|
deepline tools describe hunter_email_verifier --examples-only
|
|
47941
47978
|
deepline tools describe hunter_email_verifier --json
|
|
47942
|
-
deepline tools describe deeplineagent --model openai/gpt-5.
|
|
47979
|
+
deepline tools describe deeplineagent --model openai/gpt-5.6-luna --json
|
|
47943
47980
|
deepline tools describe ai_inference --estimate-payload @payload.json --json
|
|
47944
47981
|
deepline tools describe ai_evaluate --estimate-payload @payload.json --json
|
|
47945
47982
|
deepline tools execute hunter_email_verifier --input '{"email":"a@b.com"}'
|
|
@@ -47985,9 +48022,11 @@ Notes:
|
|
|
47985
48022
|
waterfalls, row maps, checkpoints, and retries.
|
|
47986
48023
|
Calling a provider-backed tool can spend Deepline credits. Use --json for the
|
|
47987
48024
|
stable result payload plus output preview and debugging helpers.
|
|
48025
|
+
--timeout sets this CLI request's HTTP deadline; it does not cancel provider work.
|
|
47988
48026
|
|
|
47989
48027
|
Examples:
|
|
47990
48028
|
deepline tools execute hunter_email_verifier --input '{"email":"a@b.com"}'
|
|
48029
|
+
deepline tools execute bounceban_verify_bulk --input @batch.json --timeout 10m --json
|
|
47991
48030
|
deepline tools execute hunter_email_verifier -p email=a@b.com
|
|
47992
48031
|
deepline tools execute test_rate_limit --input '{"key":"smoke"}' --timeout 90s --json
|
|
47993
48032
|
deepline tools execute test_rate_limit --input '{"key":"smoke"}' --json | jq '.status'
|
|
@@ -48012,7 +48051,7 @@ Examples:
|
|
|
48012
48051
|
"Merge a JSON object or @file path into the tool params"
|
|
48013
48052
|
).option(
|
|
48014
48053
|
"--timeout <duration>",
|
|
48015
|
-
"
|
|
48054
|
+
"Client-side HTTP deadline (for example 90s, 5m, or 1h; bare numbers are seconds); it does not cancel provider work"
|
|
48016
48055
|
).option(
|
|
48017
48056
|
"--output-format <format>",
|
|
48018
48057
|
"Output format: auto, csv, csv_file, json, or json_file"
|
|
@@ -49637,6 +49676,7 @@ async function executeTool(args) {
|
|
|
49637
49676
|
return 2;
|
|
49638
49677
|
}
|
|
49639
49678
|
const rawResponse = await client2.executeTool(parsed.toolId, parsed.params, {
|
|
49679
|
+
...parsed.timeoutMs !== void 0 ? { timeout: parsed.timeoutMs } : {},
|
|
49640
49680
|
responseIntent: parsed.outPath || parsed.outputFormat === "csv" || parsed.outputFormat === "csv_file" ? "row_artifact" : "raw",
|
|
49641
49681
|
...parsed.timeoutMs !== void 0 ? { timeout: parsed.timeoutMs } : {}
|
|
49642
49682
|
});
|
package/dist/cli/index.mjs
CHANGED
|
@@ -3063,7 +3063,7 @@ var SDK_RELEASE = {
|
|
|
3063
3063
|
// getters keep their established compatibility behavior.
|
|
3064
3064
|
// 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
|
|
3065
3065
|
// 0.3.90 is the first deliberately versioned SDK release for API v3.
|
|
3066
|
-
version: "0.3.
|
|
3066
|
+
version: "0.3.146",
|
|
3067
3067
|
updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
|
|
3068
3068
|
packageCapabilities: {
|
|
3069
3069
|
updatePreferences: 1
|
|
@@ -5308,19 +5308,32 @@ function summarizeRunRowOutcomes(snapshot) {
|
|
|
5308
5308
|
let completedRows = 0;
|
|
5309
5309
|
let failedRows = 0;
|
|
5310
5310
|
let totalRows = 0;
|
|
5311
|
+
let supersededRows = 0;
|
|
5311
5312
|
for (const step of Object.values(snapshot.stepsById)) {
|
|
5312
5313
|
const progress = step.progress;
|
|
5313
5314
|
if (!progress) continue;
|
|
5314
5315
|
completedRows += Math.max(0, finiteNumber(progress.completed) ?? 0);
|
|
5315
5316
|
failedRows += Math.max(0, finiteNumber(progress.failed) ?? 0);
|
|
5317
|
+
supersededRows += Math.max(0, finiteNumber(progress.supersededRows) ?? 0);
|
|
5316
5318
|
const stepTotal = finiteNumber(progress.total);
|
|
5317
|
-
totalRows += stepTotal !== null && stepTotal >= 0 ? stepTotal : Math.max(0, finiteNumber(progress.completed) ?? 0) + Math.max(0, finiteNumber(progress.failed) ?? 0);
|
|
5318
|
-
}
|
|
5319
|
+
totalRows += stepTotal !== null && stepTotal >= 0 ? stepTotal : Math.max(0, finiteNumber(progress.completed) ?? 0) + Math.max(0, finiteNumber(progress.failed) ?? 0) + Math.max(0, finiteNumber(progress.supersededRows) ?? 0);
|
|
5320
|
+
}
|
|
5321
|
+
const resultSummary = isRecord5(snapshot.resultSummary) ? snapshot.resultSummary : null;
|
|
5322
|
+
const resultRowOutcomes = isRecord5(resultSummary?.rowOutcomes) ? resultSummary.rowOutcomes : null;
|
|
5323
|
+
const terminalCompletedRows = finiteNumber(resultRowOutcomes?.completedRows);
|
|
5324
|
+
const terminalFailedRows = finiteNumber(resultRowOutcomes?.failedRows);
|
|
5325
|
+
const terminalTotalRows = finiteNumber(resultRowOutcomes?.totalRows);
|
|
5326
|
+
const terminalSupersededRows = finiteNumber(
|
|
5327
|
+
resultRowOutcomes?.supersededRows
|
|
5328
|
+
);
|
|
5329
|
+
const settledCompletedRows = terminalCompletedRows ?? completedRows;
|
|
5330
|
+
const settledFailedRows = terminalFailedRows ?? failedRows;
|
|
5319
5331
|
return {
|
|
5320
|
-
completedRows,
|
|
5321
|
-
failedRows,
|
|
5322
|
-
totalRows,
|
|
5323
|
-
hasRowFailures:
|
|
5332
|
+
completedRows: settledCompletedRows,
|
|
5333
|
+
failedRows: settledFailedRows,
|
|
5334
|
+
totalRows: terminalTotalRows ?? totalRows,
|
|
5335
|
+
hasRowFailures: settledFailedRows > 0,
|
|
5336
|
+
...(terminalSupersededRows ?? supersededRows) > 0 ? { supersededRows: terminalSupersededRows ?? supersededRows } : {}
|
|
5324
5337
|
};
|
|
5325
5338
|
}
|
|
5326
5339
|
function createEmptyPlayRunLedgerSnapshot(input2) {
|
|
@@ -5478,6 +5491,7 @@ function normalizeStepProgress(value) {
|
|
|
5478
5491
|
...optionalFiniteNumber(value.activeRows) !== void 0 ? { activeRows: optionalFiniteNumber(value.activeRows) } : {},
|
|
5479
5492
|
...optionalFiniteNumber(value.waitingRows) !== void 0 ? { waitingRows: optionalFiniteNumber(value.waitingRows) } : {},
|
|
5480
5493
|
...optionalFiniteNumber(value.completedRows) !== void 0 ? { completedRows: optionalFiniteNumber(value.completedRows) } : {},
|
|
5494
|
+
...optionalFiniteNumber(value.supersededRows) !== void 0 ? { supersededRows: optionalFiniteNumber(value.supersededRows) } : {},
|
|
5481
5495
|
...optionalString(value.message) ? { message: optionalString(value.message) } : {},
|
|
5482
5496
|
...optionalNullableString(value.artifactTableNamespace) !== void 0 ? {
|
|
5483
5497
|
artifactTableNamespace: optionalNullableString(
|
|
@@ -5729,6 +5743,7 @@ function buildSnapshotFromLedger(snapshot) {
|
|
|
5729
5743
|
activeRows: step.progress.activeRows,
|
|
5730
5744
|
waitingRows: step.progress.waitingRows,
|
|
5731
5745
|
completedRows: step.progress.completedRows,
|
|
5746
|
+
supersededRows: step.progress.supersededRows,
|
|
5732
5747
|
message: step.progress.message,
|
|
5733
5748
|
artifactTableNamespace: step.progress.artifactTableNamespace ?? step.artifactTableNamespace ?? null,
|
|
5734
5749
|
startedAt: step.startedAt ?? null,
|
|
@@ -5742,7 +5757,8 @@ function buildSnapshotFromLedger(snapshot) {
|
|
|
5742
5757
|
...step.progress?.nodeIo ? { nodeIo: step.progress.nodeIo } : {}
|
|
5743
5758
|
}));
|
|
5744
5759
|
const liveStatus = normalizePlayRunLiveStatus(snapshot.status);
|
|
5745
|
-
const
|
|
5760
|
+
const terminalRowOutcomes = isTerminalPlayRunLiveStatus(liveStatus) ? summarizeRunRowOutcomes(snapshot) : null;
|
|
5761
|
+
const rowOutcomes = terminalRowOutcomes && (Object.keys(snapshot.stepsById).length > 0 || terminalRowOutcomes.totalRows > 0 || (terminalRowOutcomes.supersededRows ?? 0) > 0) ? terminalRowOutcomes : null;
|
|
5746
5762
|
return {
|
|
5747
5763
|
runId: snapshot.runId,
|
|
5748
5764
|
status: liveStatus,
|
|
@@ -7430,7 +7446,7 @@ var DeeplineClient = class _DeeplineClient {
|
|
|
7430
7446
|
* guaranteed support for every model. Runtime AI SDK/Gateway errors remain
|
|
7431
7447
|
* authoritative for model-gated values.
|
|
7432
7448
|
*
|
|
7433
|
-
* @param model - Gateway model id such as `"openai/gpt-5.
|
|
7449
|
+
* @param model - Exact-case Gateway model id such as `"openai/gpt-5.6-luna"`
|
|
7434
7450
|
* @returns Model metadata, provider option shapes, and runnable examples
|
|
7435
7451
|
*/
|
|
7436
7452
|
async describeModel(model) {
|
|
@@ -23728,14 +23744,18 @@ function getProgressLinesFromLiveEvent(event) {
|
|
|
23728
23744
|
const rowOutcomes = readRowOutcomeSummary({
|
|
23729
23745
|
rowOutcomes: payload.rowOutcomes
|
|
23730
23746
|
});
|
|
23731
|
-
if (rowOutcomes
|
|
23747
|
+
if (rowOutcomes && (rowOutcomes.hasRowFailures || (rowOutcomes.supersededRows ?? 0) > 0)) {
|
|
23732
23748
|
const counts = formatProgressCounts({
|
|
23733
23749
|
completed: rowOutcomes.completedRows,
|
|
23734
23750
|
total: rowOutcomes.totalRows,
|
|
23735
23751
|
failed: rowOutcomes.failedRows
|
|
23736
23752
|
});
|
|
23737
|
-
|
|
23738
|
-
|
|
23753
|
+
const outcomeParts = [
|
|
23754
|
+
counts,
|
|
23755
|
+
...rowOutcomes && (rowOutcomes.supersededRows ?? 0) > 0 ? [formatSupersededRowsNotice(rowOutcomes.supersededRows)] : []
|
|
23756
|
+
].filter((part) => Boolean(part));
|
|
23757
|
+
if (outcomeParts.length > 0) {
|
|
23758
|
+
lines.push(`progress run outcomes: ${outcomeParts.join(", ")}`);
|
|
23739
23759
|
}
|
|
23740
23760
|
}
|
|
23741
23761
|
return lines;
|
|
@@ -24614,9 +24634,13 @@ function buildRunWarnings(status, rowsInfo) {
|
|
|
24614
24634
|
const rowOutcomeWarnings = rowOutcomes?.hasRowFailures ? [
|
|
24615
24635
|
`${status.status === "completed" ? "Run completed" : "Run ended"} with ${formatInteger(rowOutcomes.failedRows)} failed row(s); inspect the persisted failed rows before treating the output as complete.`
|
|
24616
24636
|
] : [];
|
|
24637
|
+
const supersededRowNotices = (rowOutcomes?.supersededRows ?? 0) > 0 ? [
|
|
24638
|
+
`Latest-write-wins: ${formatSupersededRowsNotice(rowOutcomes.supersededRows ?? 0)}; the newer write still owns that Runtime Sheet row.`
|
|
24639
|
+
] : [];
|
|
24617
24640
|
if (status.status === "completed" && rowsInfo?.totalRows === 0) {
|
|
24618
24641
|
return [
|
|
24619
24642
|
...rowOutcomeWarnings,
|
|
24643
|
+
...supersededRowNotices,
|
|
24620
24644
|
"Run completed with 0 output rows.",
|
|
24621
24645
|
...outputWarnings
|
|
24622
24646
|
];
|
|
@@ -24624,11 +24648,12 @@ function buildRunWarnings(status, rowsInfo) {
|
|
|
24624
24648
|
if (rowsInfo && !rowsInfo.complete) {
|
|
24625
24649
|
return [
|
|
24626
24650
|
...rowOutcomeWarnings,
|
|
24651
|
+
...supersededRowNotices,
|
|
24627
24652
|
`Run output is partial: showing ${rowsInfo.rows.length} preview row(s) of ${rowsInfo.totalRows}.`,
|
|
24628
24653
|
...outputWarnings
|
|
24629
24654
|
];
|
|
24630
24655
|
}
|
|
24631
|
-
return [...rowOutcomeWarnings, ...outputWarnings];
|
|
24656
|
+
return [...rowOutcomeWarnings, ...supersededRowNotices, ...outputWarnings];
|
|
24632
24657
|
}
|
|
24633
24658
|
function buildRunNextCommands(status) {
|
|
24634
24659
|
const runId = status.runId?.trim();
|
|
@@ -24664,6 +24689,9 @@ function getNumericField(value, key) {
|
|
|
24664
24689
|
const field = getRecordField(value, key);
|
|
24665
24690
|
return typeof field === "number" && Number.isFinite(field) ? field : null;
|
|
24666
24691
|
}
|
|
24692
|
+
function formatSupersededRowsNotice(count) {
|
|
24693
|
+
return `${formatInteger(count)} row${count === 1 ? "" : "s"} skipped because a newer Runtime Sheet write took precedence`;
|
|
24694
|
+
}
|
|
24667
24695
|
function readRowOutcomeSummary(value) {
|
|
24668
24696
|
const record3 = getRecordField(value, "rowOutcomes");
|
|
24669
24697
|
if (!record3) return null;
|
|
@@ -24674,11 +24702,13 @@ function readRowOutcomeSummary(value) {
|
|
|
24674
24702
|
return null;
|
|
24675
24703
|
}
|
|
24676
24704
|
const explicitHasFailures = getRecordField(record3, "hasRowFailures");
|
|
24705
|
+
const supersededRows = getNumericField(record3, "supersededRows");
|
|
24677
24706
|
return {
|
|
24678
24707
|
completedRows,
|
|
24679
24708
|
failedRows,
|
|
24680
24709
|
totalRows,
|
|
24681
|
-
hasRowFailures: typeof explicitHasFailures === "boolean" ? explicitHasFailures : failedRows > 0
|
|
24710
|
+
hasRowFailures: typeof explicitHasFailures === "boolean" ? explicitHasFailures : failedRows > 0,
|
|
24711
|
+
...supersededRows !== null ? { supersededRows: Math.max(0, supersededRows) } : {}
|
|
24682
24712
|
};
|
|
24683
24713
|
}
|
|
24684
24714
|
function getStringField(value, key) {
|
|
@@ -24921,12 +24951,16 @@ function normalizeProgressForEnvelope(status, rowsInfo) {
|
|
|
24921
24951
|
const total = rowOutcomes?.totalRows ?? getNumericField(progress, "totalRows") ?? getNumericField(progress, "total") ?? rowsInfo?.totalRows ?? null;
|
|
24922
24952
|
const failed = rowOutcomes?.failedRows ?? getNumericField(progress, "failed") ?? getNumericField(progress, "failedRows") ?? null;
|
|
24923
24953
|
const completed = rowOutcomes?.completedRows ?? getNumericField(progress, "completed") ?? getNumericField(progress, "completedRows") ?? (status.status === "completed" ? total : null);
|
|
24924
|
-
const
|
|
24954
|
+
const supersededRows = rowOutcomes?.supersededRows ?? getNumericField(progress, "supersededRows");
|
|
24955
|
+
const supersededOffset = supersededRows ?? 0;
|
|
24956
|
+
const progressPending = getNumericField(progress, "pending");
|
|
24957
|
+
const pending = (progressPending !== null ? Math.max(0, progressPending - supersededOffset) : null) ?? (typeof total === "number" && typeof completed === "number" && typeof failed === "number" ? Math.max(0, total - completed - failed - supersededOffset) : null);
|
|
24925
24958
|
return {
|
|
24926
24959
|
total,
|
|
24927
24960
|
totalRows: total,
|
|
24928
24961
|
completed,
|
|
24929
24962
|
completedRows: completed,
|
|
24963
|
+
...supersededRows !== null ? { supersededRows: Math.max(0, supersededRows) } : {},
|
|
24930
24964
|
pending,
|
|
24931
24965
|
failed,
|
|
24932
24966
|
executed: getNumericField(progress, "executed"),
|
|
@@ -25057,6 +25091,9 @@ function compactPlayStatus(status) {
|
|
|
25057
25091
|
) : [],
|
|
25058
25092
|
...rowOutcomes2.hasRowFailures ? [
|
|
25059
25093
|
`${status.status === "completed" ? "Run completed" : "Run ended"} with ${formatInteger(rowOutcomes2.failedRows)} failed row(s); inspect the persisted failed rows before treating the output as complete.`
|
|
25094
|
+
] : [],
|
|
25095
|
+
...(rowOutcomes2.supersededRows ?? 0) > 0 ? [
|
|
25096
|
+
`Latest-write-wins: ${formatSupersededRowsNotice(rowOutcomes2.supersededRows ?? 0)}; the newer write still owns that Runtime Sheet row.`
|
|
25060
25097
|
] : []
|
|
25061
25098
|
]
|
|
25062
25099
|
} : packaged;
|
|
@@ -48081,7 +48118,7 @@ Examples:
|
|
|
48081
48118
|
deepline tools describe hunter_email_verifier --schema-only
|
|
48082
48119
|
deepline tools describe hunter_email_verifier --examples-only
|
|
48083
48120
|
deepline tools describe hunter_email_verifier --json
|
|
48084
|
-
deepline tools describe deeplineagent --model openai/gpt-5.
|
|
48121
|
+
deepline tools describe deeplineagent --model openai/gpt-5.6-luna --json
|
|
48085
48122
|
deepline tools describe ai_inference --estimate-payload @payload.json --json
|
|
48086
48123
|
deepline tools describe ai_evaluate --estimate-payload @payload.json --json
|
|
48087
48124
|
deepline tools execute hunter_email_verifier --input '{"email":"a@b.com"}'
|
|
@@ -48127,9 +48164,11 @@ Notes:
|
|
|
48127
48164
|
waterfalls, row maps, checkpoints, and retries.
|
|
48128
48165
|
Calling a provider-backed tool can spend Deepline credits. Use --json for the
|
|
48129
48166
|
stable result payload plus output preview and debugging helpers.
|
|
48167
|
+
--timeout sets this CLI request's HTTP deadline; it does not cancel provider work.
|
|
48130
48168
|
|
|
48131
48169
|
Examples:
|
|
48132
48170
|
deepline tools execute hunter_email_verifier --input '{"email":"a@b.com"}'
|
|
48171
|
+
deepline tools execute bounceban_verify_bulk --input @batch.json --timeout 10m --json
|
|
48133
48172
|
deepline tools execute hunter_email_verifier -p email=a@b.com
|
|
48134
48173
|
deepline tools execute test_rate_limit --input '{"key":"smoke"}' --timeout 90s --json
|
|
48135
48174
|
deepline tools execute test_rate_limit --input '{"key":"smoke"}' --json | jq '.status'
|
|
@@ -48154,7 +48193,7 @@ Examples:
|
|
|
48154
48193
|
"Merge a JSON object or @file path into the tool params"
|
|
48155
48194
|
).option(
|
|
48156
48195
|
"--timeout <duration>",
|
|
48157
|
-
"
|
|
48196
|
+
"Client-side HTTP deadline (for example 90s, 5m, or 1h; bare numbers are seconds); it does not cancel provider work"
|
|
48158
48197
|
).option(
|
|
48159
48198
|
"--output-format <format>",
|
|
48160
48199
|
"Output format: auto, csv, csv_file, json, or json_file"
|
|
@@ -49779,6 +49818,7 @@ async function executeTool(args) {
|
|
|
49779
49818
|
return 2;
|
|
49780
49819
|
}
|
|
49781
49820
|
const rawResponse = await client2.executeTool(parsed.toolId, parsed.params, {
|
|
49821
|
+
...parsed.timeoutMs !== void 0 ? { timeout: parsed.timeoutMs } : {},
|
|
49782
49822
|
responseIntent: parsed.outPath || parsed.outputFormat === "csv" || parsed.outputFormat === "csv_file" ? "row_artifact" : "raw",
|
|
49783
49823
|
...parsed.timeoutMs !== void 0 ? { timeout: parsed.timeoutMs } : {}
|
|
49784
49824
|
});
|