deepline 0.3.329 → 0.3.331

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 (96) hide show
  1. package/dist/bundling-sources/sdk/src/billing-idempotency.ts +24 -0
  2. package/dist/bundling-sources/sdk/src/client.ts +22 -22
  3. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  4. package/dist/bundling-sources/shared_libs/security/safe-outbound-fetch.ts +10 -1
  5. package/dist/cli/{auth-MFFVOITR.mjs → auth-TVTO43JD.mjs} +4 -4
  6. package/dist/cli/auth-YYTF3NO4.js +31 -0
  7. package/dist/cli/{billing-LRBHWLIQ.mjs → billing-FBZ5CCU7.mjs} +36 -14
  8. package/dist/cli/{billing-V4Y4OVQ7.js → billing-Y4EX5FFA.js} +101 -79
  9. package/dist/cli/{chunk-VDIHLKGG.js → chunk-3AQ3L2NX.js} +4 -4
  10. package/dist/cli/{chunk-HVPRQGF4.mjs → chunk-4JYLNJMD.mjs} +1 -1
  11. package/dist/cli/{chunk-SJV5MTOJ.mjs → chunk-BXZN544J.mjs} +1 -1
  12. package/dist/cli/{chunk-MFQQINUY.mjs → chunk-CKAZY2JT.mjs} +2 -2
  13. package/dist/cli/{chunk-EROOAI5G.mjs → chunk-DU72PAVF.mjs} +1 -1
  14. package/dist/cli/{chunk-3RZJ3GEG.mjs → chunk-EGRTGSNS.mjs} +3 -3
  15. package/dist/cli/{chunk-XRYKLK56.js → chunk-ELDOV5XG.js} +45 -45
  16. package/dist/cli/{chunk-7T6DX5RK.mjs → chunk-HG5NWSN2.mjs} +62 -61
  17. package/dist/cli/{chunk-J2E5R2VH.js → chunk-KGZPY524.js} +60 -60
  18. package/dist/cli/{chunk-OUTIWGKY.js → chunk-KXWOO3GI.js} +26 -26
  19. package/dist/cli/{chunk-4FLEXYUC.js → chunk-L4CJXV7D.js} +8 -8
  20. package/dist/cli/{chunk-AD23W4S5.js → chunk-LFV2A7GB.js} +1 -1
  21. package/dist/cli/{chunk-U4CTHVN7.js → chunk-MDQOGPQY.js} +533 -532
  22. package/dist/cli/{chunk-75ZOTF3K.js → chunk-NHR3O4OV.js} +15 -15
  23. package/dist/cli/{chunk-MO2XSC5I.mjs → chunk-O52SKQQT.mjs} +4 -4
  24. package/dist/cli/{chunk-HI7TAWFS.mjs → chunk-PS5BFY2W.mjs} +5 -5
  25. package/dist/cli/{chunk-OZGU7P2S.mjs → chunk-QEI6SNAT.mjs} +38 -22
  26. package/dist/cli/{chunk-GCNER3HV.mjs → chunk-RI57LHLC.mjs} +1 -1
  27. package/dist/cli/{chunk-YNSCELIJ.mjs → chunk-RRJ6AA5L.mjs} +2 -2
  28. package/dist/cli/{chunk-ZXGUYTIT.js → chunk-RX2WWVZ7.js} +6 -6
  29. package/dist/cli/{chunk-VLDLJZ75.js → chunk-T7E5KIPE.js} +48 -48
  30. package/dist/cli/{chunk-FK7PW6BP.mjs → chunk-VEP3POWB.mjs} +1 -1
  31. package/dist/cli/{chunk-U2N4CYT7.js → chunk-XZG75ELG.js} +6 -6
  32. package/dist/cli/{chunk-KHZQFFOQ.js → chunk-YCYWPBRV.js} +2 -2
  33. package/dist/cli/{chunk-ERU2OR6F.mjs → chunk-YIYK57LW.mjs} +2 -2
  34. package/dist/cli/{chunk-GY2EEO2Y.js → chunk-ZGWURYZK.js} +51 -35
  35. package/dist/cli/client-46KHPTTQ.js +20 -0
  36. package/dist/cli/{client-BNLD775D.mjs → client-Q7J5R5PT.mjs} +3 -3
  37. package/dist/cli/{csv-7MVQECWG.mjs → csv-RVG3V4YX.mjs} +3 -3
  38. package/dist/cli/{csv-ZT6ZRQ3Z.js → csv-WBEF4KIZ.js} +12 -12
  39. package/dist/cli/{db-C4BMZXJK.js → db-4SPPGSEV.js} +29 -29
  40. package/dist/cli/{db-ABLWLMX5.mjs → db-AVIQ5WHJ.mjs} +4 -4
  41. package/dist/cli/{describe-XWOWAR32.mjs → describe-4UA6N4YX.mjs} +8 -8
  42. package/dist/cli/{describe-YALVN4WH.js → describe-IQ3FOLGV.js} +15 -15
  43. package/dist/cli/{executions-U4TNRP26.js → executions-3ZUK3YJB.js} +6 -6
  44. package/dist/cli/{executions-7IZVKQ3O.mjs → executions-VCULCPYR.mjs} +4 -4
  45. package/dist/cli/{feedback-NWMRT5W4.js → feedback-7YKDOMWW.js} +6 -6
  46. package/dist/cli/{feedback-GO5XPEKY.mjs → feedback-SZLTZXWC.mjs} +3 -3
  47. package/dist/cli/git-DCZP3E3P.js +23 -0
  48. package/dist/cli/{git-R53WS4WA.mjs → git-H4YS7TQW.mjs} +4 -4
  49. package/dist/cli/index.js +79 -79
  50. package/dist/cli/index.mjs +31 -31
  51. package/dist/cli/{legacy-noops-NJWM53DE.js → legacy-noops-GU7X3U2Y.js} +7 -7
  52. package/dist/cli/{legacy-noops-6QAZW7WJ.mjs → legacy-noops-K6U4YL3K.mjs} +4 -4
  53. package/dist/cli/{monitors-2N4BRU5M.mjs → monitors-2HHSSSDD.mjs} +4 -4
  54. package/dist/cli/{monitors-2I2MYAPS.js → monitors-IUEWN2VX.js} +85 -85
  55. package/dist/cli/{org-D3RHK2Q7.mjs → org-6NBBO7G3.mjs} +4 -4
  56. package/dist/cli/{org-XVNAE2JV.js → org-E5TYEFPX.js} +60 -60
  57. package/dist/cli/{play-L7MYJZ65.mjs → play-C2BQ4MJG.mjs} +7 -7
  58. package/dist/cli/play-MPDZPEYN.js +153 -0
  59. package/dist/cli/{providers-5BTDAZHN.js → providers-FM6LWHA4.js} +7 -7
  60. package/dist/cli/{providers-YM4E7WZD.mjs → providers-N2LG7Y3E.mjs} +4 -4
  61. package/dist/cli/{quickstart-ARPLJOLH.mjs → quickstart-GQQ6ODNU.mjs} +3 -3
  62. package/dist/cli/{quickstart-5A3FHAH3.js → quickstart-I4K6ZDU6.js} +5 -5
  63. package/dist/cli/search-6G6FUVTJ.js +26 -0
  64. package/dist/cli/{search-KKJEVV27.mjs → search-NKDQSOQ5.mjs} +5 -5
  65. package/dist/cli/{secrets-DVPVCSZD.js → secrets-BBI5NYLT.js} +13 -13
  66. package/dist/cli/{secrets-DGRJ4DO5.mjs → secrets-FGKGASDL.mjs} +4 -4
  67. package/dist/cli/{sessions-56EHXLZD.mjs → sessions-7MWWKIUT.mjs} +4 -4
  68. package/dist/cli/{sessions-VG4ATQ5Y.js → sessions-YUTDWUVR.js} +5 -5
  69. package/dist/cli/{settings-4U5XG7QI.mjs → settings-JGJWBESE.mjs} +7 -7
  70. package/dist/cli/{settings-BLOTIW2G.js → settings-U55P74SS.js} +74 -74
  71. package/dist/cli/{setup-RHJAHPOR.mjs → setup-7D577YQO.mjs} +6 -6
  72. package/dist/cli/{setup-L7AMAXCH.js → setup-XYIDQ46U.js} +41 -41
  73. package/dist/cli/skills-PXHET5MG.js +28 -0
  74. package/dist/cli/{skills-VU55YFCI.mjs → skills-Y6WBNBPF.mjs} +4 -4
  75. package/dist/cli/tools-BCSXPN5X.js +40 -0
  76. package/dist/cli/{tools-JS3YIDOH.mjs → tools-OPTIBRZP.mjs} +6 -6
  77. package/dist/cli/update-2NXG3NKT.js +28 -0
  78. package/dist/cli/{update-EHI5QUXM.mjs → update-HKJQ762M.mjs} +6 -6
  79. package/dist/cli/{workflow-BITLTLRF.mjs → workflow-2ZOG35IA.mjs} +5 -5
  80. package/dist/cli/{workflow-NE4SYRAT.js → workflow-EBIKBXXC.js} +15 -15
  81. package/dist/index.js +6 -6
  82. package/dist/index.mjs +3 -3
  83. package/dist/install-integrity.json +75 -74
  84. package/dist/release.d.mts +1 -1
  85. package/dist/release.d.ts +1 -1
  86. package/dist/release.js +2 -2
  87. package/dist/release.mjs +1 -1
  88. package/package.json +1 -1
  89. package/dist/cli/auth-W2MQM6GQ.js +0 -31
  90. package/dist/cli/client-5AIFBLKQ.js +0 -20
  91. package/dist/cli/git-YWRLAOBY.js +0 -23
  92. package/dist/cli/play-OYRHI7G3.js +0 -153
  93. package/dist/cli/search-VE3O3ZEM.js +0 -26
  94. package/dist/cli/skills-QB4OQGGP.js +0 -28
  95. package/dist/cli/tools-2CPFYNK7.js +0 -40
  96. package/dist/cli/update-WXP24GU5.js +0 -28
@@ -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 _chunkKHZQFFOQjs = require('./chunk-KHZQFFOQ.js');
4
+ var _chunkYCYWPBRVjs = require('./chunk-YCYWPBRV.js');
5
5
 
6
6
 
7
7
 
8
- var _chunkJ2E5R2VHjs = require('./chunk-J2E5R2VH.js');
8
+ var _chunkKGZPY524js = require('./chunk-KGZPY524.js');
9
9
 
10
10
 
11
- var _chunkU2N4CYT7js = require('./chunk-U2N4CYT7.js');
11
+ var _chunkXZG75ELGjs = require('./chunk-XZG75ELG.js');
12
12
 
13
13
 
14
- var _chunkVDIHLKGGjs = require('./chunk-VDIHLKGG.js');
14
+ var _chunk3AQ3L2NXjs = require('./chunk-3AQ3L2NX.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 = _chunkJ2E5R2VHjs.resolveShellSpawn.call(void 0, "npm", ["prefix", "-g"], process.platform, env);
492
+ const plan = _chunkKGZPY524js.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 ? _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;
548
+ const npmVersion = options.npmVersion === void 0 ? _chunkYCYWPBRVjs.readNpmVersion.call(void 0, env) : options.npmVersion;
549
+ const npmGlobalInstallFlags = _chunkYCYWPBRVjs.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()]) || _chunkVDIHLKGGjs.autoDetectBaseUrl.call(void 0, )
559
+ _optionalChain([env, 'access', _18 => _18.DEEPLINE_HOST_URL, 'optionalAccess', _19 => _19.trim, 'call', _20 => _20()]) || _chunk3AQ3L2NXjs.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 = _chunkJ2E5R2VHjs.resolveShellSpawn.call(void 0, command, args, process.platform, env);
706
+ const plan = _chunkKGZPY524js.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, () => ( _chunkVDIHLKGGjs.autoDetectBaseUrl));
1082
+ const detectBaseUrl = _nullishCoalesce(dependencies.detectBaseUrl, () => ( _chunk3AQ3L2NXjs.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 _chunkJ2E5R2VHjs.runSkillsCommand.call(void 0, { json: true });
1089
+ const exitCode = await _chunkKGZPY524js.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
- _chunkU2N4CYT7js.printCommandEnvelope.call(void 0, { ...plan, render }, { json: true });
1160
+ _chunkXZG75ELGjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: true });
1161
1161
  return 0;
1162
1162
  }
1163
1163
  if (options.printCommand) {
1164
- _chunkU2N4CYT7js.printCommandEnvelope.call(void 0,
1164
+ _chunkXZG75ELGjs.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
- _chunkU2N4CYT7js.printCommandEnvelope.call(void 0, { ...plan, render }, { json: false });
1177
+ _chunkXZG75ELGjs.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
- _chunkU2N4CYT7js.printCommandEnvelope.call(void 0,
1207
+ _chunkXZG75ELGjs.printCommandEnvelope.call(void 0,
1208
1208
  {
1209
1209
  ok: true,
1210
1210
  pinnedVersion
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  npmSupportsAllowScripts,
3
3
  readNpmVersion
4
- } from "./chunk-HVPRQGF4.mjs";
4
+ } from "./chunk-4JYLNJMD.mjs";
5
5
  import {
6
6
  resolveShellSpawn,
7
7
  runSkillsCommand
8
- } from "./chunk-YNSCELIJ.mjs";
8
+ } from "./chunk-RRJ6AA5L.mjs";
9
9
  import {
10
10
  printCommandEnvelope
11
- } from "./chunk-EROOAI5G.mjs";
11
+ } from "./chunk-DU72PAVF.mjs";
12
12
  import {
13
13
  autoDetectBaseUrl
14
- } from "./chunk-FK7PW6BP.mjs";
14
+ } from "./chunk-VEP3POWB.mjs";
15
15
 
16
16
  // src/cli/commands/update.ts
17
17
  import { spawn, spawnSync } from "child_process";
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  recentSearchRef,
12
12
  registerDeprecatedSearchCommand
13
- } from "./chunk-3RZJ3GEG.mjs";
13
+ } from "./chunk-EGRTGSNS.mjs";
14
14
  import {
15
15
  extractSummaryFields,
16
16
  projectRowOutput,
@@ -22,7 +22,7 @@ import {
22
22
  import {
23
23
  DeeplineClient,
24
24
  validateExecutionIdempotencyKey
25
- } from "./chunk-OZGU7P2S.mjs";
25
+ } from "./chunk-QEI6SNAT.mjs";
26
26
  import {
27
27
  beginToolExecuteCommand,
28
28
  getToolExecuteInvocationId,
@@ -36,11 +36,11 @@ import {
36
36
  printJsonError,
37
37
  renderCommandEnvelopeText,
38
38
  shouldEmitJson
39
- } from "./chunk-EROOAI5G.mjs";
39
+ } from "./chunk-DU72PAVF.mjs";
40
40
  import {
41
41
  resolveConfig,
42
42
  sdkCliStateDirPath
43
- } from "./chunk-FK7PW6BP.mjs";
43
+ } from "./chunk-VEP3POWB.mjs";
44
44
  import {
45
45
  playToolListGetterMode
46
46
  } from "./chunk-NTVTZAVZ.mjs";
@@ -1029,7 +1029,7 @@ Examples:
1029
1029
  process.exitCode = await narrowView();
1030
1030
  return;
1031
1031
  }
1032
- const { describeAnything } = await import("./describe-XWOWAR32.mjs");
1032
+ const { describeAnything } = await import("./describe-4UA6N4YX.mjs");
1033
1033
  process.exitCode = await describeAnything(
1034
1034
  toolId,
1035
1035
  { ...options, kinds: ["tools", "monitors"], fetchedTool: metadata },
@@ -15,7 +15,7 @@ import {
15
15
  RETAINED_PIPELINE_RECEIVERS_HEADER,
16
16
  RUNTIME_ENVIRONMENT_TOKEN_HEADER,
17
17
  resolveConfig
18
- } from "./chunk-FK7PW6BP.mjs";
18
+ } from "./chunk-VEP3POWB.mjs";
19
19
  import {
20
20
  PLAY_RUNTIME_BACKENDS,
21
21
  RAW_V2_TOOL_RESPONSE_CONTRACT,
@@ -82,6 +82,27 @@ function playInputExampleArgs(schema) {
82
82
  return " --input '@<input.json>'";
83
83
  }
84
84
 
85
+ // src/billing-idempotency.ts
86
+ function requireBillingIdempotencyKey(value) {
87
+ const normalized = value.trim();
88
+ let valid = normalized.length > 0 && normalized.length <= 200 && normalized === value;
89
+ if (valid) {
90
+ try {
91
+ valid = new Headers({ "Idempotency-Key": value }).get("Idempotency-Key") === value;
92
+ } catch {
93
+ valid = false;
94
+ }
95
+ }
96
+ if (!valid) {
97
+ throw new DeeplineError(
98
+ "Billing idempotencyKey must contain 1\u2013200 characters with no leading or trailing whitespace and be valid HTTP header text.",
99
+ void 0,
100
+ "INVALID_BILLING_IDEMPOTENCY_KEY"
101
+ );
102
+ }
103
+ return value;
104
+ }
105
+
85
106
  // src/db/query.ts
86
107
  function planCustomerDbQuery(input) {
87
108
  if (typeof input.sql !== "string" || !input.sql.trim())
@@ -3007,17 +3028,6 @@ var MONITOR_JOB_RECONCILIATION_STATES = [
3007
3028
  "partial",
3008
3029
  "mismatched"
3009
3030
  ];
3010
- function requireTargetBillingIdempotencyKey(value) {
3011
- const normalized = value.trim();
3012
- if (normalized.length === 0 || normalized.length > 200 || normalized !== value) {
3013
- throw new DeeplineError(
3014
- "Billing idempotencyKey must contain 1\u2013200 characters with no leading or trailing whitespace.",
3015
- void 0,
3016
- "INVALID_BILLING_IDEMPOTENCY_KEY"
3017
- );
3018
- }
3019
- return normalized;
3020
- }
3021
3031
  function isRecord2(value) {
3022
3032
  return Boolean(value && typeof value === "object" && !Array.isArray(value));
3023
3033
  }
@@ -3236,7 +3246,7 @@ var DeeplineClient = class _DeeplineClient {
3236
3246
  "/api/v2/billing/auto-recharge/trigger",
3237
3247
  {},
3238
3248
  {
3239
- "Idempotency-Key": requireTargetBillingIdempotencyKey(
3249
+ "Idempotency-Key": requireBillingIdempotencyKey(
3240
3250
  options2?.idempotencyKey ?? globalThis.crypto.randomUUID()
3241
3251
  )
3242
3252
  }
@@ -5671,13 +5681,14 @@ var DeeplineClient = class _DeeplineClient {
5671
5681
  * requires confirmation.
5672
5682
  */
5673
5683
  async topUpBillingBalance(options) {
5684
+ const idempotencyKey = options.idempotencyKey === void 0 ? void 0 : requireBillingIdempotencyKey(options.idempotencyKey);
5674
5685
  return this.http.post(
5675
5686
  "/api/v2/billing/top-up",
5676
5687
  {
5677
5688
  credits: options.credits,
5678
- ...options.idempotencyKey ? { idempotency_key: options.idempotencyKey } : {}
5689
+ ...idempotencyKey !== void 0 ? { idempotency_key: idempotencyKey } : {}
5679
5690
  },
5680
- void 0,
5691
+ idempotencyKey === void 0 ? void 0 : { "Idempotency-Key": idempotencyKey },
5681
5692
  // The idempotency key makes a retry at the product layer safe, but the
5682
5693
  // CLI should not hide ambiguous local delivery failures behind implicit
5683
5694
  // transport retries for a payment mutation.
@@ -5690,13 +5701,17 @@ var DeeplineClient = class _DeeplineClient {
5690
5701
  * `client.billing.topUpWithReceipt(...)`.
5691
5702
  */
5692
5703
  async topUpBillingBalanceWithReceipt(options) {
5704
+ const idempotencyKey = options.idempotencyKey === void 0 ? void 0 : requireBillingIdempotencyKey(options.idempotencyKey);
5693
5705
  return this.http.post(
5694
5706
  "/api/v2/billing/top-up",
5695
5707
  {
5696
5708
  credits: options.credits,
5697
- ...options.idempotencyKey ? { idempotency_key: options.idempotencyKey } : {}
5709
+ ...idempotencyKey !== void 0 ? { idempotency_key: idempotencyKey } : {}
5710
+ },
5711
+ {
5712
+ "x-deepline-top-up-receipt": "operation-v1",
5713
+ ...idempotencyKey !== void 0 ? { "Idempotency-Key": idempotencyKey } : {}
5698
5714
  },
5699
- { "x-deepline-top-up-receipt": "operation-v1" },
5700
5715
  { maxRetries: 0, exactUrlOnly: true }
5701
5716
  );
5702
5717
  }
@@ -5761,7 +5776,7 @@ var DeeplineClient = class _DeeplineClient {
5761
5776
  }
5762
5777
  /** Update automatic recharge and return the server-verified configuration. */
5763
5778
  async updateTargetAutoRecharge(options) {
5764
- const idempotencyKey = requireTargetBillingIdempotencyKey(
5779
+ const idempotencyKey = requireBillingIdempotencyKey(
5765
5780
  options.idempotencyKey
5766
5781
  );
5767
5782
  const response = await this.http.put(
@@ -5782,7 +5797,7 @@ var DeeplineClient = class _DeeplineClient {
5782
5797
  * flow. The caller supplies an idempotency key for safe retries.
5783
5798
  */
5784
5799
  async purchaseTargetBillingCredits(options) {
5785
- const idempotencyKey = requireTargetBillingIdempotencyKey(
5800
+ const idempotencyKey = requireBillingIdempotencyKey(
5786
5801
  options.idempotencyKey
5787
5802
  );
5788
5803
  return this.http.post(
@@ -5801,7 +5816,7 @@ var DeeplineClient = class _DeeplineClient {
5801
5816
  "INVALID_BILLING_IDEMPOTENCY_KEY"
5802
5817
  );
5803
5818
  }
5804
- const idempotencyKey = requireTargetBillingIdempotencyKey(
5819
+ const idempotencyKey = requireBillingIdempotencyKey(
5805
5820
  options.idempotencyKey
5806
5821
  );
5807
5822
  if (!Number.isSafeInteger(options.credits) || options.credits <= 0) {
@@ -5830,7 +5845,7 @@ var DeeplineClient = class _DeeplineClient {
5830
5845
  * commercial operation.
5831
5846
  */
5832
5847
  async transitionTargetBillingPlan(options) {
5833
- const idempotencyKey = requireTargetBillingIdempotencyKey(
5848
+ const idempotencyKey = requireBillingIdempotencyKey(
5834
5849
  options.idempotencyKey
5835
5850
  );
5836
5851
  return this.http.post(
@@ -5854,7 +5869,7 @@ var DeeplineClient = class _DeeplineClient {
5854
5869
  }
5855
5870
  /** Create an additional workspace through the durable PAYG workflow. */
5856
5871
  async createWorkspace(options) {
5857
- const idempotencyKey = requireTargetBillingIdempotencyKey(
5872
+ const idempotencyKey = requireBillingIdempotencyKey(
5858
5873
  options.idempotencyKey
5859
5874
  );
5860
5875
  const response = await this.http.post(
@@ -6472,6 +6487,7 @@ export {
6472
6487
  CSV_HEADER_MATCHING_NOTE,
6473
6488
  iterateCursorPages,
6474
6489
  playInputExampleArgs,
6490
+ requireBillingIdempotencyKey,
6475
6491
  planCustomerDbQuery,
6476
6492
  validateExecutionIdempotencyKey,
6477
6493
  PRODUCT_NOTIFICATION_EVENT_CATALOG,
@@ -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.329",
52
+ version: "0.3.331",
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
  } from "./chunk-GAMFK2ZP.mjs";
4
4
  import {
5
5
  printCommandEnvelope
6
- } from "./chunk-EROOAI5G.mjs";
6
+ } from "./chunk-DU72PAVF.mjs";
7
7
  import {
8
8
  DEFAULT_SKILL_AGENTS,
9
9
  KNOWN_SKILL_AGENTS,
@@ -22,7 +22,7 @@ import {
22
22
  sdkCliStateDirPath,
23
23
  skillsAgentPathSegment,
24
24
  writeSdkSkillsLocalVersion
25
- } from "./chunk-FK7PW6BP.mjs";
25
+ } from "./chunk-VEP3POWB.mjs";
26
26
  import {
27
27
  DeeplineError
28
28
  } from "./chunk-NXGCO4JB.mjs";
@@ -1,7 +1,7 @@
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 _chunkU2N4CYT7js = require('./chunk-U2N4CYT7.js');
4
+ var _chunkXZG75ELGjs = require('./chunk-XZG75ELG.js');
5
5
 
6
6
  // src/cli/commands/sessions.ts
7
7
 
@@ -420,7 +420,7 @@ function buildSessionUploadContent(raw) {
420
420
  return { encodedContent: encoded, needsChunking: true };
421
421
  }
422
422
  async function uploadPayload(path, payload) {
423
- const { http } = _chunkU2N4CYT7js.getAuthedHttpClient.call(void 0, );
423
+ const { http } = _chunkXZG75ELGjs.getAuthedHttpClient.call(void 0, );
424
424
  return await http.post(path, payload);
425
425
  }
426
426
  async function uploadChunkedSessions(sessions, options) {
@@ -452,7 +452,7 @@ async function uploadChunkedSessions(sessions, options) {
452
452
  environments: sessions.map(() => detectShellContext()),
453
453
  ...options.rating ? { rating: options.rating } : {}
454
454
  });
455
- _chunkU2N4CYT7js.printCommandEnvelope.call(void 0,
455
+ _chunkXZG75ELGjs.printCommandEnvelope.call(void 0,
456
456
  {
457
457
  ...response,
458
458
  ok: true,
@@ -481,7 +481,7 @@ async function handleSessionsSend(options) {
481
481
  filename: _path.basename.call(void 0, filePath),
482
482
  ...rating ? { rating } : {}
483
483
  });
484
- _chunkU2N4CYT7js.printCommandEnvelope.call(void 0,
484
+ _chunkXZG75ELGjs.printCommandEnvelope.call(void 0,
485
485
  {
486
486
  ...response2,
487
487
  ok: true,
@@ -530,7 +530,7 @@ async function handleSessionsSend(options) {
530
530
  environment: detectShellContext(),
531
531
  ...rating ? { rating } : {}
532
532
  });
533
- _chunkU2N4CYT7js.printCommandEnvelope.call(void 0,
533
+ _chunkXZG75ELGjs.printCommandEnvelope.call(void 0,
534
534
  {
535
535
  ...response,
536
536
  ok: true,
@@ -635,7 +635,7 @@ ${refreshMeta}
635
635
  </body>
636
636
  </html>`;
637
637
  _fs.writeFileSync.call(void 0, outputPath, html, "utf8");
638
- _chunkU2N4CYT7js.printCommandEnvelope.call(void 0,
638
+ _chunkXZG75ELGjs.printCommandEnvelope.call(void 0,
639
639
  {
640
640
  ok: true,
641
641
  file: outputPath,