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 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.117",
406
+ version: "0.1.119",
407
407
  apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
408
408
  supportPolicy: {
409
- latest: "0.1.117",
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 printClaimSuccessBanner(statusData) {
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 interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY);
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) {
@@ -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.117",
383
+ version: "0.1.119",
384
384
  apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
385
385
  supportPolicy: {
386
- latest: "0.1.117",
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 printClaimSuccessBanner(statusData) {
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 interactive = Boolean(process.stdin.isTTY && process.stdout.isTTY);
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.117",
277
+ version: "0.1.119",
278
278
  apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
279
279
  supportPolicy: {
280
- latest: "0.1.117",
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.117",
199
+ version: "0.1.119",
200
200
  apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
201
201
  supportPolicy: {
202
- latest: "0.1.117",
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.117',
102
+ version: '0.1.119',
103
103
  apiContract: '2026-06-dataset-column-cell-stale-hard-cutover',
104
104
  supportPolicy: {
105
- latest: '0.1.117',
105
+ latest: '0.1.119',
106
106
  minimumSupported: '0.1.53',
107
107
  deprecatedBelow: '0.1.53',
108
108
  commandMinimumSupported: [
@@ -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
- const tool = normalizeStepToolName(codexToolName(p));
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: codexToolCommand(tool, input),
592
+ command,
570
593
  input,
571
594
  result_content: output ? output.text : null,
572
595
  is_error: output ? output.is_error : null,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepline",
3
- "version": "0.1.117",
3
+ "version": "0.1.119",
4
4
  "description": "Deepline SDK + CLI — B2B data enrichment powered by durable cloud execution",
5
5
  "license": "MIT",
6
6
  "repository": {