deepline 0.3.407 → 0.3.408

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 (127) hide show
  1. package/dist/bundling-sources/sdk/src/client.ts +2 -0
  2. package/dist/bundling-sources/sdk/src/play.ts +13 -0
  3. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  4. package/dist/bundling-sources/sdk/src/types.ts +23 -0
  5. package/dist/bundling-sources/shared_libs/play-runtime/admission-timings.ts +64 -0
  6. package/dist/bundling-sources/shared_libs/play-runtime/context.ts +11 -1
  7. package/dist/bundling-sources/shared_libs/play-runtime/modal-runtime-config.ts +1 -4
  8. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +2 -0
  9. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/local-process.ts +15 -6
  10. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +188 -45
  11. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-ledger-outbox-recovery.ts +22 -4
  12. package/dist/bundling-sources/shared_libs/play-runtime/tool-http-errors.ts +10 -4
  13. package/dist/bundling-sources/shared_libs/play-runtime/tool-result.ts +72 -0
  14. package/dist/bundling-sources/shared_libs/play-runtime/webhook-receipt-source-commit-retry.ts +90 -0
  15. package/dist/bundling-sources/shared_libs/play-runtime/worker-api-types.ts +5 -0
  16. package/dist/bundling-sources/shared_libs/plays/tool-result-types.ts +6 -0
  17. package/dist/cli/auth-3GB2K636.js +40 -0
  18. package/dist/cli/{auth-WURWNNLE.mjs → auth-UVD3CUBB.mjs} +4 -4
  19. package/dist/cli/{billing-BP3E6WIM.mjs → billing-BZVTXXLM.mjs} +23 -16
  20. package/dist/cli/{billing-2QJGXGJX.js → billing-BZVYAF6T.js} +92 -85
  21. package/dist/cli/{chunk-Y6CX4QPR.js → chunk-2XXXFPTD.js} +67 -67
  22. package/dist/cli/{chunk-RZLXVHNO.js → chunk-3ZB6IIA7.js} +26 -26
  23. package/dist/cli/{chunk-BKC6VMYZ.mjs → chunk-4CFULMRB.mjs} +73 -4
  24. package/dist/cli/{chunk-6JZZNP5G.mjs → chunk-4QFT5LGV.mjs} +2 -2
  25. package/dist/cli/{chunk-H6EWQFPQ.js → chunk-4RNDKFNQ.js} +2 -2
  26. package/dist/cli/{chunk-GAMFK2ZP.mjs → chunk-67RWR34T.mjs} +10 -3
  27. package/dist/cli/{chunk-KUQAU5MG.js → chunk-AUMD2VXP.js} +6 -6
  28. package/dist/cli/{chunk-IY6GKJ4O.js → chunk-BRJUESQV.js} +50 -50
  29. package/dist/cli/{chunk-7LKYHZVB.js → chunk-D6FFBSM5.js} +1 -1
  30. package/dist/cli/{chunk-AYHLUHE5.js → chunk-E3PJF6YP.js} +6 -2
  31. package/dist/cli/{chunk-G6U74WNM.js → chunk-ECVLPS67.js} +15 -15
  32. package/dist/cli/{chunk-QJBJZVG6.js → chunk-HQY2SG3K.js} +15 -8
  33. package/dist/cli/{chunk-P7HOTKOK.mjs → chunk-I3DHIXVJ.mjs} +4 -4
  34. package/dist/cli/{chunk-L25GBGQU.mjs → chunk-IOHRWLQE.mjs} +6 -6
  35. package/dist/cli/{chunk-UFFSOV6I.mjs → chunk-IWBXJDZA.mjs} +2 -2
  36. package/dist/cli/{chunk-URWF7NGQ.js → chunk-J5PTX66Y.js} +28 -14
  37. package/dist/cli/{chunk-J67NU4MQ.mjs → chunk-LOYISF7S.mjs} +1 -1
  38. package/dist/cli/{chunk-4TV43THC.mjs → chunk-MJELBQBU.mjs} +4 -4
  39. package/dist/cli/{chunk-WJYPBHTE.js → chunk-OSFWFV72.js} +11 -4
  40. package/dist/cli/{chunk-ZI2ZNDJK.mjs → chunk-PYZZMAJQ.mjs} +28 -14
  41. package/dist/cli/{chunk-G4LJS2RE.js → chunk-Q3LFI3VH.js} +8 -8
  42. package/dist/cli/{chunk-D2ZRMZKF.js → chunk-Q3PUHXOY.js} +99 -30
  43. package/dist/cli/{chunk-THHM4DPE.js → chunk-QUAQX3FQ.js} +4 -4
  44. package/dist/cli/{chunk-RMZAOYDN.js → chunk-RWCY6YI2.js} +53 -53
  45. package/dist/cli/{chunk-ZBCTXQ3P.mjs → chunk-SD7MXAJA.mjs} +1 -1
  46. package/dist/cli/{chunk-UFS752TU.mjs → chunk-SJVVBWRL.mjs} +5 -1
  47. package/dist/cli/{chunk-QJAX7QN7.mjs → chunk-URACNNLO.mjs} +2 -2
  48. package/dist/cli/{chunk-WXLOW623.mjs → chunk-WPAB4DCU.mjs} +14 -7
  49. package/dist/cli/{chunk-UPEOEYZ3.mjs → chunk-WTT6CLED.mjs} +1 -1
  50. package/dist/cli/{chunk-N6OAMAO5.mjs → chunk-XXLXOUUU.mjs} +1 -1
  51. package/dist/cli/{chunk-XT6GG3QO.mjs → chunk-YMOFWHGO.mjs} +3 -3
  52. package/dist/cli/{chunk-SOQIPKF2.js → chunk-ZBABPK6Y.js} +8 -8
  53. package/dist/cli/command-docs.js +2 -2
  54. package/dist/cli/command-docs.mjs +1 -1
  55. package/dist/cli/{csv-N6KYTG7L.mjs → csv-WPSXG6ZZ.mjs} +3 -3
  56. package/dist/cli/{csv-7E5BE23B.js → csv-XLGLHJ6P.js} +12 -12
  57. package/dist/cli/{db-4VLZP33O.js → db-5PTNJG4X.js} +25 -25
  58. package/dist/cli/{db-XMBJNVBD.mjs → db-ABS57ABJ.mjs} +4 -4
  59. package/dist/cli/{describe-4I6EIVXD.js → describe-EZS6PQXA.js} +11 -11
  60. package/dist/cli/{describe-WERH4TD2.mjs → describe-PVWQJ2PB.mjs} +7 -7
  61. package/dist/cli/describe-core.d.mts +2 -2
  62. package/dist/cli/describe-core.d.ts +2 -2
  63. package/dist/cli/{executions-W7TWJRBK.js → executions-FNTAFQ7Y.js} +6 -6
  64. package/dist/cli/{executions-JWQXE7G6.mjs → executions-OKJGATQZ.mjs} +4 -4
  65. package/dist/cli/{feedback-FMGRC6KO.js → feedback-6YBOMSUA.js} +7 -7
  66. package/dist/cli/{feedback-OEJFX4F7.mjs → feedback-W27HDMRR.mjs} +3 -3
  67. package/dist/cli/git-YKUXXJOR.js +24 -0
  68. package/dist/cli/{git-IVC4KHXX.mjs → git-YOOUEL6M.mjs} +4 -4
  69. package/dist/cli/index.js +204 -127
  70. package/dist/cli/index.mjs +124 -47
  71. package/dist/cli/{legacy-noops-X3BQ7MUK.js → legacy-noops-2VZ7XT6C.js} +7 -7
  72. package/dist/cli/{legacy-noops-LT36CLWZ.mjs → legacy-noops-V6OKW7VR.mjs} +4 -4
  73. package/dist/cli/{monitors-DLIIAVLW.js → monitors-FBWGVIUS.js} +84 -84
  74. package/dist/cli/{monitors-MNLCELF7.mjs → monitors-P2YYWTWT.mjs} +4 -4
  75. package/dist/cli/{org-CYHDEW7P.js → org-3XUSVX5T.js} +64 -64
  76. package/dist/cli/{org-QV5LMUPT.mjs → org-DVMG6H3C.mjs} +4 -4
  77. package/dist/cli/{play-5Z4ROZ3P.mjs → play-GNC5CQAS.mjs} +70 -18
  78. package/dist/cli/{play-MEFXC2QA.js → play-YG5L4BWQ.js} +345 -293
  79. package/dist/cli/{providers-2MKUNFBQ.js → providers-7PSWG2OV.js} +7 -7
  80. package/dist/cli/{providers-FJLYSHB3.mjs → providers-JR33SLWL.mjs} +4 -4
  81. package/dist/cli/{quickstart-ULWXKAOT.js → quickstart-FDVZ5BL3.js} +5 -5
  82. package/dist/cli/{quickstart-PQO3OQRT.mjs → quickstart-VUOBQYIQ.mjs} +3 -3
  83. package/dist/cli/{search-KGAAXMDG.mjs → search-JZYLO33K.mjs} +5 -5
  84. package/dist/cli/search-PPPYC5OZ.js +30 -0
  85. package/dist/cli/{secrets-PD5I3KAF.mjs → secrets-3MCYBT4I.mjs} +4 -4
  86. package/dist/cli/{secrets-X2VGG2PO.js → secrets-VS266FVA.js} +13 -13
  87. package/dist/cli/{sessions-3WVEU4PE.mjs → sessions-ELLLT23E.mjs} +4 -4
  88. package/dist/cli/{sessions-R3XAKTBQ.js → sessions-TEHEWW7O.js} +5 -5
  89. package/dist/cli/{settings-ZIDO3IP6.js → settings-7364NMMA.js} +75 -75
  90. package/dist/cli/{settings-645RSFQX.mjs → settings-PZCKAFII.mjs} +8 -8
  91. package/dist/cli/{setup-LISKIJKP.mjs → setup-A7GQ4KIA.mjs} +7 -7
  92. package/dist/cli/{setup-LH5HOZ3D.js → setup-PMWYLCT6.js} +42 -42
  93. package/dist/cli/skills-SYS7VRRK.js +29 -0
  94. package/dist/cli/{skills-VVQJHLSF.mjs → skills-WS6BIFPQ.mjs} +5 -5
  95. package/dist/cli/{tools-Y3LOMXFT.mjs → tools-BR4DOZA2.mjs} +7 -7
  96. package/dist/cli/{tools-FTPJCNAM.js → tools-KK4BKVQR.js} +8 -8
  97. package/dist/cli/update-2IV5JTX2.js +29 -0
  98. package/dist/cli/{update-DOBNQNJI.mjs → update-D2B7UNFT.mjs} +7 -7
  99. package/dist/cli/{workflow-LGENKZBV.js → workflow-6ODTCYXU.js} +15 -15
  100. package/dist/cli/{workflow-ZMAA5VCN.mjs → workflow-PQXC2R47.mjs} +5 -5
  101. package/dist/{client-IrPHUE5J.d.ts → client-BcvhDfJJ.d.ts} +26 -2
  102. package/dist/{client-6rEB46Lv.d.mts → client-Z9Pye1Wm.d.mts} +26 -2
  103. package/dist/{compiler-manifest-BHnXE43X.d.ts → compiler-manifest-Ycx-hoAr.d.mts} +2 -0
  104. package/dist/{compiler-manifest-BHnXE43X.d.mts → compiler-manifest-Ycx-hoAr.d.ts} +2 -0
  105. package/dist/{index-Da_Y8z5e.d.mts → index-CZXgiN3E.d.mts} +1 -1
  106. package/dist/{index-SODb2ROS.d.ts → index-NPG5pqxQ.d.ts} +1 -1
  107. package/dist/index.d.mts +5 -5
  108. package/dist/index.d.ts +5 -5
  109. package/dist/index.js +26 -9
  110. package/dist/index.mjs +23 -6
  111. package/dist/install-integrity.json +86 -84
  112. package/dist/plays/bundle-play-file.d.mts +3 -3
  113. package/dist/plays/bundle-play-file.d.ts +3 -3
  114. package/dist/plays/play-description.d.mts +2 -2
  115. package/dist/plays/play-description.d.ts +2 -2
  116. package/dist/plays/run-request.d.mts +2 -2
  117. package/dist/plays/run-request.d.ts +2 -2
  118. package/dist/release.d.mts +1 -1
  119. package/dist/release.d.ts +1 -1
  120. package/dist/release.js +2 -2
  121. package/dist/release.mjs +1 -1
  122. package/package.json +1 -1
  123. package/dist/cli/auth-4JTX6AGM.js +0 -40
  124. package/dist/cli/git-OFXE7G4X.js +0 -24
  125. package/dist/cli/search-ANKSJ224.js +0 -30
  126. package/dist/cli/skills-WLHYSVQA.js +0 -29
  127. package/dist/cli/update-A622H2DZ.js +0 -29
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkKUQAU5MGjs = require('./chunk-KUQAU5MG.js');
5
+ var _chunkAUMD2VXPjs = require('./chunk-AUMD2VXP.js');
6
6
  require('./chunk-S6R3OX7B.js');
7
7
  require('./chunk-UHNDVD3P.js');
8
8
  require('./chunk-KXMNM4AQ.js');
@@ -13,8 +13,8 @@ require('./chunk-XDVT3GOM.js');
13
13
 
14
14
 
15
15
 
16
- var _chunkD2ZRMZKFjs = require('./chunk-D2ZRMZKF.js');
17
- require('./chunk-THHM4DPE.js');
16
+ var _chunkQ3PUHXOYjs = require('./chunk-Q3PUHXOY.js');
17
+ require('./chunk-QUAQX3FQ.js');
18
18
 
19
19
 
20
20
 
@@ -23,7 +23,7 @@ require('./chunk-XNYIZMNQ.js');
23
23
 
24
24
 
25
25
  var _chunk7P5AA3SNjs = require('./chunk-7P5AA3SN.js');
26
- require('./chunk-7LKYHZVB.js');
26
+ require('./chunk-D6FFBSM5.js');
27
27
  require('./chunk-OG64RBAC.js');
28
28
  require('./chunk-COGTRVWW.js');
29
29
 
@@ -72,7 +72,7 @@ function reportBillingFailure(failure, options) {
72
72
  if (failure.next) {
73
73
  textLines.push(`Next: ${failure.next}`);
74
74
  }
75
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
75
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
76
76
  {
77
77
  ok: false,
78
78
  exitCode: failure.exitCode,
@@ -93,7 +93,7 @@ function parseTopUpCredits(raw) {
93
93
  return parsed;
94
94
  }
95
95
  function topUpIdempotencyKey(raw) {
96
- return raw === void 0 ? `cli_topup:${Date.now()}:${_crypto.randomUUID.call(void 0, )}` : _chunkKUQAU5MGjs.requireBillingIdempotencyKey.call(void 0, raw);
96
+ return raw === void 0 ? `cli_topup:${Date.now()}:${_crypto.randomUUID.call(void 0, )}` : _chunkAUMD2VXPjs.requireBillingIdempotencyKey.call(void 0, raw);
97
97
  }
98
98
  function targetBillingIdempotencyKey(raw) {
99
99
  return typeof raw === "string" ? raw : `cli_target_billing:${Date.now()}:${_crypto.randomUUID.call(void 0, )}`;
@@ -299,7 +299,7 @@ function defaultLedgerExportPath() {
299
299
  );
300
300
  }
301
301
  async function handleBalance(options) {
302
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
302
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
303
303
  const payload = await http.get(
304
304
  "/api/v2/billing/balance"
305
305
  );
@@ -307,6 +307,22 @@ async function handleBalance(options) {
307
307
  const needsCredits = status === "no_billing" || status === "zero_balance" || status === "payment_method_only";
308
308
  const recovery = needsCredits ? balanceRecoveryForCredits() : null;
309
309
  const lines = [`Balance: ${_nullishCoalesce(payload.balance, () => ( "(unknown)"))} credits`];
310
+ const spendable = payload.spendable_balance_credits;
311
+ if (payload.spendable_balance_status === "complete" && typeof spendable === "number") {
312
+ if (typeof payload.posted_balance_credits === "number") {
313
+ lines.push(`Posted wallet: ${payload.posted_balance_credits} credits.`);
314
+ }
315
+ lines.push(`Spendable: ${spendable} credits.`);
316
+ if (typeof payload.pending_spend_credits === "number") {
317
+ lines.push(
318
+ `Pending spending: ${payload.pending_spend_credits} credits \u2014 already committed, not yet debited.`
319
+ );
320
+ }
321
+ } else if (payload.spendable_balance_status !== void 0 || payload.exposure_status === "partial" || options.verbose) {
322
+ lines.push(
323
+ "Spendable balance is unavailable; the posted balance does not establish capacity for another call."
324
+ );
325
+ }
310
326
  const detail = [];
311
327
  const temporaryHolds = payload.temporary_hold_credits;
312
328
  if (typeof temporaryHolds === "number" && temporaryHolds > 0) {
@@ -367,7 +383,7 @@ async function handleBalance(options) {
367
383
  ...options.verbose ? detail : [],
368
384
  ...lines.slice(1)
369
385
  ];
370
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
386
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
371
387
  {
372
388
  ...payload,
373
389
  ...recovery ? { recovery } : {},
@@ -391,7 +407,7 @@ function quoteShellArgument(value) {
391
407
  return `'${value.replace(/'/g, `'\\''`)}'`;
392
408
  }
393
409
  async function handleUsage(options) {
394
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
410
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
395
411
  const params = new URLSearchParams();
396
412
  if (options.requestId !== void 0) {
397
413
  const requestId = options.requestId.trim();
@@ -472,7 +488,7 @@ async function handleUsage(options) {
472
488
  "No continuation is available for this view. Use deepline billing ledger export all for the full ledger."
473
489
  ] : []
474
490
  ];
475
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
491
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
476
492
  {
477
493
  ...payload,
478
494
  recent: {
@@ -486,7 +502,7 @@ async function handleUsage(options) {
486
502
  );
487
503
  }
488
504
  async function handleLimit(options) {
489
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
505
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
490
506
  const payload = await http.get(
491
507
  "/api/v2/billing/limit"
492
508
  );
@@ -494,7 +510,7 @@ async function handleLimit(options) {
494
510
  `Monthly usage cap: ${_nullishCoalesce(payload.monthly_credits_limit, () => ( "(unknown)"))}`,
495
511
  "Enforcement: checked before new calls; in-flight work can exceed the cap."
496
512
  ] : ["Monthly usage cap: off"];
497
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
513
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
498
514
  {
499
515
  ...payload,
500
516
  render: { sections: [{ title: "billing limit", lines }] }
@@ -503,12 +519,12 @@ async function handleLimit(options) {
503
519
  );
504
520
  }
505
521
  async function handleSetLimit(credits, options) {
506
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
522
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
507
523
  const payload = await http.request("/api/v2/billing/limit", {
508
524
  method: "PUT",
509
525
  body: { monthly_credits_limit: Number.parseInt(credits, 10) }
510
526
  });
511
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
527
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
512
528
  {
513
529
  ...payload,
514
530
  render: {
@@ -524,11 +540,11 @@ async function handleSetLimit(credits, options) {
524
540
  );
525
541
  }
526
542
  async function handleLimitOff(options) {
527
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
543
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
528
544
  const payload = await http.request("/api/v2/billing/limit", {
529
545
  method: "DELETE"
530
546
  });
531
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
547
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
532
548
  {
533
549
  ...payload,
534
550
  render: {
@@ -548,7 +564,7 @@ async function exportLedger(http, outputPath, options) {
548
564
  let initialized = false;
549
565
  let pageNumber = 0;
550
566
  console.error(`Exporting billing ledger to ${outputPath}`);
551
- for await (const entries of _chunkKUQAU5MGjs.iterateCursorPages.call(void 0, async (cursor) => {
567
+ for await (const entries of _chunkAUMD2VXPjs.iterateCursorPages.call(void 0, async (cursor) => {
552
568
  pageNumber += 1;
553
569
  console.error(
554
570
  `Fetching page ${pageNumber}; ${summary.row_count} rows written.`
@@ -587,7 +603,7 @@ async function exportLedger(http, outputPath, options) {
587
603
  return summary;
588
604
  }
589
605
  async function handleHistory(options) {
590
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
606
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
591
607
  const windows = {
592
608
  "1d": 86400,
593
609
  "1w": 604800,
@@ -599,10 +615,10 @@ async function handleHistory(options) {
599
615
  process.cwd(),
600
616
  "deepline",
601
617
  "data",
602
- _chunkD2ZRMZKFjs.createTimestampedName.call(void 0, `billing-history-${options.time}`, "csv")
618
+ _chunkQ3PUHXOYjs.createTimestampedName.call(void 0, `billing-history-${options.time}`, "csv")
603
619
  );
604
620
  const summary = await exportLedger(http, outputPath, { sinceAt });
605
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
621
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
606
622
  {
607
623
  output_path: outputPath,
608
624
  row_count: summary.row_count,
@@ -639,14 +655,14 @@ async function handleLedgerExportAll(options) {
639
655
  );
640
656
  return;
641
657
  }
642
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
658
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
643
659
  const outputPath = options.output ? _path.resolve.call(void 0, String(options.output)) : defaultLedgerExportPath();
644
660
  const summary = await exportLedger(http, outputPath, {
645
661
  sinceAt,
646
662
  runId: options.runId,
647
663
  operation: options.operation
648
664
  });
649
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
665
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
650
666
  {
651
667
  output_path: outputPath,
652
668
  row_count: summary.row_count,
@@ -685,7 +701,7 @@ function targetPlanLine(plan) {
685
701
  return `${plan.name} (${plan.sku}) | ${planPriceText(plan.recurring_price_usd, plan.interval)} | ${plan.included_credits} included credits/month | $${plan.purchased_credit_price_usd}/purchased credit | ${plan.acquisition_enabled ? "available" : "unavailable"}`;
686
702
  }
687
703
  async function handlePlans(options) {
688
- const client = new (0, _chunkKUQAU5MGjs.DeeplineClient)();
704
+ const client = new (0, _chunkAUMD2VXPjs.DeeplineClient)();
689
705
  const payload = await client.billing.targetPlans();
690
706
  const listedCurrentPlan = payload.plans.find(
691
707
  (plan) => plan.sku === payload.current_plan_sku
@@ -698,8 +714,8 @@ async function handlePlans(options) {
698
714
  ...payload.plans.length === 0 ? ["Plans: none available"] : ["Plans:", ...payload.plans.map(targetPlanLine)],
699
715
  "Change plan: deepline billing change-plan <plan_sku>"
700
716
  ];
701
- const legacyPayload = _chunkD2ZRMZKFjs.shouldEmitJson.call(void 0, options.json) ? await client.billing.plans() : null;
702
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
717
+ const legacyPayload = _chunkQ3PUHXOYjs.shouldEmitJson.call(void 0, options.json) ? await client.billing.plans() : null;
718
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
703
719
  {
704
720
  ..._nullishCoalesce(legacyPayload, () => ( payload)),
705
721
  ...legacyPayload ? { target_billing: payload } : {},
@@ -709,7 +725,7 @@ async function handlePlans(options) {
709
725
  );
710
726
  }
711
727
  async function handleSubscribe(planVersionId, options) {
712
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
728
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
713
729
  const payload = await http.request(
714
730
  "/api/v2/billing/subscription/checkout",
715
731
  {
@@ -718,8 +734,8 @@ async function handleSubscribe(planVersionId, options) {
718
734
  }
719
735
  );
720
736
  const url = String(payload.checkout_url || "");
721
- if (!options.json && options.open !== false && url) _chunkD2ZRMZKFjs.openInBrowser.call(void 0, url);
722
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
737
+ if (!options.json && options.open !== false && url) _chunkQ3PUHXOYjs.openInBrowser.call(void 0, url);
738
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
723
739
  {
724
740
  ...payload,
725
741
  render: {
@@ -735,7 +751,7 @@ async function handleSubscribe(planVersionId, options) {
735
751
  );
736
752
  }
737
753
  async function handleSubscriptionStatus(options) {
738
- const client = new (0, _chunkKUQAU5MGjs.DeeplineClient)();
754
+ const client = new (0, _chunkAUMD2VXPjs.DeeplineClient)();
739
755
  const payload = await client.billing.subscription.status();
740
756
  const pools = _nullishCoalesce(payload.credit_pools, () => ( []));
741
757
  const lines = [
@@ -755,7 +771,7 @@ async function handleSubscriptionStatus(options) {
755
771
  ],
756
772
  `Assigned by: ${_nullishCoalesce(payload.assigned_by, () => ( "default"))}`
757
773
  ];
758
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
774
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
759
775
  {
760
776
  ...payload,
761
777
  render: { sections: [{ title: "billing subscription", lines }] }
@@ -764,7 +780,7 @@ async function handleSubscriptionStatus(options) {
764
780
  );
765
781
  }
766
782
  async function handleSubscriptionCancel(options) {
767
- const client = new (0, _chunkKUQAU5MGjs.DeeplineClient)();
783
+ const client = new (0, _chunkAUMD2VXPjs.DeeplineClient)();
768
784
  const action = options.undo ? "undo_cancel" : "cancel";
769
785
  if (options.dryRun) {
770
786
  const status = await client.billing.subscription.status();
@@ -781,7 +797,7 @@ async function handleSubscriptionCancel(options) {
781
797
  return;
782
798
  }
783
799
  const consequence = action === "cancel" ? `Would schedule cancellation at period end${status.current_period_end ? ` (${status.current_period_end})` : ""}. The subscription stays active until then and remaining credits are kept.` : "Would reverse the pending cancellation; the subscription would renew normally.";
784
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
800
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
785
801
  {
786
802
  ok: true,
787
803
  dry_run: true,
@@ -836,7 +852,7 @@ async function handleSubscriptionCancel(options) {
836
852
  "Remaining credits are yours to keep \u2014 cancellation never removes credits.",
837
853
  "Undo with: deepline billing subscription cancel --undo"
838
854
  ];
839
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
855
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
840
856
  {
841
857
  ok: true,
842
858
  ...result,
@@ -890,7 +906,7 @@ async function handleInvoices(options) {
890
906
  return;
891
907
  }
892
908
  }
893
- const client = new (0, _chunkKUQAU5MGjs.DeeplineClient)();
909
+ const client = new (0, _chunkAUMD2VXPjs.DeeplineClient)();
894
910
  let payload;
895
911
  try {
896
912
  payload = await client.billing.invoices.list(
@@ -919,7 +935,7 @@ async function handleInvoices(options) {
919
935
  url: entry.url
920
936
  }))
921
937
  } : { ...payload, count: entries.length };
922
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
938
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
923
939
  {
924
940
  ...envelope,
925
941
  render: { sections: [{ title: "billing invoices", lines }] }
@@ -928,7 +944,7 @@ async function handleInvoices(options) {
928
944
  );
929
945
  }
930
946
  async function handleCheckout(options) {
931
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
947
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
932
948
  const payload = await http.post(
933
949
  "/api/v2/billing/checkout",
934
950
  {
@@ -938,8 +954,8 @@ async function handleCheckout(options) {
938
954
  }
939
955
  );
940
956
  const url = String(payload.url || payload.checkout_url || "");
941
- if (!options.json && !options.noOpen && url) _chunkD2ZRMZKFjs.openInBrowser.call(void 0, url);
942
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
957
+ if (!options.json && !options.noOpen && url) _chunkQ3PUHXOYjs.openInBrowser.call(void 0, url);
958
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
943
959
  {
944
960
  ...payload,
945
961
  render: {
@@ -984,7 +1000,7 @@ async function handleTopUp(creditsRaw, options) {
984
1000
  return;
985
1001
  }
986
1002
  if (options.dryRun) {
987
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1003
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
988
1004
  {
989
1005
  ok: true,
990
1006
  dry_run: true,
@@ -1014,7 +1030,7 @@ async function handleTopUp(creditsRaw, options) {
1014
1030
  );
1015
1031
  return;
1016
1032
  }
1017
- const client = new (0, _chunkKUQAU5MGjs.DeeplineClient)();
1033
+ const client = new (0, _chunkAUMD2VXPjs.DeeplineClient)();
1018
1034
  let payload;
1019
1035
  try {
1020
1036
  payload = await client.billing.topUpWithReceipt({
@@ -1031,7 +1047,7 @@ async function handleTopUp(creditsRaw, options) {
1031
1047
  return;
1032
1048
  }
1033
1049
  if (payload.status === "pending") {
1034
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1050
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1035
1051
  {
1036
1052
  ok: true,
1037
1053
  ...payload,
@@ -1095,17 +1111,17 @@ async function handleTopUp(creditsRaw, options) {
1095
1111
  ]
1096
1112
  }
1097
1113
  };
1098
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0, options.compact ? compactEnvelope : fullEnvelope, {
1114
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0, options.compact ? compactEnvelope : fullEnvelope, {
1099
1115
  json: options.json
1100
1116
  });
1101
1117
  }
1102
1118
  async function handleTargetStatus(options) {
1103
- const client = new (0, _chunkKUQAU5MGjs.DeeplineClient)();
1119
+ const client = new (0, _chunkAUMD2VXPjs.DeeplineClient)();
1104
1120
  const payload = await client.billing.targetStatus();
1105
1121
  const balanceCommand = "deepline billing balance";
1106
1122
  const recentChargesCommand = "deepline billing usage --limit 5";
1107
1123
  const exactChargeCommand = "deepline billing usage --request-id <job_id>";
1108
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1124
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1109
1125
  {
1110
1126
  ok: true,
1111
1127
  ...payload,
@@ -1135,8 +1151,8 @@ async function handleTargetStatus(options) {
1135
1151
  );
1136
1152
  }
1137
1153
  async function handleEntitlements(options) {
1138
- const payload = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.entitlements();
1139
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1154
+ const payload = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.entitlements();
1155
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1140
1156
  {
1141
1157
  ok: true,
1142
1158
  ...payload,
@@ -1161,7 +1177,7 @@ async function handleEntitlements(options) {
1161
1177
  );
1162
1178
  }
1163
1179
  async function handleAutoRechargeStatus(options) {
1164
- const payload = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.autoRecharge.get();
1180
+ const payload = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.autoRecharge.get();
1165
1181
  const state = payload.available ? payload.enabled ? "on" : "off" : "unavailable";
1166
1182
  const lines = [
1167
1183
  `State: ${state}`,
@@ -1171,7 +1187,7 @@ async function handleAutoRechargeStatus(options) {
1171
1187
  `Automatic credit purchase cap: ${payload.purchase_limit_credits} credits per rolling 30 days`
1172
1188
  ] : []
1173
1189
  ];
1174
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1190
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1175
1191
  {
1176
1192
  ok: true,
1177
1193
  ...payload,
@@ -1220,7 +1236,7 @@ async function handleAutoRechargeSet(options) {
1220
1236
  }
1221
1237
  const idempotencyKey = targetBillingIdempotencyKey(options.idempotencyKey);
1222
1238
  if (options.dryRun) {
1223
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1239
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1224
1240
  {
1225
1241
  ok: true,
1226
1242
  dry_run: true,
@@ -1241,7 +1257,7 @@ async function handleAutoRechargeSet(options) {
1241
1257
  );
1242
1258
  return;
1243
1259
  }
1244
- const payload = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.autoRecharge.update({
1260
+ const payload = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.autoRecharge.update({
1245
1261
  enabled: true,
1246
1262
  thresholdCredits,
1247
1263
  refillToCredits,
@@ -1249,7 +1265,7 @@ async function handleAutoRechargeSet(options) {
1249
1265
  ...rollingLimitCredits !== void 0 ? { purchaseLimitCredits: rollingLimitCredits } : {},
1250
1266
  idempotencyKey
1251
1267
  });
1252
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1268
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1253
1269
  { ok: true, idempotency_key: idempotencyKey, ...payload },
1254
1270
  { json: options.json }
1255
1271
  );
@@ -1257,7 +1273,7 @@ async function handleAutoRechargeSet(options) {
1257
1273
  async function handleAutoRechargeOff(options) {
1258
1274
  const idempotencyKey = targetBillingIdempotencyKey(options.idempotencyKey);
1259
1275
  if (options.dryRun) {
1260
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1276
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1261
1277
  {
1262
1278
  ok: true,
1263
1279
  dry_run: true,
@@ -1272,11 +1288,11 @@ async function handleAutoRechargeOff(options) {
1272
1288
  );
1273
1289
  return;
1274
1290
  }
1275
- const payload = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.autoRecharge.update({
1291
+ const payload = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.autoRecharge.update({
1276
1292
  enabled: false,
1277
1293
  idempotencyKey
1278
1294
  });
1279
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1295
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1280
1296
  { ok: true, idempotency_key: idempotencyKey, ...payload },
1281
1297
  { json: options.json }
1282
1298
  );
@@ -1295,11 +1311,11 @@ async function handleBuyCredits(creditsRaw, options) {
1295
1311
  return;
1296
1312
  }
1297
1313
  const idempotencyKey = targetBillingIdempotencyKey(options.idempotencyKey);
1298
- const payload = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.purchaseCredits({
1314
+ const payload = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.purchaseCredits({
1299
1315
  credits,
1300
1316
  idempotencyKey
1301
1317
  });
1302
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1318
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1303
1319
  { ok: true, idempotency_key: idempotencyKey, ...payload },
1304
1320
  { json: options.json }
1305
1321
  );
@@ -1335,7 +1351,7 @@ async function handleTopUpRecover(creditsRaw, options) {
1335
1351
  return;
1336
1352
  }
1337
1353
  if (options.dryRun) {
1338
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1354
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1339
1355
  {
1340
1356
  ok: true,
1341
1357
  dry_run: true,
@@ -1348,12 +1364,12 @@ async function handleTopUpRecover(creditsRaw, options) {
1348
1364
  );
1349
1365
  return;
1350
1366
  }
1351
- const payload = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.recoverCreditPurchase({
1367
+ const payload = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.recoverCreditPurchase({
1352
1368
  credits,
1353
1369
  orgId: options.orgId,
1354
1370
  idempotencyKey: options.idempotencyKey
1355
1371
  });
1356
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1372
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1357
1373
  { ok: true, idempotency_key: options.idempotencyKey, ...payload },
1358
1374
  { json: options.json }
1359
1375
  );
@@ -1373,37 +1389,37 @@ async function handleTargetPlan(planSku, options) {
1373
1389
  return;
1374
1390
  }
1375
1391
  const idempotencyKey = targetBillingIdempotencyKey(options.idempotencyKey);
1376
- const payload = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.transitionPlan({
1392
+ const payload = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.transitionPlan({
1377
1393
  action: "start_or_change",
1378
1394
  targetPlanSku: planSku,
1379
1395
  ...options.billingEmail ? { billingEmail: options.billingEmail } : {},
1380
1396
  idempotencyKey
1381
1397
  });
1382
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1398
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1383
1399
  { ok: true, idempotency_key: idempotencyKey, ...payload },
1384
1400
  { json: options.json }
1385
1401
  );
1386
1402
  }
1387
1403
  async function handleTargetPlanCancellation(options) {
1388
1404
  const idempotencyKey = targetBillingIdempotencyKey(options.idempotencyKey);
1389
- const payload = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.transitionPlan({
1405
+ const payload = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.transitionPlan({
1390
1406
  action: options.undo ? "undo_cancel" : "cancel",
1391
1407
  idempotencyKey
1392
1408
  });
1393
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1409
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1394
1410
  { ok: true, idempotency_key: idempotencyKey, ...payload },
1395
1411
  { json: options.json }
1396
1412
  );
1397
1413
  }
1398
1414
  async function handleTargetPortal(options) {
1399
- const payload = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.portalSession(
1415
+ const payload = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.portalSession(
1400
1416
  options.billingAddress ? { flow: "customer_update" } : void 0
1401
1417
  );
1402
- if (!options.json && !options.noOpen) _chunkD2ZRMZKFjs.openInBrowser.call(void 0, payload.url);
1403
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0, { ok: true, ...payload }, { json: options.json });
1418
+ if (!options.json && !options.noOpen) _chunkQ3PUHXOYjs.openInBrowser.call(void 0, payload.url);
1419
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0, { ok: true, ...payload }, { json: options.json });
1404
1420
  }
1405
1421
  async function handleRedeemCode(code, options) {
1406
- const { http } = _chunkD2ZRMZKFjs.getAuthedHttpClient.call(void 0, );
1422
+ const { http } = _chunkQ3PUHXOYjs.getAuthedHttpClient.call(void 0, );
1407
1423
  const payload = await http.post(
1408
1424
  "/api/v2/billing/checkout",
1409
1425
  {
@@ -1411,8 +1427,8 @@ async function handleRedeemCode(code, options) {
1411
1427
  }
1412
1428
  );
1413
1429
  const url = String(payload.url || payload.checkout_url || "");
1414
- if (!options.json && !options.noOpen && url) _chunkD2ZRMZKFjs.openInBrowser.call(void 0, url);
1415
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0,
1430
+ if (!options.json && !options.noOpen && url) _chunkQ3PUHXOYjs.openInBrowser.call(void 0, url);
1431
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0,
1416
1432
  {
1417
1433
  ...payload,
1418
1434
  render: {
@@ -1470,14 +1486,14 @@ Examples:
1470
1486
  if (!Number.isSafeInteger(quantity) || quantity <= 0) {
1471
1487
  throw new Error("--quantity must be a positive safe integer.");
1472
1488
  }
1473
- const quote = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.quote({
1489
+ const quote = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.quote({
1474
1490
  quantity,
1475
1491
  sandbox_runtime: {
1476
1492
  timeout: options.sandboxTimeout,
1477
1493
  size: "standard"
1478
1494
  }
1479
1495
  });
1480
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0, quote, {
1496
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0, quote, {
1481
1497
  json: options.json,
1482
1498
  text: `Sandbox session ceiling: ${quote.maximum_credits} Deepline credits (${quote.quantity} session${quote.quantity === 1 ? "" : "s"}).
1483
1499
  ${quote.explanation}
@@ -1598,10 +1614,7 @@ Examples:
1598
1614
  ).option("--output <path>", "Write CSV to an explicit path").option("--run-id <run_id>", "Export ledger rows for one play run.").option("--operation <id>", "Export rows for one tool operation.").option(
1599
1615
  "--since <timestamp>",
1600
1616
  "Only export rows since ISO-8601 time or Unix milliseconds."
1601
- ).option(
1602
- "--json",
1603
- "Emit JSON output"
1604
- ).action(handleLedgerExportAll)
1617
+ ).option("--json", "Emit JSON output").action(handleLedgerExportAll)
1605
1618
  )
1606
1619
  );
1607
1620
  billing.command("history").description("Export billing ledger history to CSV.").addHelpText(
@@ -1708,8 +1721,8 @@ Examples:
1708
1721
  new (0, _commander.Command)("trigger").description(
1709
1722
  "Evaluate capped automatic recharge and resume any pending purchase."
1710
1723
  ).option("--json", "Emit JSON output").action(async (options) => {
1711
- const result = await new (0, _chunkKUQAU5MGjs.DeeplineClient)().billing.autoRecharge.trigger();
1712
- _chunkD2ZRMZKFjs.printCommandEnvelope.call(void 0, { ok: true, ...result }, { json: options.json });
1724
+ const result = await new (0, _chunkAUMD2VXPjs.DeeplineClient)().billing.autoRecharge.trigger();
1725
+ _chunkQ3PUHXOYjs.printCommandEnvelope.call(void 0, { ok: true, ...result }, { json: options.json });
1713
1726
  })
1714
1727
  );
1715
1728
  billing.command("change-plan").description("Start or change the target billing plan.").argument("<plan_sku>", "payg-v1, builder-v1, growth-v1, or team-v1").option(
@@ -1771,10 +1784,7 @@ Examples:
1771
1784
  deepline billing subscription status
1772
1785
  deepline billing subscription status
1773
1786
  `
1774
- ).option(
1775
- "--json",
1776
- "Emit JSON output"
1777
- ).action(handleSubscriptionStatus)
1787
+ ).option("--json", "Emit JSON output").action(handleSubscriptionStatus)
1778
1788
  ).addCommand(
1779
1789
  new (0, _commander.Command)("cancel").description("Cancel the subscription at period end. Credits are kept.").addHelpText(
1780
1790
  "after",
@@ -1802,10 +1812,7 @@ Examples:
1802
1812
  ).option("--undo", "Reverse a pending cancellation before period end").option(
1803
1813
  "--dry-run",
1804
1814
  "Print the planned cancellation without calling the cancel endpoint"
1805
- ).option(
1806
- "--json",
1807
- "Emit JSON output"
1808
- ).action(handleSubscriptionCancel)
1815
+ ).option("--json", "Emit JSON output").action(handleSubscriptionCancel)
1809
1816
  );
1810
1817
  billing.command("invoices").description("List subscription invoices and credit purchase receipts.").addHelpText(
1811
1818
  "after",