deepline 0.1.118 → 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.118",
406
+ version: "0.1.119",
407
407
  apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
408
408
  supportPolicy: {
409
- latest: "0.1.118",
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
  }
@@ -19837,7 +19860,10 @@ function startCallbackServer(input2) {
19837
19860
  async function handleQuickstart(options) {
19838
19861
  const jsonOutput = shouldEmitJson(options.json === true);
19839
19862
  const baseUrl = autoDetectBaseUrl().replace(/\/$/, "");
19840
- 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
+ );
19841
19867
  let apiKey = resolveApiKeyForBaseUrl(baseUrl);
19842
19868
  if (!apiKey) {
19843
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.118",
383
+ version: "0.1.119",
384
384
  apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
385
385
  supportPolicy: {
386
- latest: "0.1.118",
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
  }
@@ -19862,7 +19885,10 @@ function startCallbackServer(input2) {
19862
19885
  async function handleQuickstart(options) {
19863
19886
  const jsonOutput = shouldEmitJson(options.json === true);
19864
19887
  const baseUrl = autoDetectBaseUrl().replace(/\/$/, "");
19865
- 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
+ );
19866
19892
  let apiKey = resolveApiKeyForBaseUrl(baseUrl);
19867
19893
  if (!apiKey) {
19868
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.118",
277
+ version: "0.1.119",
278
278
  apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
279
279
  supportPolicy: {
280
- latest: "0.1.118",
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.118",
199
+ version: "0.1.119",
200
200
  apiContract: "2026-06-dataset-column-cell-stale-hard-cutover",
201
201
  supportPolicy: {
202
- latest: "0.1.118",
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.118',
102
+ version: '0.1.119',
103
103
  apiContract: '2026-06-dataset-column-cell-stale-hard-cutover',
104
104
  supportPolicy: {
105
- latest: '0.1.118',
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.118",
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": {