deepline 0.1.117 → 0.1.119
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/cli/index.js +61 -6
- package/dist/cli/index.mjs +61 -6
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/repo/sdk/src/release.ts +2 -2
- package/dist/viewer/viewer.js +25 -2
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -403,10 +403,10 @@ var SDK_RELEASE = {
|
|
|
403
403
|
// skill on the sdk sync surface, and the people-search-to-email prebuilt.
|
|
404
404
|
// 0.1.108 ships explicit dataset column/tool recompute policy and removes
|
|
405
405
|
// the SDK enrich generator's one-second stale policy.
|
|
406
|
-
version: "0.1.
|
|
406
|
+
version: "0.1.119",
|
|
407
407
|
apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
|
|
408
408
|
supportPolicy: {
|
|
409
|
-
latest: "0.1.
|
|
409
|
+
latest: "0.1.119",
|
|
410
410
|
minimumSupported: "0.1.53",
|
|
411
411
|
deprecatedBelow: "0.1.53",
|
|
412
412
|
commandMinimumSupported: [
|
|
@@ -4248,10 +4248,33 @@ function printDeeplineLogo() {
|
|
|
4248
4248
|
}
|
|
4249
4249
|
console.log("DEEPLINE");
|
|
4250
4250
|
}
|
|
4251
|
-
function
|
|
4251
|
+
async function claimInstallBonus(baseUrl, apiKey) {
|
|
4252
|
+
try {
|
|
4253
|
+
const { status, data } = await httpJson(
|
|
4254
|
+
"POST",
|
|
4255
|
+
`${baseUrl}/api/v2/billing/claim-install-bonus`,
|
|
4256
|
+
apiKey,
|
|
4257
|
+
{}
|
|
4258
|
+
);
|
|
4259
|
+
if (status !== 200) {
|
|
4260
|
+
return;
|
|
4261
|
+
}
|
|
4262
|
+
const granted = Number(data.credits_granted ?? 0);
|
|
4263
|
+
const alreadyGranted = data.already_granted === true;
|
|
4264
|
+
if (granted > 0) {
|
|
4265
|
+
console.log(`
|
|
4266
|
+
\u2022 +${granted} free credits added to your account!`);
|
|
4267
|
+
} else if (alreadyGranted) {
|
|
4268
|
+
console.log("\n \u2022 Free credits already applied to your account.");
|
|
4269
|
+
}
|
|
4270
|
+
} catch {
|
|
4271
|
+
}
|
|
4272
|
+
}
|
|
4273
|
+
async function printClaimSuccessBanner(baseUrl, apiKey, statusData) {
|
|
4252
4274
|
console.log("");
|
|
4253
4275
|
printDeeplineLogo();
|
|
4254
4276
|
console.log("\u2713 All set! Your CLI is connected.");
|
|
4277
|
+
await claimInstallBonus(baseUrl, apiKey);
|
|
4255
4278
|
if (statusData.org_name) {
|
|
4256
4279
|
console.log(` \u2022 Signed in with organization: ${statusData.org_name}`);
|
|
4257
4280
|
}
|
|
@@ -4343,7 +4366,7 @@ async function handleRegister(args) {
|
|
|
4343
4366
|
baseUrl
|
|
4344
4367
|
);
|
|
4345
4368
|
clearPendingClaimToken(baseUrl);
|
|
4346
|
-
printClaimSuccessBanner(statusData);
|
|
4369
|
+
await printClaimSuccessBanner(baseUrl, apiKey, statusData);
|
|
4347
4370
|
return EXIT_OK;
|
|
4348
4371
|
}
|
|
4349
4372
|
}
|
|
@@ -4410,7 +4433,7 @@ async function handleWait(args) {
|
|
|
4410
4433
|
baseUrl
|
|
4411
4434
|
);
|
|
4412
4435
|
clearPendingClaimToken(baseUrl);
|
|
4413
|
-
printClaimSuccessBanner(data);
|
|
4436
|
+
await printClaimSuccessBanner(baseUrl, apiKey, data);
|
|
4414
4437
|
return EXIT_OK;
|
|
4415
4438
|
}
|
|
4416
4439
|
}
|
|
@@ -12608,6 +12631,34 @@ function readFirstDatasetActions(packaged) {
|
|
|
12608
12631
|
}
|
|
12609
12632
|
return {};
|
|
12610
12633
|
}
|
|
12634
|
+
function formatInlinePackageValue(value) {
|
|
12635
|
+
const compacted = compactReturnValue(value);
|
|
12636
|
+
const json = JSON.stringify(compacted);
|
|
12637
|
+
return clampJsonPreviewText(json ?? String(compacted), 500);
|
|
12638
|
+
}
|
|
12639
|
+
function formatPackageValueOutputLines(packaged) {
|
|
12640
|
+
const outputs = packaged.outputs && typeof packaged.outputs === "object" && !Array.isArray(packaged.outputs) ? packaged.outputs : null;
|
|
12641
|
+
if (!outputs) return [];
|
|
12642
|
+
const valueOutputs = Object.entries(outputs).filter(([, output2]) => {
|
|
12643
|
+
return output2 && typeof output2 === "object" && !Array.isArray(output2) && output2.kind === "value" && Object.prototype.hasOwnProperty.call(output2, "value");
|
|
12644
|
+
});
|
|
12645
|
+
if (valueOutputs.length === 0) return [];
|
|
12646
|
+
const lines = [" outputs:"];
|
|
12647
|
+
for (const [name, output2] of valueOutputs.slice(0, 8)) {
|
|
12648
|
+
const value = output2.value;
|
|
12649
|
+
const compacted = compactReturnValue(value);
|
|
12650
|
+
if (compacted && typeof compacted === "object") {
|
|
12651
|
+
lines.push(` ${name}:`);
|
|
12652
|
+
lines.push(...formatJsonPreview(compacted).map((line) => ` ${line}`));
|
|
12653
|
+
} else {
|
|
12654
|
+
lines.push(` ${name}: ${formatInlinePackageValue(value)}`);
|
|
12655
|
+
}
|
|
12656
|
+
}
|
|
12657
|
+
if (valueOutputs.length > 8) {
|
|
12658
|
+
lines.push(` ... ${valueOutputs.length - 8} more output(s)`);
|
|
12659
|
+
}
|
|
12660
|
+
return lines;
|
|
12661
|
+
}
|
|
12611
12662
|
function buildRunPackageTextLines(packaged) {
|
|
12612
12663
|
const run = readRunPackageRun(packaged);
|
|
12613
12664
|
const runId = typeof run.id === "string" ? run.id : "unknown";
|
|
@@ -12632,6 +12683,7 @@ function buildRunPackageTextLines(packaged) {
|
|
|
12632
12683
|
if (playName) {
|
|
12633
12684
|
lines.push(` play: ${playName}`);
|
|
12634
12685
|
}
|
|
12686
|
+
lines.push(...formatPackageValueOutputLines(packaged));
|
|
12635
12687
|
const next = packaged.next && typeof packaged.next === "object" && !Array.isArray(packaged.next) ? packaged.next : {};
|
|
12636
12688
|
const billingCommand = actionToCommand(next.billing);
|
|
12637
12689
|
if (billingCommand) {
|
|
@@ -19808,7 +19860,10 @@ function startCallbackServer(input2) {
|
|
|
19808
19860
|
async function handleQuickstart(options) {
|
|
19809
19861
|
const jsonOutput = shouldEmitJson(options.json === true);
|
|
19810
19862
|
const baseUrl = autoDetectBaseUrl().replace(/\/$/, "");
|
|
19811
|
-
const
|
|
19863
|
+
const installerMode = String(process.env.DEEPLINE_INSTALLER_MODE ?? "").trim().toLowerCase() === "true";
|
|
19864
|
+
const interactive = Boolean(
|
|
19865
|
+
!installerMode && process.stdin.isTTY && process.stdout.isTTY
|
|
19866
|
+
);
|
|
19812
19867
|
let apiKey = resolveApiKeyForBaseUrl(baseUrl);
|
|
19813
19868
|
if (!apiKey) {
|
|
19814
19869
|
if (interactive) {
|
package/dist/cli/index.mjs
CHANGED
|
@@ -380,10 +380,10 @@ var SDK_RELEASE = {
|
|
|
380
380
|
// skill on the sdk sync surface, and the people-search-to-email prebuilt.
|
|
381
381
|
// 0.1.108 ships explicit dataset column/tool recompute policy and removes
|
|
382
382
|
// the SDK enrich generator's one-second stale policy.
|
|
383
|
-
version: "0.1.
|
|
383
|
+
version: "0.1.119",
|
|
384
384
|
apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
|
|
385
385
|
supportPolicy: {
|
|
386
|
-
latest: "0.1.
|
|
386
|
+
latest: "0.1.119",
|
|
387
387
|
minimumSupported: "0.1.53",
|
|
388
388
|
deprecatedBelow: "0.1.53",
|
|
389
389
|
commandMinimumSupported: [
|
|
@@ -4237,10 +4237,33 @@ function printDeeplineLogo() {
|
|
|
4237
4237
|
}
|
|
4238
4238
|
console.log("DEEPLINE");
|
|
4239
4239
|
}
|
|
4240
|
-
function
|
|
4240
|
+
async function claimInstallBonus(baseUrl, apiKey) {
|
|
4241
|
+
try {
|
|
4242
|
+
const { status, data } = await httpJson(
|
|
4243
|
+
"POST",
|
|
4244
|
+
`${baseUrl}/api/v2/billing/claim-install-bonus`,
|
|
4245
|
+
apiKey,
|
|
4246
|
+
{}
|
|
4247
|
+
);
|
|
4248
|
+
if (status !== 200) {
|
|
4249
|
+
return;
|
|
4250
|
+
}
|
|
4251
|
+
const granted = Number(data.credits_granted ?? 0);
|
|
4252
|
+
const alreadyGranted = data.already_granted === true;
|
|
4253
|
+
if (granted > 0) {
|
|
4254
|
+
console.log(`
|
|
4255
|
+
\u2022 +${granted} free credits added to your account!`);
|
|
4256
|
+
} else if (alreadyGranted) {
|
|
4257
|
+
console.log("\n \u2022 Free credits already applied to your account.");
|
|
4258
|
+
}
|
|
4259
|
+
} catch {
|
|
4260
|
+
}
|
|
4261
|
+
}
|
|
4262
|
+
async function printClaimSuccessBanner(baseUrl, apiKey, statusData) {
|
|
4241
4263
|
console.log("");
|
|
4242
4264
|
printDeeplineLogo();
|
|
4243
4265
|
console.log("\u2713 All set! Your CLI is connected.");
|
|
4266
|
+
await claimInstallBonus(baseUrl, apiKey);
|
|
4244
4267
|
if (statusData.org_name) {
|
|
4245
4268
|
console.log(` \u2022 Signed in with organization: ${statusData.org_name}`);
|
|
4246
4269
|
}
|
|
@@ -4332,7 +4355,7 @@ async function handleRegister(args) {
|
|
|
4332
4355
|
baseUrl
|
|
4333
4356
|
);
|
|
4334
4357
|
clearPendingClaimToken(baseUrl);
|
|
4335
|
-
printClaimSuccessBanner(statusData);
|
|
4358
|
+
await printClaimSuccessBanner(baseUrl, apiKey, statusData);
|
|
4336
4359
|
return EXIT_OK;
|
|
4337
4360
|
}
|
|
4338
4361
|
}
|
|
@@ -4399,7 +4422,7 @@ async function handleWait(args) {
|
|
|
4399
4422
|
baseUrl
|
|
4400
4423
|
);
|
|
4401
4424
|
clearPendingClaimToken(baseUrl);
|
|
4402
|
-
printClaimSuccessBanner(data);
|
|
4425
|
+
await printClaimSuccessBanner(baseUrl, apiKey, data);
|
|
4403
4426
|
return EXIT_OK;
|
|
4404
4427
|
}
|
|
4405
4428
|
}
|
|
@@ -12626,6 +12649,34 @@ function readFirstDatasetActions(packaged) {
|
|
|
12626
12649
|
}
|
|
12627
12650
|
return {};
|
|
12628
12651
|
}
|
|
12652
|
+
function formatInlinePackageValue(value) {
|
|
12653
|
+
const compacted = compactReturnValue(value);
|
|
12654
|
+
const json = JSON.stringify(compacted);
|
|
12655
|
+
return clampJsonPreviewText(json ?? String(compacted), 500);
|
|
12656
|
+
}
|
|
12657
|
+
function formatPackageValueOutputLines(packaged) {
|
|
12658
|
+
const outputs = packaged.outputs && typeof packaged.outputs === "object" && !Array.isArray(packaged.outputs) ? packaged.outputs : null;
|
|
12659
|
+
if (!outputs) return [];
|
|
12660
|
+
const valueOutputs = Object.entries(outputs).filter(([, output2]) => {
|
|
12661
|
+
return output2 && typeof output2 === "object" && !Array.isArray(output2) && output2.kind === "value" && Object.prototype.hasOwnProperty.call(output2, "value");
|
|
12662
|
+
});
|
|
12663
|
+
if (valueOutputs.length === 0) return [];
|
|
12664
|
+
const lines = [" outputs:"];
|
|
12665
|
+
for (const [name, output2] of valueOutputs.slice(0, 8)) {
|
|
12666
|
+
const value = output2.value;
|
|
12667
|
+
const compacted = compactReturnValue(value);
|
|
12668
|
+
if (compacted && typeof compacted === "object") {
|
|
12669
|
+
lines.push(` ${name}:`);
|
|
12670
|
+
lines.push(...formatJsonPreview(compacted).map((line) => ` ${line}`));
|
|
12671
|
+
} else {
|
|
12672
|
+
lines.push(` ${name}: ${formatInlinePackageValue(value)}`);
|
|
12673
|
+
}
|
|
12674
|
+
}
|
|
12675
|
+
if (valueOutputs.length > 8) {
|
|
12676
|
+
lines.push(` ... ${valueOutputs.length - 8} more output(s)`);
|
|
12677
|
+
}
|
|
12678
|
+
return lines;
|
|
12679
|
+
}
|
|
12629
12680
|
function buildRunPackageTextLines(packaged) {
|
|
12630
12681
|
const run = readRunPackageRun(packaged);
|
|
12631
12682
|
const runId = typeof run.id === "string" ? run.id : "unknown";
|
|
@@ -12650,6 +12701,7 @@ function buildRunPackageTextLines(packaged) {
|
|
|
12650
12701
|
if (playName) {
|
|
12651
12702
|
lines.push(` play: ${playName}`);
|
|
12652
12703
|
}
|
|
12704
|
+
lines.push(...formatPackageValueOutputLines(packaged));
|
|
12653
12705
|
const next = packaged.next && typeof packaged.next === "object" && !Array.isArray(packaged.next) ? packaged.next : {};
|
|
12654
12706
|
const billingCommand = actionToCommand(next.billing);
|
|
12655
12707
|
if (billingCommand) {
|
|
@@ -19833,7 +19885,10 @@ function startCallbackServer(input2) {
|
|
|
19833
19885
|
async function handleQuickstart(options) {
|
|
19834
19886
|
const jsonOutput = shouldEmitJson(options.json === true);
|
|
19835
19887
|
const baseUrl = autoDetectBaseUrl().replace(/\/$/, "");
|
|
19836
|
-
const
|
|
19888
|
+
const installerMode = String(process.env.DEEPLINE_INSTALLER_MODE ?? "").trim().toLowerCase() === "true";
|
|
19889
|
+
const interactive = Boolean(
|
|
19890
|
+
!installerMode && process.stdin.isTTY && process.stdout.isTTY
|
|
19891
|
+
);
|
|
19837
19892
|
let apiKey = resolveApiKeyForBaseUrl(baseUrl);
|
|
19838
19893
|
if (!apiKey) {
|
|
19839
19894
|
if (interactive) {
|
package/dist/index.js
CHANGED
|
@@ -274,10 +274,10 @@ var SDK_RELEASE = {
|
|
|
274
274
|
// skill on the sdk sync surface, and the people-search-to-email prebuilt.
|
|
275
275
|
// 0.1.108 ships explicit dataset column/tool recompute policy and removes
|
|
276
276
|
// the SDK enrich generator's one-second stale policy.
|
|
277
|
-
version: "0.1.
|
|
277
|
+
version: "0.1.119",
|
|
278
278
|
apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
|
|
279
279
|
supportPolicy: {
|
|
280
|
-
latest: "0.1.
|
|
280
|
+
latest: "0.1.119",
|
|
281
281
|
minimumSupported: "0.1.53",
|
|
282
282
|
deprecatedBelow: "0.1.53",
|
|
283
283
|
commandMinimumSupported: [
|
package/dist/index.mjs
CHANGED
|
@@ -196,10 +196,10 @@ var SDK_RELEASE = {
|
|
|
196
196
|
// skill on the sdk sync surface, and the people-search-to-email prebuilt.
|
|
197
197
|
// 0.1.108 ships explicit dataset column/tool recompute policy and removes
|
|
198
198
|
// the SDK enrich generator's one-second stale policy.
|
|
199
|
-
version: "0.1.
|
|
199
|
+
version: "0.1.119",
|
|
200
200
|
apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
|
|
201
201
|
supportPolicy: {
|
|
202
|
-
latest: "0.1.
|
|
202
|
+
latest: "0.1.119",
|
|
203
203
|
minimumSupported: "0.1.53",
|
|
204
204
|
deprecatedBelow: "0.1.53",
|
|
205
205
|
commandMinimumSupported: [
|
|
@@ -99,10 +99,10 @@ export const SDK_RELEASE = {
|
|
|
99
99
|
// skill on the sdk sync surface, and the people-search-to-email prebuilt.
|
|
100
100
|
// 0.1.108 ships explicit dataset column/tool recompute policy and removes
|
|
101
101
|
// the SDK enrich generator's one-second stale policy.
|
|
102
|
-
version: '0.1.
|
|
102
|
+
version: '0.1.119',
|
|
103
103
|
apiContract: '2026-06-dataset-column-cell-stale-hard-cutover',
|
|
104
104
|
supportPolicy: {
|
|
105
|
-
latest: '0.1.
|
|
105
|
+
latest: '0.1.119',
|
|
106
106
|
minimumSupported: '0.1.53',
|
|
107
107
|
deprecatedBelow: '0.1.53',
|
|
108
108
|
commandMinimumSupported: [
|
package/dist/viewer/viewer.js
CHANGED
|
@@ -489,6 +489,11 @@ function codexToolCommand(name, input) {
|
|
|
489
489
|
return JSON.stringify(input).slice(0, 120);
|
|
490
490
|
}
|
|
491
491
|
|
|
492
|
+
function codexSkillReadName(command) {
|
|
493
|
+
const match = String(command || '').match(/\/(?:\.agents|\.claude|\.codex)\/skills\/([^/\s'"]+)\/SKILL\.md\b/);
|
|
494
|
+
return match ? match[1] : null;
|
|
495
|
+
}
|
|
496
|
+
|
|
492
497
|
function codexToolOutputText(p) {
|
|
493
498
|
if (typeof p.output === 'string') return p.output;
|
|
494
499
|
if (typeof p.content === 'string') return p.content;
|
|
@@ -500,6 +505,14 @@ function codexToolOutputText(p) {
|
|
|
500
505
|
|
|
501
506
|
function buildCodexTimeline(events, firstTs) {
|
|
502
507
|
const outputsByCallId = {};
|
|
508
|
+
const hasEventUserMessages = events.some(d => {
|
|
509
|
+
const p = d.payload || {};
|
|
510
|
+
return d.type === 'event_msg' && p.type === 'user_message';
|
|
511
|
+
});
|
|
512
|
+
const hasEventAgentMessages = events.some(d => {
|
|
513
|
+
const p = d.payload || {};
|
|
514
|
+
return d.type === 'event_msg' && p.type === 'agent_message';
|
|
515
|
+
});
|
|
503
516
|
for (const d of events) {
|
|
504
517
|
if (d.type !== 'response_item') continue;
|
|
505
518
|
const p = d.payload || {};
|
|
@@ -534,9 +547,11 @@ function buildCodexTimeline(events, firstTs) {
|
|
|
534
547
|
|
|
535
548
|
if (p.type === 'message') {
|
|
536
549
|
if (p.role === 'user') {
|
|
550
|
+
if (hasEventUserMessages) continue;
|
|
537
551
|
const text = codexContentText(p.content);
|
|
538
552
|
if (text) timeline.push({kind: 'user_message', text, event_index: eventIndex, elapsed});
|
|
539
553
|
} else if (p.role === 'assistant') {
|
|
554
|
+
if (hasEventAgentMessages) continue;
|
|
540
555
|
const text = codexContentText(p.content);
|
|
541
556
|
if (text) timeline.push({kind: 'reasoning', text, event_index: eventIndex, elapsed});
|
|
542
557
|
}
|
|
@@ -561,12 +576,20 @@ function buildCodexTimeline(events, firstTs) {
|
|
|
561
576
|
const input = parseCodexArguments(p.arguments || p.input);
|
|
562
577
|
const callId = p.call_id || p.id || '';
|
|
563
578
|
const output = outputsByCallId[callId] || null;
|
|
564
|
-
|
|
579
|
+
let tool = normalizeStepToolName(codexToolName(p));
|
|
580
|
+
let command = codexToolCommand(tool, input);
|
|
581
|
+
const skillName = codexSkillReadName(command);
|
|
582
|
+
if (skillName) {
|
|
583
|
+
tool = 'Skill';
|
|
584
|
+
command = skillName;
|
|
585
|
+
input.skill = skillName;
|
|
586
|
+
input.command = input.command || input.cmd || command;
|
|
587
|
+
}
|
|
565
588
|
timeline.push({
|
|
566
589
|
kind: 'tool_call',
|
|
567
590
|
step,
|
|
568
591
|
tool,
|
|
569
|
-
command
|
|
592
|
+
command,
|
|
570
593
|
input,
|
|
571
594
|
result_content: output ? output.text : null,
|
|
572
595
|
is_error: output ? output.is_error : null,
|