@daski/pay 0.1.2 → 0.3.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 (52) hide show
  1. package/README.md +35 -80
  2. package/dist/bin/daski.js +34 -12
  3. package/dist/bin/daski.js.map +1 -1
  4. package/dist/commands/approval.d.ts +52 -0
  5. package/dist/commands/approval.d.ts.map +1 -0
  6. package/dist/commands/approval.js +59 -0
  7. package/dist/commands/approval.js.map +1 -0
  8. package/dist/commands/buy.d.ts +4 -4
  9. package/dist/commands/buy.d.ts.map +1 -1
  10. package/dist/commands/buy.js +50 -67
  11. package/dist/commands/buy.js.map +1 -1
  12. package/dist/commands/confirmation.d.ts +29 -0
  13. package/dist/commands/confirmation.d.ts.map +1 -0
  14. package/dist/commands/confirmation.js +123 -0
  15. package/dist/commands/confirmation.js.map +1 -0
  16. package/dist/commands/doctor.d.ts.map +1 -1
  17. package/dist/commands/doctor.js +27 -2
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/order.d.ts +24 -2
  20. package/dist/commands/order.d.ts.map +1 -1
  21. package/dist/commands/order.js +68 -14
  22. package/dist/commands/order.js.map +1 -1
  23. package/dist/commands/signPayment.d.ts +1 -0
  24. package/dist/commands/signPayment.d.ts.map +1 -1
  25. package/dist/commands/signPayment.js +9 -4
  26. package/dist/commands/signPayment.js.map +1 -1
  27. package/dist/commands/wallet.d.ts.map +1 -1
  28. package/dist/commands/wallet.js +5 -17
  29. package/dist/commands/wallet.js.map +1 -1
  30. package/dist/config.d.ts +15 -11
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +59 -33
  33. package/dist/config.js.map +1 -1
  34. package/dist/context.js +2 -2
  35. package/dist/context.js.map +1 -1
  36. package/dist/gateway/client.d.ts +20 -0
  37. package/dist/gateway/client.d.ts.map +1 -1
  38. package/dist/gateway/client.js +55 -0
  39. package/dist/gateway/client.js.map +1 -1
  40. package/dist/gateway/purchase.d.ts +53 -5
  41. package/dist/gateway/purchase.d.ts.map +1 -1
  42. package/dist/gateway/purchase.js +131 -67
  43. package/dist/gateway/purchase.js.map +1 -1
  44. package/dist/index.d.ts +3 -3
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +3 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/store/orders.d.ts +16 -1
  49. package/dist/store/orders.d.ts.map +1 -1
  50. package/dist/store/orders.js +7 -1
  51. package/dist/store/orders.js.map +1 -1
  52. package/package.json +2 -2
@@ -6,23 +6,17 @@
6
6
  * and any re-sign.
7
7
  */
8
8
  import { readFileSync } from "node:fs";
9
- import { formatUsdc, PolicyRefusal } from "@daski/x402-scheme";
9
+ import { canonicalHash, formatUsdc, PolicyRefusal } from "@daski/x402-scheme";
10
10
  import { CliError } from "../cli/errors.js";
11
- import { confirm, isInteractive } from "../cli/prompt.js";
12
11
  import { note } from "../cli/output.js";
13
- import { atomicUsdc } from "../config.js";
14
12
  import { createContext } from "../context.js";
13
+ import { approvePurchase, nextPurchaseApproval } from "./approval.js";
15
14
  import { GatewayClient } from "../gateway/client.js";
16
- import { authorizePayment, newIntentId, reconcileAmbiguousPurchase, recordIntent, requestChallenge, submitPayment, } from "../gateway/purchase.js";
15
+ import { authorizePayment, challengeIntentId, isAmbiguousPurchaseAnswer, reconcileByIdentifier, recordIntent, requestChallenge, submitPayment, } from "../gateway/purchase.js";
17
16
  import { updateOrder } from "../store/orders.js";
18
- /** Gateway states that mean "authorized, outcome unknown" rather than "failed". */
19
- const AMBIGUOUS_CODES = new Set([
20
- "PAYMENT_PENDING_RECONCILIATION",
21
- "PAYMENT_OUTCOME_PENDING",
22
- ]);
23
- export async function runBuy(options) {
17
+ export async function runBuy(options, contextFactory = createContext) {
24
18
  const request = readRequestFile(options.requestFile);
25
- const context = await createContext(options);
19
+ const context = await contextFactory(options);
26
20
  try {
27
21
  if (options.payer && options.payer.toLowerCase() !== context.payerAddress.toLowerCase()) {
28
22
  throw new CliError({
@@ -43,53 +37,44 @@ export async function runBuy(options) {
43
37
  });
44
38
  const amountAtomic = BigInt(challenge.requirement.amount);
45
39
  const preflight = challenge.preflight;
40
+ const requestHash = canonicalHash({ method: "POST", resource: challenge.challenge.resource?.url,
41
+ providerAgentId: options.providerAgentId, outcomeId: options.outcomeId, body: request });
42
+ if (!challenge.binding || challenge.binding.canonicalRequestHash !== requestHash) {
43
+ throw new CliError({ code: "DASKI_REQUEST_BINDING_MISMATCH",
44
+ message: "The challenge does not match the requested purchase.",
45
+ remediation: "Obtain a challenge for the same provider, outcome, and request." });
46
+ }
47
+ const approval = nextPurchaseApproval({ gatewayUrl: context.profile.gatewayUrl,
48
+ payer: context.payerAddress, providerAgentId: options.providerAgentId, outcomeId: options.outcomeId,
49
+ requirement: challenge.requirement, binding: challenge.binding }, context.profileName);
50
+ const outcome = await context.catalog.getOutcome(options.providerAgentId, options.outcomeId);
51
+ const summary = approvalSummary(challenge.challenge.extensions, outcome, amountAtomic, preflight);
46
52
  if (preflight?.sufficient === false) {
47
53
  // The gateway already read the payer's balance: a signature now would be
48
54
  // a doomed one. Say what is needed and stop; where the USDC comes from
49
55
  // is the operator's business.
50
56
  const network = String(preflight.network ?? context.profile.network);
51
57
  const balance = typeof preflight.usdcBalance === "string"
52
- ? `${formatUsdc(BigInt(preflight.usdcBalance))} USDC`
58
+ ? formatUsdc(BigInt(preflight.usdcBalance))
53
59
  : "an unknown USDC balance";
54
60
  throw new CliError({
55
61
  code: "DASKI_INSUFFICIENT_USDC",
56
62
  message: `${context.payerAddress} holds ${balance} on ${network}; this purchase ` +
57
63
  `needs ${formatUsdc(amountAtomic)}.`,
58
64
  remediation: `Fund ${context.payerAddress} with USDC on ${network}, then re-run. Nothing was signed.`,
59
- details: { preflight, priceUsdc: formatUsdc(amountAtomic) },
65
+ details: { preflight, priceUsdc: formatUsdc(amountAtomic), approval, approvalSummary: summary,
66
+ shortfallUsdc: typeof preflight.usdcBalance === "string"
67
+ ? formatUsdc(amountAtomic > BigInt(preflight.usdcBalance) ? amountAtomic - BigInt(preflight.usdcBalance) : 0n) : null },
60
68
  exitCode: 2,
61
69
  });
62
70
  }
63
71
  // -- 2. approval -------------------------------------------------------
64
- const outcome = await context.catalog.getOutcome(options.providerAgentId, options.outcomeId);
65
- const summary = approvalSummary(challenge.challenge.extensions, outcome, amountAtomic, preflight);
66
- const threshold = atomicUsdc(context.profile.requireApprovalAboveUsdc);
67
- if (amountAtomic > threshold && !options.yes) {
68
- if (options.json || !isInteractive()) {
69
- throw new CliError({
70
- code: "DASKI_HUMAN_APPROVAL_REQUIRED",
71
- message: `${formatUsdc(amountAtomic)} is above this profile's ` +
72
- `requireApprovalAboveUsdc of ${context.profile.requireApprovalAboveUsdc} USDC, ` +
73
- "and this session cannot ask a human.",
74
- remediation: "Have a human run this command in an interactive terminal and confirm " +
75
- "the prompt, or — if a human has already approved this exact purchase " +
76
- "— re-run with --yes. Raising the threshold is a manual config edit.",
77
- details: { approvalSummary: summary, priceUsdc: formatUsdc(amountAtomic) },
78
- exitCode: 2,
79
- });
80
- }
81
- note(renderApproval(summary, amountAtomic));
82
- if (!await confirm("Authorize this payment?")) {
83
- throw new CliError({
84
- code: "DASKI_PURCHASE_DECLINED",
85
- message: "The purchase was not approved.",
86
- remediation: "Nothing was signed and no money moved. Re-run when ready.",
87
- exitCode: 2,
88
- });
89
- }
90
- }
72
+ await approvePurchase({ approval, approved: options.approved,
73
+ threshold: context.profile.requireApprovalAboveUsdc, json: options.json, summary });
91
74
  // -- 3 & 4. validate, recompute, sign ----------------------------------
92
- const intentId = newIntentId();
75
+ // The gateway bound its own payment identifier to the challenge; the
76
+ // submission must carry that one, so it is the ledger key as well.
77
+ const intentId = challengeIntentId(challenge.challenge.extensions);
93
78
  // Recorded before the signature so an interruption is recoverable.
94
79
  recordIntent({
95
80
  intentId,
@@ -98,6 +83,7 @@ export async function runBuy(options) {
98
83
  outcomeId: options.outcomeId,
99
84
  payer: context.payerAddress,
100
85
  amount: amountAtomic.toString(),
86
+ approvalTermsHash: approval.termsHash,
101
87
  state: "INTENT_RECORDED",
102
88
  request,
103
89
  });
@@ -130,16 +116,16 @@ export async function runBuy(options) {
130
116
  // The signature left the process and the answer did not come back. This
131
117
  // is the ambiguous case: reconcile, never re-sign.
132
118
  return await reconcile(context, {
133
- intentId, options, request, authorized,
119
+ intentId,
134
120
  cause: `transport failure after submit: ${error.message}`,
135
121
  });
136
122
  }
137
123
  const body = GatewayClient.json(result);
138
124
  const code = typeof body?.code === "string" ? body.code : undefined;
139
- if (result.isError && code && AMBIGUOUS_CODES.has(code)) {
125
+ if (result.isError && isAmbiguousPurchaseAnswer(code, body)) {
140
126
  return await reconcile(context, {
141
- intentId, options, request, authorized,
142
- cause: `gateway reported ${code}`,
127
+ intentId,
128
+ cause: `gateway reported ${code ?? "an error"} with the payment outcome unknown`,
143
129
  });
144
130
  }
145
131
  if (GatewayClient.unreadable(result)) {
@@ -147,14 +133,19 @@ export async function runBuy(options) {
147
133
  // payload. The signature is out and the outcome is unknown: that is the
148
134
  // ambiguous case, so reconcile — never report failure, never re-sign.
149
135
  return await reconcile(context, {
150
- intentId, options, request, authorized,
136
+ intentId,
151
137
  cause: "the paid result carried no payload this CLI could read",
152
138
  });
153
139
  }
154
140
  if (result.isError || !body || typeof body.orderHandle !== "string") {
155
- updateOrder(intentId, { state: "PENDING_RECONCILIATION" });
141
+ // The gateway refused the submission and said nothing settled
142
+ // (`paymentMayHaveSettled: false`): a definitive refusal, not an
143
+ // unknown outcome. Recording it as pending reconciliation would send
144
+ // the operator reconciling a payment the gateway says never existed.
145
+ const refused = result.isError && body?.paymentMayHaveSettled === false;
146
+ updateOrder(intentId, { state: refused ? "NOT_SETTLED" : "PENDING_RECONCILIATION" });
156
147
  const { purchaseFailure } = await import("../gateway/purchase.js");
157
- throw purchaseFailure(result, { afterSubmit: true });
148
+ throw purchaseFailure(result, { afterSubmit: true, refused });
158
149
  }
159
150
  // -- 6 & 7. persist and report ----------------------------------------
160
151
  const record = updateOrder(intentId, {
@@ -187,21 +178,18 @@ async function reconcile(context, args) {
187
178
  updateOrder(args.intentId, { state: "PENDING_RECONCILIATION" });
188
179
  note(`payment outcome unclear (${args.cause}); reconciling before any re-sign...`);
189
180
  const record = updateOrder(args.intentId, {});
190
- const outcome = await reconcileAmbiguousPurchase({
181
+ const outcome = await reconcileByIdentifier({
191
182
  client: context.client,
192
183
  signer: context.signer,
193
- record,
184
+ intentId: args.intentId,
194
185
  payer: context.payerAddress,
195
186
  chainId: context.profile.chainId,
196
187
  gatewayUrl: context.profile.gatewayUrl,
197
- submission: args.authorized.submission,
198
- request: args.request,
199
- ...(args.options.legacyArg === undefined ? {} : { legacyArg: args.options.legacyArg }),
200
188
  });
201
189
  if (outcome.status === "settled") {
202
190
  const settled = updateOrder(args.intentId, {
203
191
  handle: outcome.orderHandle,
204
- state: normalizeState(outcome.body?.status),
192
+ state: normalizeState(outcome.gatewayState),
205
193
  });
206
194
  return {
207
195
  purchased: true,
@@ -215,7 +203,13 @@ async function reconcile(context, args) {
215
203
  gatewayCalls: context.client.callCount,
216
204
  };
217
205
  }
218
- // Provably absent: the caller may safely start over with a fresh challenge.
206
+ if (outcome.status !== "absent") {
207
+ throw new CliError({ code: "DASKI_PAYMENT_PENDING_RECONCILIATION",
208
+ message: "The gateway is still resolving this payment.",
209
+ remediation: `Check again with daski order reconcile ${args.intentId}.`,
210
+ details: { intentId: args.intentId, status: outcome.status, reconciliation: outcome.evidence }, exitCode: 3 });
211
+ }
212
+ updateOrder(args.intentId, { state: "NOT_SETTLED" });
219
213
  throw new CliError({
220
214
  code: "DASKI_PAYMENT_UNRESOLVED_NO_ORDER",
221
215
  message: `The purchase was interrupted (${args.cause}) and no order exists for it: ` +
@@ -246,7 +240,7 @@ function approvalSummary(extensions, outcome, amountAtomic, preflight) {
246
240
  const supplied = preflight?.approvalSummary ?? extensions?.approvalSummary;
247
241
  if (supplied && typeof supplied === "object")
248
242
  return supplied;
249
- const terms = extensions?.["daski-order-terms"];
243
+ const terms = extensions?.["daski-order-terms"] ?? outcome.terms;
250
244
  return {
251
245
  ...(typeof supplied === "string" ? { gateway: supplied } : {}),
252
246
  what: [outcome.serviceName, outcome.skillName].filter(Boolean).join(" / ") || "Daski outcome",
@@ -258,17 +252,6 @@ function approvalSummary(extensions, outcome, amountAtomic, preflight) {
258
252
  marketplaceTerms: terms?.marketplaceTermsUrl ?? null,
259
253
  };
260
254
  }
261
- function renderApproval(summary, amountAtomic) {
262
- const lines = ["", " ─ Purchase approval ─────────────────────────────"];
263
- for (const [key, value] of Object.entries(summary)) {
264
- if (value === null || value === undefined)
265
- continue;
266
- lines.push(` ${key.padEnd(18)} ${String(value)}`);
267
- }
268
- lines.push(` ${"you will pay".padEnd(18)} ${formatUsdc(amountAtomic)}`);
269
- lines.push(" ─────────────────────────────────────────────────", "");
270
- return lines.join("\n");
271
- }
272
255
  function readRequestFile(path) {
273
256
  let raw;
274
257
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"buy.js","sourceRoot":"","sources":["../../src/commands/buy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buy.js","sourceRoot":"","sources":["../../src/commands/buy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type TypedDataRequest } from "@daski/x402-scheme";
2
+ import { type Address, type Hex } from "viem";
3
+ import type { CommandContext } from "../context.js";
4
+ import { type OrderRecord } from "../store/orders.js";
5
+ import { type OrderOptions } from "./order.js";
6
+ export interface ConfirmationOptions extends OrderOptions {
7
+ confirmation?: string | undefined;
8
+ revoke?: boolean | undefined;
9
+ resume?: boolean | undefined;
10
+ acknowledgeFinalTransition?: boolean | undefined;
11
+ }
12
+ export interface ConfirmationFacts {
13
+ chainId: number;
14
+ eas: Address;
15
+ schemaUid: Hex;
16
+ orderKey: Hex;
17
+ recipient: Address;
18
+ currentUid: Hex;
19
+ nonce: string;
20
+ transitionsUsed: number;
21
+ }
22
+ /** Rebuild the narrow EAS review message from chain facts and the user's choice. */
23
+ export declare function validateConfirmationPreparation(prepared: Record<string, unknown>, facts: ConfirmationFacts, choice: "Confirmed" | "NotConfirmed" | "revoke", acknowledged: boolean, now?: number): TypedDataRequest;
24
+ export declare function runConfirmation(options: ConfirmationOptions): Promise<Record<string, unknown>>;
25
+ export declare function confirmOrder(context: CommandContext, record: OrderRecord, options: ConfirmationOptions, factsReader?: typeof readConfirmationFacts): Promise<Record<string, unknown>>;
26
+ /** Read the deployment pins separately, then verify the selected order and EAS nonce on chain. */
27
+ declare function readConfirmationFacts(context: CommandContext, record: OrderRecord): Promise<ConfirmationFacts>;
28
+ export {};
29
+ //# sourceMappingURL=confirmation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirmation.d.ts","sourceRoot":"","sources":["../../src/commands/confirmation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAA2F,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAEvI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9E,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClD;AAWD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IACjF,UAAU,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;CACzD;AAED,oFAAoF;AACpF,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,iBAAiB,EACzG,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,SAAgC,GAAG,gBAAgB,CAgB/H;AAOD,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAEpG;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAC3G,WAAW,+BAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2CvE;AAED,kGAAkG;AAClG,iBAAe,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuB7G"}
@@ -0,0 +1,123 @@
1
+ import { canonicalHash } from "@daski/x402-scheme";
2
+ import { createPublicClient, encodeAbiParameters, getAddress, http, parseAbi, parseAbiParameters } from "viem";
3
+ import { CliError } from "../cli/errors.js";
4
+ import { callAuthorizedLifecycleTool } from "../gateway/lifecycle.js";
5
+ import { updateOrder } from "../store/orders.js";
6
+ import { readWithCapability, withOrder } from "./order.js";
7
+ const attestTypes = { Attest: [
8
+ { name: "schema", type: "bytes32" }, { name: "recipient", type: "address" },
9
+ { name: "expirationTime", type: "uint64" }, { name: "revocable", type: "bool" },
10
+ { name: "refUID", type: "bytes32" }, { name: "data", type: "bytes" },
11
+ { name: "value", type: "uint256" }, { name: "nonce", type: "uint256" }, { name: "deadline", type: "uint64" },
12
+ ] };
13
+ const revokeTypes = { Revoke: [
14
+ { name: "schema", type: "bytes32" }, { name: "uid", type: "bytes32" },
15
+ { name: "value", type: "uint256" }, { name: "nonce", type: "uint256" }, { name: "deadline", type: "uint64" },
16
+ ] };
17
+ /** Rebuild the narrow EAS review message from chain facts and the user's choice. */
18
+ export function validateConfirmationPreparation(prepared, facts, choice, acknowledged, now = Math.floor(Date.now() / 1000)) {
19
+ const proposed = prepared.signableTypedData;
20
+ const deadline = Number(proposed?.message?.deadline);
21
+ if (!proposed || prepared.orderKey !== facts.orderKey || prepared.currentRefUid !== facts.currentUid ||
22
+ prepared.transitionsUsed !== facts.transitionsUsed || facts.transitionsUsed >= 3 ||
23
+ (facts.transitionsUsed === 2 && !acknowledged) || !Number.isSafeInteger(deadline) || deadline <= now || deadline > now + 330) {
24
+ throw invalidPreparation();
25
+ }
26
+ const common = { schema: facts.schemaUid, value: "0", nonce: facts.nonce, deadline: String(deadline) };
27
+ const expected = { domain: { name: "EAS", version: "1.2.0", chainId: facts.chainId, verifyingContract: facts.eas },
28
+ types: choice === "revoke" ? revokeTypes : attestTypes, primaryType: choice === "revoke" ? "Revoke" : "Attest",
29
+ message: choice === "revoke" ? { ...common, uid: facts.currentUid } : { ...common, recipient: facts.recipient,
30
+ expirationTime: "0", revocable: true, refUID: facts.currentUid,
31
+ data: encodeAbiParameters(parseAbiParameters("bytes32 orderKey,uint8 confirmation"), [facts.orderKey, choice === "Confirmed" ? 1 : 2]) } };
32
+ if (canonicalHash(proposed) !== canonicalHash(expected))
33
+ throw invalidPreparation();
34
+ return expected;
35
+ }
36
+ function invalidPreparation() {
37
+ return new CliError({ code: "DASKI_CONFIRMATION_MISMATCH", message: "The review preparation does not match this order and choice.",
38
+ remediation: "Check the order and request a fresh review preparation." });
39
+ }
40
+ export async function runConfirmation(options) {
41
+ return withOrder(options, (context, record) => confirmOrder(context, record, options));
42
+ }
43
+ export async function confirmOrder(context, record, options, factsReader = readConfirmationFacts) {
44
+ if (!options.resume && !options.revoke && !["Confirmed", "NotConfirmed"].includes(options.confirmation ?? "")) {
45
+ throw new CliError({ code: "DASKI_CONFIRMATION_CHOICE_REQUIRED", message: "Choose the delivery confirmation for this order.",
46
+ remediation: "After the user's choice, pass --choice Confirmed or --choice NotConfirmed. Leaving it Pending requires no action." });
47
+ }
48
+ if (record.confirmationSubmission && !options.resume)
49
+ throw new CliError({ code: "DASKI_CONFIRMATION_PENDING",
50
+ message: "A review submission for this order is awaiting reconciliation.", remediation: `Run daski order confirm ${options.handle} --resume.` });
51
+ const call = (action, request) => callAuthorizedLifecycleTool({
52
+ client: context.client, signer: context.signer, toolName: action === "confirmation" ? "daski_confirm_delivery" : "daski_revoke_delivery_confirmation",
53
+ action, orderHandle: record.handle ?? options.handle, request, chainId: context.profile.chainId, gatewayUrl: context.profile.gatewayUrl
54
+ });
55
+ let submission = record.confirmationSubmission;
56
+ if (!submission) {
57
+ if (options.resume)
58
+ throw new CliError({ code: "DASKI_CONFIRMATION_NOT_PENDING", message: "There is no pending review submission.",
59
+ remediation: "Check order status, then supply the user's review choice if a new review is wanted." });
60
+ const action = options.revoke ? "revoke-confirmation" : "confirmation";
61
+ const facts = await factsReader(context, record);
62
+ const prepared = await call(action, { phase: "prepare", acknowledgeFinalTransition: options.acknowledgeFinalTransition === true,
63
+ ...(options.revoke ? {} : { confirmation: options.confirmation }) });
64
+ if (!prepared.signableTypedData) {
65
+ if (prepared.warning?.code !== "FINAL_CONFIRMATION_TRANSITION")
66
+ throw invalidPreparation();
67
+ return { orderHandle: record.handle, ...prepared,
68
+ next: "Show the final-transition warning to the user. After explicit acceptance, repeat with --acknowledge-final-transition." };
69
+ }
70
+ const typedData = validateConfirmationPreparation(prepared, facts, options.revoke ? "revoke" : options.confirmation, options.acknowledgeFinalTransition === true);
71
+ if (typeof prepared.preparationId !== "string")
72
+ throw invalidPreparation();
73
+ const signature = await context.signer.signTypedData(typedData);
74
+ submission = { action, request: { phase: "submit", preparationId: prepared.preparationId, signature } };
75
+ updateOrder(record.intentId, { confirmationSubmission: submission, readCapability: undefined });
76
+ }
77
+ try {
78
+ const result = await call(submission.action, submission.request);
79
+ updateOrder(record.intentId, { confirmationSubmission: undefined, readCapability: undefined });
80
+ return { orderHandle: record.handle, ...result };
81
+ }
82
+ catch (error) {
83
+ if (error instanceof CliError && error.code === "CONFIRMATION_SUBMISSION_PENDING")
84
+ return {
85
+ orderHandle: record.handle, status: "pending", preparationId: submission.request.preparationId,
86
+ next: `Run daski order confirm ${options.handle} --resume to check the same submission.`
87
+ };
88
+ if (error instanceof CliError && error.code === "CONFIRMATION_PREPARATION_STALE") {
89
+ updateOrder(record.intentId, { confirmationSubmission: undefined });
90
+ }
91
+ throw error;
92
+ }
93
+ }
94
+ /** Read the deployment pins separately, then verify the selected order and EAS nonce on chain. */
95
+ async function readConfirmationFacts(context, record) {
96
+ const status = await readWithCapability(context, record, { toolName: "daski_get_order_status", action: "status", request: {} });
97
+ if (typeof status.orderKey !== "string" || !/^0x[0-9a-fA-F]{64}$/.test(status.orderKey))
98
+ throw invalidPreparation();
99
+ const response = await fetch(`${context.profile.gatewayUrl.replace(/\/$/, "")}/.well-known/mcp.json`, { signal: AbortSignal.timeout(15000) });
100
+ if (!response.ok)
101
+ throw invalidPreparation();
102
+ const metadata = await response.json();
103
+ const pins = metadata.confirmationSigning;
104
+ if (!pins || pins.chainId !== context.profile.chainId || !/^0x[0-9a-fA-F]{64}$/.test(pins.schemaUid))
105
+ throw invalidPreparation();
106
+ const client = createPublicClient({ transport: http(context.profile.rpcUrl) });
107
+ const abi = parseAbi([
108
+ "function getNonce(address account) view returns (uint256)",
109
+ "function getRecord(bytes32 orderKey) view returns ((bytes32 orderKey,bytes32 authorizationKey,uint256 providerAgentId,bytes32 serviceId,address payer,address providerOwner,address providerAgentWallet,address providerPayee,address canonicalToken,uint256 grossAmount,uint64 paidAt,bytes32 providerIdentitySnapshotHash,bytes32 listingManifestHash,bytes32 releaseEvidenceHash,uint8 outcome,uint8 confirmation,uint64 outcomeAttestationDelay,uint64 outcomeTimestamp,uint64 confirmationTimestamp,uint8 confirmationTransitions,bool outcomeRecorded,bool reputationEligible,bytes32 currentConfirmationUid))",
110
+ ]);
111
+ const orderKey = status.orderKey;
112
+ const [current, nonce] = await Promise.all([
113
+ client.readContract({ address: getAddress(pins.reputationStorage), abi, functionName: "getRecord", args: [orderKey] }),
114
+ client.readContract({ address: getAddress(pins.eas), abi, functionName: "getNonce", args: [context.payerAddress] }),
115
+ ]);
116
+ if (current.orderKey !== orderKey || getAddress(current.payer) !== context.payerAddress ||
117
+ String(current.providerAgentId) !== record.providerAgentId || !current.outcomeRecorded || !current.reputationEligible)
118
+ throw invalidPreparation();
119
+ return { chainId: pins.chainId, eas: getAddress(pins.eas), schemaUid: pins.schemaUid, orderKey,
120
+ recipient: getAddress(current.providerAgentWallet === "0x0000000000000000000000000000000000000000" ? current.providerOwner : current.providerAgentWallet),
121
+ currentUid: current.currentConfirmationUid, nonce: nonce.toString(), transitionsUsed: Number(current.confirmationTransitions) };
122
+ }
123
+ //# sourceMappingURL=confirmation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirmation.js","sourceRoot":"","sources":["../../src/commands/confirmation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,UAAU,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA+M7E"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,UAAU,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA2O7E"}
@@ -1,7 +1,7 @@
1
1
  import { CliError } from "../cli/errors.js";
2
2
  import { permissionWarnings, applyCapOverrides, loadConfig, CONFIG_DOC } from "../config.js";
3
3
  import { readBalances } from "../gateway/balance.js";
4
- import { GatewayClient, probeGatewayProtocol, readiness } from "../gateway/client.js";
4
+ import { GatewayClient, compareReleaseVersions, pinnedBuyerCli, probeGatewayProtocol, readiness, } from "../gateway/client.js";
5
5
  import { configPath, daskiHome } from "../paths.js";
6
6
  import { createSigner } from "../signers/index.js";
7
7
  import { runSignerSelfTest } from "../signers/selfTest.js";
@@ -130,6 +130,27 @@ export async function runDoctor(options) {
130
130
  remediation: "Wait for the gateway to become ready, then re-run: daski doctor --json",
131
131
  });
132
132
  }
133
+ // -- pinned release --------------------------------------------------------
134
+ // The gateway's setup guide pins the CLI release agents may use, and
135
+ // publishes it in /.well-known/mcp.json. An older install has known
136
+ // payment defects (0.1.0 and 0.1.1 minted their own payment identifier and
137
+ // every purchase was refused), and on 2026-09-04 one ran unnoticed because
138
+ // the pin lived only in prose. This is the comparison the guide asks for.
139
+ let pinned = null;
140
+ if (health.reachable) {
141
+ pinned = await pinnedBuyerCli(profile.gatewayUrl);
142
+ const comparison = pinned ? compareReleaseVersions(CLI_VERSION, pinned.version) : null;
143
+ if (pinned && comparison !== null && comparison < 0) {
144
+ issues.push({
145
+ severity: "blocking",
146
+ code: "DASKI_CLI_OUTDATED",
147
+ message: `This is ${pinned.package} ${CLI_VERSION}; the gateway at ${profile.gatewayUrl} ` +
148
+ `pins ${pinned.version}, and releases before the pin have known payment defects.`,
149
+ remediation: `${pinned.install ?? `npm install -g ${pinned.package}@${pinned.version}`}, ` +
150
+ "then re-run: daski doctor --json",
151
+ });
152
+ }
153
+ }
133
154
  // -- gateway protocol ----------------------------------------------------
134
155
  // /health/ready says the process is up; it cannot say whether this CLI can
135
156
  // read what the MCP tools return. One read-only round trip settles that,
@@ -193,13 +214,17 @@ export async function runDoctor(options) {
193
214
  sessionCapUsdc: profile.sessionCapUsdc,
194
215
  requireApprovalAboveUsdc: profile.requireApprovalAboveUsdc,
195
216
  sessionAuthorizedAtomic: spent.toString(),
196
- note: "Caps are human-owned: edit the config file. Flags may only lower them.",
217
+ mode: profile.maxPerOrderUsdc === null && profile.sessionCapUsdc === null
218
+ ? "quote-approval" : "configured-budgets",
219
+ configurationVersion: loaded.config.version,
220
+ note: "Purchases use quote approval. Optional budgets can be viewed or changed with daski budget.",
197
221
  },
198
222
  gateway: {
199
223
  url: profile.gatewayUrl,
200
224
  reachable: health.reachable,
201
225
  status: health.status ?? null,
202
226
  version: health.version ?? null,
227
+ pinnedCli: pinned,
203
228
  mcp: protocol
204
229
  ? { reachable: protocol.reachable, tools: protocol.tools.length, readableVia: protocol.readableVia }
205
230
  : null,
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
- import { type ContextOptions } from "../context.js";
1
+ import { createContext, type ContextOptions } from "../context.js";
2
+ import { type OrderRecord } from "../store/orders.js";
3
+ import type { OrderAction } from "@daski/x402-scheme";
4
+ import type { ConfirmationOptions } from "./confirmation.js";
2
5
  export interface OrderOptions extends ContextOptions {
3
6
  handle: string;
4
7
  json: boolean;
@@ -12,7 +15,26 @@ export interface OrderInputOptions extends OrderOptions {
12
15
  }
13
16
  export declare function orderStatus(options: OrderOptions): Promise<Record<string, unknown>>;
14
17
  export declare function orderArtifact(options: OrderArtifactOptions): Promise<Record<string, unknown>>;
15
- export declare function orderConfirm(options: OrderOptions): Promise<Record<string, unknown>>;
18
+ export declare function orderConfirm(options: ConfirmationOptions): Promise<Record<string, unknown>>;
16
19
  export declare function orderCancel(options: OrderOptions): Promise<Record<string, unknown>>;
17
20
  export declare function orderInput(options: OrderInputOptions): Promise<Record<string, unknown>>;
21
+ /**
22
+ * Uses a stored, unexpired read capability when one exists; otherwise runs the
23
+ * grant-read flow if the gateway offers it, and falls back to per-action
24
+ * lifecycle signing when it does not. The fallback is not a lesser path — it
25
+ * is the same verify-and-sign tier, just paying one signature per read.
26
+ */
27
+ export declare function readWithCapability(context: Awaited<ReturnType<typeof createContext>>, record: OrderRecord, call: {
28
+ toolName: string;
29
+ action: OrderAction;
30
+ request: Record<string, unknown>;
31
+ }): Promise<Record<string, unknown>>;
32
+ /**
33
+ * `daski order reconcile <handle|intentId>` — the gateway's own answer for one
34
+ * payment identifier. Signs only the wallet-action read; never a payment.
35
+ * Settles the local record either way: a handle and state when the order
36
+ * exists, NOT_SETTLED when the gateway lists nothing for the identifier.
37
+ */
38
+ export declare function orderReconcile(options: OrderOptions): Promise<Record<string, unknown>>;
39
+ export declare function withOrder<T>(options: OrderOptions, run: (context: Awaited<ReturnType<typeof createContext>>, record: OrderRecord) => Promise<T>): Promise<T>;
18
40
  //# sourceMappingURL=order.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/commands/order.ts"],"names":[],"mappings":"AAcA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAKnE,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkBzF;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsClC;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAE1F;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAEzF;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAalC"}
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/commands/order.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAgD,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkBzF;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsClC;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAGjG;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAEzF;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAalC;AA+BD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,EAClD,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAChF,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAmDlC;AAyDD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsC5F;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3F,OAAO,CAAC,CAAC,CAAC,CAuBZ"}