@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/order.js
CHANGED
|
@@ -14,6 +14,7 @@ import { writeFileSync } from "node:fs";
|
|
|
14
14
|
import { CliError } from "../cli/errors.js";
|
|
15
15
|
import { createContext } from "../context.js";
|
|
16
16
|
import { callAuthorizedLifecycleTool } from "../gateway/lifecycle.js";
|
|
17
|
+
import { reconcileByIdentifier } from "../gateway/purchase.js";
|
|
17
18
|
import { activeReadCapability, findOrder, updateOrder } from "../store/orders.js";
|
|
18
19
|
const READ_CAPABILITY_TOOL = "daski_get_order_access";
|
|
19
20
|
export async function orderStatus(options) {
|
|
@@ -71,7 +72,8 @@ export async function orderArtifact(options) {
|
|
|
71
72
|
});
|
|
72
73
|
}
|
|
73
74
|
export async function orderConfirm(options) {
|
|
74
|
-
|
|
75
|
+
const { runConfirmation } = await import("./confirmation.js");
|
|
76
|
+
return runConfirmation(options);
|
|
75
77
|
}
|
|
76
78
|
export async function orderCancel(options) {
|
|
77
79
|
return mutate(options, "daski_cancel_order", "cancel", {});
|
|
@@ -120,14 +122,17 @@ async function mutate(options, toolName, action, request) {
|
|
|
120
122
|
* lifecycle signing when it does not. The fallback is not a lesser path — it
|
|
121
123
|
* is the same verify-and-sign tier, just paying one signature per read.
|
|
122
124
|
*/
|
|
123
|
-
async function readWithCapability(context, record, call) {
|
|
125
|
+
export async function readWithCapability(context, record, call) {
|
|
124
126
|
const handle = record.handle;
|
|
125
127
|
if (!handle) {
|
|
128
|
+
// This is the local ledger speaking, not the gateway: it cannot say
|
|
129
|
+
// whether the signed authorization settled. Until 0.1.2 this told the
|
|
130
|
+
// operator to re-run `daski buy`, and on 2026-09-04 an agent re-signed on
|
|
131
|
+
// that advice against a gateway answer that said "do not re-sign".
|
|
126
132
|
throw new CliError({
|
|
127
133
|
code: "DASKI_ORDER_HAS_NO_HANDLE",
|
|
128
|
-
message: `Intent ${record.intentId} never received an order handle.`,
|
|
129
|
-
remediation:
|
|
130
|
-
"the bridge reconciles before it re-signs.",
|
|
134
|
+
message: `Intent ${record.intentId} never received an order handle (local state ${record.state}).`,
|
|
135
|
+
remediation: `Ask the gateway before signing anything again: daski order reconcile ${record.intentId}`,
|
|
131
136
|
});
|
|
132
137
|
}
|
|
133
138
|
const capability = activeReadCapability(record);
|
|
@@ -135,7 +140,7 @@ async function readWithCapability(context, record, call) {
|
|
|
135
140
|
const result = await context.client.callTool(call.toolName, {
|
|
136
141
|
orderHandle: handle,
|
|
137
142
|
request: call.request,
|
|
138
|
-
|
|
143
|
+
readCapability: capability.token,
|
|
139
144
|
});
|
|
140
145
|
const body = (await import("../gateway/client.js")).GatewayClient.json(result);
|
|
141
146
|
if (!result.isError && body)
|
|
@@ -149,7 +154,7 @@ async function readWithCapability(context, record, call) {
|
|
|
149
154
|
const result = await context.client.callTool(call.toolName, {
|
|
150
155
|
orderHandle: handle,
|
|
151
156
|
request: call.request,
|
|
152
|
-
|
|
157
|
+
readCapability: granted.token,
|
|
153
158
|
});
|
|
154
159
|
const body = (await import("../gateway/client.js")).GatewayClient.json(result);
|
|
155
160
|
if (!result.isError && body)
|
|
@@ -186,7 +191,7 @@ async function grantRead(context, record, handle) {
|
|
|
186
191
|
}
|
|
187
192
|
const challenge = validateOrderActionChallenge(challengeBody.challenge, {
|
|
188
193
|
orderHandle: handle,
|
|
189
|
-
action: "
|
|
194
|
+
action: "grant-read",
|
|
190
195
|
gatewayUrl: context.profile.gatewayUrl,
|
|
191
196
|
request: {},
|
|
192
197
|
chainId: context.profile.chainId,
|
|
@@ -203,19 +208,63 @@ async function grantRead(context, record, handle) {
|
|
|
203
208
|
return capabilityFrom(body, record);
|
|
204
209
|
}
|
|
205
210
|
function capabilityFrom(body, record) {
|
|
206
|
-
|
|
207
|
-
if (typeof capability?.token !== "string" || !Number.isSafeInteger(capability.expiresAt)) {
|
|
211
|
+
if (typeof body.readCapability !== "string" || !Number.isSafeInteger(body.expiresAt)) {
|
|
208
212
|
return undefined;
|
|
209
213
|
}
|
|
210
|
-
const stored = { token:
|
|
214
|
+
const stored = { token: body.readCapability, expiresAt: Number(body.expiresAt) };
|
|
211
215
|
updateOrder(record.intentId, { readCapability: stored });
|
|
212
216
|
return stored;
|
|
213
217
|
}
|
|
214
|
-
|
|
218
|
+
/**
|
|
219
|
+
* `daski order reconcile <handle|intentId>` — the gateway's own answer for one
|
|
220
|
+
* payment identifier. Signs only the wallet-action read; never a payment.
|
|
221
|
+
* Settles the local record either way: a handle and state when the order
|
|
222
|
+
* exists, NOT_SETTLED when the gateway lists nothing for the identifier.
|
|
223
|
+
*/
|
|
224
|
+
export async function orderReconcile(options) {
|
|
225
|
+
return withOrder(options, async (context, record) => {
|
|
226
|
+
const outcome = await reconcileByIdentifier({
|
|
227
|
+
client: context.client,
|
|
228
|
+
signer: context.signer,
|
|
229
|
+
payer: context.payerAddress,
|
|
230
|
+
chainId: context.profile.chainId,
|
|
231
|
+
gatewayUrl: context.profile.gatewayUrl,
|
|
232
|
+
intentId: record.intentId,
|
|
233
|
+
});
|
|
234
|
+
let updated = record;
|
|
235
|
+
if (outcome.status === "absent") {
|
|
236
|
+
updated = updateOrder(record.intentId, { state: "NOT_SETTLED" }) ?? record;
|
|
237
|
+
}
|
|
238
|
+
else if (outcome.orderHandle) {
|
|
239
|
+
updated = updateOrder(record.intentId, {
|
|
240
|
+
handle: outcome.orderHandle,
|
|
241
|
+
state: outcome.status === "settled" && outcome.gatewayState
|
|
242
|
+
? normalize(outcome.gatewayState)
|
|
243
|
+
: "PENDING_RECONCILIATION",
|
|
244
|
+
}) ?? record;
|
|
245
|
+
}
|
|
246
|
+
return {
|
|
247
|
+
intentId: record.intentId,
|
|
248
|
+
reconciled: outcome.status !== "ambiguous" && outcome.status !== "in_flight",
|
|
249
|
+
status: outcome.status,
|
|
250
|
+
orderHandle: updated.handle ?? null,
|
|
251
|
+
gatewayState: outcome.gatewayState ?? null,
|
|
252
|
+
state: updated.state,
|
|
253
|
+
evidence: outcome.evidence,
|
|
254
|
+
next: outcome.status === "absent"
|
|
255
|
+
? "Nothing settled under this identifier. A fresh purchase is safe once the " +
|
|
256
|
+
"gateway's refusal, if any, is understood; nothing needs a second signature."
|
|
257
|
+
: outcome.status === "settled"
|
|
258
|
+
? `The order exists: daski order status ${updated.handle ?? record.intentId}`
|
|
259
|
+
: "The payment is still in flight or ambiguous on the gateway's side. Do not " +
|
|
260
|
+
"sign again; re-run this command later.",
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
export async function withOrder(options, run) {
|
|
215
265
|
const context = await createContext(options);
|
|
216
266
|
try {
|
|
217
|
-
const record = findOrder(options.handle, context.profileName)
|
|
218
|
-
?? findOrder(options.handle);
|
|
267
|
+
const record = findOrder(options.handle, context.profileName);
|
|
219
268
|
if (!record) {
|
|
220
269
|
throw new CliError({
|
|
221
270
|
code: "DASKI_ORDER_NOT_FOUND",
|
|
@@ -225,6 +274,11 @@ async function withOrder(options, run) {
|
|
|
225
274
|
"the handle in its store to bind a lifecycle signature to it.",
|
|
226
275
|
});
|
|
227
276
|
}
|
|
277
|
+
if (record.payer.toLowerCase() !== context.payerAddress.toLowerCase()) {
|
|
278
|
+
throw new CliError({ code: "DASKI_ORDER_PAYER_MISMATCH",
|
|
279
|
+
message: "The active signer differs from this order's payer.",
|
|
280
|
+
remediation: `Select the signer that placed order ${options.handle}.` });
|
|
281
|
+
}
|
|
228
282
|
return await run(context, record);
|
|
229
283
|
}
|
|
230
284
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/commands/order.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/commands/order.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export interface SignPaymentOptions extends ContextOptions {
|
|
|
5
5
|
providerAgentId?: string | undefined;
|
|
6
6
|
outcomeId?: string | undefined;
|
|
7
7
|
json: boolean;
|
|
8
|
+
approved?: string | undefined;
|
|
8
9
|
}
|
|
9
10
|
export declare function runSignPayment(options: SignPaymentOptions): Promise<Record<string, unknown>>;
|
|
10
11
|
//# sourceMappingURL=signPayment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signPayment.d.ts","sourceRoot":"","sources":["../../src/commands/signPayment.ts"],"names":[],"mappings":"AAaA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"signPayment.d.ts","sourceRoot":"","sources":["../../src/commands/signPayment.ts"],"names":[],"mappings":"AAaA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAQnE,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkFlC"}
|
|
@@ -12,8 +12,9 @@ import { bindingFromExtensions, formatUsdc } from "@daski/x402-scheme";
|
|
|
12
12
|
import { getAddress } from "viem";
|
|
13
13
|
import { CliError } from "../cli/errors.js";
|
|
14
14
|
import { createContext } from "../context.js";
|
|
15
|
-
import { authorizePayment,
|
|
15
|
+
import { authorizePayment, challengeIntentId, recordIntent, } from "../gateway/purchase.js";
|
|
16
16
|
import { updateOrder } from "../store/orders.js";
|
|
17
|
+
import { approvePurchase, nextPurchaseApproval } from "./approval.js";
|
|
17
18
|
export async function runSignPayment(options) {
|
|
18
19
|
const challenge = readChallenge(options.challengeFile);
|
|
19
20
|
const requirement = challenge.accepts[0];
|
|
@@ -45,12 +46,16 @@ export async function runSignPayment(options) {
|
|
|
45
46
|
});
|
|
46
47
|
}
|
|
47
48
|
const amountAtomic = BigInt(requirement.amount);
|
|
49
|
+
const approval = nextPurchaseApproval({ gatewayUrl: context.profile.gatewayUrl,
|
|
50
|
+
payer: context.payerAddress, providerAgentId, outcomeId, requirement, binding }, context.profileName);
|
|
51
|
+
await approvePurchase({ approval, approved: options.approved,
|
|
52
|
+
threshold: context.profile.requireApprovalAboveUsdc, json: options.json });
|
|
48
53
|
// The challenge was obtained by the caller, so the gateway has already
|
|
49
54
|
// bound its own payment identifier to it; the local order record and the
|
|
50
55
|
// signed payload both use that identifier. A fresh one would be refused by
|
|
51
56
|
// the gateway before settlement (0.1.1, 2026-09-03). A challenge without
|
|
52
57
|
// one gets a fresh identifier, as before.
|
|
53
|
-
const intentId =
|
|
58
|
+
const intentId = challengeIntentId(challenge.extensions);
|
|
54
59
|
recordIntent({
|
|
55
60
|
intentId,
|
|
56
61
|
profile: context.profileName,
|
|
@@ -58,6 +63,7 @@ export async function runSignPayment(options) {
|
|
|
58
63
|
outcomeId,
|
|
59
64
|
payer: context.payerAddress,
|
|
60
65
|
amount: amountAtomic.toString(),
|
|
66
|
+
approvalTermsHash: approval.termsHash,
|
|
61
67
|
state: "INTENT_RECORDED",
|
|
62
68
|
});
|
|
63
69
|
const authorized = await authorizePayment({
|
|
@@ -66,8 +72,7 @@ export async function runSignPayment(options) {
|
|
|
66
72
|
challenge: { challenge, requirement, binding, viaChallengeTool: false },
|
|
67
73
|
providerAgentId,
|
|
68
74
|
outcomeId,
|
|
69
|
-
// The
|
|
70
|
-
// command is the approval, and the price is the challenge's own.
|
|
75
|
+
// The approval above is bound to the amount and purchase terms.
|
|
71
76
|
approvedQuoteAtomic: amountAtomic,
|
|
72
77
|
intentId,
|
|
73
78
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signPayment.js","sourceRoot":"","sources":["../../src/commands/signPayment.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAuB,MAAM,eAAe,CAAC;AAEnE,OAAO,EACL,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"signPayment.js","sourceRoot":"","sources":["../../src/commands/signPayment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAID,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsD3F;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgB5F;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoB5F"}
|
package/dist/commands/wallet.js
CHANGED
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `daski wallet` — create, address, balance.
|
|
3
|
-
*
|
|
4
|
-
* Creating a key is the one action here that cannot be undone by re-running a
|
|
5
|
-
* command, so it is gated on a human: an interactive terminal and a typed
|
|
6
|
-
* confirmation phrase. `--yes-human-approved` exists for provisioning
|
|
7
|
-
* scripts, and its name is the documentation: whoever passes it is asserting a
|
|
8
|
-
* human approved this. No error message names the flag: on 2026-09-03 an
|
|
9
|
-
* agent read the remediation that did, passed the flag from its own shell,
|
|
10
|
-
* and created the key the guide had reserved for the human.
|
|
11
|
-
*/
|
|
1
|
+
/** Wallet creation requires setup authorization and preserves existing profile keys. */
|
|
12
2
|
import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
|
|
13
3
|
import { getAddress } from "viem";
|
|
14
4
|
import { CliError } from "../cli/errors.js";
|
|
@@ -25,18 +15,16 @@ export async function createWallet(options) {
|
|
|
25
15
|
throw new CliError({
|
|
26
16
|
code: "DASKI_KEY_ALREADY_EXISTS",
|
|
27
17
|
message: `A signing key already exists for the "${profileName}" profile.`,
|
|
28
|
-
remediation: `Use
|
|
29
|
-
"has no rotate or overwrite command: replacing a key is a deliberate " +
|
|
30
|
-
"manual act, so an accidental re-run can never strand funds.",
|
|
18
|
+
remediation: `Use the existing signer with daski wallet address --profile ${profileName}.`,
|
|
31
19
|
});
|
|
32
20
|
}
|
|
33
21
|
if (!options.yesHumanApproved) {
|
|
34
22
|
if (!isInteractive()) {
|
|
35
23
|
throw new CliError({
|
|
36
24
|
code: "DASKI_KEY_CREATION_NEEDS_HUMAN",
|
|
37
|
-
message: "
|
|
38
|
-
remediation: "
|
|
39
|
-
"
|
|
25
|
+
message: "Wallet setup needs authorization; this session has no interactive terminal.",
|
|
26
|
+
remediation: "Ask the user to create the wallet interactively, or use " +
|
|
27
|
+
"`daski wallet create --yes-human-approved` after they authorize wallet setup.",
|
|
40
28
|
});
|
|
41
29
|
}
|
|
42
30
|
const approved = await confirmPhrase(`This creates a new signing key for the "${profileName}" profile ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -11,18 +11,18 @@ export interface ProfileConfig {
|
|
|
11
11
|
usdcAddress: Address;
|
|
12
12
|
/** EVM RPC used for balance reads. Never for signing. */
|
|
13
13
|
rpcUrl: string;
|
|
14
|
-
/**
|
|
15
|
-
maxPerOrderUsdc: string;
|
|
16
|
-
/**
|
|
17
|
-
sessionCapUsdc: string;
|
|
18
|
-
/**
|
|
14
|
+
/** Optional budget for a single purchase; null means no additional budget. */
|
|
15
|
+
maxPerOrderUsdc: string | null;
|
|
16
|
+
/** Optional budget across the profile's recorded authorizations. */
|
|
17
|
+
sessionCapUsdc: string | null;
|
|
18
|
+
/** Purchases above this user-selected allowance require quote approval. */
|
|
19
19
|
requireApprovalAboveUsdc: string;
|
|
20
20
|
signer: SignerKind;
|
|
21
21
|
/** Profiles are opt-in; mainnet ships disabled. */
|
|
22
22
|
enabled: boolean;
|
|
23
23
|
}
|
|
24
24
|
export interface DaskiConfig {
|
|
25
|
-
version: 1;
|
|
25
|
+
version: 1 | 2;
|
|
26
26
|
defaultProfile: ProfileName;
|
|
27
27
|
profiles: Record<ProfileName, ProfileConfig>;
|
|
28
28
|
}
|
|
@@ -46,14 +46,11 @@ export interface ConfigWarning {
|
|
|
46
46
|
declare const DOC = "https://github.com/daski-io/buyer/blob/main/docs/config.md";
|
|
47
47
|
/** Writes the default config if none exists. Returns the path either way. */
|
|
48
48
|
export declare function ensureConfig(): string;
|
|
49
|
-
/**
|
|
50
|
-
* Loads the config and selects a profile. `--profile` and `DASKI_PROFILE`
|
|
51
|
-
* choose *which* human-owned block applies; neither can alter its contents.
|
|
52
|
-
*/
|
|
49
|
+
/** Load the selected profile without changing existing spending choices. */
|
|
53
50
|
export declare function loadConfig(profileOverride?: string): LoadedConfig;
|
|
54
51
|
/** Directory and file permission checks, surfaced by `doctor` (§4.2). */
|
|
55
52
|
export declare function permissionWarnings(path: string): ConfigWarning[];
|
|
56
|
-
/**
|
|
53
|
+
/** Apply a temporary budget within any existing configured budget. */
|
|
57
54
|
export declare function applyCapOverrides(profile: ProfileConfig, overrides: {
|
|
58
55
|
maxPerOrderUsdc?: string | undefined;
|
|
59
56
|
sessionCapUsdc?: string | undefined;
|
|
@@ -61,4 +58,11 @@ export declare function applyCapOverrides(profile: ProfileConfig, overrides: {
|
|
|
61
58
|
/** Parses a decimal USDC string into atomic units without floating point. */
|
|
62
59
|
export declare function atomicUsdc(value: string): bigint;
|
|
63
60
|
export { DOC as CONFIG_DOC };
|
|
61
|
+
/** An explicit settings command; normal purchases and upgrades do not call it. */
|
|
62
|
+
export declare function configureBudgets(options: {
|
|
63
|
+
profile?: string | undefined;
|
|
64
|
+
perOrder?: string | undefined;
|
|
65
|
+
total?: string | undefined;
|
|
66
|
+
approvalAbove?: string | undefined;
|
|
67
|
+
}): Record<string, unknown>;
|
|
64
68
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAIhD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,WAAW,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oEAAoE;IACpE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2EAA2E;IAC3E,wBAAwB,EAAE,MAAM,CAAC;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,cAAc,EAAE,WAAW,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;CAC9C;AAED,+DAA+D;AAC/D,eAAO,MAAM,YAAY,eAA2D,CAAC;AACrF,kEAAkE;AAClE,eAAO,MAAM,YAAY,eAA2D,CAAC;AAErF,eAAO,MAAM,cAAc,EAAE,WA8B5B,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IACvB,iEAAiE;IACjE,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,QAAA,MAAM,GAAG,+DAA+D,CAAC;AAEzE,6EAA6E;AAC7E,wBAAgB,YAAY,IAAI,MAAM,CAUrC;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,YAAY,CA0CjE;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAuBhE;AA0CD,sEAAsE;AACtE,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACvF,aAAa,CA2Bf;AAMD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,CAAC;AAE7B,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwB1B"}
|
package/dist/config.js
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* The three caps live in `~/.daski/config.json` and nowhere else. No flag and
|
|
5
|
-
* no environment variable can raise them; a flag may lower one for a single
|
|
6
|
-
* invocation, which is the only direction that cannot be used to talk an
|
|
7
|
-
* agent into spending more than its operator allowed.
|
|
8
|
-
*
|
|
9
|
-
* Sandbox and mainnet are separate blocks with separate keychain entries, so
|
|
10
|
-
* a misconfigured profile cannot reach across and spend real money.
|
|
11
|
-
*/
|
|
1
|
+
/** Profiles select a signer and network. Purchases use quote approval;
|
|
2
|
+
* additional budgets are optional. Existing configured budgets are preserved. */
|
|
12
3
|
import { mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
13
4
|
import { dirname } from "node:path";
|
|
14
5
|
import { getAddress } from "viem";
|
|
@@ -19,7 +10,7 @@ export const SANDBOX_USDC = getAddress("0x036CbD53842c5426634e7929541eC2318f3dCF
|
|
|
19
10
|
/** Base mainnet USDC, for the scaffolded-but-disabled profile. */
|
|
20
11
|
export const MAINNET_USDC = getAddress("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913");
|
|
21
12
|
export const DEFAULT_CONFIG = {
|
|
22
|
-
version:
|
|
13
|
+
version: 2,
|
|
23
14
|
defaultProfile: "sandbox",
|
|
24
15
|
profiles: {
|
|
25
16
|
sandbox: {
|
|
@@ -28,21 +19,21 @@ export const DEFAULT_CONFIG = {
|
|
|
28
19
|
chainId: 84532,
|
|
29
20
|
usdcAddress: SANDBOX_USDC,
|
|
30
21
|
rpcUrl: "https://sepolia.base.org",
|
|
31
|
-
maxPerOrderUsdc:
|
|
32
|
-
sessionCapUsdc:
|
|
33
|
-
requireApprovalAboveUsdc: "
|
|
22
|
+
maxPerOrderUsdc: null,
|
|
23
|
+
sessionCapUsdc: null,
|
|
24
|
+
requireApprovalAboveUsdc: "0.00",
|
|
34
25
|
signer: "local",
|
|
35
26
|
enabled: true,
|
|
36
27
|
},
|
|
37
|
-
//
|
|
28
|
+
// Mainnet is available when the user chooses to enable it.
|
|
38
29
|
mainnet: {
|
|
39
30
|
gatewayUrl: "https://gateway.daski.io",
|
|
40
31
|
network: "eip155:8453",
|
|
41
32
|
chainId: 8453,
|
|
42
33
|
usdcAddress: MAINNET_USDC,
|
|
43
34
|
rpcUrl: "https://mainnet.base.org",
|
|
44
|
-
maxPerOrderUsdc:
|
|
45
|
-
sessionCapUsdc:
|
|
35
|
+
maxPerOrderUsdc: null,
|
|
36
|
+
sessionCapUsdc: null,
|
|
46
37
|
requireApprovalAboveUsdc: "0.00",
|
|
47
38
|
signer: "local",
|
|
48
39
|
enabled: false,
|
|
@@ -63,10 +54,7 @@ export function ensureConfig() {
|
|
|
63
54
|
return path;
|
|
64
55
|
}
|
|
65
56
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Loads the config and selects a profile. `--profile` and `DASKI_PROFILE`
|
|
68
|
-
* choose *which* human-owned block applies; neither can alter its contents.
|
|
69
|
-
*/
|
|
57
|
+
/** Load the selected profile without changing existing spending choices. */
|
|
70
58
|
export function loadConfig(profileOverride) {
|
|
71
59
|
const path = ensureConfig();
|
|
72
60
|
const warnings = [];
|
|
@@ -78,10 +66,15 @@ export function loadConfig(profileOverride) {
|
|
|
78
66
|
throw new CliError({
|
|
79
67
|
code: "DASKI_CONFIG_UNREADABLE",
|
|
80
68
|
message: `${path} is not valid JSON: ${error.message}`,
|
|
81
|
-
remediation: `
|
|
69
|
+
remediation: `Correct the JSON in ${path}. See ${DOC}`,
|
|
82
70
|
});
|
|
83
71
|
}
|
|
84
72
|
warnings.push(...permissionWarnings(path));
|
|
73
|
+
if (parsed.version !== 1 && parsed.version !== 2) {
|
|
74
|
+
throw new CliError({ code: "DASKI_CONFIG_VERSION_UNSUPPORTED",
|
|
75
|
+
message: "This configuration version is not supported.",
|
|
76
|
+
remediation: `Check the installed CLI version and ${DOC}.` });
|
|
77
|
+
}
|
|
85
78
|
const profileName = profileOverride ?? process.env.DASKI_PROFILE ?? parsed.defaultProfile;
|
|
86
79
|
const profile = parsed.profiles?.[profileName];
|
|
87
80
|
if (!profile) {
|
|
@@ -96,8 +89,8 @@ export function loadConfig(profileOverride) {
|
|
|
96
89
|
throw new CliError({
|
|
97
90
|
code: "DASKI_PROFILE_DISABLED",
|
|
98
91
|
message: `The "${profileName}" profile is disabled.`,
|
|
99
|
-
remediation: `
|
|
100
|
-
`
|
|
92
|
+
remediation: `When the user selects this network, set profiles.${profileName}.enabled ` +
|
|
93
|
+
`to true in ${path}. See ${DOC}`,
|
|
101
94
|
});
|
|
102
95
|
}
|
|
103
96
|
assertProfileSane(profileName, profile, path);
|
|
@@ -118,7 +111,7 @@ export function permissionWarnings(path) {
|
|
|
118
111
|
warnings.push({
|
|
119
112
|
code: "DASKI_CONFIG_WORLD_WRITABLE",
|
|
120
113
|
message: `The ${label} ${target} is world-writable, so any local process can ` +
|
|
121
|
-
"
|
|
114
|
+
"change its settings.",
|
|
122
115
|
remediation: `Run: chmod ${label === "config file" ? "600" : "700"} ${target}`,
|
|
123
116
|
});
|
|
124
117
|
}
|
|
@@ -139,12 +132,14 @@ function assertProfileSane(name, profile, path) {
|
|
|
139
132
|
});
|
|
140
133
|
}
|
|
141
134
|
for (const cap of ["maxPerOrderUsdc", "sessionCapUsdc", "requireApprovalAboveUsdc"]) {
|
|
142
|
-
if (
|
|
135
|
+
if (cap !== "requireApprovalAboveUsdc" && profile[cap] === null)
|
|
136
|
+
continue;
|
|
137
|
+
if (typeof profile[cap] !== "string" || !/^\d+(\.\d{1,6})?$/.test(profile[cap])) {
|
|
143
138
|
throw new CliError({
|
|
144
139
|
code: "DASKI_PROFILE_CAP_MALFORMED",
|
|
145
140
|
message: `Profile "${name}" has a malformed ${cap}: ${profile[cap]}`,
|
|
146
141
|
remediation: `Set ${cap} to a decimal USDC amount with at most 6 decimals, e.g. "25.00", ` +
|
|
147
|
-
`in ${path}. See ${DOC}#
|
|
142
|
+
`in ${path}, or use daski budget to change optional budgets. See ${DOC}#budgets`,
|
|
148
143
|
});
|
|
149
144
|
}
|
|
150
145
|
}
|
|
@@ -166,7 +161,7 @@ function assertProfileSane(name, profile, path) {
|
|
|
166
161
|
});
|
|
167
162
|
}
|
|
168
163
|
}
|
|
169
|
-
/**
|
|
164
|
+
/** Apply a temporary budget within any existing configured budget. */
|
|
170
165
|
export function applyCapOverrides(profile, overrides) {
|
|
171
166
|
const tightened = { ...profile };
|
|
172
167
|
for (const cap of ["maxPerOrderUsdc", "sessionCapUsdc"]) {
|
|
@@ -180,13 +175,14 @@ export function applyCapOverrides(profile, overrides) {
|
|
|
180
175
|
remediation: `Pass e.g. --${flagFor(cap)} 5.00`,
|
|
181
176
|
});
|
|
182
177
|
}
|
|
183
|
-
|
|
178
|
+
const existing = profile[cap];
|
|
179
|
+
if (existing !== null && atomicUsdc(requested) > atomicUsdc(existing)) {
|
|
184
180
|
throw new CliError({
|
|
185
181
|
code: "DASKI_CAP_OVERRIDE_WOULD_RAISE",
|
|
186
182
|
message: `--${flagFor(cap)} ${requested} is above the configured ${cap} of ` +
|
|
187
|
-
`${profile[cap]}
|
|
188
|
-
remediation: `
|
|
189
|
-
|
|
183
|
+
`${profile[cap]}.`,
|
|
184
|
+
remediation: `To change the stored budget at the user's request, use daski budget ` +
|
|
185
|
+
`--${cap === "maxPerOrderUsdc" ? "per-order" : "total"} ${requested}. See ${DOC}#budgets`,
|
|
190
186
|
});
|
|
191
187
|
}
|
|
192
188
|
tightened[cap] = requested;
|
|
@@ -202,4 +198,34 @@ export function atomicUsdc(value) {
|
|
|
202
198
|
return BigInt(whole) * 1000000n + BigInt(fraction.padEnd(6, "0").slice(0, 6) || "0");
|
|
203
199
|
}
|
|
204
200
|
export { DOC as CONFIG_DOC };
|
|
201
|
+
/** An explicit settings command; normal purchases and upgrades do not call it. */
|
|
202
|
+
export function configureBudgets(options) {
|
|
203
|
+
const loaded = loadConfig(options.profile);
|
|
204
|
+
const profile = { ...loaded.profile };
|
|
205
|
+
for (const [value, key] of [
|
|
206
|
+
[options.perOrder, "maxPerOrderUsdc"],
|
|
207
|
+
[options.total, "sessionCapUsdc"],
|
|
208
|
+
[options.approvalAbove, "requireApprovalAboveUsdc"],
|
|
209
|
+
]) {
|
|
210
|
+
if (value === undefined)
|
|
211
|
+
continue;
|
|
212
|
+
if (value === "none" && key !== "requireApprovalAboveUsdc")
|
|
213
|
+
profile[key] = null;
|
|
214
|
+
else if (/^\d+(\.\d{1,6})?$/.test(value))
|
|
215
|
+
profile[key] = value;
|
|
216
|
+
else
|
|
217
|
+
throw new CliError({ code: "DASKI_BUDGET_INVALID",
|
|
218
|
+
message: `Invalid ${key} value.`,
|
|
219
|
+
remediation: "Use a decimal USDC amount, or none for an optional budget." });
|
|
220
|
+
}
|
|
221
|
+
const changed = options.perOrder !== undefined || options.total !== undefined || options.approvalAbove !== undefined;
|
|
222
|
+
if (changed) {
|
|
223
|
+
loaded.config.version = 2;
|
|
224
|
+
loaded.config.profiles[loaded.profileName] = profile;
|
|
225
|
+
writeFileSync(configPath(), `${JSON.stringify(loaded.config, null, 2)}\n`, { mode: 0o600 });
|
|
226
|
+
}
|
|
227
|
+
return { profile: loaded.profileName, changed,
|
|
228
|
+
maxPerOrderUsdc: profile.maxPerOrderUsdc, sessionCapUsdc: profile.sessionCapUsdc,
|
|
229
|
+
requireApprovalAboveUsdc: profile.requireApprovalAboveUsdc };
|
|
230
|
+
}
|
|
205
231
|
//# sourceMappingURL=config.js.map
|