@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.
- package/README.md +35 -80
- package/dist/bin/daski.js +34 -12
- package/dist/bin/daski.js.map +1 -1
- package/dist/commands/approval.d.ts +52 -0
- package/dist/commands/approval.d.ts.map +1 -0
- package/dist/commands/approval.js +59 -0
- package/dist/commands/approval.js.map +1 -0
- package/dist/commands/buy.d.ts +4 -4
- package/dist/commands/buy.d.ts.map +1 -1
- package/dist/commands/buy.js +50 -67
- package/dist/commands/buy.js.map +1 -1
- package/dist/commands/confirmation.d.ts +29 -0
- package/dist/commands/confirmation.d.ts.map +1 -0
- package/dist/commands/confirmation.js +123 -0
- package/dist/commands/confirmation.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +27 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/order.d.ts +24 -2
- package/dist/commands/order.d.ts.map +1 -1
- package/dist/commands/order.js +68 -14
- package/dist/commands/order.js.map +1 -1
- package/dist/commands/signPayment.d.ts +1 -0
- package/dist/commands/signPayment.d.ts.map +1 -1
- package/dist/commands/signPayment.js +9 -4
- package/dist/commands/signPayment.js.map +1 -1
- package/dist/commands/wallet.d.ts.map +1 -1
- package/dist/commands/wallet.js +5 -17
- package/dist/commands/wallet.js.map +1 -1
- package/dist/config.d.ts +15 -11
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +59 -33
- package/dist/config.js.map +1 -1
- package/dist/context.js +2 -2
- package/dist/context.js.map +1 -1
- package/dist/gateway/client.d.ts +20 -0
- package/dist/gateway/client.d.ts.map +1 -1
- package/dist/gateway/client.js +55 -0
- package/dist/gateway/client.js.map +1 -1
- package/dist/gateway/purchase.d.ts +53 -5
- package/dist/gateway/purchase.d.ts.map +1 -1
- package/dist/gateway/purchase.js +131 -67
- package/dist/gateway/purchase.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/store/orders.d.ts +16 -1
- package/dist/store/orders.d.ts.map +1 -1
- package/dist/store/orders.js +7 -1
- package/dist/store/orders.js.map +1 -1
- package/package.json +2 -2
package/dist/commands/buy.js
CHANGED
|
@@ -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,
|
|
15
|
+
import { authorizePayment, challengeIntentId, isAmbiguousPurchaseAnswer, reconcileByIdentifier, recordIntent, requestChallenge, submitPayment, } from "../gateway/purchase.js";
|
|
17
16
|
import { updateOrder } from "../store/orders.js";
|
|
18
|
-
|
|
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
|
|
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
|
-
?
|
|
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
|
-
|
|
65
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
125
|
+
if (result.isError && isAmbiguousPurchaseAnswer(code, body)) {
|
|
140
126
|
return await reconcile(context, {
|
|
141
|
-
intentId,
|
|
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,
|
|
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
|
-
|
|
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
|
|
181
|
+
const outcome = await reconcileByIdentifier({
|
|
191
182
|
client: context.client,
|
|
192
183
|
signer: context.signer,
|
|
193
|
-
|
|
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.
|
|
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
|
-
|
|
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 {
|
package/dist/commands/buy.js.map
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -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
|
-
|
|
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":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,SAAS,GAGV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAA6B,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,WAAW,GAAG,6DAA6D,CAAC;AAgClF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE;QAChD,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;IACH,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,kBAAkB,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;QAChF,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QAClE,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,MAAiC,CAAC;IACtC,IAAI,OAA4B,CAAC;IACjC,IAAI,QAA0C,CAAC;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,YAAY,CAAC;YAC1B,IAAI,EAAE,UAAmB;YACzB,OAAO,EAAE,MAAM,CAAC,WAAW;YAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;QACH,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,yEAAyE;QACzE,0EAA0E;QAC1E,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,+BAA+B;gBACrC,OAAO,EACL,OAAO,UAAU,gCAAgC;oBACjD,GAAG,QAAQ,CAAC,MAAM,IAAI,iBAAiB,GAAG;gBAC5C,WAAW,EACT,wEAAwE;oBACxE,wEAAwE;oBACxE,8BAA8B,WAAW,YAAY;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B;YACzE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/D,WAAW,EAAE,KAAK,YAAY,QAAQ;gBACpC,CAAC,CAAC,KAAK,CAAC,WAAW;gBACnB,CAAC,CAAC,sCAAsC,MAAM,CAAC,WAAW,EAAE;SAC/D,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EACL,gEAAgE;gBAChE,gEAAgE;gBAChE,4EAA4E;YAC9E,WAAW,EACT,sEAAsE;gBACtE,mCAAmC,MAAM,CAAC,WAAW,WAAW,UAAU,EAAE;SAC/E,CAAC,CAAC;IACL,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC;IACvC,IAAI,WAAW,EAAE,WAAW,KAAK,+BAA+B,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,kCAAkC;YACxC,OAAO,EACL,OAAO,WAAW,CAAC,QAAQ,yCAAyC;gBACpE,oEAAoE;YACtE,WAAW,EACT,qEAAqE;gBACrE,GAAG,MAAM,CAAC,WAAW,aAAa,WAAW,CAAC,QAAQ,EAAE;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,IAAI,QAAQ,GAAmC,IAAI,CAAC;IACpD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,QAAQ,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC;oBACjC,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO;oBACP,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC,CAAC,EAAE,CAAC;YACL,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,GAAG,OAAO,qBAAqB,OAAO,CAAC,OAAO,8BAA8B;oBACrF,qEAAqE;oBACrE,6DAA6D;oBAC7D,WAAW,EAAE,QAAQ,OAAO,iBAAiB,OAAO,CAAC,OAAO,iBAAiB;iBAC9E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,gCAAgC,OAAO,CAAC,MAAM,KAAM,KAAe,CAAC,OAAO,EAAE;gBACtF,WAAW,EAAE,iCAAiC,MAAM,CAAC,WAAW,gBAAgB,UAAU,EAAE,EAAE;aAC/F,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,GAAG,OAAO,CAAC,UAAU,iCAAiC,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE;YAChG,WAAW,EACT,kDAAkD,MAAM,CAAC,WAAW,IAAI;gBACxE,cAAc,UAAU,EAAE,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,+BAA+B,MAAM,CAAC,MAAM,IAAI,SAAS,IAAI;YACtE,WAAW,EAAE,wEAAwE;SACtF,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,qEAAqE;IACrE,oEAAoE;IACpE,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,IAAI,MAAM,GAA0B,IAAI,CAAC;IACzC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvF,IAAI,MAAM,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EACL,WAAW,MAAM,CAAC,OAAO,IAAI,WAAW,oBAAoB,OAAO,CAAC,UAAU,GAAG;oBACjF,QAAQ,MAAM,CAAC,OAAO,2DAA2D;gBACnF,WAAW,EACT,GAAG,MAAM,CAAC,OAAO,IAAI,kBAAkB,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI;oBAC7E,kCAAkC;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,sDAAsD;IACtD,IAAI,QAAQ,GAAgC,IAAI,CAAC;IACjD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAClD,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAI,aAAa,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,+BAA+B;gBACrC,OAAO,EAAE,GAAG,OAAO,CAAC,UAAU,wBAAwB,QAAQ,CAAC,KAAK,IAAI,eAAe,EAAE;gBACzF,WAAW,EAAE,qFAAqF;aACnG,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,6BAA6B;gBACnC,OAAO,EAAE,kBAAkB,OAAO,CAAC,UAAU,wCAAwC;gBACrF,WAAW,EACT,cAAc,MAAM,CAAC,WAAW,+CAA+C;oBAC/E,GAAG,UAAU,EAAE,oCAAoC;aACtD,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,iCAAiC;gBACvC,OAAO,EACL,iFAAiF;oBACjF,4EAA4E;gBAC9E,WAAW,EACT,8EAA8E;oBAC9E,6BAA6B;aAChC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACxD,OAAO;QACL,UAAU,EAAE,WAAW;QACvB,OAAO,EAAE,MAAM,CAAC,WAAW;QAC3B,cAAc,EAAE,SAAS,EAAE;QAC3B,UAAU,EAAE,UAAU,EAAE;QACxB,MAAM,EAAE;YACN,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI,UAAU;YAC7C,WAAW,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS;YAClD,WAAW,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS;YAClD,OAAO,EAAE,OAAO,IAAI,IAAI;YACxB,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,MAAM;YACrC,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI;YAC1C,6EAA6E;YAC7E,QAAQ,EAAE,QAAQ,IAAI,IAAI;SAC3B;QACD,KAAK,EAAE;YACL,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,aAAa,EAAE,OAAO,CAAC,WAAW;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB;QACD,QAAQ;QACR,IAAI,EAAE;YACJ,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;YAC1D,uBAAuB,EAAE,KAAK,CAAC,QAAQ,EAAE;YACzC,IAAI,EAAE,OAAO,CAAC,eAAe,KAAK,IAAI,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI;gBACvE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,oBAAoB;YAC3C,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;YAC3C,IAAI,EAAE,4FAA4F;SACnG;QACD,OAAO,EAAE;YACP,GAAG,EAAE,OAAO,CAAC,UAAU;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;YAC/B,SAAS,EAAE,MAAM;YACjB,GAAG,EAAE,QAAQ;gBACX,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE;gBACpG,CAAC,CAAC,IAAI;SACT;QACD,MAAM;QACN,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC;KAC3D,CAAC;AACJ,CAAC"}
|
package/dist/commands/order.d.ts
CHANGED
|
@@ -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:
|
|
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,
|
|
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"}
|