@visa/cli 4.1.0-rc.124 → 4.1.0-rc.126

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.
@@ -244,6 +244,22 @@ export declare function createCliCheckoutEngine(deps?: CliEngineDeps): {
244
244
  startCardMandate(input: CliStartMandateInput): Promise<CliMandateFacts>;
245
245
  claimCardMandate(input: CliClaimMandateInput): Promise<CliMandateFacts>;
246
246
  review(input: CliReviewInput): Promise<CliReviewFacts>;
247
+ /**
248
+ * Give up a prepared review without paying it (#7100).
249
+ *
250
+ * The retained browser is what lets a same-process MCP `review` → `pay`
251
+ * draw against the checkout it already inspected. A TERMINAL review-only
252
+ * run has no such second call — that process tells the operator to re-RUN
253
+ * with `--submit`, and the new process cannot reach this one's in-memory
254
+ * session. So the browser sat open for the full TTL, and because a live
255
+ * browser connection keeps the event loop alive, a command that had already
256
+ * succeeded looked hung until Ctrl-C.
257
+ *
258
+ * Idempotent and non-throwing: an unknown or already-released id is a
259
+ * no-op, so it is safe on an error path that may not have prepared anything
260
+ * and safe to call twice.
261
+ */
262
+ releaseReview(reviewId: string): Promise<void>;
247
263
  pay(input: CliPayInput): Promise<CliReceiptFacts>;
248
264
  };
249
265
  export {};
@@ -472,6 +472,24 @@ export function createCliCheckoutEngine(deps = {}) {
472
472
  throw err;
473
473
  }
474
474
  },
475
+ /**
476
+ * Give up a prepared review without paying it (#7100).
477
+ *
478
+ * The retained browser is what lets a same-process MCP `review` → `pay`
479
+ * draw against the checkout it already inspected. A TERMINAL review-only
480
+ * run has no such second call — that process tells the operator to re-RUN
481
+ * with `--submit`, and the new process cannot reach this one's in-memory
482
+ * session. So the browser sat open for the full TTL, and because a live
483
+ * browser connection keeps the event loop alive, a command that had already
484
+ * succeeded looked hung until Ctrl-C.
485
+ *
486
+ * Idempotent and non-throwing: an unknown or already-released id is a
487
+ * no-op, so it is safe on an error path that may not have prepared anything
488
+ * and safe to call twice.
489
+ */
490
+ async releaseReview(reviewId) {
491
+ await closeSession(reviewId);
492
+ },
475
493
  async pay(input) {
476
494
  const session = sessions.get(input.reviewId);
477
495
  if (!session) {