@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
@@ -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
- return mutate(options, "daski_confirm_delivery", "confirmation", {});
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: "The purchase did not complete. Re-run `daski buy` with the same request; " +
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
- capability: capability.token,
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
- capability: granted.token,
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: "status",
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
- const capability = body.capability;
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: capability.token, expiresAt: Number(capability.expiresAt) };
214
+ const stored = { token: body.readCapability, expiresAt: Number(body.expiresAt) };
211
215
  updateOrder(record.intentId, { readCapability: stored });
212
216
  return stored;
213
217
  }
214
- async function withOrder(options, run) {
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;AAOnE,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;CACf;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8ElC"}
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, issuedPaymentIdentifier, newIntentId, recordIntent, } from "../gateway/purchase.js";
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 = issuedPaymentIdentifier(challenge.extensions) ?? newIntentId();
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 caller is the human here: presenting a challenge file to this
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":"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"}
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":"AAoBA,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,CAwD3F;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"}
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"}
@@ -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 it with \`daski wallet address --profile ${profileName}\`. This CLI ` +
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: "Creating a signing key requires a human, and this session has no terminal.",
38
- remediation: "A human must run `daski wallet create` in their own interactive terminal " +
39
- "and type the confirmation phrase. Do not run it from an agent's shell.",
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":"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"}
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
- /** Human-owned. Not raisable at runtime. */
15
- maxPerOrderUsdc: string;
16
- /** Human-owned. Not raisable at runtime. */
17
- sessionCapUsdc: string;
18
- /** Human-owned. Above this, a purchase needs an interactive human. */
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
- /** Tightens the config's caps for one invocation. Lowering only (§4.2). */
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
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAaA,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,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,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,CAAC;IACX,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;;;GAGG;AACH,wBAAgB,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,YAAY,CAqCjE;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAuBhE;AAyCD,2EAA2E;AAC3E,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,CA0Bf;AAMD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,CAAC"}
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
- * §5 — profiles, and §4.2 — caps are human-owned.
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: 1,
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: "25.00",
32
- sessionCapUsdc: "100.00",
33
- requireApprovalAboveUsdc: "1.00",
22
+ maxPerOrderUsdc: null,
23
+ sessionCapUsdc: null,
24
+ requireApprovalAboveUsdc: "0.00",
34
25
  signer: "local",
35
26
  enabled: true,
36
27
  },
37
- // Scaffolded, and deliberately off. Enabling it is a human edit.
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: "0.00",
45
- sessionCapUsdc: "0.00",
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: `Fix the file by hand, or delete it to regenerate defaults. See ${DOC}`,
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: `Enabling a profile — mainnet especially — is a human action: set ` +
100
- `profiles.${profileName}.enabled to true in ${path} and set real caps. See ${DOC}`,
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
- "raise your spend caps.",
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 (!/^\d+(\.\d{1,6})?$/.test(profile[cap])) {
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}#caps`,
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
- /** Tightens the config's caps for one invocation. Lowering only (§4.2). */
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
- if (atomicUsdc(requested) > atomicUsdc(profile[cap])) {
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]}. Flags may lower a cap, never raise one.`,
188
- remediation: `Raising a cap is a human action: edit ${cap} in ${configPath()} by hand. ` +
189
- `See ${DOC}#caps`,
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