@perkos/agent-sdk 0.3.2 → 0.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.
package/CHANGELOG.md CHANGED
@@ -4,7 +4,45 @@ All notable changes to `@perkos/agent-sdk` are documented here.
4
4
 
5
5
  ## Unreleased
6
6
 
7
- No changes yet.
7
+ ## 0.5.0 - 2026-08-28
8
+
9
+ ### Added
10
+
11
+ - A standards-based MPP PaymentAuth adapter for `method="usdc"`, `intent="charge"` and the direct
12
+ USDCx on Stacks profile, separate from the existing x402 routes.
13
+ - RFC 8785 canonical challenge, credential and receipt codecs; `WWW-Authenticate: Payment`
14
+ challenges select `Payment-Authorization` so OAuth Bearer credentials remain independent.
15
+ - Official mainnet and testnet USDCx method details, CAIP-10 payer sources, base64 SIP-005
16
+ transaction credentials and `Payment-Receipt` settlement pointers.
17
+ - An MPP-specific unsigned transaction builder that reuses the existing payer intent and spending
18
+ policy while selecting the required `OnChainOnly` anchor mode.
19
+ - Public integration documentation and a safe offline MPP/USDCx quickstart.
20
+
21
+ ### Security
22
+
23
+ - Bind each MPP challenge to a trusted Nayori quote and actual protected request, including HTTP
24
+ body digest, amount, recipient, asset, merchant and expiry.
25
+ - Reuse exact SIP-010 transfer, memo, signature and post-condition verification, adding strict
26
+ profile fields, canonical envelopes, standard single-signature authorization and low-s signing.
27
+ - Keep sponsorship disabled and leave live nonce/balance checks, durable replay reservation,
28
+ broadcast, confirmation and delivery at the hosted Platform boundary.
29
+
30
+ ## 0.4.0 - 2026-08-28
31
+
32
+ ### Added
33
+
34
+ - `NayoriPartnerClient` for invitation-bound wallet challenges, one-time OAuth client enrollment,
35
+ minimum-scope client-credentials tokens and authenticated MCP JSON-RPC calls.
36
+ - `createStacksConnectPartnerSigner` adapter for Leather-compatible `stx_signMessage` responses
37
+ without giving the SDK wallet key material.
38
+ - Partner-pilot documentation covering exact-message review, one-time secret handling, scopes,
39
+ MCP tools and the separate wallet payment-signing boundary.
40
+
41
+ ### Security
42
+
43
+ - Normalize and validate recoverable signatures and compressed public keys before registration.
44
+ - Keep OAuth credentials caller-owned: the SDK does not persist, log, refresh or treat them as
45
+ payment authorization.
8
46
 
9
47
  ## 0.3.2 - 2026-08-27
10
48
 
package/README.md CHANGED
@@ -9,14 +9,17 @@ This repository is the continuation of `PerkOS-xyz/PerkOS-Agent-SDK`, renamed to
9
9
  public SDK with the Nayori product identity. The npm package remains `@perkos/agent-sdk` and the
10
10
  complete Git history, releases, issues, and pull requests are preserved.
11
11
 
12
- > Status: 0.3.2 developer release. Read clients, transaction builders, browser and headless signer
12
+ > Status: 0.5.0 developer release. Read clients, transaction builders, browser and headless signer
13
13
  > adapters, confirmation receipts, safety policies, and a transactional testnet quickstart are
14
- > implemented. The x402 v2 client and Stacks facilitator foundations are implemented; hosted quote
15
- > infrastructure now exists separately, while production settlement enablement, MCP adapters,
16
- > external review, and adoption evidence remain before Milestone 2 completion. The direct x402
14
+ > implemented. The x402 v2 client and Stacks facilitator foundations are implemented; this release
15
+ > adds wallet-linked OAuth and MCP support for the planned invite-only testnet pilot. Hosted rollout,
16
+ > external review and adoption evidence remain before Milestone 2 completion. The direct x402
17
17
  > profile includes request-bound pure verification
18
18
  > and payer-side intent, policy, Leather, and remote-signer foundations for STX, sBTC, and USDCx.
19
- > It does not broadcast transactions, and hosted production settlement remains disabled.
19
+ > The SDK also implements the MPP PaymentAuth `usdc`/`charge` Stacks profile for direct USDCx,
20
+ > including canonical challenges, credentials, pure verification and settlement receipts.
21
+ > Every payment signature remains delegated to the configured wallet or custody boundary. Mainnet
22
+ > facilitator settlement remains disabled.
20
23
 
21
24
  ## Requirements
22
25
 
@@ -65,6 +68,14 @@ network call, and does not request a wallet signature or broadcast:
65
68
  npm run quickstart:x402:payer
66
69
  ```
67
70
 
71
+ The MPP PaymentAuth quickstart creates a standard `WWW-Authenticate: Payment` USDCx challenge,
72
+ applies the same payer policy and builds an unsigned `OnChainOnly` Stacks transaction. It is
73
+ offline, contains no private key and does not request a wallet signature or broadcast:
74
+
75
+ ```bash
76
+ npm run quickstart:mpp
77
+ ```
78
+
68
79
  The transactional quickstart is also safe by default: it only prints a seven-step sBTC testnet
69
80
  lifecycle and its funding-policy decision.
70
81
 
@@ -148,6 +159,43 @@ const perkos = new PerkOSClient({ network: "mainnet", signer });
148
159
  Install `@stacks/connect` in the browser application. Wallet discovery and account selection stay
149
160
  at the application boundary so the SDK cannot silently choose an account.
150
161
 
162
+ ## Invite-only partner OAuth and MCP
163
+
164
+ `NayoriPartnerClient` enrolls an invited partner without taking custody of a wallet. It requests a
165
+ single-use challenge, delegates the exact plaintext to Leather through `stx_signMessage`, submits
166
+ the signature and returns the generated OAuth client secret once. OAuth authorizes API/MCP access
167
+ only; every payment remains a separate wallet-signed transaction.
168
+
169
+ ```ts
170
+ import { request } from "@stacks/connect";
171
+ import {
172
+ NayoriPartnerClient,
173
+ createStacksConnectPartnerSigner,
174
+ } from "@perkos/agent-sdk";
175
+
176
+ const partners = new NayoriPartnerClient();
177
+ const credentials = await partners.enroll({
178
+ invitationToken,
179
+ walletAddress: connectedTestnetAddress,
180
+ signMessage: createStacksConnectPartnerSigner(request),
181
+ });
182
+
183
+ // Move the one-time secret directly into the application's secret manager.
184
+ const token = await partners.requestToken({
185
+ clientId: credentials.clientId,
186
+ clientSecret: credentials.clientSecret,
187
+ scopes: ["mcp:invoke"],
188
+ });
189
+
190
+ const tools = await partners.callMcp({
191
+ accessToken: token.accessToken,
192
+ method: "tools/list",
193
+ });
194
+ ```
195
+
196
+ See [Partner pilot](docs/PARTNER_PILOT.md) for the complete enrollment, scope and secret-handling
197
+ boundary.
198
+
151
199
  ## Headless signer
152
200
 
153
201
  `HeadlessSigner` requests key material only when deriving the public address or signing. It caches
@@ -331,6 +379,44 @@ facilitator request body. See [`docs/X402_PAYMENTS.md`](docs/X402_PAYMENTS.md) f
331
379
  Direct payments and `perkos-escrow-v1` are complementary. Use direct payments for immediate
332
380
  resources and escrow for jobs that require delivery, evaluation, payout, or reputation.
333
381
 
382
+ ## MPP PaymentAuth with USDCx on Stacks
383
+
384
+ MPP is a separate standards-based commerce path beside x402. Nayori implements the official
385
+ `Payment` HTTP authentication scheme with `method="usdc"`, `intent="charge"` and the direct Stacks
386
+ USDCx profile. The server issues a canonical `WWW-Authenticate: Payment` challenge and selects
387
+ `Payment-Authorization` for the payment credential, leaving `Authorization: Bearer` available for
388
+ OAuth.
389
+
390
+ ```ts
391
+ import {
392
+ createNayoriMppUsdcStacksChallenge,
393
+ createNayoriMppUsdcStacksCredential,
394
+ encodeNayoriMppCredentialHeader,
395
+ } from "@perkos/agent-sdk";
396
+
397
+ const { challenge, wwwAuthenticate } =
398
+ await createNayoriMppUsdcStacksChallenge({
399
+ quote: trustedUsdcxQuote,
400
+ realm: "api.nayori.ai",
401
+ description: "Nayori paid agent request",
402
+ });
403
+
404
+ const credential = createNayoriMppUsdcStacksCredential({
405
+ challenge,
406
+ source: `stacks:2147483648:${payerAddress}`,
407
+ transaction: walletSignedTransactionHex,
408
+ });
409
+
410
+ console.log(wwwAuthenticate);
411
+ console.log(encodeNayoriMppCredentialHeader(credential));
412
+ ```
413
+
414
+ The verifier reuses Nayori's exact request-bound Stacks transaction checks and adds the MPP rules:
415
+ RFC 8785 envelopes, CAIP-10 source, canonical official USDCx identity, `OnChainOnly`, standard
416
+ single-signature authorization and low-s signing. Replay persistence, nonce/balance preflight,
417
+ broadcast, confirmations, receipt delivery and merchant authentication remain hosted Platform
418
+ responsibilities. See [MPP payments](docs/MPP_PAYMENTS.md) for the complete flow and trust boundary.
419
+
334
420
  ## x402 v2 Stacks facilitator
335
421
 
336
422
  `PerkOSX402Facilitator` implements the official `SchemeNetworkFacilitator` interface. It reloads
@@ -391,11 +477,20 @@ or facilitator-submitted signed transaction.
391
477
  - Automated workflows can wait for an explicit terminal confirmation before their next action.
392
478
  - x402 quotes are bound to the configured network, escrow contract, asset, job, and exact budget.
393
479
  - x402 settlement verifies current chain evidence and atomically consumes each funding txid once.
480
+ - MPP USDCx credentials echo a request-bound challenge and require a canonical, low-s,
481
+ `OnChainOnly` Stacks transfer; hosted settlement must still consume challenge and replay keys
482
+ atomically before broadcast.
483
+ - Partner OAuth enrollment signs an exact, short-lived, invitation-bound message in the wallet;
484
+ the SDK normalizes the public signature but never receives a private key.
485
+ - OAuth client secrets and access tokens are application secrets. The SDK returns them to the
486
+ caller but does not persist, log or refresh them automatically.
394
487
 
395
488
  This package has not yet completed the external security review required for PerkOS Milestone 2.
396
489
  Do not treat the developer release as audited software.
397
490
 
398
- See [Architecture](docs/ARCHITECTURE.md) and [Security](SECURITY.md) for the trust boundaries and
491
+ See [Architecture](docs/ARCHITECTURE.md), [x402 payments](docs/X402_PAYMENTS.md),
492
+ [MPP payments](docs/MPP_PAYMENTS.md), [Partner pilot](docs/PARTNER_PILOT.md) and
493
+ [Security](SECURITY.md) for the trust boundaries and
399
494
  responsible disclosure process.
400
495
 
401
496
  ## Development
package/SECURITY.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Release status
4
4
 
5
- `@perkos/agent-sdk` 0.2.0 is an M2 developer release and has not completed the external security
5
+ `@perkos/agent-sdk` 0.5.0 is an M2 developer release and has not completed the external security
6
6
  review required for the PerkOS Stacks Endowment milestone.
7
7
 
8
8
  Do not use this developer release to control material funds without your own review. Inspect every
@@ -40,6 +40,14 @@ disclosure.
40
40
  - Explicit direct-payment recipient, HTTPS origin, merchant, amount, fee, and session limits.
41
41
  - Concurrent payment reservations that prevent asynchronous agents from oversubscribing a budget.
42
42
  - Independent verification of every signed direct-payment transaction before facilitator submission.
43
+ - MPP PaymentAuth challenge binding, canonical JCS/base64url envelopes, CAIP-10 source matching,
44
+ official USDCx identity, `OnChainOnly`, standard single-signature authorization and low-s checks.
45
+ - MPP sponsorship is disabled; the pure verifier never represents a wallet approval, broadcast or
46
+ mempool response as confirmed settlement.
47
+ - Invitation-bound partner enrollment through exact Stacks message signing, with compressed public
48
+ key and recoverable-signature validation before API submission.
49
+ - OAuth client secrets and tokens remain caller-owned and are never persisted or automatically
50
+ refreshed by the SDK.
43
51
 
44
52
  ## Key handling
45
53
 
@@ -62,6 +70,12 @@ in-process policy is defense in depth and can be bypassed by a malicious host ap
62
70
  custody service must independently authenticate callers, revalidate intent, enforce durable limits,
63
71
  and keep keys outside the agent/LLM process.
64
72
 
73
+ `createStacksConnectPartnerSigner` uses `stx_signMessage` only for the exact partner-enrollment
74
+ challenge. This signature authorizes OAuth client creation, not a payment. The host must show the
75
+ message, network and selected address to the user, move the returned one-time client secret into a
76
+ secret manager and keep invitations, signatures, secrets and access tokens out of telemetry and
77
+ prompts.
78
+
65
79
  ## Confirmation handling
66
80
 
67
81
  A broadcast receipt means a node accepted the transaction, not that the contract call succeeded.
@@ -76,3 +90,8 @@ The SDK prepares, validates, and submits transaction plans through an applicatio
76
90
  signer. It does not prove that the signer implementation is safe. Applications must protect
77
91
  private keys, verify wallet prompts, authenticate agent commands, and treat external tool or
78
92
  model output as untrusted.
93
+
94
+ The MPP verifier does not authenticate merchants, check live nonces or balances, inspect token
95
+ pause/blocklist controls, persist challenge or transaction replay state, broadcast, reconcile,
96
+ confirm or deliver resources. A hosted deployment must enforce those controls atomically and must
97
+ only issue `Payment-Receipt` after its configured confirmation threshold is met.
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { SpendingPolicy } from "./policy.js";
4
4
  export { HeadlessSigner, StacksConnectSigner } from "./signers.js";
5
5
  export { TransactionTracker } from "./tracker.js";
6
6
  export { PerkOSError } from "./errors.js";
7
+ export { NAYORI_PARTNER_SCOPES, NayoriPartnerApiError, NayoriPartnerClient, createStacksConnectPartnerSigner, } from "./partner.js";
7
8
  export { DEFAULT_DEPLOYMENTS, JOB_STATUS, CLARITY_ERROR_MESSAGES } from "./constants.js";
8
9
  export { resolveConfig, toUint } from "./validation.js";
9
10
  export { normalizeTxid } from "./txid.js";
@@ -11,12 +12,15 @@ export { PERKOS_X402_ASSET_TRANSFER_METHOD, PERKOS_X402_PAYMENT_FLOW, PERKOS_X40
11
12
  export { HiroX402TransactionSource, InMemoryX402ReplayStore, PerkOSX402Facilitator, PerkOSX402VerificationError, perkosX402ReplayKey, } from "./x402-facilitator.js";
12
13
  export { NAYORI_X402_DIRECT_ASSETS, NAYORI_X402_DIRECT_ASSET_TRANSFER_METHOD, NAYORI_X402_DIRECT_PAYMENT_FLOW, NAYORI_X402_QUOTE_FINGERPRINT_PREFIX, NAYORI_X402_QUOTE_VERSION, NayoriX402DirectVerificationError, canonicalizeNayoriX402Quote, canonicalizeNayoriX402ResourceUrl, createNayoriX402DirectPaymentPayload, createNayoriX402PaymentRequirements, createNayoriX402Quote, createNayoriX402QuoteFingerprint, getNayoriX402Asset, hashNayoriX402RequestBody, verifyNayoriX402DirectPayment, validateNayoriX402PaymentContext, } from "./x402-direct.js";
13
14
  export { LeatherSigner, NAYORI_X402_PAYMENT_INTENT_PREFIX, NAYORI_X402_PAYMENT_INTENT_VERSION, NayoriX402PaymentClient, NayoriX402PaymentPolicy, PolicySigner, buildNayoriX402UnsignedPaymentTransaction, createNayoriX402PaymentIntent, } from "./x402-paying.js";
15
+ export { MPP_PAYMENT_SCHEME, NAYORI_MPP_CREDENTIAL_HEADER, NAYORI_MPP_INTENT, NAYORI_MPP_METHOD, NAYORI_MPP_PROFILE, NAYORI_MPP_TRANSACTION_FORMAT, NayoriMppVerificationError, buildNayoriMppUnsignedPaymentTransaction, canonicalizeNayoriMppJson, createNayoriMppUsdcStacksChallenge, createNayoriMppUsdcStacksCredential, createNayoriMppUsdcStacksReceipt, decodeNayoriMppChallengeHeader, decodeNayoriMppCredentialHeader, decodeNayoriMppJson, decodeNayoriMppReceiptHeader, decodeNayoriMppUsdcStacksRequest, encodeNayoriMppChallengeHeader, encodeNayoriMppCredentialHeader, encodeNayoriMppJson, encodeNayoriMppReceiptHeader, nayoriMppStacksReplayKey, verifyNayoriMppUsdcStacksPayment, } from "./mpp.js";
14
16
  export type { HeadlessSignerOptions, HeadlessTransactionExecutor, HeadlessTransactionRequest, PrivateKeyMaterial, PrivateKeyProvider, StacksConnectContractCallParams, StacksConnectRequest, StacksConnectSignerOptions, } from "./signers.js";
15
17
  export type { TrackerFetch, TransactionTrackerOptions, } from "./tracker.js";
16
18
  export type { AgentEndpoint, AgentRecord, Amount, AmountLike, AssignProviderInput, ConfirmationOptions, ConfirmedTransactionReceipt, ContractCallPlan, ContractId, CreateJobInput, FundJobInput, JobAmountInput, JobRecord, JobStatus, PaymentAsset, PerkOSConfig, PerkOSContracts, PerkOSNetwork, PerkOSOperation, PerkOSSigner, RateProviderInput, ReadOnlyCall, ReadOnlyTransport, RegisterAgentInput, ReputationRecord, ResolvedPerkOSConfig, SettleJobInput, SignerResult, SpendingApproval, SpendingPolicyInput, SubmitWorkInput, TransactionIntent, TransactionConfirmation, TransactionConfirmationStatus, TransactionReceipt, TransactionResultValue, TransactionTrackerLike, UpdateAgentInput, } from "./types.js";
17
19
  export type { PerkOSErrorCode, PerkOSErrorDetails } from "./errors.js";
20
+ export type { NayoriPartnerAccessToken, NayoriPartnerChallenge, NayoriPartnerCredentials, NayoriPartnerFetch, NayoriPartnerMessageSignature, NayoriPartnerMessageSigner, NayoriPartnerNetwork, NayoriPartnerScope, StacksConnectMessageRequest, } from "./partner.js";
18
21
  export type { ParsedPerkOSX402Requirement, PaymentPayload, PaymentRequired, PaymentRequirements, PerkOSX402ClientLike, PerkOSX402PaymentProof, PerkOSX402PaymentRequiredInput, PerkOSX402SchemeClientOptions, ResourceInfo, SettleResponse, } from "./x402.js";
19
22
  export type { HiroX402TransactionSourceOptions, PerkOSX402FacilitatorOptions, PerkOSX402ReplayRecord, PerkOSX402ReplayStore, PerkOSX402TransactionSource, PerkOSX402VerifiedPayment, X402VerifierFetch, } from "./x402-facilitator.js";
20
23
  export type { NayoriStacksX402Network, NayoriX402AssetDefinition, NayoriX402DirectPaymentPayloadInput, NayoriX402PaymentAsset, NayoriX402ProtectedRequest, NayoriX402Quote, NayoriX402QuoteInput, NayoriX402VerifiedDirectPayment, NayoriX402ValidatedPaymentContext, ValidateNayoriX402PaymentContextInput, VerifyNayoriX402DirectPaymentInput, } from "./x402-direct.js";
24
+ export type { CreateNayoriMppChallengeInput, CreateNayoriMppCredentialInput, CreateNayoriMppReceiptInput, NayoriMppChallenge, NayoriMppChallengeBundle, NayoriMppJsonValue, NayoriMppUsdcStacksCredential, NayoriMppUsdcStacksDetails, NayoriMppUsdcStacksPayload, NayoriMppUsdcStacksReceipt, NayoriMppUsdcStacksRequest, NayoriMppVerifiedUsdcStacksPayment, VerifyNayoriMppUsdcStacksPaymentInput, } from "./mpp.js";
21
25
  export type { LeatherRequest, LeatherSignTransactionParams, LeatherSignerOptions, NayoriX402PaymentAuthorization, NayoriX402PaymentClientOptions, NayoriX402PaymentIntent, NayoriX402PaymentIntentInput, NayoriX402PaymentPolicyInput, NayoriX402PaymentSessionUsage, NayoriX402PaymentSignRequest, NayoriX402PaymentSigner, NayoriX402PreparePaymentInput, NayoriX402PreparedPayment, NayoriX402SettlementRequest, NayoriX402SignedTransaction, PolicySignerCallback, PolicySignerOptions, PolicySignerRequest, } from "./x402-paying.js";
22
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ export { SpendingPolicy } from "./policy.js";
4
4
  export { HeadlessSigner, StacksConnectSigner } from "./signers.js";
5
5
  export { TransactionTracker } from "./tracker.js";
6
6
  export { PerkOSError } from "./errors.js";
7
+ export { NAYORI_PARTNER_SCOPES, NayoriPartnerApiError, NayoriPartnerClient, createStacksConnectPartnerSigner, } from "./partner.js";
7
8
  export { DEFAULT_DEPLOYMENTS, JOB_STATUS, CLARITY_ERROR_MESSAGES } from "./constants.js";
8
9
  export { resolveConfig, toUint } from "./validation.js";
9
10
  export { normalizeTxid } from "./txid.js";
@@ -11,4 +12,5 @@ export { PERKOS_X402_ASSET_TRANSFER_METHOD, PERKOS_X402_PAYMENT_FLOW, PERKOS_X40
11
12
  export { HiroX402TransactionSource, InMemoryX402ReplayStore, PerkOSX402Facilitator, PerkOSX402VerificationError, perkosX402ReplayKey, } from "./x402-facilitator.js";
12
13
  export { NAYORI_X402_DIRECT_ASSETS, NAYORI_X402_DIRECT_ASSET_TRANSFER_METHOD, NAYORI_X402_DIRECT_PAYMENT_FLOW, NAYORI_X402_QUOTE_FINGERPRINT_PREFIX, NAYORI_X402_QUOTE_VERSION, NayoriX402DirectVerificationError, canonicalizeNayoriX402Quote, canonicalizeNayoriX402ResourceUrl, createNayoriX402DirectPaymentPayload, createNayoriX402PaymentRequirements, createNayoriX402Quote, createNayoriX402QuoteFingerprint, getNayoriX402Asset, hashNayoriX402RequestBody, verifyNayoriX402DirectPayment, validateNayoriX402PaymentContext, } from "./x402-direct.js";
13
14
  export { LeatherSigner, NAYORI_X402_PAYMENT_INTENT_PREFIX, NAYORI_X402_PAYMENT_INTENT_VERSION, NayoriX402PaymentClient, NayoriX402PaymentPolicy, PolicySigner, buildNayoriX402UnsignedPaymentTransaction, createNayoriX402PaymentIntent, } from "./x402-paying.js";
15
+ export { MPP_PAYMENT_SCHEME, NAYORI_MPP_CREDENTIAL_HEADER, NAYORI_MPP_INTENT, NAYORI_MPP_METHOD, NAYORI_MPP_PROFILE, NAYORI_MPP_TRANSACTION_FORMAT, NayoriMppVerificationError, buildNayoriMppUnsignedPaymentTransaction, canonicalizeNayoriMppJson, createNayoriMppUsdcStacksChallenge, createNayoriMppUsdcStacksCredential, createNayoriMppUsdcStacksReceipt, decodeNayoriMppChallengeHeader, decodeNayoriMppCredentialHeader, decodeNayoriMppJson, decodeNayoriMppReceiptHeader, decodeNayoriMppUsdcStacksRequest, encodeNayoriMppChallengeHeader, encodeNayoriMppCredentialHeader, encodeNayoriMppJson, encodeNayoriMppReceiptHeader, nayoriMppStacksReplayKey, verifyNayoriMppUsdcStacksPayment, } from "./mpp.js";
14
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,iCAAiC,EACjC,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yBAAyB,EACzB,wCAAwC,EACxC,+BAA+B,EAC/B,oCAAoC,EACpC,yBAAyB,EACzB,iCAAiC,EACjC,2BAA2B,EAC3B,iCAAiC,EACjC,oCAAoC,EACpC,mCAAmC,EACnC,qBAAqB,EACrB,gCAAgC,EAChC,kBAAkB,EAClB,yBAAyB,EACzB,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,iCAAiC,EACjC,kCAAkC,EAClC,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,yCAAyC,EACzC,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,GACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,iCAAiC,EACjC,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yBAAyB,EACzB,wCAAwC,EACxC,+BAA+B,EAC/B,oCAAoC,EACpC,yBAAyB,EACzB,iCAAiC,EACjC,2BAA2B,EAC3B,iCAAiC,EACjC,oCAAoC,EACpC,mCAAmC,EACnC,qBAAqB,EACrB,gCAAgC,EAChC,kBAAkB,EAClB,yBAAyB,EACzB,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,iCAAiC,EACjC,kCAAkC,EAClC,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,yCAAyC,EACzC,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,0BAA0B,EAC1B,wCAAwC,EACxC,yBAAyB,EACzB,kCAAkC,EAClC,mCAAmC,EACnC,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mBAAmB,EACnB,4BAA4B,EAC5B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,mBAAmB,EACnB,4BAA4B,EAC5B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,UAAU,CAAC"}
package/dist/mpp.d.ts ADDED
@@ -0,0 +1,135 @@
1
+ import type { NayoriX402PaymentIntent } from "./x402-paying.js";
2
+ import type { NayoriX402ProtectedRequest, NayoriX402Quote, NayoriX402VerifiedDirectPayment } from "./x402-direct.js";
3
+ export declare const MPP_PAYMENT_SCHEME = "Payment";
4
+ export declare const NAYORI_MPP_METHOD = "usdc";
5
+ export declare const NAYORI_MPP_INTENT = "charge";
6
+ export declare const NAYORI_MPP_PROFILE = "stacks";
7
+ export declare const NAYORI_MPP_CREDENTIAL_HEADER = "Payment-Authorization";
8
+ export declare const NAYORI_MPP_TRANSACTION_FORMAT = "stacks_transaction_v1";
9
+ type JsonPrimitive = string | number | boolean | null;
10
+ export type NayoriMppJsonValue = JsonPrimitive | readonly NayoriMppJsonValue[] | {
11
+ readonly [key: string]: NayoriMppJsonValue;
12
+ };
13
+ export interface NayoriMppUsdcStacksDetails {
14
+ readonly network: "mainnet" | "testnet";
15
+ readonly chainId: "1" | "2147483648";
16
+ readonly contractAddress: string;
17
+ readonly contractName: string;
18
+ readonly assetName: "usdcx-token";
19
+ readonly functionName: "transfer";
20
+ readonly decimals: 6;
21
+ readonly feePayer: false;
22
+ }
23
+ export interface NayoriMppUsdcStacksRequest {
24
+ readonly amount: string;
25
+ readonly currency: string;
26
+ readonly recipient: string;
27
+ readonly description?: string;
28
+ readonly externalId: string;
29
+ readonly methodDetails: {
30
+ readonly type: typeof NAYORI_MPP_PROFILE;
31
+ readonly stacks: NayoriMppUsdcStacksDetails;
32
+ };
33
+ }
34
+ export interface NayoriMppChallenge {
35
+ readonly id: string;
36
+ readonly realm: string;
37
+ readonly method: typeof NAYORI_MPP_METHOD;
38
+ readonly intent: typeof NAYORI_MPP_INTENT;
39
+ readonly request: string;
40
+ readonly expires: string;
41
+ readonly digest: string;
42
+ readonly header: typeof NAYORI_MPP_CREDENTIAL_HEADER;
43
+ readonly description?: string;
44
+ }
45
+ export interface NayoriMppChallengeBundle {
46
+ readonly challenge: NayoriMppChallenge;
47
+ readonly paymentRequest: NayoriMppUsdcStacksRequest;
48
+ readonly wwwAuthenticate: string;
49
+ }
50
+ export interface NayoriMppUsdcStacksPayload {
51
+ readonly type: "transaction";
52
+ readonly transaction: string;
53
+ readonly transactionFormat?: typeof NAYORI_MPP_TRANSACTION_FORMAT;
54
+ }
55
+ export interface NayoriMppUsdcStacksCredential {
56
+ readonly challenge: NayoriMppChallenge;
57
+ readonly source: string;
58
+ readonly payload: NayoriMppUsdcStacksPayload;
59
+ }
60
+ export interface NayoriMppUsdcStacksReceipt {
61
+ readonly method: typeof NAYORI_MPP_METHOD;
62
+ readonly type: typeof NAYORI_MPP_PROFILE;
63
+ readonly challengeId: string;
64
+ readonly reference: string;
65
+ readonly status: "success";
66
+ readonly timestamp: string;
67
+ readonly network: "stacks:1" | "stacks:2147483648";
68
+ readonly externalId?: string;
69
+ }
70
+ export interface CreateNayoriMppChallengeInput {
71
+ /** Trusted, server-issued Nayori quote. Its quoteId becomes the stateful MPP challenge id. */
72
+ readonly quote: NayoriX402Quote;
73
+ readonly realm: string;
74
+ readonly description?: string;
75
+ }
76
+ export interface CreateNayoriMppCredentialInput {
77
+ readonly challenge: NayoriMppChallenge;
78
+ /** CAIP-10 account: stacks:<chainId>:<standard-principal>. */
79
+ readonly source: string;
80
+ /** Signed Stacks transaction encoded as hexadecimal consensus bytes. */
81
+ readonly transaction: string;
82
+ }
83
+ export interface VerifyNayoriMppUsdcStacksPaymentInput {
84
+ readonly credential: unknown;
85
+ readonly expectedChallenge: NayoriMppChallenge;
86
+ /** The hosted layer must authenticate the merchant and validate the quote signature first. */
87
+ readonly trustedQuote: NayoriX402Quote;
88
+ readonly request: NayoriX402ProtectedRequest;
89
+ readonly nowSeconds?: number;
90
+ readonly clockSkewSeconds?: number;
91
+ }
92
+ export interface NayoriMppVerifiedUsdcStacksPayment extends NayoriX402VerifiedDirectPayment {
93
+ readonly protocol: "mpp";
94
+ readonly method: typeof NAYORI_MPP_METHOD;
95
+ readonly intent: typeof NAYORI_MPP_INTENT;
96
+ readonly profile: typeof NAYORI_MPP_PROFILE;
97
+ readonly challengeId: string;
98
+ readonly source: string;
99
+ }
100
+ export interface CreateNayoriMppReceiptInput {
101
+ readonly challengeId: string;
102
+ readonly reference: string;
103
+ readonly network: "mainnet" | "testnet";
104
+ readonly settledAt?: Date | string;
105
+ readonly externalId?: string;
106
+ }
107
+ export declare class NayoriMppVerificationError extends Error {
108
+ readonly reason: string;
109
+ readonly details: Readonly<Record<string, unknown>> | undefined;
110
+ constructor(reason: string, message: string, details?: Readonly<Record<string, unknown>>);
111
+ }
112
+ /** RFC 8785 JSON Canonicalization Scheme for JSON-compatible values. */
113
+ export declare function canonicalizeNayoriMppJson(value: unknown): string;
114
+ export declare function encodeNayoriMppJson(value: unknown): string;
115
+ export declare function decodeNayoriMppJson(value: string, field?: string): unknown;
116
+ export declare function decodeNayoriMppUsdcStacksRequest(encoded: string): NayoriMppUsdcStacksRequest;
117
+ export declare function encodeNayoriMppChallengeHeader(challengeInput: NayoriMppChallenge): string;
118
+ export declare function decodeNayoriMppChallengeHeader(value: string): NayoriMppChallenge;
119
+ export declare function createNayoriMppUsdcStacksChallenge(input: CreateNayoriMppChallengeInput): Promise<NayoriMppChallengeBundle>;
120
+ export declare function createNayoriMppUsdcStacksCredential(input: CreateNayoriMppCredentialInput): NayoriMppUsdcStacksCredential;
121
+ /**
122
+ * Builds the canonical Nayori USDCx transfer and selects the OnChainOnly
123
+ * anchor mode required by the MPP USDC Stacks profile. The returned
124
+ * transaction is unsigned and can be passed to Leather or another signer.
125
+ */
126
+ export declare function buildNayoriMppUnsignedPaymentTransaction(intent: NayoriX402PaymentIntent): Promise<string>;
127
+ export declare function encodeNayoriMppCredentialHeader(credentialInput: NayoriMppUsdcStacksCredential): string;
128
+ export declare function decodeNayoriMppCredentialHeader(value: string): NayoriMppUsdcStacksCredential;
129
+ export declare function verifyNayoriMppUsdcStacksPayment(input: VerifyNayoriMppUsdcStacksPaymentInput): Promise<NayoriMppVerifiedUsdcStacksPayment>;
130
+ export declare function createNayoriMppUsdcStacksReceipt(input: CreateNayoriMppReceiptInput): NayoriMppUsdcStacksReceipt;
131
+ export declare function encodeNayoriMppReceiptHeader(receipt: NayoriMppUsdcStacksReceipt): string;
132
+ export declare function decodeNayoriMppReceiptHeader(value: string): NayoriMppUsdcStacksReceipt;
133
+ export declare function nayoriMppStacksReplayKey(payment: Pick<NayoriMppVerifiedUsdcStacksPayment, "network" | "payer" | "originNonce" | "transactionHash">): string;
134
+ export {};
135
+ //# sourceMappingURL=mpp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpp.d.ts","sourceRoot":"","sources":["../src/mpp.ts"],"names":[],"mappings":"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"}