deepline 0.3.426 → 0.3.428

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 (114) hide show
  1. package/README.md +1 -1
  2. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  3. package/dist/bundling-sources/sdk/src/types.ts +14 -1
  4. package/dist/bundling-sources/shared_libs/observability/scheduled-jobs.json +18 -0
  5. package/dist/cli/auth-JNCOOTY4.js +40 -0
  6. package/dist/cli/{auth-EF74BKVS.mjs → auth-ZABHDJT3.mjs} +4 -4
  7. package/dist/cli/{billing-BQBNJIGN.mjs → billing-AKHWV3MV.mjs} +4 -4
  8. package/dist/cli/{billing-3T7GWISU.js → billing-FUG6Q7SL.js} +73 -73
  9. package/dist/cli/{chunk-Y3ZD6O7L.mjs → chunk-2LLDHR5C.mjs} +1 -1
  10. package/dist/cli/{chunk-ZN3KC6EG.mjs → chunk-3J7FZHJA.mjs} +1 -1
  11. package/dist/cli/{chunk-ZPJFPIZK.js → chunk-3YUXZMTE.js} +8 -8
  12. package/dist/cli/{chunk-FVOGWBXP.js → chunk-4QNMO7DK.js} +2 -2
  13. package/dist/cli/{chunk-F2RDSZZL.mjs → chunk-5FJG4APE.mjs} +5 -5
  14. package/dist/cli/{chunk-7LJ6DZO3.mjs → chunk-6AX4NTKV.mjs} +2 -2
  15. package/dist/cli/{chunk-YZBWWEOD.js → chunk-6E4IYB3I.js} +6 -6
  16. package/dist/cli/{chunk-7427NYAV.js → chunk-6S6WXN63.js} +1 -1
  17. package/dist/cli/{chunk-FBYVOFTW.js → chunk-ACGNIHLS.js} +20 -20
  18. package/dist/cli/{chunk-XLBBXOMK.mjs → chunk-D33GOTFE.mjs} +4 -4
  19. package/dist/cli/{chunk-EIPYAKJV.js → chunk-D6UO4WN3.js} +79 -79
  20. package/dist/cli/{chunk-PII5HCJU.js → chunk-DLCQIK5H.js} +10 -10
  21. package/dist/cli/{chunk-Q3LVBOPT.js → chunk-EPHQBWED.js} +26 -26
  22. package/dist/cli/{chunk-LRFTT4ZE.js → chunk-EU2VT52L.js} +52 -52
  23. package/dist/cli/{chunk-EV7H3IAC.js → chunk-F5HARRY4.js} +35 -35
  24. package/dist/cli/{chunk-C25Q4EGZ.mjs → chunk-FHKQTCC4.mjs} +1 -1
  25. package/dist/cli/{chunk-ICSVWRQI.mjs → chunk-IQUHUR72.mjs} +1 -1
  26. package/dist/cli/{chunk-3UBVVPWW.js → chunk-JFXX4SQV.js} +12 -9
  27. package/dist/cli/{chunk-INFLI36H.js → chunk-K4EHBVYV.js} +13 -6
  28. package/dist/cli/{chunk-IBFRBBIM.mjs → chunk-MBHTTATW.mjs} +2 -2
  29. package/dist/cli/{chunk-VBJASB4J.js → chunk-MCGTLMDV.js} +2 -2
  30. package/dist/cli/{chunk-3JWMZDL4.mjs → chunk-NNZFHUV3.mjs} +3 -3
  31. package/dist/cli/{chunk-H3NAN2QL.js → chunk-PA6TQR75.js} +4 -4
  32. package/dist/cli/{chunk-R22T3X7I.mjs → chunk-PQY6VEEL.mjs} +2 -2
  33. package/dist/cli/{chunk-PPSMQYSP.js → chunk-QATVL6X3.js} +16 -16
  34. package/dist/cli/{chunk-EER67G2B.mjs → chunk-R4MGS7YD.mjs} +13 -6
  35. package/dist/cli/{chunk-WER6KBH7.mjs → chunk-S5M6ZEKW.mjs} +3 -3
  36. package/dist/cli/{chunk-73F74XWD.mjs → chunk-SAY6IYJA.mjs} +8 -8
  37. package/dist/cli/{chunk-BXQY2CAK.mjs → chunk-TZZ73X6X.mjs} +2 -2
  38. package/dist/cli/{chunk-HDEGV4JM.js → chunk-UJ3HL3W2.js} +50 -50
  39. package/dist/cli/{chunk-SYSC2SPF.mjs → chunk-XM52HE7B.mjs} +7 -4
  40. package/dist/cli/{chunk-EVQUOLTK.js → chunk-XQY5BDGY.js} +6 -6
  41. package/dist/cli/{chunk-2AYQQDHR.mjs → chunk-Z7URKNIZ.mjs} +1 -1
  42. package/dist/cli/{chunk-L5QTJM3U.mjs → chunk-ZRZC6WWR.mjs} +1 -1
  43. package/dist/cli/command-docs.js +2 -2
  44. package/dist/cli/command-docs.mjs +1 -1
  45. package/dist/cli/{csv-A4ZW3GOB.js → csv-A5GRNUFM.js} +12 -12
  46. package/dist/cli/{csv-ZWNG35F3.mjs → csv-IMRHD3VV.mjs} +3 -3
  47. package/dist/cli/{db-AJNLOEM3.js → db-6W2XVIWB.js} +25 -25
  48. package/dist/cli/{db-Q3KLFIVB.mjs → db-XKGAEZPP.mjs} +4 -4
  49. package/dist/cli/{describe-45QZU2XW.mjs → describe-226ZOVOL.mjs} +12 -12
  50. package/dist/cli/{describe-YBOX5MTJ.js → describe-QVHO24JP.js} +16 -16
  51. package/dist/cli/describe-core.d.mts +1 -1
  52. package/dist/cli/describe-core.d.ts +1 -1
  53. package/dist/cli/{executions-J7NB54MM.mjs → executions-35YPXQ3R.mjs} +4 -4
  54. package/dist/cli/{executions-M65OEOYY.js → executions-6JTC3A4Z.js} +6 -6
  55. package/dist/cli/{feedback-TWXPIZPQ.mjs → feedback-M6WLA3CD.mjs} +3 -3
  56. package/dist/cli/{feedback-KHNZAZZI.js → feedback-UP2MK5EU.js} +7 -7
  57. package/dist/cli/getting-started.d.mts +3 -1
  58. package/dist/cli/getting-started.d.ts +3 -1
  59. package/dist/cli/{git-M7VKO5C5.mjs → git-7EPDO7IK.mjs} +4 -4
  60. package/dist/cli/git-BZOIQ4FW.js +24 -0
  61. package/dist/cli/index.js +135 -135
  62. package/dist/cli/index.mjs +37 -37
  63. package/dist/cli/{legacy-noops-A2GPOOBO.js → legacy-noops-CSHWJ5PI.js} +7 -7
  64. package/dist/cli/{legacy-noops-IV2VKB2O.mjs → legacy-noops-PUN3XKGB.mjs} +4 -4
  65. package/dist/cli/{monitors-ZK6XBRE6.js → monitors-I4LEOVPV.js} +84 -84
  66. package/dist/cli/{monitors-OUYNK3RY.mjs → monitors-OADIHUZT.mjs} +4 -4
  67. package/dist/cli/{org-VWPBNSAL.js → org-EVRPU7YU.js} +64 -64
  68. package/dist/cli/{org-JEMWWQS3.mjs → org-XCQD6GYA.mjs} +4 -4
  69. package/dist/cli/{play-PXLDWIML.js → play-AOSMIPDJ.js} +298 -298
  70. package/dist/cli/{play-SO6OZ2MZ.mjs → play-FFGDT6V3.mjs} +11 -11
  71. package/dist/cli/{providers-VBIX2VQF.js → providers-LZ7HI3ZS.js} +7 -7
  72. package/dist/cli/{providers-W7TRWXTI.mjs → providers-NMK7TKSJ.mjs} +4 -4
  73. package/dist/cli/{quickstart-A7YA7YYR.mjs → quickstart-4DGYWMTT.mjs} +3 -3
  74. package/dist/cli/{quickstart-JCCNKGCU.js → quickstart-IKNDABRN.js} +5 -5
  75. package/dist/cli/{search-S7AD2TFQ.mjs → search-4H4Y4HWQ.mjs} +5 -5
  76. package/dist/cli/search-DFZO2D3W.js +30 -0
  77. package/dist/cli/{secrets-YCRRP7PI.mjs → secrets-BFOXOQRA.mjs} +4 -4
  78. package/dist/cli/{secrets-743RLCRL.js → secrets-VUNWQ6EH.js} +13 -13
  79. package/dist/cli/{sessions-CID2GYQ5.js → sessions-LEQFHXIK.js} +5 -5
  80. package/dist/cli/{sessions-LE3JFFFT.mjs → sessions-UOE3SVYP.mjs} +4 -4
  81. package/dist/cli/{settings-EZ6QWGRY.js → settings-OS24T5VT.js} +75 -75
  82. package/dist/cli/{settings-Q65PEMXW.mjs → settings-QHEY5BCS.mjs} +8 -8
  83. package/dist/cli/{setup-K4JUX4AF.js → setup-LC3QKIC7.js} +42 -42
  84. package/dist/cli/{setup-ZMSHXLUT.mjs → setup-R7LZOV43.mjs} +7 -7
  85. package/dist/cli/skills-CX45Z2JV.js +29 -0
  86. package/dist/cli/{skills-XZZVGLKW.mjs → skills-YRGVE2TH.mjs} +5 -5
  87. package/dist/cli/tools-2X5ZZDT3.js +44 -0
  88. package/dist/cli/{tools-G2P6C6TQ.mjs → tools-FJ4O7OFR.mjs} +12 -12
  89. package/dist/cli/{update-OTBKBTOU.mjs → update-ISWK43K2.mjs} +7 -7
  90. package/dist/cli/update-OSTL25HV.js +31 -0
  91. package/dist/cli/{workflow-TJMPLSO2.mjs → workflow-N4CTCDSS.mjs} +5 -5
  92. package/dist/cli/{workflow-R5DS6PNY.js → workflow-U2U5NA4B.js} +15 -15
  93. package/dist/{client-DH-fmT69.d.ts → client---03YXeB.d.ts} +9 -0
  94. package/dist/{client-BcfFWD4Z.d.mts → client-ChLTwy9x.d.mts} +9 -0
  95. package/dist/index.d.mts +2 -2
  96. package/dist/index.d.ts +2 -2
  97. package/dist/index.js +6 -6
  98. package/dist/index.mjs +3 -3
  99. package/dist/install-integrity.json +82 -82
  100. package/dist/plays/play-description.d.mts +1 -1
  101. package/dist/plays/play-description.d.ts +1 -1
  102. package/dist/plays/run-request.d.mts +1 -1
  103. package/dist/plays/run-request.d.ts +1 -1
  104. package/dist/release.d.mts +1 -1
  105. package/dist/release.d.ts +1 -1
  106. package/dist/release.js +2 -2
  107. package/dist/release.mjs +1 -1
  108. package/package.json +1 -1
  109. package/dist/cli/auth-U5THP2KN.js +0 -40
  110. package/dist/cli/git-CKX3ZNVJ.js +0 -24
  111. package/dist/cli/search-YGNYSDWN.js +0 -30
  112. package/dist/cli/skills-UURLS24R.js +0 -29
  113. package/dist/cli/tools-FLPMP6G4.js +0 -44
  114. package/dist/cli/update-YJVXKTFY.js +0 -31
@@ -11,10 +11,10 @@
11
11
 
12
12
 
13
13
 
14
- var _chunkLRFTT4ZEjs = require('./chunk-LRFTT4ZE.js');
14
+ var _chunkEU2VT52Ljs = require('./chunk-EU2VT52L.js');
15
15
 
16
16
 
17
- var _chunkEVQUOLTKjs = require('./chunk-EVQUOLTK.js');
17
+ var _chunkXQY5BDGYjs = require('./chunk-XQY5BDGY.js');
18
18
 
19
19
 
20
20
 
@@ -22,7 +22,7 @@ var _chunkEVQUOLTKjs = require('./chunk-EVQUOLTK.js');
22
22
 
23
23
 
24
24
 
25
- var _chunkH3NAN2QLjs = require('./chunk-H3NAN2QL.js');
25
+ var _chunkPA6TQR75js = require('./chunk-PA6TQR75.js');
26
26
 
27
27
  // src/cli/commands/skills.ts
28
28
  var _child_process = require('child_process');
@@ -75,7 +75,7 @@ function inferActiveSkillsScope(entrypoint = _nullishCoalesce(process.argv[1], (
75
75
  return /[\\/]\.deepline[\\/]runtime[\\/]/.test(entrypoint) ? "local" : "global";
76
76
  }
77
77
  function resolveLocalRoot() {
78
- const target = _chunkH3NAN2QLjs.resolveProjectPinTarget.call(void 0, );
78
+ const target = _chunkPA6TQR75js.resolveProjectPinTarget.call(void 0, );
79
79
  if (!target.ok) {
80
80
  throw new Error(
81
81
  `Cowork project folder is ambiguous. Candidate folders: ${target.candidates.join(
@@ -86,7 +86,7 @@ function resolveLocalRoot() {
86
86
  return target.dir;
87
87
  }
88
88
  function detectSkillsAgents(input) {
89
- const runtime = _nullishCoalesce(input.runtime, () => ( _chunkH3NAN2QLjs.detectAgentRuntime.call(void 0, )));
89
+ const runtime = _nullishCoalesce(input.runtime, () => ( _chunkPA6TQR75js.detectAgentRuntime.call(void 0, )));
90
90
  const knownAgent = RUNTIME_TO_SKILLS_AGENT[runtime];
91
91
  if (knownAgent) return [knownAgent];
92
92
  const roots = [
@@ -101,11 +101,11 @@ function detectSkillsAgents(input) {
101
101
  return detected.length > 0 ? detected : ["*"];
102
102
  }
103
103
  function skillsStatePathForScope(baseUrl, scope, root) {
104
- return scope === "local" && root ? _path.join.call(void 0, root, ".deepline", "setup", "skills.json") : _path.join.call(void 0, _chunkH3NAN2QLjs.sdkCliStateDirPath.call(void 0, baseUrl), "skills-install.json");
104
+ return scope === "local" && root ? _path.join.call(void 0, root, ".deepline", "setup", "skills.json") : _path.join.call(void 0, _chunkPA6TQR75js.sdkCliStateDirPath.call(void 0, baseUrl), "skills-install.json");
105
105
  }
106
106
  function buildSkillsPlan(input) {
107
107
  const scopeArgs = input.scope === "global" ? ["--global"] : [];
108
- const legacyNames = [..._chunkLRFTT4ZEjs.LEGACY_SKILL_NAMES_TO_REMOVE].sort(
108
+ const legacyNames = [..._chunkEU2VT52Ljs.LEGACY_SKILL_NAMES_TO_REMOVE].sort(
109
109
  (a, b) => a.localeCompare(b)
110
110
  );
111
111
  return {
@@ -119,7 +119,7 @@ function buildSkillsPlan(input) {
119
119
  args: [
120
120
  "exec",
121
121
  "--yes",
122
- `--package=${_chunkLRFTT4ZEjs.SKILLS_NPX_PACKAGE}`,
122
+ `--package=${_chunkEU2VT52Ljs.SKILLS_NPX_PACKAGE}`,
123
123
  "--",
124
124
  "skills",
125
125
  "remove",
@@ -135,11 +135,11 @@ function buildSkillsPlan(input) {
135
135
  args: [
136
136
  "exec",
137
137
  "--yes",
138
- `--package=${_chunkLRFTT4ZEjs.SKILLS_NPX_PACKAGE}`,
138
+ `--package=${_chunkEU2VT52Ljs.SKILLS_NPX_PACKAGE}`,
139
139
  "--",
140
140
  "skills",
141
141
  "add",
142
- _chunkLRFTT4ZEjs.skillsSourceUrl.call(void 0, input.baseUrl),
142
+ _chunkEU2VT52Ljs.skillsSourceUrl.call(void 0, input.baseUrl),
143
143
  "--agent",
144
144
  ...input.agents,
145
145
  ...scopeArgs,
@@ -176,7 +176,7 @@ function readSkillsInstallState(path) {
176
176
  }
177
177
  function runProcess(command, args, cwd) {
178
178
  return new Promise((resolve, reject) => {
179
- const plan = _chunkLRFTT4ZEjs.resolveShellSpawn.call(void 0,
179
+ const plan = _chunkEU2VT52Ljs.resolveShellSpawn.call(void 0,
180
180
  command,
181
181
  args,
182
182
  process.platform,
@@ -198,7 +198,7 @@ function runProcess(command, args, cwd) {
198
198
  child.kill("SIGTERM");
199
199
  reject(
200
200
  new Error(
201
- `${_chunkLRFTT4ZEjs.SKILLS_NPX_PACKAGE} timed out after ${SKILLS_PROCESS_TIMEOUT_MS}ms.`
201
+ `${_chunkEU2VT52Ljs.SKILLS_NPX_PACKAGE} timed out after ${SKILLS_PROCESS_TIMEOUT_MS}ms.`
202
202
  )
203
203
  );
204
204
  }, SKILLS_PROCESS_TIMEOUT_MS);
@@ -209,7 +209,7 @@ function runProcess(command, args, cwd) {
209
209
  child.once("close", (code) => {
210
210
  clearTimeout(timeout);
211
211
  if (code && stderr.trim()) {
212
- process.stderr.write(`${_chunkLRFTT4ZEjs.SKILLS_NPX_PACKAGE} exited ${code}.
212
+ process.stderr.write(`${_chunkEU2VT52Ljs.SKILLS_NPX_PACKAGE} exited ${code}.
213
213
  `);
214
214
  }
215
215
  resolve(_nullishCoalesce(code, () => ( 1)));
@@ -223,7 +223,7 @@ async function runSkillsCommand(options, dependencies = {}) {
223
223
  scope = normalizeScope(options.scope);
224
224
  root = scope === "local" ? resolveLocalRoot() : null;
225
225
  } catch (error) {
226
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
226
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
227
227
  {
228
228
  ok: false,
229
229
  status: "failed",
@@ -235,22 +235,22 @@ async function runSkillsCommand(options, dependencies = {}) {
235
235
  );
236
236
  return 2;
237
237
  }
238
- const baseUrl = _chunkH3NAN2QLjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
238
+ const baseUrl = _chunkPA6TQR75js.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
239
239
  const catalog = {
240
- skillNames: [..._chunkLRFTT4ZEjs.DEFAULT_SDK_SKILL_NAMES],
241
- version: _chunkH3NAN2QLjs.SDK_VERSION
240
+ skillNames: [..._chunkEU2VT52Ljs.DEFAULT_SDK_SKILL_NAMES],
241
+ version: _chunkPA6TQR75js.SDK_VERSION
242
242
  };
243
243
  const agents = options.agent ? [options.agent] : detectSkillsAgents({ scope, root });
244
244
  const plan = buildSkillsPlan({ baseUrl, scope, root, agents, ...catalog });
245
245
  if (options.dryRun) {
246
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
246
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
247
247
  { ok: true, status: "planned", dryRun: true, ...plan },
248
248
  { json: options.json }
249
249
  );
250
250
  return 0;
251
251
  }
252
- if (isSkillsPlanCurrent(plan, readSkillsInstallState(plan.statePath)) && !_chunkLRFTT4ZEjs.hasFailedAutomaticSkillsSync.call(void 0, baseUrl, agents)) {
253
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
252
+ if (isSkillsPlanCurrent(plan, readSkillsInstallState(plan.statePath)) && !_chunkEU2VT52Ljs.hasFailedAutomaticSkillsSync.call(void 0, baseUrl, agents)) {
253
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
254
254
  {
255
255
  ok: true,
256
256
  status: "current",
@@ -282,10 +282,10 @@ async function runSkillsCommand(options, dependencies = {}) {
282
282
  }
283
283
  if (scope === "local" && root) {
284
284
  const managedNames = [
285
- .../* @__PURE__ */ new Set([...plan.skillNames, ..._chunkLRFTT4ZEjs.LEGACY_SKILL_NAMES_TO_REMOVE])
285
+ .../* @__PURE__ */ new Set([...plan.skillNames, ..._chunkEU2VT52Ljs.LEGACY_SKILL_NAMES_TO_REMOVE])
286
286
  ];
287
287
  const agentRoots = workspaceSkillRootsForAgents(plan.agents);
288
- _chunkH3NAN2QLjs.ensureProjectPrivatePathsIgnored.call(void 0, root, [
288
+ _chunkPA6TQR75js.ensureProjectPrivatePathsIgnored.call(void 0, root, [
289
289
  ".deepline/",
290
290
  ...agentRoots.flatMap(
291
291
  (agentRoot) => managedNames.map((name) => `${agentRoot}/skills/${name}/`)
@@ -294,7 +294,7 @@ async function runSkillsCommand(options, dependencies = {}) {
294
294
  }
295
295
  let lease;
296
296
  try {
297
- lease = scope === "global" ? await _chunkLRFTT4ZEjs.acquireSkillsInstallLease.call(void 0, baseUrl, agents, plan.version, {
297
+ lease = scope === "global" ? await _chunkEU2VT52Ljs.acquireSkillsInstallLease.call(void 0, baseUrl, agents, plan.version, {
298
298
  waitMs: _nullishCoalesce(dependencies.installLeaseWaitMs, () => ( SKILLS_INSTALL_LEASE_WAIT_MS)),
299
299
  onWait: () => process.stderr.write(
300
300
  "Waiting for a background Deepline skills refresh to finish...\n"
@@ -302,8 +302,8 @@ async function runSkillsCommand(options, dependencies = {}) {
302
302
  }) : { release: () => {
303
303
  } };
304
304
  } catch (error) {
305
- if (!(error instanceof _chunkLRFTT4ZEjs.SkillsStateUnavailableError)) throw error;
306
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
305
+ if (!(error instanceof _chunkEU2VT52Ljs.SkillsStateUnavailableError)) throw error;
306
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
307
307
  {
308
308
  ok: false,
309
309
  status: "failed",
@@ -319,7 +319,7 @@ async function runSkillsCommand(options, dependencies = {}) {
319
319
  return 5;
320
320
  }
321
321
  if (!lease) {
322
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
322
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
323
323
  {
324
324
  ok: false,
325
325
  status: "failed",
@@ -328,7 +328,7 @@ async function runSkillsCommand(options, dependencies = {}) {
328
328
  scope,
329
329
  agents,
330
330
  message: "A background Deepline skills refresh is still running for these agents.",
331
- next: `Retry in a moment: deepline skills --scope ${scope}. If no refresh is running, remove ${_chunkLRFTT4ZEjs.skillsInstallLeasePath.call(void 0, baseUrl, agents)}`
331
+ next: `Retry in a moment: deepline skills --scope ${scope}. If no refresh is running, remove ${_chunkEU2VT52Ljs.skillsInstallLeasePath.call(void 0, baseUrl, agents)}`
332
332
  },
333
333
  { json: options.json }
334
334
  );
@@ -365,7 +365,7 @@ async function runSkillsInstallWithLease(input) {
365
365
  throw new Error("Could not install the current Deepline skills.");
366
366
  }
367
367
  } catch (error) {
368
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
368
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
369
369
  {
370
370
  ok: false,
371
371
  status: "failed",
@@ -404,7 +404,7 @@ async function runSkillsInstallWithLease(input) {
404
404
  {
405
405
  schemaVersion: 1,
406
406
  installedAt: (/* @__PURE__ */ new Date()).toISOString(),
407
- cliVersion: _chunkH3NAN2QLjs.SDK_VERSION,
407
+ cliVersion: _chunkPA6TQR75js.SDK_VERSION,
408
408
  scope,
409
409
  agents,
410
410
  skillsVersion: plan.version,
@@ -417,9 +417,9 @@ async function runSkillsInstallWithLease(input) {
417
417
  "utf8"
418
418
  );
419
419
  if (scope === "global") {
420
- _chunkLRFTT4ZEjs.clearFailedAutomaticSkillsSync.call(void 0, baseUrl, agents);
420
+ _chunkEU2VT52Ljs.clearFailedAutomaticSkillsSync.call(void 0, baseUrl, agents);
421
421
  }
422
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
422
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
423
423
  {
424
424
  ok: true,
425
425
  status: "complete",
@@ -450,7 +450,7 @@ function registerSkillsCommand(program) {
450
450
  "after",
451
451
  `
452
452
  Notes:
453
- This command reinstalls current Deepline-managed skills using ${_chunkLRFTT4ZEjs.SKILLS_NPX_PACKAGE},
453
+ This command reinstalls current Deepline-managed skills using ${_chunkEU2VT52Ljs.SKILLS_NPX_PACKAGE},
454
454
  then removes legacy Deepline skill names. Local scope writes into the resolved
455
455
  persistent project.
456
456
 
@@ -462,13 +462,13 @@ Examples:
462
462
  ).action(async (options) => {
463
463
  process.exitCode = await runSkillsCommand(options);
464
464
  });
465
- program.command(_chunkLRFTT4ZEjs.SKILLS_AUTO_SYNC_COMMAND, { hidden: true }).description("Refresh Deepline agent skills in the background.").option(
465
+ program.command(_chunkEU2VT52Ljs.SKILLS_AUTO_SYNC_COMMAND, { hidden: true }).description("Refresh Deepline agent skills in the background.").option(
466
466
  "--claim <token>",
467
467
  "Owner token of the leases this child was started for."
468
468
  ).action(async (options) => {
469
469
  const claim = _optionalChain([options, 'access', _ => _.claim, 'optionalAccess', _2 => _2.trim, 'call', _3 => _3()]);
470
470
  if (!claim) {
471
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
471
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
472
472
  {
473
473
  ok: false,
474
474
  status: "failed",
@@ -481,7 +481,7 @@ Examples:
481
481
  process.exitCode = 2;
482
482
  return;
483
483
  }
484
- await _chunkLRFTT4ZEjs.syncSdkSkillsIfNeeded.call(void 0, _chunkH3NAN2QLjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, ""), {
484
+ await _chunkEU2VT52Ljs.syncSdkSkillsIfNeeded.call(void 0, _chunkPA6TQR75js.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, ""), {
485
485
  mode: "inline",
486
486
  notices: "defer",
487
487
  claim
@@ -28,7 +28,7 @@ import {
28
28
  RUNTIME_ENVIRONMENT_TOKEN_HEADER,
29
29
  SDK_API_MAJOR,
30
30
  resolveConfig
31
- } from "./chunk-ICSVWRQI.mjs";
31
+ } from "./chunk-IQUHUR72.mjs";
32
32
  import {
33
33
  CustomerDbQueryOutcomeUnknownError
34
34
  } from "./chunk-MAMVGOSC.mjs";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-E4IXDAZI.mjs";
18
18
  import {
19
19
  SDK_RELEASE
20
- } from "./chunk-ZN3KC6EG.mjs";
20
+ } from "./chunk-3J7FZHJA.mjs";
21
21
 
22
22
  // src/config.ts
23
23
  import {
@@ -3,15 +3,15 @@
3
3
  var _chunkZM2YPJQJjs = require('./chunk-ZM2YPJQJ.js');
4
4
 
5
5
 
6
- var _chunkPII5HCJUjs = require('./chunk-PII5HCJU.js');
6
+ var _chunkDLCQIK5Hjs = require('./chunk-DLCQIK5H.js');
7
7
 
8
8
 
9
9
 
10
- var _chunkEVQUOLTKjs = require('./chunk-EVQUOLTK.js');
10
+ var _chunkXQY5BDGYjs = require('./chunk-XQY5BDGY.js');
11
11
 
12
12
 
13
13
 
14
- var _chunkH3NAN2QLjs = require('./chunk-H3NAN2QL.js');
14
+ var _chunkPA6TQR75js = require('./chunk-PA6TQR75.js');
15
15
 
16
16
 
17
17
 
@@ -5713,7 +5713,7 @@ var _fs = require('fs');
5713
5713
  var _path = require('path');
5714
5714
  var SEARCH_REF_TTL_MS = 15 * 6e4;
5715
5715
  function lastSearchPath() {
5716
- return _path.join.call(void 0, _chunkH3NAN2QLjs.sdkCliStateDirPath.call(void 0, _chunkH3NAN2QLjs.resolveConfig.call(void 0, ).baseUrl), "last-search.json");
5716
+ return _path.join.call(void 0, _chunkPA6TQR75js.sdkCliStateDirPath.call(void 0, _chunkPA6TQR75js.resolveConfig.call(void 0, ).baseUrl), "last-search.json");
5717
5717
  }
5718
5718
  function rememberSearchRef(searchRef) {
5719
5719
  try {
@@ -5772,7 +5772,10 @@ function pricingDisplay(item, noteWidth) {
5772
5772
  cost: `${observedCost.avgCredits}/${observedCost.unit} (observed)`,
5773
5773
  // Unclipped: the sample size at the end is what qualifies the figure.
5774
5774
  notes: [`Cost: ${observedCost.displayText}`]
5775
- } : { cost: "no data yet", notes: [] };
5775
+ } : {
5776
+ cost: observedCost.typical ? `${observedCost.typical.lowCredits}\u2013${observedCost.typical.highCredits}/${observedCost.typical.unit} (typical)` : "no data yet",
5777
+ notes: [`Cost: ${observedCost.displayText}`]
5778
+ };
5776
5779
  }
5777
5780
  if (!pricing)
5778
5781
  return { cost: item.kind === "tool" ? "unknown" : "\u2014", notes: [] };
@@ -5873,7 +5876,7 @@ var OPTIONAL_COLUMNS = [
5873
5876
  ];
5874
5877
  function renderSearchResults(result, summaryWidth = DEFAULT_SUMMARY_WIDTH) {
5875
5878
  if (result.results.length === 0)
5876
- return _chunkEVQUOLTKjs.renderCommandEnvelopeText.call(void 0, result);
5879
+ return _chunkXQY5BDGYjs.renderCommandEnvelopeText.call(void 0, result);
5877
5880
  const rows = result.results.map((item) => searchRow(item, summaryWidth));
5878
5881
  const kinds = new Set(rows.map((row) => row.kind));
5879
5882
  const onlyTools = kinds.size === 1 && kinds.has("tool");
@@ -5898,7 +5901,7 @@ function renderSearchResults(result, summaryWidth = DEFAULT_SUMMARY_WIDTH) {
5898
5901
  actions: _optionalChain([render, 'optionalAccess', _12 => _12.actions])
5899
5902
  };
5900
5903
  const followUps = _optionalChain([remaining, 'access', _13 => _13.sections, 'optionalAccess', _14 => _14.length]) || _optionalChain([remaining, 'access', _15 => _15.actions, 'optionalAccess', _16 => _16.length]) ? `
5901
- ${_chunkEVQUOLTKjs.renderCommandEnvelopeText.call(void 0, { render: remaining })}` : "";
5904
+ ${_chunkXQY5BDGYjs.renderCommandEnvelopeText.call(void 0, { render: remaining })}` : "";
5902
5905
  const notes = rows.flatMap(
5903
5906
  (row) => row.notes.map((note) => ` ${row.id}: ${note}`)
5904
5907
  );
@@ -5983,7 +5986,7 @@ async function runSearch(queryInput, options, types, exclude = []) {
5983
5986
  console.error("--summary-width must be an integer of at least 2.");
5984
5987
  return 1;
5985
5988
  }
5986
- const { search_ref: searchRef, ...result } = await new (0, _chunkPII5HCJUjs.DeeplineClient)().search({
5989
+ const { search_ref: searchRef, ...result } = await new (0, _chunkDLCQIK5Hjs.DeeplineClient)().search({
5987
5990
  query,
5988
5991
  types,
5989
5992
  exclude,
@@ -5997,7 +6000,7 @@ async function runSearch(queryInput, options, types, exclude = []) {
5997
6000
  });
5998
6001
  if (searchRef) rememberSearchRef(searchRef);
5999
6002
  pointAtDescribe(result);
6000
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0, result, {
6003
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0, result, {
6001
6004
  json: options.json === true,
6002
6005
  text: renderSearchResults(result, summaryWidth)
6003
6006
  });
@@ -784,7 +784,8 @@ Purpose:
784
784
  When:
785
785
  [[cli:
786
786
  To price a play before running it: plays list --show-cost, then read the
787
- cost estimate line for the play, or costEstimate in JSON.
787
+ cost estimate line for the play, or in JSON observedCost (prebuilts) or
788
+ costEstimate.
788
789
  ]]
789
790
  [[mcp:
790
791
  To find a saved or prebuilt play by name. It carries no cost estimate; price
@@ -798,9 +799,10 @@ Input:
798
799
  [[cli:
799
800
  Output (JSON):
800
801
  plays[] with playKey, reference, displayName, description, origin,
801
- runCount, lastRun, and with --show-cost costEstimate {status, unit ("row"
802
- or "run"), lowCredits, highCredits, source, sampleRunCount} or
803
- {status: "unavailable", reason, message}; count, has_more, next_cursor,
802
+ runCount, lastRun, and with --show-cost: costEstimate {status, unit
803
+ ("row" or "run"), lowCredits, highCredits, source, sampleRunCount} or
804
+ {status: "unavailable", reason, message}, and for prebuilts also
805
+ observedCost, the same object search returns; count, has_more, next_cursor,
804
806
  next (the next-page command), render.sections with a "cost estimate:"
805
807
  line per play.
806
808
  ]]
@@ -814,13 +816,15 @@ Cost:
814
816
  Free.
815
817
  [[cli:
816
818
  Avoid:
817
- describe does not include a cost estimate; this command does.
819
+ For a prebuilt, search and describe show the same observedCost; for your
820
+ own plays only this command estimates cost.
818
821
  ]]
819
822
  `,
820
823
  verbose: `
821
824
  [[cli:
822
825
  Pricing a run:
823
- Multiply lowCredits..highCredits by the row count when unit is "row", or
826
+ Multiply lowCredits..highCredits (observedCost: avgCredits, or the typical
827
+ range before runs are observed) by the row count when unit is "row", or
824
828
  use it directly when unit is "run". Compare with the billing balance.
825
829
  When the estimate is unavailable, run a two-row slice first and
826
830
  read its actual spend with billing usage --run-id <run-id>.
@@ -830,6 +834,9 @@ Output fields:
830
834
  costEstimate.source "observed" (from past runs; shown with ~) or
831
835
  "static" (from the play's declared tools).
832
836
  costEstimate.sampleRunCount how many runs the observation is based on.
837
+ observedCost avgCredits, medianCredits, maxCredits per unit across
838
+ all workspaces' runs, or status "unavailable" with
839
+ typical {lowCredits, highCredits, unit}.
833
840
  has_more / next_cursor the page is bounded; pass --cursor to continue.
834
841
  is_truncated true when the page was cut for size.
835
842
  ]]
@@ -2,7 +2,7 @@ import {
2
2
  argsWantJson,
3
3
  openInBrowser,
4
4
  printCommandEnvelope
5
- } from "./chunk-2AYQQDHR.mjs";
5
+ } from "./chunk-Z7URKNIZ.mjs";
6
6
  import {
7
7
  ACTIVE_ORG_ID_ENV,
8
8
  ACTIVE_ORG_NAME_ENV,
@@ -25,7 +25,7 @@ import {
25
25
  saveHostEnvValues,
26
26
  saveProjectDeeplineEnvValues,
27
27
  storedHostApiKey
28
- } from "./chunk-ICSVWRQI.mjs";
28
+ } from "./chunk-IQUHUR72.mjs";
29
29
 
30
30
  // src/cli/commands/auth.ts
31
31
  import {
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
2
 
3
- var _chunkEVQUOLTKjs = require('./chunk-EVQUOLTK.js');
3
+ var _chunkXQY5BDGYjs = require('./chunk-XQY5BDGY.js');
4
4
 
5
5
  // src/cli/maintenance-policy.ts
6
6
  var _commander = require('commander');
@@ -33,7 +33,7 @@ function recordCliTrace(event) {
33
33
  sinceStartMs: now - cliTraceStartedAt,
34
34
  ...event
35
35
  };
36
- _chunkEVQUOLTKjs.writeRawStderr.call(void 0, `[cli-trace] ${JSON.stringify(payload)}
36
+ _chunkXQY5BDGYjs.writeRawStderr.call(void 0, `[cli-trace] ${JSON.stringify(payload)}
37
37
  `);
38
38
  }
39
39
  async function traceCliSpan(phase, fields, run) {
@@ -11,10 +11,10 @@ import {
11
11
  skillsInstallLeasePath,
12
12
  skillsSourceUrl,
13
13
  syncSdkSkillsIfNeeded
14
- } from "./chunk-WER6KBH7.mjs";
14
+ } from "./chunk-S5M6ZEKW.mjs";
15
15
  import {
16
16
  printCommandEnvelope
17
- } from "./chunk-2AYQQDHR.mjs";
17
+ } from "./chunk-Z7URKNIZ.mjs";
18
18
  import {
19
19
  SDK_VERSION,
20
20
  autoDetectBaseUrl,
@@ -22,7 +22,7 @@ import {
22
22
  ensureProjectPrivatePathsIgnored,
23
23
  resolveProjectPinTarget,
24
24
  sdkCliStateDirPath
25
- } from "./chunk-ICSVWRQI.mjs";
25
+ } from "./chunk-IQUHUR72.mjs";
26
26
 
27
27
  // src/cli/commands/skills.ts
28
28
  import { spawn } from "child_process";
@@ -17,7 +17,7 @@ var _chunkXNYIZMNQjs = require('./chunk-XNYIZMNQ.js');
17
17
  var _chunkPPDBRJRWjs = require('./chunk-PPDBRJRW.js');
18
18
 
19
19
 
20
- var _chunk7427NYAVjs = require('./chunk-7427NYAV.js');
20
+ var _chunk6S6WXN63js = require('./chunk-6S6WXN63.js');
21
21
 
22
22
  // src/config.ts
23
23
 
@@ -649,9 +649,9 @@ function resolveCliCommandContext(inputConfig, requestedScope) {
649
649
  }
650
650
 
651
651
  // src/version.ts
652
- var SDK_VERSION = _chunk7427NYAVjs.SDK_RELEASE.version;
653
- var SDK_API_MAJOR = _chunk7427NYAVjs.SDK_RELEASE.contracts.api.currentMajor;
654
- var SDK_API_CONTRACT = _nullishCoalesce(_chunk7427NYAVjs.SDK_RELEASE.contracts.api.legacyWireIds[0], () => ( `api-v${SDK_API_MAJOR}`));
652
+ var SDK_VERSION = _chunk6S6WXN63js.SDK_RELEASE.version;
653
+ var SDK_API_MAJOR = _chunk6S6WXN63js.SDK_RELEASE.contracts.api.currentMajor;
654
+ var SDK_API_CONTRACT = _nullishCoalesce(_chunk6S6WXN63js.SDK_RELEASE.contracts.api.legacyWireIds[0], () => ( `api-v${SDK_API_MAJOR}`));
655
655
 
656
656
  // src/agent-runtime.ts
657
657
 
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getAuthedHttpClient,
3
3
  printCommandEnvelope
4
- } from "./chunk-2AYQQDHR.mjs";
4
+ } from "./chunk-Z7URKNIZ.mjs";
5
5
  import {
6
6
  agentSessionIdFromEnvironment
7
- } from "./chunk-ICSVWRQI.mjs";
7
+ } from "./chunk-IQUHUR72.mjs";
8
8
 
9
9
  // src/cli/commands/sessions.ts
10
10
  import {
@@ -1,19 +1,19 @@
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 _chunkFVOGWBXPjs = require('./chunk-FVOGWBXP.js');
4
+ var _chunk4QNMO7DKjs = require('./chunk-4QNMO7DK.js');
5
5
 
6
6
 
7
- var _chunkEV7H3IACjs = require('./chunk-EV7H3IAC.js');
7
+ var _chunkF5HARRY4js = require('./chunk-F5HARRY4.js');
8
8
 
9
9
 
10
- var _chunkLRFTT4ZEjs = require('./chunk-LRFTT4ZE.js');
10
+ var _chunkEU2VT52Ljs = require('./chunk-EU2VT52L.js');
11
11
 
12
12
 
13
- var _chunkEVQUOLTKjs = require('./chunk-EVQUOLTK.js');
13
+ var _chunkXQY5BDGYjs = require('./chunk-XQY5BDGY.js');
14
14
 
15
15
 
16
- var _chunkH3NAN2QLjs = require('./chunk-H3NAN2QL.js');
16
+ var _chunkPA6TQR75js = require('./chunk-PA6TQR75.js');
17
17
 
18
18
  // src/cli/commands/update.ts
19
19
  var _child_process = require('child_process');
@@ -495,7 +495,7 @@ function normalizedNpmPrefix(value) {
495
495
  }
496
496
  function resolveNpmGlobalPrefix(env) {
497
497
  try {
498
- const plan = _chunkLRFTT4ZEjs.resolveShellSpawn.call(void 0,
498
+ const plan = _chunkEU2VT52Ljs.resolveShellSpawn.call(void 0,
499
499
  "npm",
500
500
  ["prefix", "-g"],
501
501
  process.platform,
@@ -556,8 +556,8 @@ function resolveUpdatePlan(options = {}) {
556
556
  const npmGlobalPrefix = options.npmGlobalPrefix !== void 0 ? options.npmGlobalPrefix : resolveNpmGlobalPrefix(env);
557
557
  const hasVerifiedNpmOwnership = inferredInstallPrefix !== null && normalizedNpmPrefix(inferredInstallPrefix) === normalizedNpmPrefix(npmGlobalPrefix);
558
558
  const installPrefix = options.requireVerifiedNpmOwnership ? hasVerifiedNpmOwnership ? inferredInstallPrefix : null : inferredInstallPrefix;
559
- const npmVersion = options.npmVersion === void 0 ? _chunkFVOGWBXPjs.readNpmVersion.call(void 0, env) : options.npmVersion;
560
- const npmGlobalInstallFlags = _chunkFVOGWBXPjs.npmSupportsAllowScripts.call(void 0, npmVersion) ? [...NPM_SDK_INSTALL_COMMON_FLAGS, "--allow-scripts=esbuild"] : NPM_SDK_INSTALL_COMMON_FLAGS;
559
+ const npmVersion = options.npmVersion === void 0 ? _chunk4QNMO7DKjs.readNpmVersion.call(void 0, env) : options.npmVersion;
560
+ const npmGlobalInstallFlags = _chunk4QNMO7DKjs.npmSupportsAllowScripts.call(void 0, npmVersion) ? [...NPM_SDK_INSTALL_COMMON_FLAGS, "--allow-scripts=esbuild"] : NPM_SDK_INSTALL_COMMON_FLAGS;
561
561
  const args = installPrefix ? [
562
562
  "install",
563
563
  "-g",
@@ -567,7 +567,7 @@ function resolveUpdatePlan(options = {}) {
567
567
  packageSpec
568
568
  ] : ["install", "-g", ...npmGlobalInstallFlags, packageSpec];
569
569
  const fallbackRegistryUrl = options.npmFallbackRegistryUrl !== void 0 ? options.npmFallbackRegistryUrl : publicNpmFallbackRegistryUrl(
570
- _optionalChain([env, 'access', _22 => _22.DEEPLINE_HOST_URL, 'optionalAccess', _23 => _23.trim, 'call', _24 => _24()]) || _chunkH3NAN2QLjs.autoDetectBaseUrl.call(void 0, )
570
+ _optionalChain([env, 'access', _22 => _22.DEEPLINE_HOST_URL, 'optionalAccess', _23 => _23.trim, 'call', _24 => _24()]) || _chunkPA6TQR75js.autoDetectBaseUrl.call(void 0, )
571
571
  );
572
572
  return {
573
573
  kind: "npm-global",
@@ -816,7 +816,7 @@ function sidecarInstallFailure(versionDir) {
816
816
  function runCommand(command, args, env = process.env) {
817
817
  return new Promise((resolveResult) => {
818
818
  let output = "";
819
- const plan = _chunkLRFTT4ZEjs.resolveShellSpawn.call(void 0, command, args, process.platform, env);
819
+ const plan = _chunkEU2VT52Ljs.resolveShellSpawn.call(void 0, command, args, process.platform, env);
820
820
  const child = _child_process.spawn.call(void 0, plan.command, plan.args, {
821
821
  stdio: ["inherit", "pipe", "pipe"],
822
822
  shell: plan.shell,
@@ -1199,14 +1199,14 @@ async function publishedVersionSupportsPin(version, fallbackRegistryUrl) {
1199
1199
  throw _nullishCoalesce(lastError, () => ( new Error("No npm registry was available")));
1200
1200
  }
1201
1201
  async function runUpdateCommand(options, dependencies = {}) {
1202
- const detectBaseUrl = _nullishCoalesce(dependencies.detectBaseUrl, () => ( _chunkH3NAN2QLjs.autoDetectBaseUrl));
1202
+ const detectBaseUrl = _nullishCoalesce(dependencies.detectBaseUrl, () => ( _chunkPA6TQR75js.autoDetectBaseUrl));
1203
1203
  const resolvePlan = _nullishCoalesce(dependencies.resolvePlan, () => ( resolveUpdatePlan));
1204
1204
  const runPlan = _nullishCoalesce(dependencies.runPlan, () => ( runUpdatePlan));
1205
1205
  const syncSkills = _nullishCoalesce(dependencies.syncSkillsIfNeeded, () => ( (async () => {
1206
1206
  const originalWrite = process.stdout.write.bind(process.stdout);
1207
1207
  process.stdout.write = (() => true);
1208
1208
  try {
1209
- const exitCode = await _chunkEV7H3IACjs.runSkillsCommand.call(void 0, { json: true });
1209
+ const exitCode = await _chunkF5HARRY4js.runSkillsCommand.call(void 0, { json: true });
1210
1210
  if (exitCode !== 0) {
1211
1211
  throw new Error(
1212
1212
  `Deepline skills update failed with exit ${exitCode}.`
@@ -1277,11 +1277,11 @@ async function runUpdateCommand(options, dependencies = {}) {
1277
1277
  ]
1278
1278
  };
1279
1279
  if (options.json && !options.executeWithJson) {
1280
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: true });
1280
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: true });
1281
1281
  return 0;
1282
1282
  }
1283
1283
  if (options.printCommand) {
1284
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
1284
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
1285
1285
  {
1286
1286
  ...plan,
1287
1287
  render: {
@@ -1294,7 +1294,7 @@ async function runUpdateCommand(options, dependencies = {}) {
1294
1294
  return 0;
1295
1295
  }
1296
1296
  if (plan.kind === "source" || plan.kind === "homebrew") {
1297
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: false });
1297
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: false });
1298
1298
  return 0;
1299
1299
  }
1300
1300
  stderr.write(`Updating Deepline SDK/CLI with: ${plan.manualCommand}
@@ -1324,7 +1324,7 @@ To retry with full installer output, run: deepline skills
1324
1324
  );
1325
1325
  }
1326
1326
  if (options.executeWithJson && options.json) {
1327
- _chunkEVQUOLTKjs.printCommandEnvelope.call(void 0,
1327
+ _chunkXQY5BDGYjs.printCommandEnvelope.call(void 0,
1328
1328
  {
1329
1329
  ok: true,
1330
1330
  pinnedVersion
@@ -784,7 +784,8 @@ Purpose:
784
784
  When:
785
785
  [[cli:
786
786
  To price a play before running it: plays list --show-cost, then read the
787
- cost estimate line for the play, or costEstimate in JSON.
787
+ cost estimate line for the play, or in JSON observedCost (prebuilts) or
788
+ costEstimate.
788
789
  ]]
789
790
  [[mcp:
790
791
  To find a saved or prebuilt play by name. It carries no cost estimate; price
@@ -798,9 +799,10 @@ Input:
798
799
  [[cli:
799
800
  Output (JSON):
800
801
  plays[] with playKey, reference, displayName, description, origin,
801
- runCount, lastRun, and with --show-cost costEstimate {status, unit ("row"
802
- or "run"), lowCredits, highCredits, source, sampleRunCount} or
803
- {status: "unavailable", reason, message}; count, has_more, next_cursor,
802
+ runCount, lastRun, and with --show-cost: costEstimate {status, unit
803
+ ("row" or "run"), lowCredits, highCredits, source, sampleRunCount} or
804
+ {status: "unavailable", reason, message}, and for prebuilts also
805
+ observedCost, the same object search returns; count, has_more, next_cursor,
804
806
  next (the next-page command), render.sections with a "cost estimate:"
805
807
  line per play.
806
808
  ]]
@@ -814,13 +816,15 @@ Cost:
814
816
  Free.
815
817
  [[cli:
816
818
  Avoid:
817
- describe does not include a cost estimate; this command does.
819
+ For a prebuilt, search and describe show the same observedCost; for your
820
+ own plays only this command estimates cost.
818
821
  ]]
819
822
  `,
820
823
  verbose: `
821
824
  [[cli:
822
825
  Pricing a run:
823
- Multiply lowCredits..highCredits by the row count when unit is "row", or
826
+ Multiply lowCredits..highCredits (observedCost: avgCredits, or the typical
827
+ range before runs are observed) by the row count when unit is "row", or
824
828
  use it directly when unit is "run". Compare with the billing balance.
825
829
  When the estimate is unavailable, run a two-row slice first and
826
830
  read its actual spend with billing usage --run-id <run-id>.
@@ -830,6 +834,9 @@ Output fields:
830
834
  costEstimate.source "observed" (from past runs; shown with ~) or
831
835
  "static" (from the play's declared tools).
832
836
  costEstimate.sampleRunCount how many runs the observation is based on.
837
+ observedCost avgCredits, medianCredits, maxCredits per unit across
838
+ all workspaces' runs, or status "unavailable" with
839
+ typical {lowCredits, highCredits, unit}.
833
840
  has_more / next_cursor the page is bounded; pass --cursor to continue.
834
841
  is_truncated true when the page was cut for size.
835
842
  ]]