@astrasyncai/verification-gateway 5.4.2 → 5.5.0

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 (94) hide show
  1. package/README.md +65 -21
  2. package/dist/adapters/express.d.mts +1 -1
  3. package/dist/adapters/express.d.ts +1 -1
  4. package/dist/adapters/express.js +7 -3
  5. package/dist/adapters/express.js.map +1 -1
  6. package/dist/adapters/express.mjs +7 -3
  7. package/dist/adapters/express.mjs.map +1 -1
  8. package/dist/adapters/mcp.d.mts +1 -1
  9. package/dist/adapters/mcp.d.ts +1 -1
  10. package/dist/adapters/mcp.js +7 -3
  11. package/dist/adapters/mcp.js.map +1 -1
  12. package/dist/adapters/mcp.mjs +7 -3
  13. package/dist/adapters/mcp.mjs.map +1 -1
  14. package/dist/adapters/nextjs.d.mts +1 -1
  15. package/dist/adapters/nextjs.d.ts +1 -1
  16. package/dist/adapters/nextjs.js +7 -3
  17. package/dist/adapters/nextjs.js.map +1 -1
  18. package/dist/adapters/nextjs.mjs +7 -3
  19. package/dist/adapters/nextjs.mjs.map +1 -1
  20. package/dist/adapters/sdk.d.mts +30 -1
  21. package/dist/adapters/sdk.d.ts +30 -1
  22. package/dist/adapters/sdk.js +40 -3
  23. package/dist/adapters/sdk.js.map +1 -1
  24. package/dist/adapters/sdk.mjs +40 -3
  25. package/dist/adapters/sdk.mjs.map +1 -1
  26. package/dist/agent/index.js +1 -1
  27. package/dist/agent/index.js.map +1 -1
  28. package/dist/agent/index.mjs +1 -1
  29. package/dist/agent/index.mjs.map +1 -1
  30. package/dist/bin/astrasync-claude-hook.js +7 -3
  31. package/dist/bin/astrasync-codex-hook.js +7 -3
  32. package/dist/bin/astrasync-guard.js +7 -3
  33. package/dist/bin/astrasync.js +8 -3
  34. package/dist/browser/background.js +7 -3
  35. package/dist/browser/background.js.map +1 -1
  36. package/dist/browser/background.mjs +7 -3
  37. package/dist/browser/background.mjs.map +1 -1
  38. package/dist/cli/index.js +1 -1
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/cli/index.mjs +1 -1
  41. package/dist/cli/index.mjs.map +1 -1
  42. package/dist/codex/index.js +7 -3
  43. package/dist/codex/index.js.map +1 -1
  44. package/dist/codex/index.mjs +7 -3
  45. package/dist/codex/index.mjs.map +1 -1
  46. package/dist/cursor/extension.js +7 -3
  47. package/dist/cursor/extension.js.map +1 -1
  48. package/dist/cursor/extension.mjs +7 -3
  49. package/dist/cursor/extension.mjs.map +1 -1
  50. package/dist/edge-config.d.mts +1 -1
  51. package/dist/edge-config.d.ts +1 -1
  52. package/dist/edge-config.js +1 -1
  53. package/dist/edge-config.js.map +1 -1
  54. package/dist/edge-config.mjs +1 -1
  55. package/dist/edge-config.mjs.map +1 -1
  56. package/dist/edge-core/index.d.mts +1 -1
  57. package/dist/edge-core/index.d.ts +1 -1
  58. package/dist/edge-core/index.js +7 -3
  59. package/dist/edge-core/index.js.map +1 -1
  60. package/dist/edge-core/index.mjs +7 -3
  61. package/dist/edge-core/index.mjs.map +1 -1
  62. package/dist/gateway/gateway.js +7 -3
  63. package/dist/gateway/gateway.js.map +1 -1
  64. package/dist/gateway/gateway.mjs +7 -3
  65. package/dist/gateway/gateway.mjs.map +1 -1
  66. package/dist/git-trigger/git-hooks.d.mts +1 -1
  67. package/dist/git-trigger/git-hooks.d.ts +1 -1
  68. package/dist/index.d.mts +77 -4
  69. package/dist/index.d.ts +77 -4
  70. package/dist/index.js +40 -3
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +40 -3
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/registration/index.js +1 -1
  75. package/dist/registration/index.js.map +1 -1
  76. package/dist/registration/index.mjs +1 -1
  77. package/dist/registration/index.mjs.map +1 -1
  78. package/dist/transport/index.js +1 -1
  79. package/dist/transport/index.js.map +1 -1
  80. package/dist/transport/index.mjs +1 -1
  81. package/dist/transport/index.mjs.map +1 -1
  82. package/dist/{types-Bd2O3eX1.d.mts → types-C-hPsi9M.d.mts} +45 -1
  83. package/dist/{types-DMChboN_.d.ts → types-CKouL1Tv.d.ts} +45 -1
  84. package/dist/{types-BU04qAAR.d.mts → types-D8DDG-qK.d.mts} +45 -1
  85. package/dist/{types-BU04qAAR.d.ts → types-D8DDG-qK.d.ts} +45 -1
  86. package/dist/ui/index.d.mts +1 -1
  87. package/dist/ui/index.d.ts +1 -1
  88. package/dist/verify.d.mts +1 -1
  89. package/dist/verify.d.ts +1 -1
  90. package/dist/verify.js +7 -3
  91. package/dist/verify.js.map +1 -1
  92. package/dist/verify.mjs +7 -3
  93. package/dist/verify.mjs.map +1 -1
  94. package/package.json +1 -1
@@ -425,11 +425,48 @@ interface VerificationResult {
425
425
  * instrument on file (steer the user to add one via onboarding).
426
426
  */
427
427
  settlementOutcome?: SettlementOutcomeInfo;
428
+ /**
429
+ * 5.5.0 (astra-pay): interim merchant self-settlement token. Present ONLY
430
+ * for firstParty merchants opted into settlement_mode='self_settle' on the
431
+ * confirm leg — YOUR server charges with this material on the shared Stripe
432
+ * account and reports the outcome via `client.reportSettlement()`.
433
+ * MERCHANT-ONLY lane: never expose it to the agent plane, never log it,
434
+ * never echo it back over the bridge handoff (the bridge strips it
435
+ * defensively). Charge with idempotency key `voucher:<jti>` and
436
+ * `metadata.jti` — that lets the platform webhook auto-reconcile even if
437
+ * your report never arrives.
438
+ */
439
+ settlementToken?: MerchantSettlementToken;
428
440
  /** Timestamp of verification */
429
441
  verifiedAt: Date;
430
442
  /** TTL for this result (seconds) */
431
443
  cacheTtl?: number;
432
444
  }
445
+ /**
446
+ * 5.5.0 (astra-pay): agent-blind settlement token for self-settling
447
+ * first-party merchants. Self-describing via `type`, so a Stripe Shared
448
+ * Payment Token can replace the raw customer/payment-method pair without a
449
+ * contract change.
450
+ */
451
+ interface MerchantSettlementToken {
452
+ type: 'stripe_delegated_charge';
453
+ stripeCustomerId: string;
454
+ stripePaymentMethodId: string;
455
+ /** Integer minor units — money is never a float on the wire. */
456
+ amountMinor: number;
457
+ /** Upper-case ISO-4217. */
458
+ currency: string;
459
+ /** Verification session id — the report-back key. */
460
+ sessionId: string | null;
461
+ /** The pending kya_shop_order row your report resolves. */
462
+ orderId: string;
463
+ /** Settlement spine: charge with Stripe idempotency key `voucher:<jti>`
464
+ * and set `metadata.jti` on the PaymentIntent. */
465
+ jti: string;
466
+ statementSuffix: string | null;
467
+ /** Advisory charge-by bound (ISO); stuck orders are ops-swept after it. */
468
+ expiresAt: string;
469
+ }
433
470
  /**
434
471
  * 5.3.0 (astra-pay): sanitized outcome of first-party charge-at-redeem
435
472
  * settlement. Carries NO voucher/instrument material — the settlement channel
@@ -440,9 +477,16 @@ interface VerificationResult {
440
477
  * approves, the platform re-drives the confirm with the SAME
441
478
  * checkoutSessionId and that re-drive carries the settling outcome
442
479
  * (one order row per session — the re-drive claims the same row).
480
+ *
481
+ * 5.5.0: OPEN union — the platform may introduce statuses (e.g.
482
+ * `pending_merchant` for self-settling merchants) ahead of your SDK version.
483
+ * Rule: treat any status you don't recognize as PENDING, never as failed.
484
+ * Also 5.5.0: `no_instrument` on a held/approved session is NON-terminal —
485
+ * the human's approval is NOT consumed; a re-drive with the same
486
+ * checkoutSessionId settles once a card is on file.
443
487
  */
444
488
  interface SettlementOutcomeInfo {
445
- status: 'settled' | 'failed' | 'requires_action' | 'no_instrument' | 'requires_approval';
489
+ status: 'settled' | 'failed' | 'requires_action' | 'no_instrument' | 'requires_approval' | 'pending_merchant' | (string & {});
446
490
  /** First-party order id — the buyer sees the purchase in their AstraSync
447
491
  * dashboard orders view (no public receipt page). */
448
492
  orderId?: string;
@@ -425,11 +425,48 @@ interface VerificationResult {
425
425
  * instrument on file (steer the user to add one via onboarding).
426
426
  */
427
427
  settlementOutcome?: SettlementOutcomeInfo;
428
+ /**
429
+ * 5.5.0 (astra-pay): interim merchant self-settlement token. Present ONLY
430
+ * for firstParty merchants opted into settlement_mode='self_settle' on the
431
+ * confirm leg — YOUR server charges with this material on the shared Stripe
432
+ * account and reports the outcome via `client.reportSettlement()`.
433
+ * MERCHANT-ONLY lane: never expose it to the agent plane, never log it,
434
+ * never echo it back over the bridge handoff (the bridge strips it
435
+ * defensively). Charge with idempotency key `voucher:<jti>` and
436
+ * `metadata.jti` — that lets the platform webhook auto-reconcile even if
437
+ * your report never arrives.
438
+ */
439
+ settlementToken?: MerchantSettlementToken;
428
440
  /** Timestamp of verification */
429
441
  verifiedAt: Date;
430
442
  /** TTL for this result (seconds) */
431
443
  cacheTtl?: number;
432
444
  }
445
+ /**
446
+ * 5.5.0 (astra-pay): agent-blind settlement token for self-settling
447
+ * first-party merchants. Self-describing via `type`, so a Stripe Shared
448
+ * Payment Token can replace the raw customer/payment-method pair without a
449
+ * contract change.
450
+ */
451
+ interface MerchantSettlementToken {
452
+ type: 'stripe_delegated_charge';
453
+ stripeCustomerId: string;
454
+ stripePaymentMethodId: string;
455
+ /** Integer minor units — money is never a float on the wire. */
456
+ amountMinor: number;
457
+ /** Upper-case ISO-4217. */
458
+ currency: string;
459
+ /** Verification session id — the report-back key. */
460
+ sessionId: string | null;
461
+ /** The pending kya_shop_order row your report resolves. */
462
+ orderId: string;
463
+ /** Settlement spine: charge with Stripe idempotency key `voucher:<jti>`
464
+ * and set `metadata.jti` on the PaymentIntent. */
465
+ jti: string;
466
+ statementSuffix: string | null;
467
+ /** Advisory charge-by bound (ISO); stuck orders are ops-swept after it. */
468
+ expiresAt: string;
469
+ }
433
470
  /**
434
471
  * 5.3.0 (astra-pay): sanitized outcome of first-party charge-at-redeem
435
472
  * settlement. Carries NO voucher/instrument material — the settlement channel
@@ -440,9 +477,16 @@ interface VerificationResult {
440
477
  * approves, the platform re-drives the confirm with the SAME
441
478
  * checkoutSessionId and that re-drive carries the settling outcome
442
479
  * (one order row per session — the re-drive claims the same row).
480
+ *
481
+ * 5.5.0: OPEN union — the platform may introduce statuses (e.g.
482
+ * `pending_merchant` for self-settling merchants) ahead of your SDK version.
483
+ * Rule: treat any status you don't recognize as PENDING, never as failed.
484
+ * Also 5.5.0: `no_instrument` on a held/approved session is NON-terminal —
485
+ * the human's approval is NOT consumed; a re-drive with the same
486
+ * checkoutSessionId settles once a card is on file.
443
487
  */
444
488
  interface SettlementOutcomeInfo {
445
- status: 'settled' | 'failed' | 'requires_action' | 'no_instrument' | 'requires_approval';
489
+ status: 'settled' | 'failed' | 'requires_action' | 'no_instrument' | 'requires_approval' | 'pending_merchant' | (string & {});
446
490
  /** First-party order id — the buyer sees the purchase in their AstraSync
447
491
  * dashboard orders view (no public receipt page). */
448
492
  orderId?: string;
@@ -475,11 +475,48 @@ interface VerificationResult {
475
475
  * instrument on file (steer the user to add one via onboarding).
476
476
  */
477
477
  settlementOutcome?: SettlementOutcomeInfo;
478
+ /**
479
+ * 5.5.0 (astra-pay): interim merchant self-settlement token. Present ONLY
480
+ * for firstParty merchants opted into settlement_mode='self_settle' on the
481
+ * confirm leg — YOUR server charges with this material on the shared Stripe
482
+ * account and reports the outcome via `client.reportSettlement()`.
483
+ * MERCHANT-ONLY lane: never expose it to the agent plane, never log it,
484
+ * never echo it back over the bridge handoff (the bridge strips it
485
+ * defensively). Charge with idempotency key `voucher:<jti>` and
486
+ * `metadata.jti` — that lets the platform webhook auto-reconcile even if
487
+ * your report never arrives.
488
+ */
489
+ settlementToken?: MerchantSettlementToken;
478
490
  /** Timestamp of verification */
479
491
  verifiedAt: Date;
480
492
  /** TTL for this result (seconds) */
481
493
  cacheTtl?: number;
482
494
  }
495
+ /**
496
+ * 5.5.0 (astra-pay): agent-blind settlement token for self-settling
497
+ * first-party merchants. Self-describing via `type`, so a Stripe Shared
498
+ * Payment Token can replace the raw customer/payment-method pair without a
499
+ * contract change.
500
+ */
501
+ interface MerchantSettlementToken {
502
+ type: 'stripe_delegated_charge';
503
+ stripeCustomerId: string;
504
+ stripePaymentMethodId: string;
505
+ /** Integer minor units — money is never a float on the wire. */
506
+ amountMinor: number;
507
+ /** Upper-case ISO-4217. */
508
+ currency: string;
509
+ /** Verification session id — the report-back key. */
510
+ sessionId: string | null;
511
+ /** The pending kya_shop_order row your report resolves. */
512
+ orderId: string;
513
+ /** Settlement spine: charge with Stripe idempotency key `voucher:<jti>`
514
+ * and set `metadata.jti` on the PaymentIntent. */
515
+ jti: string;
516
+ statementSuffix: string | null;
517
+ /** Advisory charge-by bound (ISO); stuck orders are ops-swept after it. */
518
+ expiresAt: string;
519
+ }
483
520
  /**
484
521
  * 5.3.0 (astra-pay): sanitized outcome of first-party charge-at-redeem
485
522
  * settlement. Carries NO voucher/instrument material — the settlement channel
@@ -490,9 +527,16 @@ interface VerificationResult {
490
527
  * approves, the platform re-drives the confirm with the SAME
491
528
  * checkoutSessionId and that re-drive carries the settling outcome
492
529
  * (one order row per session — the re-drive claims the same row).
530
+ *
531
+ * 5.5.0: OPEN union — the platform may introduce statuses (e.g.
532
+ * `pending_merchant` for self-settling merchants) ahead of your SDK version.
533
+ * Rule: treat any status you don't recognize as PENDING, never as failed.
534
+ * Also 5.5.0: `no_instrument` on a held/approved session is NON-terminal —
535
+ * the human's approval is NOT consumed; a re-drive with the same
536
+ * checkoutSessionId settles once a card is on file.
493
537
  */
494
538
  interface SettlementOutcomeInfo {
495
- status: 'settled' | 'failed' | 'requires_action' | 'no_instrument' | 'requires_approval';
539
+ status: 'settled' | 'failed' | 'requires_action' | 'no_instrument' | 'requires_approval' | 'pending_merchant' | (string & {});
496
540
  /** First-party order id — the buyer sees the purchase in their AstraSync
497
541
  * dashboard orders view (no public receipt page). */
498
542
  orderId?: string;
@@ -475,11 +475,48 @@ interface VerificationResult {
475
475
  * instrument on file (steer the user to add one via onboarding).
476
476
  */
477
477
  settlementOutcome?: SettlementOutcomeInfo;
478
+ /**
479
+ * 5.5.0 (astra-pay): interim merchant self-settlement token. Present ONLY
480
+ * for firstParty merchants opted into settlement_mode='self_settle' on the
481
+ * confirm leg — YOUR server charges with this material on the shared Stripe
482
+ * account and reports the outcome via `client.reportSettlement()`.
483
+ * MERCHANT-ONLY lane: never expose it to the agent plane, never log it,
484
+ * never echo it back over the bridge handoff (the bridge strips it
485
+ * defensively). Charge with idempotency key `voucher:<jti>` and
486
+ * `metadata.jti` — that lets the platform webhook auto-reconcile even if
487
+ * your report never arrives.
488
+ */
489
+ settlementToken?: MerchantSettlementToken;
478
490
  /** Timestamp of verification */
479
491
  verifiedAt: Date;
480
492
  /** TTL for this result (seconds) */
481
493
  cacheTtl?: number;
482
494
  }
495
+ /**
496
+ * 5.5.0 (astra-pay): agent-blind settlement token for self-settling
497
+ * first-party merchants. Self-describing via `type`, so a Stripe Shared
498
+ * Payment Token can replace the raw customer/payment-method pair without a
499
+ * contract change.
500
+ */
501
+ interface MerchantSettlementToken {
502
+ type: 'stripe_delegated_charge';
503
+ stripeCustomerId: string;
504
+ stripePaymentMethodId: string;
505
+ /** Integer minor units — money is never a float on the wire. */
506
+ amountMinor: number;
507
+ /** Upper-case ISO-4217. */
508
+ currency: string;
509
+ /** Verification session id — the report-back key. */
510
+ sessionId: string | null;
511
+ /** The pending kya_shop_order row your report resolves. */
512
+ orderId: string;
513
+ /** Settlement spine: charge with Stripe idempotency key `voucher:<jti>`
514
+ * and set `metadata.jti` on the PaymentIntent. */
515
+ jti: string;
516
+ statementSuffix: string | null;
517
+ /** Advisory charge-by bound (ISO); stuck orders are ops-swept after it. */
518
+ expiresAt: string;
519
+ }
483
520
  /**
484
521
  * 5.3.0 (astra-pay): sanitized outcome of first-party charge-at-redeem
485
522
  * settlement. Carries NO voucher/instrument material — the settlement channel
@@ -490,9 +527,16 @@ interface VerificationResult {
490
527
  * approves, the platform re-drives the confirm with the SAME
491
528
  * checkoutSessionId and that re-drive carries the settling outcome
492
529
  * (one order row per session — the re-drive claims the same row).
530
+ *
531
+ * 5.5.0: OPEN union — the platform may introduce statuses (e.g.
532
+ * `pending_merchant` for self-settling merchants) ahead of your SDK version.
533
+ * Rule: treat any status you don't recognize as PENDING, never as failed.
534
+ * Also 5.5.0: `no_instrument` on a held/approved session is NON-terminal —
535
+ * the human's approval is NOT consumed; a re-drive with the same
536
+ * checkoutSessionId settles once a card is on file.
493
537
  */
494
538
  interface SettlementOutcomeInfo {
495
- status: 'settled' | 'failed' | 'requires_action' | 'no_instrument' | 'requires_approval';
539
+ status: 'settled' | 'failed' | 'requires_action' | 'no_instrument' | 'requires_approval' | 'pending_merchant' | (string & {});
496
540
  /** First-party order id — the buyer sees the purchase in their AstraSync
497
541
  * dashboard orders view (no public receipt page). */
498
542
  orderId?: string;
@@ -1,4 +1,4 @@
1
- import { V as VerificationInterstitialProps, d as VerificationResult, A as AgentCredentials, b as GuidanceInfo, T as TrustLevel } from '../types-BU04qAAR.mjs';
1
+ import { V as VerificationInterstitialProps, d as VerificationResult, A as AgentCredentials, b as GuidanceInfo, T as TrustLevel } from '../types-D8DDG-qK.mjs';
2
2
 
3
3
  /**
4
4
  * AstraSync Verification Interstitial Component
@@ -1,4 +1,4 @@
1
- import { V as VerificationInterstitialProps, d as VerificationResult, A as AgentCredentials, b as GuidanceInfo, T as TrustLevel } from '../types-BU04qAAR.js';
1
+ import { V as VerificationInterstitialProps, d as VerificationResult, A as AgentCredentials, b as GuidanceInfo, T as TrustLevel } from '../types-D8DDG-qK.js';
2
2
 
3
3
  /**
4
4
  * AstraSync Verification Interstitial Component
package/dist/verify.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as AgentCredentials, G as GatewayConfig, a as AttemptReport, V as VerificationRequest, c as VerificationResult } from './types-Bd2O3eX1.mjs';
1
+ import { A as AgentCredentials, G as GatewayConfig, a as AttemptReport, V as VerificationRequest, c as VerificationResult } from './types-C-hPsi9M.mjs';
2
2
  import { ObservedMetadata } from './metadata-capture.mjs';
3
3
 
4
4
  /**
package/dist/verify.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as AgentCredentials, G as GatewayConfig, a as AttemptReport, V as VerificationRequest, c as VerificationResult } from './types-DMChboN_.js';
1
+ import { A as AgentCredentials, G as GatewayConfig, a as AttemptReport, V as VerificationRequest, c as VerificationResult } from './types-CKouL1Tv.js';
2
2
  import { ObservedMetadata } from './metadata-capture.js';
3
3
 
4
4
  /**
package/dist/verify.js CHANGED
@@ -36,7 +36,7 @@ __export(verify_exports, {
36
36
  module.exports = __toCommonJS(verify_exports);
37
37
 
38
38
  // src/version.ts
39
- var SDK_VERSION = "5.4.1";
39
+ var SDK_VERSION = "5.5.0";
40
40
 
41
41
  // src/http.ts
42
42
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -530,7 +530,10 @@ async function verify(config, request, options) {
530
530
  recommendationReasons: apiResponse.recommendationReasons,
531
531
  stepUpApproval: apiResponse.stepUpApproval,
532
532
  settlement: apiResponse.settlement,
533
- settlementOutcome: apiResponse.settlementOutcome
533
+ settlementOutcome: apiResponse.settlementOutcome,
534
+ // 5.5.0 self-settlement: merchant-only material — passes through to the
535
+ // MERCHANT caller only (bridge callers strip it before the agent plane).
536
+ settlementToken: apiResponse.settlementToken
534
537
  };
535
538
  return result2;
536
539
  }
@@ -588,7 +591,8 @@ async function verify(config, request, options) {
588
591
  warningHeader: apiResponse.warningHeader,
589
592
  stepUpApproval: apiResponse.stepUpApproval,
590
593
  settlement: apiResponse.settlement,
591
- settlementOutcome: apiResponse.settlementOutcome
594
+ settlementOutcome: apiResponse.settlementOutcome,
595
+ settlementToken: apiResponse.settlementToken
592
596
  };
593
597
  if (result.recommendation === "deny") {
594
598
  result.policyAllowed = false;