deepline 0.1.236 → 0.1.237

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.
@@ -108,10 +108,10 @@ export const SDK_RELEASE = {
108
108
  // 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
109
109
  // 0.1.220 deprecates SDK CLI versions below 0.1.219 and updates them
110
110
  // automatically without blocking their current command.
111
- version: '0.1.236',
111
+ version: '0.1.237',
112
112
  apiContract: '2026-06-dataset-handle-results-hard-cutover',
113
113
  supportPolicy: {
114
- latest: '0.1.236',
114
+ latest: '0.1.237',
115
115
  minimumSupported: '0.1.53',
116
116
  deprecatedBelow: '0.1.219',
117
117
  commandMinimumSupported: [
package/dist/cli/index.js CHANGED
@@ -625,10 +625,10 @@ var SDK_RELEASE = {
625
625
  // 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
626
626
  // 0.1.220 deprecates SDK CLI versions below 0.1.219 and updates them
627
627
  // automatically without blocking their current command.
628
- version: "0.1.236",
628
+ version: "0.1.237",
629
629
  apiContract: "2026-06-dataset-handle-results-hard-cutover",
630
630
  supportPolicy: {
631
- latest: "0.1.236",
631
+ latest: "0.1.237",
632
632
  minimumSupported: "0.1.53",
633
633
  deprecatedBelow: "0.1.219",
634
634
  commandMinimumSupported: [
@@ -26363,7 +26363,9 @@ function printPlayLikeToolExecuteError(toolId, tool) {
26363
26363
  console.error(playLikeToolExecuteErrorMessage(toolId, tool));
26364
26364
  }
26365
26365
  function registerToolsCommands(program) {
26366
- const tools = program.command("tools").description("Search, describe, and execute atomic provider tools.").addHelpText(
26366
+ const tools = program.command("tools").description(
26367
+ "Search by intent or structured filters, describe, and execute atomic provider tools."
26368
+ ).addHelpText(
26367
26369
  "after",
26368
26370
  `
26369
26371
  Concepts:
@@ -26402,30 +26404,34 @@ Examples:
26402
26404
  ...options.json ? ["--json"] : []
26403
26405
  ]);
26404
26406
  });
26405
- const addToolSearchCommand = (command) => command.description("Search available tools.").addHelpText(
26407
+ const addToolSearchCommand = (command) => command.description(
26408
+ "Search available tools by intent query or structured filters."
26409
+ ).addHelpText(
26406
26410
  "after",
26407
26411
  `
26408
26412
  Notes:
26409
26413
  Ranked discovery for atomic provider/API operations. Results include tool ids
26410
26414
  that can be passed to deepline tools describe or deepline tools execute.
26415
+ Provide a query, or omit it only when --categories and/or --search_terms is
26416
+ supplied. Providing neither is a usage error. Both filters accept
26417
+ comma-separated values. Use a provider name in the query; --prefix is not a
26418
+ supported option.
26411
26419
  The grep alias is the same ranked retrieval surface with a more literal name
26412
26420
  for agents that are filtering a registry rather than choosing a workflow.
26413
26421
 
26414
26422
  Examples:
26415
26423
  deepline tools search email
26424
+ deepline tools search --categories company_search --search_terms "investors,funding"
26416
26425
  deepline tools grep "company enrichment" --categories enrichment --json
26417
26426
  deepline tools search verifier --search-mode v2 --json
26418
26427
  `
26419
26428
  ).option(
26420
26429
  "--categories <categories>",
26421
- "Comma-separated categories to filter ranked search"
26430
+ "Comma-separated categories; may be used without a query"
26422
26431
  ).option(
26423
26432
  "--search_terms <terms>",
26424
- "Structured search terms for ranked search"
26425
- ).option(
26426
- "--search-terms <terms>",
26427
- "Structured search terms for ranked search"
26428
- ).option("--search-mode <mode>", "Ranked search mode: v1 or v2").option("--include-search-debug", "Include ranked search debug metadata").option("--compact", "Drop verbose fields from JSON output").option("--json", "Emit JSON output. Also automatic when stdout is piped").action(async (query, options) => {
26433
+ "Comma-separated structured search terms; may be used without a query"
26434
+ ).option("--search-terms <terms>", "Alias for --search_terms").option("--search-mode <mode>", "Ranked search mode: v1 or v2").option("--include-search-debug", "Include ranked search debug metadata").option("--compact", "Drop verbose fields from JSON output").option("--json", "Emit JSON output. Also automatic when stdout is piped").action(async (query, options) => {
26429
26435
  process.exitCode = await searchTools(query, {
26430
26436
  json: options.json,
26431
26437
  compact: options.compact,
@@ -28372,6 +28378,9 @@ function sdkSkillsVersionPath(baseUrl) {
28372
28378
  function legacySdkSkillsVersionPath(baseUrl) {
28373
28379
  return (0, import_node_path18.join)((0, import_node_path18.dirname)(sdkCliStateDirPath(baseUrl)), "sdk-skills", ".version");
28374
28380
  }
28381
+ function unavailableSkillsNoticePath(baseUrl) {
28382
+ return (0, import_node_path18.join)(sdkCliStateDirPath(baseUrl), "skills-sync-unavailable-version");
28383
+ }
28375
28384
  function readSdkSkillsLocalVersion(baseUrl) {
28376
28385
  const pluginVersion = readPluginSkillsVersion();
28377
28386
  if (pluginVersion) return pluginVersion;
@@ -28389,6 +28398,29 @@ function writeLocalSkillsVersion(baseUrl, version) {
28389
28398
  (0, import_node_fs16.writeFileSync)(path, `${version}
28390
28399
  `, "utf-8");
28391
28400
  }
28401
+ function writeUnavailableSkillsNotice(baseUrl, remoteVersion, skillNames) {
28402
+ const path = unavailableSkillsNoticePath(baseUrl);
28403
+ try {
28404
+ if ((0, import_node_fs16.existsSync)(path) && (0, import_node_fs16.readFileSync)(path, "utf-8").trim() === remoteVersion) {
28405
+ return;
28406
+ }
28407
+ (0, import_node_fs16.mkdirSync)((0, import_node_path18.dirname)(path), { recursive: true });
28408
+ (0, import_node_fs16.writeFileSync)(path, `${remoteVersion}
28409
+ `, "utf-8");
28410
+ } catch {
28411
+ }
28412
+ const manualCommand = `npx ${buildSkillsInstallArgs(baseUrl, skillNames).join(" ")}`;
28413
+ writeSdkSkillsStatusLine(
28414
+ `Deepline agent skills are out of date, but neither \`bunx\` nor \`npx\` is available. Install Node.js/npm or Bun, then run:
28415
+ ${manualCommand}`
28416
+ );
28417
+ }
28418
+ function clearUnavailableSkillsNotice(baseUrl) {
28419
+ try {
28420
+ (0, import_node_fs16.unlinkSync)(unavailableSkillsNoticePath(baseUrl));
28421
+ } catch {
28422
+ }
28423
+ }
28392
28424
  function sortedUniqueSkillNames(names) {
28393
28425
  return [...new Set(names.map((name) => name.trim()).filter(Boolean))].sort(
28394
28426
  (a, b) => a.localeCompare(b)
@@ -28464,24 +28496,24 @@ function shellQuote5(arg) {
28464
28496
  return `'${arg.replace(/'/g, `'\\''`)}'`;
28465
28497
  }
28466
28498
  function resolveSkillsInstallCommands(baseUrl, skillNames = DEFAULT_SDK_SKILL_NAMES) {
28467
- const npxArgs = buildSkillsInstallArgs(baseUrl, skillNames);
28468
- const npxInstall = {
28469
- command: "npx",
28470
- args: npxArgs,
28471
- manualCommand: `npx ${npxArgs.map(shellQuote5).join(" ")}`
28472
- };
28499
+ const commands = [];
28473
28500
  if (hasCommand("bunx")) {
28474
28501
  const bunxArgs = buildBunxSkillsInstallArgs(baseUrl, skillNames);
28475
- return [
28476
- {
28477
- command: "bunx",
28478
- args: bunxArgs,
28479
- manualCommand: `bunx ${bunxArgs.map(shellQuote5).join(" ")}`
28480
- },
28481
- npxInstall
28482
- ];
28502
+ commands.push({
28503
+ command: "bunx",
28504
+ args: bunxArgs,
28505
+ manualCommand: `bunx ${bunxArgs.map(shellQuote5).join(" ")}`
28506
+ });
28507
+ }
28508
+ if (hasCommand("npx")) {
28509
+ const npxArgs = buildSkillsInstallArgs(baseUrl, skillNames);
28510
+ commands.push({
28511
+ command: "npx",
28512
+ args: npxArgs,
28513
+ manualCommand: `npx ${npxArgs.map(shellQuote5).join(" ")}`
28514
+ });
28483
28515
  }
28484
- return [npxInstall];
28516
+ return commands;
28485
28517
  }
28486
28518
  function runOneSkillsInstall(install) {
28487
28519
  return new Promise((resolve14) => {
@@ -28514,9 +28546,9 @@ function runOneSkillsInstall(install) {
28514
28546
  });
28515
28547
  });
28516
28548
  }
28517
- async function runSkillsInstall(baseUrl, skillNames) {
28549
+ async function runSkillsInstall(installs) {
28518
28550
  const failures = [];
28519
- for (const install of resolveSkillsInstallCommands(baseUrl, skillNames)) {
28551
+ for (const install of installs) {
28520
28552
  const result = await runOneSkillsInstall(install);
28521
28553
  if (result.ok) return true;
28522
28554
  failures.push(result);
@@ -28606,11 +28638,17 @@ async function syncSdkSkillsIfNeeded(baseUrl, options = {}) {
28606
28638
  remoteSkillNames.length > 0 ? remoteSkillNames : DEFAULT_SDK_SKILL_NAMES
28607
28639
  );
28608
28640
  if (skillNames.length === 0) return;
28641
+ const installs = resolveSkillsInstallCommands(baseUrl, skillNames);
28642
+ if (installs.length === 0) {
28643
+ writeUnavailableSkillsNotice(baseUrl, update.remoteVersion, skillNames);
28644
+ return;
28645
+ }
28609
28646
  writeSdkSkillsStatusLine("Deepline skills changed; syncing agent skills...");
28610
- const installed = await runSkillsInstall(baseUrl, skillNames);
28647
+ const installed = await runSkillsInstall(installs);
28611
28648
  if (!installed) return;
28612
28649
  runLegacySkillsCleanup();
28613
28650
  writeLocalSkillsVersion(baseUrl, update.remoteVersion);
28651
+ clearUnavailableSkillsNotice(baseUrl);
28614
28652
  writeSdkSkillsStatusLine("Deepline agent skills are up to date.");
28615
28653
  }
28616
28654
 
@@ -610,10 +610,10 @@ var SDK_RELEASE = {
610
610
  // 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
611
611
  // 0.1.220 deprecates SDK CLI versions below 0.1.219 and updates them
612
612
  // automatically without blocking their current command.
613
- version: "0.1.236",
613
+ version: "0.1.237",
614
614
  apiContract: "2026-06-dataset-handle-results-hard-cutover",
615
615
  supportPolicy: {
616
- latest: "0.1.236",
616
+ latest: "0.1.237",
617
617
  minimumSupported: "0.1.53",
618
618
  deprecatedBelow: "0.1.219",
619
619
  commandMinimumSupported: [
@@ -26411,7 +26411,9 @@ function printPlayLikeToolExecuteError(toolId, tool) {
26411
26411
  console.error(playLikeToolExecuteErrorMessage(toolId, tool));
26412
26412
  }
26413
26413
  function registerToolsCommands(program) {
26414
- const tools = program.command("tools").description("Search, describe, and execute atomic provider tools.").addHelpText(
26414
+ const tools = program.command("tools").description(
26415
+ "Search by intent or structured filters, describe, and execute atomic provider tools."
26416
+ ).addHelpText(
26415
26417
  "after",
26416
26418
  `
26417
26419
  Concepts:
@@ -26450,30 +26452,34 @@ Examples:
26450
26452
  ...options.json ? ["--json"] : []
26451
26453
  ]);
26452
26454
  });
26453
- const addToolSearchCommand = (command) => command.description("Search available tools.").addHelpText(
26455
+ const addToolSearchCommand = (command) => command.description(
26456
+ "Search available tools by intent query or structured filters."
26457
+ ).addHelpText(
26454
26458
  "after",
26455
26459
  `
26456
26460
  Notes:
26457
26461
  Ranked discovery for atomic provider/API operations. Results include tool ids
26458
26462
  that can be passed to deepline tools describe or deepline tools execute.
26463
+ Provide a query, or omit it only when --categories and/or --search_terms is
26464
+ supplied. Providing neither is a usage error. Both filters accept
26465
+ comma-separated values. Use a provider name in the query; --prefix is not a
26466
+ supported option.
26459
26467
  The grep alias is the same ranked retrieval surface with a more literal name
26460
26468
  for agents that are filtering a registry rather than choosing a workflow.
26461
26469
 
26462
26470
  Examples:
26463
26471
  deepline tools search email
26472
+ deepline tools search --categories company_search --search_terms "investors,funding"
26464
26473
  deepline tools grep "company enrichment" --categories enrichment --json
26465
26474
  deepline tools search verifier --search-mode v2 --json
26466
26475
  `
26467
26476
  ).option(
26468
26477
  "--categories <categories>",
26469
- "Comma-separated categories to filter ranked search"
26478
+ "Comma-separated categories; may be used without a query"
26470
26479
  ).option(
26471
26480
  "--search_terms <terms>",
26472
- "Structured search terms for ranked search"
26473
- ).option(
26474
- "--search-terms <terms>",
26475
- "Structured search terms for ranked search"
26476
- ).option("--search-mode <mode>", "Ranked search mode: v1 or v2").option("--include-search-debug", "Include ranked search debug metadata").option("--compact", "Drop verbose fields from JSON output").option("--json", "Emit JSON output. Also automatic when stdout is piped").action(async (query, options) => {
26481
+ "Comma-separated structured search terms; may be used without a query"
26482
+ ).option("--search-terms <terms>", "Alias for --search_terms").option("--search-mode <mode>", "Ranked search mode: v1 or v2").option("--include-search-debug", "Include ranked search debug metadata").option("--compact", "Drop verbose fields from JSON output").option("--json", "Emit JSON output. Also automatic when stdout is piped").action(async (query, options) => {
26477
26483
  process.exitCode = await searchTools(query, {
26478
26484
  json: options.json,
26479
26485
  compact: options.compact,
@@ -28281,7 +28287,7 @@ import {
28281
28287
  readFileSync as readFileSync13,
28282
28288
  renameSync,
28283
28289
  rmSync as rmSync4,
28284
- unlinkSync,
28290
+ unlinkSync as unlinkSync2,
28285
28291
  writeFileSync as writeFileSync15
28286
28292
  } from "fs";
28287
28293
  import { homedir as homedir11 } from "os";
@@ -28289,7 +28295,13 @@ import { dirname as dirname13, isAbsolute as isAbsolute2, join as join14, relati
28289
28295
 
28290
28296
  // src/cli/skills-sync.ts
28291
28297
  import { spawn as spawn3, spawnSync as spawnSync2 } from "child_process";
28292
- import { existsSync as existsSync11, mkdirSync as mkdirSync9, readFileSync as readFileSync12, writeFileSync as writeFileSync14 } from "fs";
28298
+ import {
28299
+ existsSync as existsSync11,
28300
+ mkdirSync as mkdirSync9,
28301
+ readFileSync as readFileSync12,
28302
+ unlinkSync,
28303
+ writeFileSync as writeFileSync14
28304
+ } from "fs";
28293
28305
  import { dirname as dirname12, join as join13 } from "path";
28294
28306
 
28295
28307
  // ../shared_libs/cli/install-commands.json
@@ -28429,6 +28441,9 @@ function sdkSkillsVersionPath(baseUrl) {
28429
28441
  function legacySdkSkillsVersionPath(baseUrl) {
28430
28442
  return join13(dirname12(sdkCliStateDirPath(baseUrl)), "sdk-skills", ".version");
28431
28443
  }
28444
+ function unavailableSkillsNoticePath(baseUrl) {
28445
+ return join13(sdkCliStateDirPath(baseUrl), "skills-sync-unavailable-version");
28446
+ }
28432
28447
  function readSdkSkillsLocalVersion(baseUrl) {
28433
28448
  const pluginVersion = readPluginSkillsVersion();
28434
28449
  if (pluginVersion) return pluginVersion;
@@ -28446,6 +28461,29 @@ function writeLocalSkillsVersion(baseUrl, version) {
28446
28461
  writeFileSync14(path, `${version}
28447
28462
  `, "utf-8");
28448
28463
  }
28464
+ function writeUnavailableSkillsNotice(baseUrl, remoteVersion, skillNames) {
28465
+ const path = unavailableSkillsNoticePath(baseUrl);
28466
+ try {
28467
+ if (existsSync11(path) && readFileSync12(path, "utf-8").trim() === remoteVersion) {
28468
+ return;
28469
+ }
28470
+ mkdirSync9(dirname12(path), { recursive: true });
28471
+ writeFileSync14(path, `${remoteVersion}
28472
+ `, "utf-8");
28473
+ } catch {
28474
+ }
28475
+ const manualCommand = `npx ${buildSkillsInstallArgs(baseUrl, skillNames).join(" ")}`;
28476
+ writeSdkSkillsStatusLine(
28477
+ `Deepline agent skills are out of date, but neither \`bunx\` nor \`npx\` is available. Install Node.js/npm or Bun, then run:
28478
+ ${manualCommand}`
28479
+ );
28480
+ }
28481
+ function clearUnavailableSkillsNotice(baseUrl) {
28482
+ try {
28483
+ unlinkSync(unavailableSkillsNoticePath(baseUrl));
28484
+ } catch {
28485
+ }
28486
+ }
28449
28487
  function sortedUniqueSkillNames(names) {
28450
28488
  return [...new Set(names.map((name) => name.trim()).filter(Boolean))].sort(
28451
28489
  (a, b) => a.localeCompare(b)
@@ -28521,24 +28559,24 @@ function shellQuote5(arg) {
28521
28559
  return `'${arg.replace(/'/g, `'\\''`)}'`;
28522
28560
  }
28523
28561
  function resolveSkillsInstallCommands(baseUrl, skillNames = DEFAULT_SDK_SKILL_NAMES) {
28524
- const npxArgs = buildSkillsInstallArgs(baseUrl, skillNames);
28525
- const npxInstall = {
28526
- command: "npx",
28527
- args: npxArgs,
28528
- manualCommand: `npx ${npxArgs.map(shellQuote5).join(" ")}`
28529
- };
28562
+ const commands = [];
28530
28563
  if (hasCommand("bunx")) {
28531
28564
  const bunxArgs = buildBunxSkillsInstallArgs(baseUrl, skillNames);
28532
- return [
28533
- {
28534
- command: "bunx",
28535
- args: bunxArgs,
28536
- manualCommand: `bunx ${bunxArgs.map(shellQuote5).join(" ")}`
28537
- },
28538
- npxInstall
28539
- ];
28565
+ commands.push({
28566
+ command: "bunx",
28567
+ args: bunxArgs,
28568
+ manualCommand: `bunx ${bunxArgs.map(shellQuote5).join(" ")}`
28569
+ });
28570
+ }
28571
+ if (hasCommand("npx")) {
28572
+ const npxArgs = buildSkillsInstallArgs(baseUrl, skillNames);
28573
+ commands.push({
28574
+ command: "npx",
28575
+ args: npxArgs,
28576
+ manualCommand: `npx ${npxArgs.map(shellQuote5).join(" ")}`
28577
+ });
28540
28578
  }
28541
- return [npxInstall];
28579
+ return commands;
28542
28580
  }
28543
28581
  function runOneSkillsInstall(install) {
28544
28582
  return new Promise((resolve14) => {
@@ -28571,9 +28609,9 @@ function runOneSkillsInstall(install) {
28571
28609
  });
28572
28610
  });
28573
28611
  }
28574
- async function runSkillsInstall(baseUrl, skillNames) {
28612
+ async function runSkillsInstall(installs) {
28575
28613
  const failures = [];
28576
- for (const install of resolveSkillsInstallCommands(baseUrl, skillNames)) {
28614
+ for (const install of installs) {
28577
28615
  const result = await runOneSkillsInstall(install);
28578
28616
  if (result.ok) return true;
28579
28617
  failures.push(result);
@@ -28663,11 +28701,17 @@ async function syncSdkSkillsIfNeeded(baseUrl, options = {}) {
28663
28701
  remoteSkillNames.length > 0 ? remoteSkillNames : DEFAULT_SDK_SKILL_NAMES
28664
28702
  );
28665
28703
  if (skillNames.length === 0) return;
28704
+ const installs = resolveSkillsInstallCommands(baseUrl, skillNames);
28705
+ if (installs.length === 0) {
28706
+ writeUnavailableSkillsNotice(baseUrl, update.remoteVersion, skillNames);
28707
+ return;
28708
+ }
28666
28709
  writeSdkSkillsStatusLine("Deepline skills changed; syncing agent skills...");
28667
- const installed = await runSkillsInstall(baseUrl, skillNames);
28710
+ const installed = await runSkillsInstall(installs);
28668
28711
  if (!installed) return;
28669
28712
  runLegacySkillsCleanup();
28670
28713
  writeLocalSkillsVersion(baseUrl, update.remoteVersion);
28714
+ clearUnavailableSkillsNotice(baseUrl);
28671
28715
  writeSdkSkillsStatusLine("Deepline agent skills are up to date.");
28672
28716
  }
28673
28717
 
@@ -28896,7 +28940,7 @@ function clearAutoUpdateFailure(plan) {
28896
28940
  const path = autoUpdateFailurePath(plan);
28897
28941
  if (!path) return;
28898
28942
  try {
28899
- unlinkSync(path);
28943
+ unlinkSync2(path);
28900
28944
  } catch {
28901
28945
  }
28902
28946
  }
package/dist/index.js CHANGED
@@ -424,10 +424,10 @@ var SDK_RELEASE = {
424
424
  // 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
425
425
  // 0.1.220 deprecates SDK CLI versions below 0.1.219 and updates them
426
426
  // automatically without blocking their current command.
427
- version: "0.1.236",
427
+ version: "0.1.237",
428
428
  apiContract: "2026-06-dataset-handle-results-hard-cutover",
429
429
  supportPolicy: {
430
- latest: "0.1.236",
430
+ latest: "0.1.237",
431
431
  minimumSupported: "0.1.53",
432
432
  deprecatedBelow: "0.1.219",
433
433
  commandMinimumSupported: [
package/dist/index.mjs CHANGED
@@ -354,10 +354,10 @@ var SDK_RELEASE = {
354
354
  // 0.1.175 ships loud `deepline enrich` empty-waterfall reporting.
355
355
  // 0.1.220 deprecates SDK CLI versions below 0.1.219 and updates them
356
356
  // automatically without blocking their current command.
357
- version: "0.1.236",
357
+ version: "0.1.237",
358
358
  apiContract: "2026-06-dataset-handle-results-hard-cutover",
359
359
  supportPolicy: {
360
- latest: "0.1.236",
360
+ latest: "0.1.237",
361
361
  minimumSupported: "0.1.53",
362
362
  deprecatedBelow: "0.1.219",
363
363
  commandMinimumSupported: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepline",
3
- "version": "0.1.236",
3
+ "version": "0.1.237",
4
4
  "description": "Deepline SDK + CLI — B2B data enrichment powered by durable cloud execution",
5
5
  "license": "MIT",
6
6
  "repository": {