deepline 0.3.327 → 0.3.329

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.
Files changed (123) hide show
  1. package/dist/bundling-sources/sdk/src/index.ts +1 -0
  2. package/dist/bundling-sources/sdk/src/play.ts +55 -45
  3. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  4. package/dist/bundling-sources/sdk/src/types.ts +16 -0
  5. package/dist/bundling-sources/shared_libs/observability/queue-health.ts +9 -0
  6. package/dist/bundling-sources/shared_libs/observability/queue-item-connectors.ts +1 -0
  7. package/dist/bundling-sources/shared_libs/play-runtime/context.ts +31 -15
  8. package/dist/bundling-sources/shared_libs/play-runtime/play-runtime-semantics.ts +22 -4
  9. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +29 -11
  10. package/dist/bundling-sources/shared_libs/play-runtime/tool-result.ts +145 -19
  11. package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +37 -10
  12. package/dist/bundling-sources/shared_libs/plays/dataset.ts +3 -0
  13. package/dist/bundling-sources/shared_libs/plays/tool-result-types.ts +59 -10
  14. package/dist/bundling-sources/shared_libs/security/secret-redaction.ts +4 -0
  15. package/dist/cli/{auth-EBBDOKNV.mjs → auth-MFFVOITR.mjs} +4 -4
  16. package/dist/cli/auth-W2MQM6GQ.js +31 -0
  17. package/dist/cli/{billing-IM2QUFX4.mjs → billing-LRBHWLIQ.mjs} +30 -16
  18. package/dist/cli/{billing-6AAB7WPJ.js → billing-V4Y4OVQ7.js} +96 -82
  19. package/dist/cli/{chunk-D6GD5AVN.mjs → chunk-3RZJ3GEG.mjs} +135 -5
  20. package/dist/cli/{chunk-MOP6D7Z5.js → chunk-4FLEXYUC.js} +141 -11
  21. package/dist/cli/{chunk-DSDX6EUW.js → chunk-75ZOTF3K.js} +15 -15
  22. package/dist/cli/{chunk-ZOFARJWH.mjs → chunk-7T6DX5RK.mjs} +21 -14
  23. package/dist/cli/{chunk-3MXRNPBN.js → chunk-AD23W4S5.js} +1 -1
  24. package/dist/cli/{chunk-F45425TB.mjs → chunk-EROOAI5G.mjs} +1 -1
  25. package/dist/cli/{chunk-REP2MYBI.mjs → chunk-ERU2OR6F.mjs} +2 -2
  26. package/dist/cli/{chunk-YIY74KUF.mjs → chunk-EV4QJE4J.mjs} +1 -1
  27. package/dist/cli/{chunk-CCRQ2VGJ.mjs → chunk-FK7PW6BP.mjs} +1 -1
  28. package/dist/cli/{chunk-2HKPAZVJ.js → chunk-FKKNYKDY.js} +14 -3
  29. package/dist/cli/{chunk-G5774EFF.mjs → chunk-GCNER3HV.mjs} +1 -1
  30. package/dist/cli/{chunk-4ZARCCPT.js → chunk-GY2EEO2Y.js} +9 -9
  31. package/dist/cli/{chunk-HOWQKN6J.mjs → chunk-HI7TAWFS.mjs} +79 -26
  32. package/dist/cli/{chunk-RSEVBSFE.mjs → chunk-HVPRQGF4.mjs} +1 -1
  33. package/dist/cli/{chunk-CISKBOXD.js → chunk-J2E5R2VH.js} +60 -60
  34. package/dist/cli/{chunk-7RCJDAJX.js → chunk-KHZQFFOQ.js} +2 -2
  35. package/dist/cli/{chunk-DVV4FPS7.mjs → chunk-MFQQINUY.mjs} +2 -2
  36. package/dist/cli/{chunk-DCAU6PND.mjs → chunk-MO2XSC5I.mjs} +4 -4
  37. package/dist/cli/{chunk-KP7W5NO6.mjs → chunk-NTVTZAVZ.mjs} +13 -2
  38. package/dist/cli/{chunk-HZZJR2GV.js → chunk-OUTIWGKY.js} +26 -26
  39. package/dist/cli/{chunk-QZAP5VOS.mjs → chunk-OZGU7P2S.mjs} +1 -1
  40. package/dist/cli/{chunk-A5SKM3GL.mjs → chunk-SJV5MTOJ.mjs} +1 -1
  41. package/dist/cli/{chunk-UROXKPND.js → chunk-U2N4CYT7.js} +6 -6
  42. package/dist/cli/{chunk-4TO56P22.js → chunk-U4CTHVN7.js} +255 -248
  43. package/dist/cli/{chunk-AGH6YP2T.js → chunk-UQV5M6HN.js} +3 -3
  44. package/dist/cli/{chunk-DM3SHV6U.js → chunk-VDIHLKGG.js} +4 -4
  45. package/dist/cli/{chunk-77RAV5XX.js → chunk-VLDLJZ75.js} +48 -48
  46. package/dist/cli/{chunk-NWIJLTRL.js → chunk-XRYKLK56.js} +119 -66
  47. package/dist/cli/{chunk-3ITDKXNC.mjs → chunk-YNSCELIJ.mjs} +2 -2
  48. package/dist/cli/{chunk-TAGHNT5P.js → chunk-ZXGUYTIT.js} +6 -6
  49. package/dist/cli/client-5AIFBLKQ.js +20 -0
  50. package/dist/cli/{client-JCMSACT4.mjs → client-BNLD775D.mjs} +3 -3
  51. package/dist/cli/{csv-NPMWVM5D.mjs → csv-7MVQECWG.mjs} +3 -3
  52. package/dist/cli/{csv-OILKDKUX.js → csv-ZT6ZRQ3Z.js} +12 -12
  53. package/dist/cli/{db-AZUAOWPQ.mjs → db-ABLWLMX5.mjs} +4 -4
  54. package/dist/cli/{db-MNDRYYEX.js → db-C4BMZXJK.js} +29 -29
  55. package/dist/cli/{describe-KJWOHMKC.mjs → describe-XWOWAR32.mjs} +10 -10
  56. package/dist/cli/{describe-QENLDLM2.js → describe-YALVN4WH.js} +17 -17
  57. package/dist/cli/{executions-QZNQWF6F.mjs → executions-7IZVKQ3O.mjs} +4 -4
  58. package/dist/cli/{executions-P36UHBPG.js → executions-U4TNRP26.js} +6 -6
  59. package/dist/cli/{feedback-RQ6HSZSG.mjs → feedback-GO5XPEKY.mjs} +3 -3
  60. package/dist/cli/{feedback-K4UGTLFD.js → feedback-NWMRT5W4.js} +6 -6
  61. package/dist/cli/{git-PBRMCBMI.mjs → git-R53WS4WA.mjs} +4 -4
  62. package/dist/cli/git-YWRLAOBY.js +23 -0
  63. package/dist/cli/index.js +95 -80
  64. package/dist/cli/index.mjs +54 -39
  65. package/dist/cli/{legacy-noops-G7GWJ5UC.mjs → legacy-noops-6QAZW7WJ.mjs} +4 -4
  66. package/dist/cli/{legacy-noops-X74FM35Q.js → legacy-noops-NJWM53DE.js} +7 -7
  67. package/dist/cli/{monitors-VKURX3YM.js → monitors-2I2MYAPS.js} +85 -85
  68. package/dist/cli/{monitors-KL2MCR57.mjs → monitors-2N4BRU5M.mjs} +4 -4
  69. package/dist/cli/{org-DT53KTNW.mjs → org-D3RHK2Q7.mjs} +4 -4
  70. package/dist/cli/{org-ZYXJDC44.js → org-XVNAE2JV.js} +60 -60
  71. package/dist/cli/{play-WIJGQYTB.mjs → play-L7MYJZ65.mjs} +9 -9
  72. package/dist/cli/play-OYRHI7G3.js +153 -0
  73. package/dist/cli/{providers-GRTW4TXX.js → providers-5BTDAZHN.js} +7 -7
  74. package/dist/cli/{providers-GYGKGS2J.mjs → providers-YM4E7WZD.mjs} +4 -4
  75. package/dist/cli/{quickstart-WB26543C.js → quickstart-5A3FHAH3.js} +5 -5
  76. package/dist/cli/{quickstart-XF3M2M2S.mjs → quickstart-ARPLJOLH.mjs} +3 -3
  77. package/dist/cli/{search-ANJLTOF2.mjs → search-KKJEVV27.mjs} +5 -5
  78. package/dist/cli/search-VE3O3ZEM.js +26 -0
  79. package/dist/cli/{secrets-D6UR5CTW.mjs → secrets-DGRJ4DO5.mjs} +4 -4
  80. package/dist/cli/{secrets-5KBUGMTK.js → secrets-DVPVCSZD.js} +13 -13
  81. package/dist/cli/{sessions-S7N4JEWK.mjs → sessions-56EHXLZD.mjs} +4 -4
  82. package/dist/cli/{sessions-46PXFULL.js → sessions-VG4ATQ5Y.js} +5 -5
  83. package/dist/cli/{settings-V6U3SRTH.mjs → settings-4U5XG7QI.mjs} +7 -7
  84. package/dist/cli/{settings-KMNBITSU.js → settings-BLOTIW2G.js} +74 -74
  85. package/dist/cli/{setup-4K5FY6AU.js → setup-L7AMAXCH.js} +41 -41
  86. package/dist/cli/{setup-OGITSLTN.mjs → setup-RHJAHPOR.mjs} +6 -6
  87. package/dist/cli/skills-QB4OQGGP.js +28 -0
  88. package/dist/cli/{skills-AXWAYPBY.mjs → skills-VU55YFCI.mjs} +4 -4
  89. package/dist/cli/tools-2CPFYNK7.js +40 -0
  90. package/dist/cli/{tools-LJCY6B23.mjs → tools-JS3YIDOH.mjs} +7 -6
  91. package/dist/cli/{update-DDR5XIUB.mjs → update-EHI5QUXM.mjs} +6 -6
  92. package/dist/cli/update-WXP24GU5.js +28 -0
  93. package/dist/cli/{workflow-PRNCVANQ.mjs → workflow-BITLTLRF.mjs} +5 -5
  94. package/dist/cli/{workflow-7CTCDWL3.js → workflow-NE4SYRAT.js} +15 -15
  95. package/dist/{client-wiWPZhnI.d.mts → client-D5XOQKsA.d.mts} +20 -1
  96. package/dist/{client-DHq8dJ56.d.ts → client-l-IoLh8Z.d.ts} +20 -1
  97. package/dist/{compiler-manifest-9TkZ_ykI.d.mts → compiler-manifest-82q4jtfQ.d.mts} +44 -17
  98. package/dist/{compiler-manifest-9TkZ_ykI.d.ts → compiler-manifest-82q4jtfQ.d.ts} +44 -17
  99. package/dist/{index-B-5_Xhud.d.mts → index-BPbW2XHF.d.mts} +1 -1
  100. package/dist/{index-ykksoEyR.d.ts → index-k0rquHIm.d.ts} +1 -1
  101. package/dist/index.d.mts +14 -8
  102. package/dist/index.d.ts +14 -8
  103. package/dist/index.js +194 -69
  104. package/dist/index.mjs +162 -37
  105. package/dist/install-integrity.json +84 -84
  106. package/dist/plays/bundle-play-file.d.mts +3 -3
  107. package/dist/plays/bundle-play-file.d.ts +3 -3
  108. package/dist/plays/bundle-play-file.mjs +2 -2
  109. package/dist/plays/run-request.d.mts +2 -2
  110. package/dist/plays/run-request.d.ts +2 -2
  111. package/dist/release.d.mts +1 -1
  112. package/dist/release.d.ts +1 -1
  113. package/dist/release.js +2 -2
  114. package/dist/release.mjs +1 -1
  115. package/package.json +2 -1
  116. package/dist/cli/auth-67YOPQ6M.js +0 -31
  117. package/dist/cli/client-7LZCG4VD.js +0 -20
  118. package/dist/cli/git-RPFH3NJ2.js +0 -23
  119. package/dist/cli/play-BUQV47E2.js +0 -153
  120. package/dist/cli/search-CR2GZLCM.js +0 -26
  121. package/dist/cli/skills-4FP2MZKL.js +0 -28
  122. package/dist/cli/tools-7YZPH6WC.js +0 -39
  123. package/dist/cli/update-3VUOW6AP.js +0 -28
@@ -1,13 +1,14 @@
1
1
  import {
2
2
  DeeplineClient
3
- } from "./chunk-QZAP5VOS.mjs";
3
+ } from "./chunk-OZGU7P2S.mjs";
4
4
  import {
5
- printCommandEnvelope
6
- } from "./chunk-F45425TB.mjs";
5
+ printCommandEnvelope,
6
+ renderCommandEnvelopeText
7
+ } from "./chunk-EROOAI5G.mjs";
7
8
  import {
8
9
  resolveConfig,
9
10
  sdkCliStateDirPath
10
- } from "./chunk-CCRQ2VGJ.mjs";
11
+ } from "./chunk-FK7PW6BP.mjs";
11
12
 
12
13
  // src/cli/search-ref.ts
13
14
  import { mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -36,6 +37,132 @@ function recentSearchRef() {
36
37
  }
37
38
  }
38
39
 
40
+ // src/cli/text-table.ts
41
+ import { getBorderCharacters, table } from "table";
42
+ function formatTextTable(rows, columns) {
43
+ if (columns.length === 0) return "";
44
+ const data = [
45
+ columns.map((column) => column.header),
46
+ ...rows.map((row) => columns.map((column) => column.value(row)))
47
+ ];
48
+ return table(data, {
49
+ border: getBorderCharacters("void"),
50
+ drawHorizontalLine: () => false,
51
+ columnDefault: { paddingLeft: 0, paddingRight: 2 },
52
+ columns: columns.map((column, index) => ({
53
+ alignment: column.alignment ?? "left",
54
+ // table@6's word wrapper counts UTF-16 characters instead of display
55
+ // cells. Use its display-width-safe character wrapper for Unicode;
56
+ // unbounded identifiers never need wrapping in the first place.
57
+ wrapWord: column.width !== void 0 && data.every((row) => new RegExp("^\\p{ASCII}*$", "u").test(row[index])),
58
+ ...column.width === void 0 ? {} : { width: column.width }
59
+ }))
60
+ }).split("\n").map((line) => line.trimEnd()).join("\n").trimEnd();
61
+ }
62
+
63
+ // src/cli/search-output.ts
64
+ function clipSummary(value) {
65
+ const characters = Array.from(value.replace(/\s+/gu, " ").trim());
66
+ return characters.length <= 78 ? characters.join("") : `${characters.slice(0, 77).join("")}\u2026`;
67
+ }
68
+ function pricingDisplay(item) {
69
+ const pricing = item.pricing;
70
+ if (!pricing)
71
+ return { cost: item.kind === "tool" ? "unknown" : "\u2014", notes: [] };
72
+ const range = pricing.estimatedRange;
73
+ if (range && item.billingSource !== "own_provider_credentials") {
74
+ return {
75
+ cost: `${range.minCreditsPerUnit}\u2013${range.maxCreditsPerUnit}/${pricing.unit} (estimate)`,
76
+ notes: [range.scope]
77
+ };
78
+ }
79
+ const observed = pricing.observedReference;
80
+ if (observed) {
81
+ return {
82
+ cost: `${observed.creditsPerCall}/call (observed)`,
83
+ notes: [
84
+ `Observed reference: ${observed.sampleSize} call(s), ${observed.observedAt}; ${observed.inputMode} Not a quote.`
85
+ ]
86
+ };
87
+ }
88
+ if (item.billingSource === "own_provider_credentials") {
89
+ return {
90
+ cost: "0 (own credentials)",
91
+ notes: ["Your provider quota still applies."]
92
+ };
93
+ }
94
+ const display = pricing.displayText ?? "";
95
+ const rate = display.match(
96
+ /^([\d.,]+) Deepline credits(?: \/ \$[\d.,]+)? per (call|result|page)( \(estimate\))?$/
97
+ );
98
+ if (rate)
99
+ return {
100
+ cost: `${rate[1]}/${rate[2]}${rate[3] ?? ""}${pricing.summary || pricing.details?.length ? "*" : ""}`,
101
+ notes: []
102
+ };
103
+ if (pricing.creditsPerUnit === 0 && /^Free\b/.test(display)) {
104
+ return { cost: "0 (free)", notes: [] };
105
+ }
106
+ if (!display || display === "Pricing unavailable.")
107
+ return { cost: "unknown", notes: [] };
108
+ return {
109
+ cost: pricing.unit === "usage" ? "usage-based" : "variable",
110
+ notes: display ? [clipSummary(display)] : []
111
+ };
112
+ }
113
+ function searchRow(item) {
114
+ const { cost, notes } = pricingDisplay(item);
115
+ if (item.credentialStatus === "requires_connection") {
116
+ notes.push("Requires your credentials \u2014 not connected (connect to use).");
117
+ } else if (item.connected === false && item.credentialStatus === "managed") {
118
+ notes.push("Temporarily unavailable.");
119
+ }
120
+ return {
121
+ id: item.id,
122
+ kind: item.kind,
123
+ cost,
124
+ summary: clipSummary(item.description ?? ""),
125
+ notes
126
+ };
127
+ }
128
+ function renderSearchResults(result) {
129
+ if (result.results.length === 0)
130
+ return renderCommandEnvelopeText(result);
131
+ const rows = result.results.map(searchRow);
132
+ const kinds = new Set(rows.map((row) => row.kind));
133
+ const onlyTools = kinds.size === 1 && kinds.has("tool");
134
+ const columns = [
135
+ { header: onlyTools ? "TOOL" : "ID", value: (row) => row.id },
136
+ ...!onlyTools ? [{ header: "KIND", value: (row) => row.kind }] : [],
137
+ { header: "CREDITS", value: (row) => row.cost, alignment: "right" },
138
+ { header: "SUMMARY", value: (row) => row.summary }
139
+ ];
140
+ const render = result.render;
141
+ const title = render?.sections?.[0]?.title ?? `${result.total ?? rows.length} matches \u2014 showing ${rows.length}`;
142
+ const remaining = {
143
+ sections: render?.sections?.slice(1),
144
+ actions: render?.actions
145
+ };
146
+ const followUps = remaining.sections?.length || remaining.actions?.length ? `
147
+ ${renderCommandEnvelopeText({ render: remaining })}` : "";
148
+ const notes = rows.flatMap(
149
+ (row) => row.notes.map((note) => ` ${row.id}: ${note}`)
150
+ );
151
+ const details = [
152
+ ...notes.length ? ["Notes", ...notes, ""] : [],
153
+ ...rows.some((row) => row.cost.endsWith("*")) ? [
154
+ "* Additional pricing conditions apply; see full pricing before execution."
155
+ ] : [],
156
+ "Full descriptions and pricing: deepline tools describe <toolId> or search --json."
157
+ ].join("\n");
158
+ return `${title}
159
+
160
+ ${formatTextTable(rows, columns)}
161
+
162
+ ${details}
163
+ ${followUps}`;
164
+ }
165
+
39
166
  // src/cli/commands/search.ts
40
167
  var SEARCH_TYPES = [
41
168
  "tools",
@@ -112,7 +239,8 @@ async function runSearch(queryInput, options, types, exclude = []) {
112
239
  if (searchRef) rememberSearchRef(searchRef);
113
240
  pointAtDescribe(result);
114
241
  printCommandEnvelope(result, {
115
- json: options.json === true
242
+ json: options.json === true,
243
+ text: renderSearchResults(result)
116
244
  });
117
245
  return 0;
118
246
  }
@@ -166,6 +294,8 @@ Notes:
166
294
  materially improves ranking, especially for short queries.
167
295
  Search prints a readable result list by default, piped or not, and that is
168
296
  the recommended form. Pass --json only when a program parses the result.
297
+ Readable prices are Deepline credits with a per-row unit. Estimates and
298
+ observed historical charges are labelled; usage-based prices are not quotes.
169
299
 
170
300
  Examples:
171
301
  deepline search "find work email"
@@ -1,20 +1,21 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunk4ZARCCPTjs = require('./chunk-4ZARCCPT.js');
3
+ var _chunkGY2EEO2Yjs = require('./chunk-GY2EEO2Y.js');
4
4
 
5
5
 
6
- var _chunkUROXKPNDjs = require('./chunk-UROXKPND.js');
7
6
 
7
+ var _chunkU2N4CYT7js = require('./chunk-U2N4CYT7.js');
8
8
 
9
9
 
10
- var _chunkDM3SHV6Ujs = require('./chunk-DM3SHV6U.js');
10
+
11
+ var _chunkVDIHLKGGjs = require('./chunk-VDIHLKGG.js');
11
12
 
12
13
  // src/cli/search-ref.ts
13
14
  var _fs = require('fs');
14
15
  var _path = require('path');
15
16
  var SEARCH_REF_TTL_MS = 15 * 6e4;
16
17
  function lastSearchPath() {
17
- return _path.join.call(void 0, _chunkDM3SHV6Ujs.sdkCliStateDirPath.call(void 0, _chunkDM3SHV6Ujs.resolveConfig.call(void 0, ).baseUrl), "last-search.json");
18
+ return _path.join.call(void 0, _chunkVDIHLKGGjs.sdkCliStateDirPath.call(void 0, _chunkVDIHLKGGjs.resolveConfig.call(void 0, ).baseUrl), "last-search.json");
18
19
  }
19
20
  function rememberSearchRef(searchRef) {
20
21
  try {
@@ -36,6 +37,132 @@ function recentSearchRef() {
36
37
  }
37
38
  }
38
39
 
40
+ // src/cli/text-table.ts
41
+ var _table = require('table');
42
+ function formatTextTable(rows, columns) {
43
+ if (columns.length === 0) return "";
44
+ const data = [
45
+ columns.map((column) => column.header),
46
+ ...rows.map((row) => columns.map((column) => column.value(row)))
47
+ ];
48
+ return _table.table.call(void 0, data, {
49
+ border: _table.getBorderCharacters.call(void 0, "void"),
50
+ drawHorizontalLine: () => false,
51
+ columnDefault: { paddingLeft: 0, paddingRight: 2 },
52
+ columns: columns.map((column, index) => ({
53
+ alignment: _nullishCoalesce(column.alignment, () => ( "left")),
54
+ // table@6's word wrapper counts UTF-16 characters instead of display
55
+ // cells. Use its display-width-safe character wrapper for Unicode;
56
+ // unbounded identifiers never need wrapping in the first place.
57
+ wrapWord: column.width !== void 0 && data.every((row) => new RegExp("^\\p{ASCII}*$", "u").test(row[index])),
58
+ ...column.width === void 0 ? {} : { width: column.width }
59
+ }))
60
+ }).split("\n").map((line) => line.trimEnd()).join("\n").trimEnd();
61
+ }
62
+
63
+ // src/cli/search-output.ts
64
+ function clipSummary(value) {
65
+ const characters = Array.from(value.replace(/\s+/gu, " ").trim());
66
+ return characters.length <= 78 ? characters.join("") : `${characters.slice(0, 77).join("")}\u2026`;
67
+ }
68
+ function pricingDisplay(item) {
69
+ const pricing = item.pricing;
70
+ if (!pricing)
71
+ return { cost: item.kind === "tool" ? "unknown" : "\u2014", notes: [] };
72
+ const range = pricing.estimatedRange;
73
+ if (range && item.billingSource !== "own_provider_credentials") {
74
+ return {
75
+ cost: `${range.minCreditsPerUnit}\u2013${range.maxCreditsPerUnit}/${pricing.unit} (estimate)`,
76
+ notes: [range.scope]
77
+ };
78
+ }
79
+ const observed = pricing.observedReference;
80
+ if (observed) {
81
+ return {
82
+ cost: `${observed.creditsPerCall}/call (observed)`,
83
+ notes: [
84
+ `Observed reference: ${observed.sampleSize} call(s), ${observed.observedAt}; ${observed.inputMode} Not a quote.`
85
+ ]
86
+ };
87
+ }
88
+ if (item.billingSource === "own_provider_credentials") {
89
+ return {
90
+ cost: "0 (own credentials)",
91
+ notes: ["Your provider quota still applies."]
92
+ };
93
+ }
94
+ const display = _nullishCoalesce(pricing.displayText, () => ( ""));
95
+ const rate = display.match(
96
+ /^([\d.,]+) Deepline credits(?: \/ \$[\d.,]+)? per (call|result|page)( \(estimate\))?$/
97
+ );
98
+ if (rate)
99
+ return {
100
+ cost: `${rate[1]}/${rate[2]}${_nullishCoalesce(rate[3], () => ( ""))}${pricing.summary || _optionalChain([pricing, 'access', _ => _.details, 'optionalAccess', _2 => _2.length]) ? "*" : ""}`,
101
+ notes: []
102
+ };
103
+ if (pricing.creditsPerUnit === 0 && /^Free\b/.test(display)) {
104
+ return { cost: "0 (free)", notes: [] };
105
+ }
106
+ if (!display || display === "Pricing unavailable.")
107
+ return { cost: "unknown", notes: [] };
108
+ return {
109
+ cost: pricing.unit === "usage" ? "usage-based" : "variable",
110
+ notes: display ? [clipSummary(display)] : []
111
+ };
112
+ }
113
+ function searchRow(item) {
114
+ const { cost, notes } = pricingDisplay(item);
115
+ if (item.credentialStatus === "requires_connection") {
116
+ notes.push("Requires your credentials \u2014 not connected (connect to use).");
117
+ } else if (item.connected === false && item.credentialStatus === "managed") {
118
+ notes.push("Temporarily unavailable.");
119
+ }
120
+ return {
121
+ id: item.id,
122
+ kind: item.kind,
123
+ cost,
124
+ summary: clipSummary(_nullishCoalesce(item.description, () => ( ""))),
125
+ notes
126
+ };
127
+ }
128
+ function renderSearchResults(result) {
129
+ if (result.results.length === 0)
130
+ return _chunkU2N4CYT7js.renderCommandEnvelopeText.call(void 0, result);
131
+ const rows = result.results.map(searchRow);
132
+ const kinds = new Set(rows.map((row) => row.kind));
133
+ const onlyTools = kinds.size === 1 && kinds.has("tool");
134
+ const columns = [
135
+ { header: onlyTools ? "TOOL" : "ID", value: (row) => row.id },
136
+ ...!onlyTools ? [{ header: "KIND", value: (row) => row.kind }] : [],
137
+ { header: "CREDITS", value: (row) => row.cost, alignment: "right" },
138
+ { header: "SUMMARY", value: (row) => row.summary }
139
+ ];
140
+ const render = result.render;
141
+ const title = _nullishCoalesce(_optionalChain([render, 'optionalAccess', _3 => _3.sections, 'optionalAccess', _4 => _4[0], 'optionalAccess', _5 => _5.title]), () => ( `${_nullishCoalesce(result.total, () => ( rows.length))} matches \u2014 showing ${rows.length}`));
142
+ const remaining = {
143
+ sections: _optionalChain([render, 'optionalAccess', _6 => _6.sections, 'optionalAccess', _7 => _7.slice, 'call', _8 => _8(1)]),
144
+ actions: _optionalChain([render, 'optionalAccess', _9 => _9.actions])
145
+ };
146
+ const followUps = _optionalChain([remaining, 'access', _10 => _10.sections, 'optionalAccess', _11 => _11.length]) || _optionalChain([remaining, 'access', _12 => _12.actions, 'optionalAccess', _13 => _13.length]) ? `
147
+ ${_chunkU2N4CYT7js.renderCommandEnvelopeText.call(void 0, { render: remaining })}` : "";
148
+ const notes = rows.flatMap(
149
+ (row) => row.notes.map((note) => ` ${row.id}: ${note}`)
150
+ );
151
+ const details = [
152
+ ...notes.length ? ["Notes", ...notes, ""] : [],
153
+ ...rows.some((row) => row.cost.endsWith("*")) ? [
154
+ "* Additional pricing conditions apply; see full pricing before execution."
155
+ ] : [],
156
+ "Full descriptions and pricing: deepline tools describe <toolId> or search --json."
157
+ ].join("\n");
158
+ return `${title}
159
+
160
+ ${formatTextTable(rows, columns)}
161
+
162
+ ${details}
163
+ ${followUps}`;
164
+ }
165
+
39
166
  // src/cli/commands/search.ts
40
167
  var SEARCH_TYPES = [
41
168
  "tools",
@@ -78,8 +205,8 @@ function addSearchOptions(command) {
78
205
  function pointAtDescribe(result) {
79
206
  const old = /`deepline (tools|plays) describe [^`]*`/;
80
207
  const render = result.render;
81
- for (const section of _nullishCoalesce(_optionalChain([render, 'optionalAccess', _ => _.sections]), () => ( []))) {
82
- if (!_optionalChain([section, 'access', _2 => _2.lines, 'optionalAccess', _3 => _3.some, 'call', _4 => _4((line) => old.test(line))])) continue;
208
+ for (const section of _nullishCoalesce(_optionalChain([render, 'optionalAccess', _14 => _14.sections]), () => ( []))) {
209
+ if (!_optionalChain([section, 'access', _15 => _15.lines, 'optionalAccess', _16 => _16.some, 'call', _17 => _17((line) => old.test(line))])) continue;
83
210
  section.lines = [
84
211
  "Run `deepline describe <id>` before executing a tool or running a play.",
85
212
  ...section.lines.filter((line) => !old.test(line))
@@ -91,13 +218,13 @@ function pointAtDescribe(result) {
91
218
  }
92
219
  }
93
220
  async function runSearch(queryInput, options, types, exclude = []) {
94
- const query = _nullishCoalesce(_optionalChain([queryInput, 'optionalAccess', _5 => _5.trim, 'call', _6 => _6()]), () => ( ""));
221
+ const query = _nullishCoalesce(_optionalChain([queryInput, 'optionalAccess', _18 => _18.trim, 'call', _19 => _19()]), () => ( ""));
95
222
  const searchTerms = _nullishCoalesce(options.searchTerms, () => ( options.search_terms));
96
- if (!query && !_optionalChain([options, 'access', _7 => _7.categories, 'optionalAccess', _8 => _8.trim, 'call', _9 => _9()]) && !_optionalChain([searchTerms, 'optionalAccess', _10 => _10.trim, 'call', _11 => _11()])) {
223
+ if (!query && !_optionalChain([options, 'access', _20 => _20.categories, 'optionalAccess', _21 => _21.trim, 'call', _22 => _22()]) && !_optionalChain([searchTerms, 'optionalAccess', _23 => _23.trim, 'call', _24 => _24()])) {
97
224
  console.error(USAGE);
98
225
  return 1;
99
226
  }
100
- const { search_ref: searchRef, ...result } = await new (0, _chunk4ZARCCPTjs.DeeplineClient)().search({
227
+ const { search_ref: searchRef, ...result } = await new (0, _chunkGY2EEO2Yjs.DeeplineClient)().search({
101
228
  query,
102
229
  types,
103
230
  exclude,
@@ -111,8 +238,9 @@ async function runSearch(queryInput, options, types, exclude = []) {
111
238
  });
112
239
  if (searchRef) rememberSearchRef(searchRef);
113
240
  pointAtDescribe(result);
114
- _chunkUROXKPNDjs.printCommandEnvelope.call(void 0, result, {
115
- json: options.json === true
241
+ _chunkU2N4CYT7js.printCommandEnvelope.call(void 0, result, {
242
+ json: options.json === true,
243
+ text: renderSearchResults(result)
116
244
  });
117
245
  return 0;
118
246
  }
@@ -166,6 +294,8 @@ Notes:
166
294
  materially improves ranking, especially for short queries.
167
295
  Search prints a readable result list by default, piped or not, and that is
168
296
  the recommended form. Pass --json only when a program parses the result.
297
+ Readable prices are Deepline credits with a per-row unit. Estimates and
298
+ observed historical charges are labelled; usage-based prices are not quotes.
169
299
 
170
300
  Examples:
171
301
  deepline search "find work email"
@@ -1,17 +1,17 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunk7RCJDAJXjs = require('./chunk-7RCJDAJX.js');
4
+ var _chunkKHZQFFOQjs = require('./chunk-KHZQFFOQ.js');
5
5
 
6
6
 
7
7
 
8
- var _chunkCISKBOXDjs = require('./chunk-CISKBOXD.js');
8
+ var _chunkJ2E5R2VHjs = require('./chunk-J2E5R2VH.js');
9
9
 
10
10
 
11
- var _chunkUROXKPNDjs = require('./chunk-UROXKPND.js');
11
+ var _chunkU2N4CYT7js = require('./chunk-U2N4CYT7.js');
12
12
 
13
13
 
14
- var _chunkDM3SHV6Ujs = require('./chunk-DM3SHV6U.js');
14
+ var _chunkVDIHLKGGjs = require('./chunk-VDIHLKGG.js');
15
15
 
16
16
  // src/cli/commands/update.ts
17
17
  var _child_process = require('child_process');
@@ -489,7 +489,7 @@ function normalizedNpmPrefix(value) {
489
489
  }
490
490
  function resolveNpmGlobalPrefix(env) {
491
491
  try {
492
- const plan = _chunkCISKBOXDjs.resolveShellSpawn.call(void 0, "npm", ["prefix", "-g"], process.platform, env);
492
+ const plan = _chunkJ2E5R2VHjs.resolveShellSpawn.call(void 0, "npm", ["prefix", "-g"], process.platform, env);
493
493
  const result = _child_process.spawnSync.call(void 0, plan.command, plan.args, {
494
494
  encoding: "utf8",
495
495
  env,
@@ -545,8 +545,8 @@ function resolveUpdatePlan(options = {}) {
545
545
  const npmGlobalPrefix = options.npmGlobalPrefix !== void 0 ? options.npmGlobalPrefix : resolveNpmGlobalPrefix(env);
546
546
  const hasVerifiedNpmOwnership = inferredInstallPrefix !== null && normalizedNpmPrefix(inferredInstallPrefix) === normalizedNpmPrefix(npmGlobalPrefix);
547
547
  const installPrefix = options.requireVerifiedNpmOwnership ? hasVerifiedNpmOwnership ? inferredInstallPrefix : null : inferredInstallPrefix;
548
- const npmVersion = options.npmVersion === void 0 ? _chunk7RCJDAJXjs.readNpmVersion.call(void 0, env) : options.npmVersion;
549
- const npmGlobalInstallFlags = _chunk7RCJDAJXjs.npmSupportsAllowScripts.call(void 0, npmVersion) ? [...NPM_SDK_INSTALL_COMMON_FLAGS, "--allow-scripts=esbuild"] : NPM_SDK_INSTALL_COMMON_FLAGS;
548
+ const npmVersion = options.npmVersion === void 0 ? _chunkKHZQFFOQjs.readNpmVersion.call(void 0, env) : options.npmVersion;
549
+ const npmGlobalInstallFlags = _chunkKHZQFFOQjs.npmSupportsAllowScripts.call(void 0, npmVersion) ? [...NPM_SDK_INSTALL_COMMON_FLAGS, "--allow-scripts=esbuild"] : NPM_SDK_INSTALL_COMMON_FLAGS;
550
550
  const args = installPrefix ? [
551
551
  "install",
552
552
  "-g",
@@ -556,7 +556,7 @@ function resolveUpdatePlan(options = {}) {
556
556
  packageSpec
557
557
  ] : ["install", "-g", ...npmGlobalInstallFlags, packageSpec];
558
558
  const fallbackRegistryUrl = options.npmFallbackRegistryUrl !== void 0 ? options.npmFallbackRegistryUrl : publicNpmFallbackRegistryUrl(
559
- _optionalChain([env, 'access', _18 => _18.DEEPLINE_HOST_URL, 'optionalAccess', _19 => _19.trim, 'call', _20 => _20()]) || _chunkDM3SHV6Ujs.autoDetectBaseUrl.call(void 0, )
559
+ _optionalChain([env, 'access', _18 => _18.DEEPLINE_HOST_URL, 'optionalAccess', _19 => _19.trim, 'call', _20 => _20()]) || _chunkVDIHLKGGjs.autoDetectBaseUrl.call(void 0, )
560
560
  );
561
561
  return {
562
562
  kind: "npm-global",
@@ -703,7 +703,7 @@ function sidecarInstallFailure(versionDir) {
703
703
  function runCommand(command, args, env = process.env) {
704
704
  return new Promise((resolveResult) => {
705
705
  let output = "";
706
- const plan = _chunkCISKBOXDjs.resolveShellSpawn.call(void 0, command, args, process.platform, env);
706
+ const plan = _chunkJ2E5R2VHjs.resolveShellSpawn.call(void 0, command, args, process.platform, env);
707
707
  const child = _child_process.spawn.call(void 0, plan.command, plan.args, {
708
708
  stdio: ["inherit", "pipe", "pipe"],
709
709
  shell: plan.shell,
@@ -1079,14 +1079,14 @@ async function publishedVersionSupportsPin(version, fallbackRegistryUrl) {
1079
1079
  throw _nullishCoalesce(lastError, () => ( new Error("No npm registry was available")));
1080
1080
  }
1081
1081
  async function runUpdateCommand(options, dependencies = {}) {
1082
- const detectBaseUrl = _nullishCoalesce(dependencies.detectBaseUrl, () => ( _chunkDM3SHV6Ujs.autoDetectBaseUrl));
1082
+ const detectBaseUrl = _nullishCoalesce(dependencies.detectBaseUrl, () => ( _chunkVDIHLKGGjs.autoDetectBaseUrl));
1083
1083
  const resolvePlan = _nullishCoalesce(dependencies.resolvePlan, () => ( resolveUpdatePlan));
1084
1084
  const runPlan = _nullishCoalesce(dependencies.runPlan, () => ( runUpdatePlan));
1085
1085
  const syncSkills = _nullishCoalesce(dependencies.syncSkillsIfNeeded, () => ( (async () => {
1086
1086
  const originalWrite = process.stdout.write.bind(process.stdout);
1087
1087
  process.stdout.write = (() => true);
1088
1088
  try {
1089
- const exitCode = await _chunkCISKBOXDjs.runSkillsCommand.call(void 0, { json: true });
1089
+ const exitCode = await _chunkJ2E5R2VHjs.runSkillsCommand.call(void 0, { json: true });
1090
1090
  if (exitCode !== 0) {
1091
1091
  throw new Error(
1092
1092
  `Deepline skills update failed with exit ${exitCode}.`
@@ -1157,11 +1157,11 @@ async function runUpdateCommand(options, dependencies = {}) {
1157
1157
  ]
1158
1158
  };
1159
1159
  if (options.json && !options.executeWithJson) {
1160
- _chunkUROXKPNDjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: true });
1160
+ _chunkU2N4CYT7js.printCommandEnvelope.call(void 0, { ...plan, render }, { json: true });
1161
1161
  return 0;
1162
1162
  }
1163
1163
  if (options.printCommand) {
1164
- _chunkUROXKPNDjs.printCommandEnvelope.call(void 0,
1164
+ _chunkU2N4CYT7js.printCommandEnvelope.call(void 0,
1165
1165
  {
1166
1166
  ...plan,
1167
1167
  render: {
@@ -1174,7 +1174,7 @@ async function runUpdateCommand(options, dependencies = {}) {
1174
1174
  return 0;
1175
1175
  }
1176
1176
  if (plan.kind === "source" || plan.kind === "homebrew") {
1177
- _chunkUROXKPNDjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: false });
1177
+ _chunkU2N4CYT7js.printCommandEnvelope.call(void 0, { ...plan, render }, { json: false });
1178
1178
  return 0;
1179
1179
  }
1180
1180
  stderr.write(`Updating Deepline SDK/CLI with: ${plan.manualCommand}
@@ -1204,7 +1204,7 @@ To retry with full installer output, run: deepline skills --json
1204
1204
  );
1205
1205
  }
1206
1206
  if (options.executeWithJson && options.json) {
1207
- _chunkUROXKPNDjs.printCommandEnvelope.call(void 0,
1207
+ _chunkU2N4CYT7js.printCommandEnvelope.call(void 0,
1208
1208
  {
1209
1209
  ok: true,
1210
1210
  pinnedVersion
@@ -10,11 +10,11 @@ import {
10
10
  } from "./chunk-EDWJY6T4.mjs";
11
11
  import {
12
12
  registerDeprecatedSearchCommand
13
- } from "./chunk-D6GD5AVN.mjs";
13
+ } from "./chunk-3RZJ3GEG.mjs";
14
14
  import {
15
15
  handleDeploymentGet,
16
16
  handleDeploymentsList
17
- } from "./chunk-REP2MYBI.mjs";
17
+ } from "./chunk-ERU2OR6F.mjs";
18
18
  import {
19
19
  PLAY_BOOTSTRAP_COMPANY_PROVIDER_CATEGORY,
20
20
  PLAY_BOOTSTRAP_OUTPUT_FIELD_BY_FINDER,
@@ -39,7 +39,7 @@ import {
39
39
  normalizeRunEventOperationRequest,
40
40
  parseLogLevel,
41
41
  playInputExampleArgs
42
- } from "./chunk-QZAP5VOS.mjs";
42
+ } from "./chunk-OZGU7P2S.mjs";
43
43
  import {
44
44
  CSV_DATA_INPUT_KEY,
45
45
  buildNamedPlayRunRequest,
@@ -71,10 +71,10 @@ import {
71
71
  printJson,
72
72
  printJsonError,
73
73
  renderCommandEnvelopeText
74
- } from "./chunk-F45425TB.mjs";
74
+ } from "./chunk-EROOAI5G.mjs";
75
75
  import {
76
76
  fetchWithDeploymentProtection
77
- } from "./chunk-CCRQ2VGJ.mjs";
77
+ } from "./chunk-FK7PW6BP.mjs";
78
78
  import {
79
79
  PLAY_DEFAULT_EXPORT,
80
80
  extractDefinedPlayName,
@@ -82,7 +82,7 @@ import {
82
82
  listPlayFileExports,
83
83
  parsePlaySourceForAnalysis,
84
84
  resolveEnabledExecutionProfile
85
- } from "./chunk-YIY74KUF.mjs";
85
+ } from "./chunk-EV4QJE4J.mjs";
86
86
  import {
87
87
  DeeplineError
88
88
  } from "./chunk-NXGCO4JB.mjs";
@@ -5180,10 +5180,13 @@ function generateProviderSourceBlock(input) {
5180
5180
  input: ${inputName},
5181
5181
  description: ${jsString(`Seed ${input.entity} rows from ${input.provider}.`)},
5182
5182
  });
5183
- // extractedLists.${getter}.get() returns a dataset handle of provider-shaped rows. Do not assume canonical fields;
5183
+ // extractedLists.${getter}.get() returns provider-shaped rows. Do not assume canonical fields;
5184
5184
  // inspect source_${input.index}.extractedLists.${getter}.keys or the provider output schema, then map explicitly below.
5185
- const sourceRowsDataset_${input.index} = ${accessorExpression(`source_${input.index}.extractedLists`, getter)}.get();
5186
- const sourceRows_${input.index} = (await sourceRowsDataset_${input.index}.peek(limit)) as ${input.collectionType}[];`;
5185
+ const sourceList_${input.index} = ${accessorExpression(`source_${input.index}.extractedLists`, getter)}.get();
5186
+ // Legacy admitted Plays use a dataset getter; the new contract returns an ordinary array.
5187
+ const sourceRows_${input.index} = (Array.isArray(sourceList_${input.index})
5188
+ ? sourceList_${input.index}.slice(0, limit)
5189
+ : await sourceList_${input.index}.peek(limit)) as ${input.collectionType}[];`;
5187
5190
  }
5188
5191
  function generateProviderSourceRowsBlock(input) {
5189
5192
  const blocks = input.source.values.map(
@@ -15675,13 +15678,14 @@ Active runs: ${next.running}`
15675
15678
  ...offset !== void 0 ? { offset } : {}
15676
15679
  });
15677
15680
  const runs = page.runs.map((run) => ({
15681
+ id: run.workflowId,
15678
15682
  runId: run.workflowId,
15679
15683
  // `workflowId` is the legacy SDK name for the same public Deepline run
15680
15684
  // identity. Keep it during the compatibility window, but never label the
15681
15685
  // duplicate as a Temporal/runtime id.
15682
15686
  workflowId: run.workflowId,
15683
15687
  // Retain the runtime identifier for existing JSON consumers. It is not a
15684
- // stable Deepline run id; `runId` above is the canonical public id.
15688
+ // stable Deepline run id; `id` above is the canonical public id.
15685
15689
  temporalRunId: run.runId ?? null,
15686
15690
  parentRunId: run.parentRunId ?? null,
15687
15691
  rootRunId: run.rootRunId ?? null,
@@ -15702,12 +15706,12 @@ Active runs: ${next.running}`
15702
15706
  playName ? `No runs found for ${playName}.` : `No runs found for status ${statusFilter}.`
15703
15707
  ] : runs.map((run) => {
15704
15708
  const lines2 = [
15705
- `${run.runId} ${run.status}`,
15709
+ `${run.id} ${run.status}`,
15706
15710
  ` created: ${formatTimestamp(run.createdAt)}`,
15707
15711
  ` started: ${formatTimestamp(run.startedAt)}`,
15708
15712
  ` finished: ${formatTimestamp(run.finishedAt)}`,
15709
15713
  ` credits: ${typeof run.billingTotalCredits === "number" && Number.isFinite(run.billingTotalCredits) ? formatCreditAmount2(run.billingTotalCredits) : "\u2014"}`,
15710
- ` inspect: deepline runs get ${run.runId} --json`
15714
+ ` inspect: deepline runs get ${run.id} --json`
15711
15715
  ];
15712
15716
  if (run.parentRunId) lines2.push(` parent: ${run.parentRunId}`);
15713
15717
  if (run.rootRunId) lines2.push(` root: ${run.rootRunId}`);
@@ -15744,7 +15748,7 @@ Active runs: ${next.running}`
15744
15748
  ...page.hasMore !== void 0 ? { has_more: page.hasMore, is_truncated: page.hasMore } : {},
15745
15749
  next: {
15746
15750
  page: nextPage,
15747
- get: runs[0]?.runId ? `deepline runs get ${runs[0].runId} --json` : null
15751
+ get: runs[0]?.id ? `deepline runs get ${runs[0].id} --json` : null
15748
15752
  },
15749
15753
  render: { sections: [{ title: "runs", lines }] }
15750
15754
  },
@@ -18146,7 +18150,7 @@ Examples:
18146
18150
  process.exitCode = await ownView();
18147
18151
  return;
18148
18152
  }
18149
- const { describeAnything } = await import("./describe-KJWOHMKC.mjs");
18153
+ const { describeAnything } = await import("./describe-XWOWAR32.mjs");
18150
18154
  process.exitCode = await describeAnything(
18151
18155
  name,
18152
18156
  {
@@ -18494,6 +18498,9 @@ Notes:
18494
18498
  Use the exact qualified Play reference, such as workspace/my-play or prebuilt/my-play.
18495
18499
  --offset requires --play; narrow status-only lists with a Play reference to paginate.
18496
18500
  Common statuses include running, completed, failed, and stopped.
18501
+ JSON runs[].id is the public ID accepted by runs get, watch, export, and stop.
18502
+ runId and workflowId are compatibility aliases; temporalRunId is not the public ID.
18503
+ Use the ID returned by plays run for your execution, not the latest inventory entry.
18497
18504
 
18498
18505
  Examples:
18499
18506
  deepline runs list --play my-play
@@ -49,7 +49,7 @@ var SDK_RELEASE = {
49
49
  // getters keep their established compatibility behavior.
50
50
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
51
51
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
52
- version: "0.3.327",
52
+ version: "0.3.329",
53
53
  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.",
54
54
  packageCapabilities: {
55
55
  updatePreferences: 1
@@ -3,7 +3,7 @@ import {
3
3
  detectAgentRuntime,
4
4
  resolveCliCommandContext,
5
5
  resolveConfig
6
- } from "./chunk-CCRQ2VGJ.mjs";
6
+ } from "./chunk-FK7PW6BP.mjs";
7
7
  import {
8
8
  DeeplineError
9
9
  } from "./chunk-NXGCO4JB.mjs";
@@ -2,10 +2,10 @@ import {
2
2
  getAuthedHttpClient,
3
3
  openInBrowser,
4
4
  printCommandEnvelope
5
- } from "./chunk-F45425TB.mjs";
5
+ } from "./chunk-EROOAI5G.mjs";
6
6
  import {
7
7
  resolveBaseUrlOnly
8
- } from "./chunk-CCRQ2VGJ.mjs";
8
+ } from "./chunk-FK7PW6BP.mjs";
9
9
 
10
10
  // src/cli/commands/git.ts
11
11
  function shellQuote(value) {
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-H7HIDGZ7.mjs";
4
4
  import {
5
5
  PLAY_AUTHORING_CONTRACT_EDITION
6
- } from "./chunk-KP7W5NO6.mjs";
6
+ } from "./chunk-NTVTZAVZ.mjs";
7
7
  import {
8
8
  PLAY_ARTIFACT_KINDS,
9
9
  PLAY_RUNTIME_BACKENDS,
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-DLIRSHV6.mjs";
5
5
  import {
6
6
  SDK_RELEASE
7
- } from "./chunk-G5774EFF.mjs";
7
+ } from "./chunk-GCNER3HV.mjs";
8
8
  import {
9
9
  DeeplineError,
10
10
  TOOL_EXECUTION_ERROR_SCHEMA_VERSION,