run402 3.7.5 → 3.7.7

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 +5 -4
  2. package/cli.mjs +9 -4
  3. package/lib/admin.mjs +1 -3
  4. package/lib/agent.mjs +1 -3
  5. package/lib/ai.mjs +1 -3
  6. package/lib/allowance.mjs +1 -3
  7. package/lib/apps.mjs +1 -3
  8. package/lib/assets.mjs +1 -3
  9. package/lib/auth.mjs +1 -3
  10. package/lib/billing.mjs +1 -3
  11. package/lib/cdn.mjs +1 -3
  12. package/lib/ci.mjs +1 -3
  13. package/lib/contracts.mjs +1 -3
  14. package/lib/domains.mjs +1 -3
  15. package/lib/email.mjs +1 -3
  16. package/lib/functions.mjs +1 -3
  17. package/lib/grants.mjs +2 -4
  18. package/lib/image.mjs +1 -3
  19. package/lib/jobs.mjs +2 -6
  20. package/lib/message.mjs +1 -3
  21. package/lib/org.mjs +1 -3
  22. package/lib/projects.mjs +1 -3
  23. package/lib/secrets.mjs +1 -3
  24. package/lib/sender-domain.mjs +1 -3
  25. package/lib/service.mjs +2 -4
  26. package/lib/sites.mjs +1 -3
  27. package/lib/status.mjs +5 -4
  28. package/lib/subdomains.mjs +1 -3
  29. package/lib/tier.mjs +1 -3
  30. package/lib/transfer.mjs +1 -3
  31. package/lib/up.mjs +16 -6
  32. package/lib/wallet-context.mjs +11 -7
  33. package/lib/wallet-context.test.mjs +14 -2
  34. package/lib/webhooks.mjs +1 -3
  35. package/package.json +1 -1
  36. package/sdk/dist/actions.d.ts +1 -1
  37. package/sdk/dist/actions.d.ts.map +1 -1
  38. package/sdk/dist/index.d.ts +1 -0
  39. package/sdk/dist/index.d.ts.map +1 -1
  40. package/sdk/dist/index.js +2 -0
  41. package/sdk/dist/index.js.map +1 -1
  42. package/sdk/dist/namespaces/apps.d.ts +34 -0
  43. package/sdk/dist/namespaces/apps.d.ts.map +1 -1
  44. package/sdk/dist/namespaces/apps.js +19 -0
  45. package/sdk/dist/namespaces/apps.js.map +1 -1
  46. package/sdk/dist/node/actions-node.d.ts.map +1 -1
  47. package/sdk/dist/node/actions-node.js +617 -25
  48. package/sdk/dist/node/actions-node.js.map +1 -1
  49. package/sdk/dist/scoped.d.ts +5 -1
  50. package/sdk/dist/scoped.d.ts.map +1 -1
  51. package/sdk/dist/scoped.js +6 -0
  52. package/sdk/dist/scoped.js.map +1 -1
package/README.md CHANGED
@@ -103,7 +103,7 @@ jobs:
103
103
  steps:
104
104
  - uses: actions/checkout@v4
105
105
  - name: Deploy to run402
106
- run: npx --yes run402@1.60.0 deploy apply --manifest 'run402.deploy.json' --project 'prj_...'
106
+ run: npx --yes run402@3.7.5 deploy apply --manifest 'run402.deploy.json' --project 'prj_...'
107
107
  ```
108
108
 
109
109
  CI deploys can ship `site`, `functions`, `database`, and absent/current `base` changes. Route declarations are allowed only when the binding was linked with covering `--route-scope` patterns (`/admin` exact, `/api/*` final wildcard); no scopes means no CI route authority. Keep secrets, domains, subdomains, checks, non-current base changes, and out-of-scope routes in a local `run402 deploy apply` where the full allowance-backed authority is present.
@@ -138,7 +138,7 @@ run402 functions rebuild <id> --all # refresh every function in the project
138
138
  Functions run on Node 22 with `@run402/functions` auto-bundled. Inside the handler:
139
139
 
140
140
  ```ts
141
- import { db, adminDb, getUser, email, ai } from "@run402/functions";
141
+ import { db, adminDb, auth, email, ai } from "@run402/functions";
142
142
  ```
143
143
 
144
144
  `db(req)` is the caller-context client (RLS applies); `adminDb()` bypasses RLS for platform-authored writes.
@@ -266,14 +266,15 @@ Same content also at [`cli/llms-cli.txt`](./llms-cli.txt) in the repo. Treat tha
266
266
 
267
267
  ## Other interfaces
268
268
 
269
- `run402` is one of five surfaces:
269
+ `run402` is one of the public Run402 surfaces:
270
270
 
271
271
  - [`@run402/sdk`](https://www.npmjs.com/package/@run402/sdk) — typed TypeScript client (isomorphic + Node entry)
272
272
  - [`run402-mcp`](https://www.npmjs.com/package/run402-mcp) — MCP server (Claude Desktop, Cursor, Cline, Claude Code)
273
273
  - [`@run402/functions`](https://www.npmjs.com/package/@run402/functions) — in-function helper imported inside deployed functions
274
+ - [`@run402/astro`](https://www.npmjs.com/package/@run402/astro) — Astro SSR, ISR cache, hosted auth, and image integration
274
275
  - OpenClaw skill — script-based skill for OpenClaw agents
275
276
 
276
- All five release in lockstep at the same version and share `@run402/sdk` as the kernel.
277
+ The in-repo packages `run402`, `run402-mcp`, and `@run402/sdk` release in lockstep. `@run402/astro` and `@run402/functions` publish on their own cadences.
277
278
 
278
279
  ## License
279
280
 
package/cli.mjs CHANGED
@@ -344,9 +344,14 @@ switch (cmd) {
344
344
  await run(sub, rest);
345
345
  break;
346
346
  }
347
- default:
348
- console.error(`Unknown command: ${cmd}\n`);
349
- console.log(HELP);
350
- process.exit(1);
347
+ default: {
348
+ const { fail } = await import("./lib/sdk-errors.mjs");
349
+ fail({
350
+ code: "UNKNOWN_COMMAND",
351
+ message: `Unknown command: ${cmd}`,
352
+ hint: "Run `run402 --help` for the command list.",
353
+ details: { command: cmd },
354
+ });
355
+ }
351
356
  }
352
357
  }
package/lib/admin.mjs CHANGED
@@ -192,8 +192,6 @@ export async function run(sub, args) {
192
192
  case "archive": await archive(args); break;
193
193
  case "reactivate": await reactivate(args); break;
194
194
  default:
195
- console.error(`Unknown subcommand: ${sub}\n`);
196
- console.log(HELP);
197
- process.exit(1);
195
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown admin subcommand: ${sub}`, hint: "Run `run402 admin --help` for usage.", details: { command: "admin", subcommand: sub } });
198
196
  }
199
197
  }
package/lib/agent.mjs CHANGED
@@ -201,8 +201,6 @@ export async function run(sub, args) {
201
201
  await passkey(args);
202
202
  return;
203
203
  default:
204
- console.error(`Unknown subcommand: ${sub}\n`);
205
- console.log(HELP);
206
- process.exit(1);
204
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown agent subcommand: ${sub}`, hint: "Run `run402 agent --help` for usage.", details: { command: "agent", subcommand: sub } });
207
205
  }
208
206
  }
package/lib/ai.mjs CHANGED
@@ -230,8 +230,6 @@ export async function run(sub, args) {
230
230
  case "moderate": await moderate(args); break;
231
231
  case "usage": await usage(args); break;
232
232
  default:
233
- console.error(`Unknown subcommand: ${sub}\n`);
234
- console.log(HELP);
235
- process.exit(1);
233
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown ai subcommand: ${sub}`, hint: "Run `run402 ai --help` for usage.", details: { command: "ai", subcommand: sub } });
236
234
  }
237
235
  }
package/lib/allowance.mjs CHANGED
@@ -337,8 +337,6 @@ export async function run(sub, args) {
337
337
  case "checkout": await checkout(args); break;
338
338
  case "history": await history(args); break;
339
339
  default:
340
- console.error(`Unknown subcommand: ${sub}\n`);
341
- console.log(HELP);
342
- process.exit(1);
340
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown allowance subcommand: ${sub}`, hint: "Run `run402 allowance --help` for usage.", details: { command: "allowance", subcommand: sub } });
343
341
  }
344
342
  }
package/lib/apps.mjs CHANGED
@@ -312,8 +312,6 @@ export async function run(sub, args) {
312
312
  case "update": await update(args[0], args[1], args.slice(2)); break;
313
313
  case "delete": await deleteVersion(args[0], args[1], args.slice(2)); break;
314
314
  default:
315
- console.error(`Unknown subcommand: ${sub}\n`);
316
- console.log(HELP);
317
- process.exit(1);
315
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown apps subcommand: ${sub}`, hint: "Run `run402 apps --help` for usage.", details: { command: "apps", subcommand: sub } });
318
316
  }
319
317
  }
package/lib/assets.mjs CHANGED
@@ -683,8 +683,6 @@ export async function run(sub, args) {
683
683
  case "sign": await sign(defaultProject, args); break;
684
684
  case "diagnose": await diagnose(defaultProject, args); break;
685
685
  default:
686
- console.error(`Unknown subcommand: ${sub}`);
687
- console.log(HELP);
688
- process.exit(1);
686
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown assets subcommand: ${sub}`, hint: "Run `run402 assets --help` for usage.", details: { command: "assets", subcommand: sub } });
689
687
  }
690
688
  }
package/lib/auth.mjs CHANGED
@@ -757,8 +757,6 @@ export async function run(sub, args) {
757
757
  case "providers": await providers(args); break;
758
758
  case "scaffold-roles": scaffoldRoles(args); break;
759
759
  default:
760
- console.error(`Unknown subcommand: ${sub}\n`);
761
- console.log(HELP);
762
- process.exit(1);
760
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown auth subcommand: ${sub}`, hint: "Run `run402 auth --help` for usage.", details: { command: "auth", subcommand: sub } });
763
761
  }
764
762
  }
package/lib/billing.mjs CHANGED
@@ -355,8 +355,6 @@ export async function run(sub, args) {
355
355
  case "balance": await balance(args); break;
356
356
  case "history": await history(args); break;
357
357
  default:
358
- console.error(`Unknown subcommand: ${sub}\n`);
359
- console.log(HELP);
360
- process.exit(1);
358
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown billing subcommand: ${sub}`, hint: "Run `run402 billing --help` for usage.", details: { command: "billing", subcommand: sub } });
361
359
  }
362
360
  }
package/lib/cdn.mjs CHANGED
@@ -135,8 +135,6 @@ export async function run(sub, args) {
135
135
  await waitFresh(defaultProject, args);
136
136
  break;
137
137
  default:
138
- console.error(`Unknown subcommand: ${sub}`);
139
- console.log(HELP);
140
- process.exit(1);
138
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown cdn subcommand: ${sub}`, hint: "Run `run402 cdn --help` for usage.", details: { command: "cdn", subcommand: sub } });
141
139
  }
142
140
  }
package/lib/ci.mjs CHANGED
@@ -457,8 +457,6 @@ export async function run(sub, args) {
457
457
  case "revoke": await revoke(args); break;
458
458
  case "set-asset-scopes": await setAssetScopes(args); break;
459
459
  default:
460
- console.error(`Unknown subcommand: ${sub}\n`);
461
- console.log(HELP);
462
- process.exit(1);
460
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown ci subcommand: ${sub}`, hint: "Run `run402 ci --help` for usage.", details: { command: "ci", subcommand: sub } });
463
461
  }
464
462
  }
package/lib/contracts.mjs CHANGED
@@ -483,8 +483,6 @@ export async function run(sub, args) {
483
483
  case "drain": await drain(args[0], args[1], args.slice(2)); break;
484
484
  case "delete": await deleteSigner(args[0], args[1], args.slice(2)); break;
485
485
  default:
486
- console.error(`Unknown subcommand: ${sub}\n`);
487
- console.log(HELP);
488
- process.exit(1);
486
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown contracts subcommand: ${sub}`, hint: "Run `run402 contracts --help` for usage.", details: { command: "contracts", subcommand: sub } });
489
487
  }
490
488
  }
package/lib/domains.mjs CHANGED
@@ -208,8 +208,6 @@ export async function run(sub, args) {
208
208
  case "status": await status(args); break;
209
209
  case "delete": await deleteDomain(args); break;
210
210
  default:
211
- console.error(`Unknown subcommand: ${sub}\n`);
212
- console.log(HELP);
213
- process.exit(1);
211
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown domains subcommand: ${sub}`, hint: "Run `run402 domains --help` for usage.", details: { command: "domains", subcommand: sub } });
214
212
  }
215
213
  }
package/lib/email.mjs CHANGED
@@ -791,8 +791,6 @@ export async function run(sub, args) {
791
791
  break;
792
792
  }
793
793
  default:
794
- console.error(`Unknown subcommand: ${sub}\n`);
795
- console.log(HELP);
796
- process.exit(1);
794
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown email subcommand: ${sub}`, hint: "Run `run402 email --help` for usage.", details: { command: "email", subcommand: sub } });
797
795
  }
798
796
  }
package/lib/functions.mjs CHANGED
@@ -823,9 +823,7 @@ export async function run(sub, args) {
823
823
  case "list": await list(args[0], args.slice(1)); break;
824
824
  case "delete": await deleteFunction(args[0], args[1], args.slice(2)); break;
825
825
  default:
826
- console.error(`Unknown subcommand: ${sub}\n`);
827
- console.log(HELP);
828
- process.exit(1);
826
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown functions subcommand: ${sub}`, hint: "Run `run402 functions --help` for usage.", details: { command: "functions", subcommand: sub } });
829
827
  }
830
828
  }
831
829
 
package/lib/grants.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { getSdk } from "./sdk.mjs";
2
- import { reportSdkError, parseFlagJson } from "./sdk-errors.mjs";
2
+ import { reportSdkError, parseFlagJson, fail } from "./sdk-errors.mjs";
3
3
  import {
4
4
  normalizeArgv,
5
5
  assertKnownFlags,
@@ -110,8 +110,6 @@ export async function run(sub, args) {
110
110
  case "create": await create(args); break;
111
111
  case "revoke": await revoke(args); break;
112
112
  default:
113
- console.error(`Unknown subcommand: ${sub}\n`);
114
- console.log(HELP);
115
- process.exit(1);
113
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown grants subcommand: ${sub}`, hint: "Run `run402 grants --help` for usage.", details: { command: "grants", subcommand: sub } });
116
114
  }
117
115
  }
package/lib/image.mjs CHANGED
@@ -67,9 +67,7 @@ export async function run(sub, args) {
67
67
  }
68
68
 
69
69
  if (sub !== "generate") {
70
- console.error(`Unknown subcommand: ${sub}\n`);
71
- console.log(HELP);
72
- process.exit(1);
70
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown image subcommand: ${sub}`, hint: "Run `run402 image --help` for usage.", details: { command: "image", subcommand: sub } });
73
71
  }
74
72
 
75
73
  const parsedArgs = normalizeArgv(args);
package/lib/jobs.mjs CHANGED
@@ -421,9 +421,7 @@ async function artifacts(args = []) {
421
421
  await artifactsGet(args.slice(1));
422
422
  return;
423
423
  }
424
- console.error(`Unknown jobs artifacts action: ${action}\n`);
425
- console.log(SUB_HELP.artifacts);
426
- process.exit(1);
424
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown jobs artifacts action: ${action}`, hint: "Run `run402 jobs artifacts --help` for usage.", details: { command: "jobs artifacts", subcommand: action } });
427
425
  }
428
426
 
429
427
  function splitJobIdArg(args = [], valueFlags = []) {
@@ -486,8 +484,6 @@ export async function run(sub, args = []) {
486
484
  await purge(args);
487
485
  break;
488
486
  default:
489
- console.error(`Unknown subcommand: ${sub}\n`);
490
- console.log(HELP);
491
- process.exit(1);
487
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown jobs subcommand: ${sub}`, hint: "Run `run402 jobs --help` for usage.", details: { command: "jobs", subcommand: sub } });
492
488
  }
493
489
  }
package/lib/message.mjs CHANGED
@@ -84,9 +84,7 @@ export async function run(sub, args) {
84
84
  process.exit(0);
85
85
  }
86
86
  if (sub !== "send") {
87
- console.error(`Unknown subcommand: ${sub}\n`);
88
- console.log(HELP);
89
- process.exit(1);
87
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown message subcommand: ${sub}`, hint: "Run `run402 message --help` for usage.", details: { command: "message", subcommand: sub } });
90
88
  }
91
89
  const parsedArgs = normalizeArgv(args);
92
90
  assertKnownFlags(parsedArgs, ["--help", "-h"]);
package/lib/org.mjs CHANGED
@@ -396,8 +396,6 @@ export async function run(sub, args) {
396
396
  case "whoami": await whoami(args); break;
397
397
  case "audit": await audit(args); break;
398
398
  default:
399
- console.error(`Unknown subcommand: ${sub}\n`);
400
- console.log(HELP);
401
- process.exit(1);
399
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown org subcommand: ${sub}`, hint: "Run `run402 org --help` for usage.", details: { command: "org", subcommand: sub } });
402
400
  }
403
401
  }
package/lib/projects.mjs CHANGED
@@ -810,8 +810,6 @@ export async function run(sub, args) {
810
810
  case "promote-user": { const { projectId, rest } = resolvePositionalProject(args); await promoteUser(projectId, rest[0]); break; }
811
811
  case "demote-user": { const { projectId, rest } = resolvePositionalProject(args); await demoteUser(projectId, rest[0]); break; }
812
812
  default:
813
- console.error(`Unknown subcommand: ${sub}\n`);
814
- console.log(HELP);
815
- process.exit(1);
813
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown projects subcommand: ${sub}`, hint: "Run `run402 projects --help` for usage.", details: { command: "projects", subcommand: sub } });
816
814
  }
817
815
  }
package/lib/secrets.mjs CHANGED
@@ -218,8 +218,6 @@ export async function run(sub, args) {
218
218
  case "list": await list(args[0], args.slice(1)); break;
219
219
  case "delete": await deleteSecret(args[0], args[1], args.slice(2)); break;
220
220
  default:
221
- console.error(`Unknown subcommand: ${sub}\n`);
222
- console.log(HELP);
223
- process.exit(1);
221
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown secrets subcommand: ${sub}`, hint: "Run `run402 secrets --help` for usage.", details: { command: "secrets", subcommand: sub } });
224
222
  }
225
223
  }
@@ -209,8 +209,6 @@ export async function run(sub, args) {
209
209
  case "inbound-enable": await inboundToggle("enable", args); break;
210
210
  case "inbound-disable": await inboundToggle("disable", args); break;
211
211
  default:
212
- console.error(`Unknown subcommand: ${sub}\n`);
213
- console.log(HELP);
214
- process.exit(1);
212
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown sender-domain subcommand: ${sub}`, hint: "Run `run402 sender-domain --help` for usage.", details: { command: "sender-domain", subcommand: sub } });
215
213
  }
216
214
  }
package/lib/service.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { getSdk } from "./sdk.mjs";
2
- import { reportSdkError } from "./sdk-errors.mjs";
2
+ import { reportSdkError, fail } from "./sdk-errors.mjs";
3
3
 
4
4
  const HELP = `run402 service — Run402 service health and availability
5
5
 
@@ -70,8 +70,6 @@ export async function run(sub, args) {
70
70
  case "status": await status(); break;
71
71
  case "health": await health(); break;
72
72
  default:
73
- console.error(`Unknown subcommand: ${sub}\n`);
74
- console.log(HELP);
75
- process.exit(1);
73
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown service subcommand: ${sub}`, hint: "Run `run402 service --help` for usage.", details: { command: "service", subcommand: sub } });
76
74
  }
77
75
  }
package/lib/sites.mjs CHANGED
@@ -364,8 +364,6 @@ export async function run(sub, args) {
364
364
  case "deploy": await deploy(args); break;
365
365
  case "deploy-dir": await deployDir(args); break;
366
366
  default:
367
- console.error(`Unknown subcommand: ${sub}\n`);
368
- console.log(HELP);
369
- process.exit(1);
367
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown sites subcommand: ${sub}`, hint: "Run `run402 sites --help` for usage.", details: { command: "sites", subcommand: sub } });
370
368
  }
371
369
  }
package/lib/status.mjs CHANGED
@@ -14,7 +14,7 @@ import { readMeta } from "../core-dist/profiles.js";
14
14
  const HELP = `run402 status — Show full organization state in one shot
15
15
 
16
16
  Usage:
17
- run402 status
17
+ run402 status [--json]
18
18
 
19
19
  Displays:
20
20
  - Wallet identity (local_label, server_label, address)
@@ -25,8 +25,9 @@ Displays:
25
25
  - Active project ID
26
26
  - Active API target
27
27
 
28
- Output is JSON. Run402 Cloud status requires an allowance; Core target status
29
- can still report local project state without one.
28
+ Output is JSON by default. --json is accepted as a compatibility no-op.
29
+ Run402 Cloud status requires an allowance; Core target status can still report
30
+ local project state without one.
30
31
  `;
31
32
 
32
33
  // USDC / pathUSD constants (match allowance.mjs)
@@ -89,7 +90,7 @@ function normalizeProject(raw) {
89
90
  export async function run(args = []) {
90
91
  args = normalizeArgv(args);
91
92
  if (hasHelp(args)) { console.log(HELP); process.exit(0); }
92
- assertKnownFlags(args, ["--help", "-h"]);
93
+ assertKnownFlags(args, ["--help", "-h", "--json"]);
93
94
  const allowance = readAllowance();
94
95
  const target = {
95
96
  api_base: apiBase(),
@@ -197,8 +197,6 @@ export async function run(sub, args) {
197
197
  case "delete": await deleteSubdomain(args); break;
198
198
  case "list": await list(args); break;
199
199
  default:
200
- console.error(`Unknown subcommand: ${sub}\n`);
201
- console.log(HELP);
202
- process.exit(1);
200
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown subdomains subcommand: ${sub}`, hint: "Run `run402 subdomains --help` for usage.", details: { command: "subdomains", subcommand: sub } });
203
201
  }
204
202
  }
package/lib/tier.mjs CHANGED
@@ -160,8 +160,6 @@ export async function run(sub, args) {
160
160
  case "status": await status(args); break;
161
161
  case "set": await set(args); break;
162
162
  default:
163
- console.error(`Unknown subcommand: ${sub}\n`);
164
- console.log(HELP);
165
- process.exit(1);
163
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown tier subcommand: ${sub}`, hint: "Run `run402 tier --help` for usage.", details: { command: "tier", subcommand: sub } });
166
164
  }
167
165
  }
package/lib/transfer.mjs CHANGED
@@ -391,8 +391,6 @@ export async function run(sub, args) {
391
391
  await cancel(args);
392
392
  return;
393
393
  default:
394
- console.error(`Unknown subcommand: ${sub}\n`);
395
- console.log(HELP);
396
- process.exit(1);
394
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown transfer subcommand: ${sub}`, hint: "Run `run402 transfer --help` for usage.", details: { command: "transfer", subcommand: sub } });
397
395
  }
398
396
  }
package/lib/up.mjs CHANGED
@@ -7,7 +7,7 @@ import { assertKnownFlags, flagValue, normalizeArgv, positionalArgs } from "./ar
7
7
  const HELP = `run402 up — Provision/link/deploy the current app
8
8
 
9
9
  Usage:
10
- run402 up [repo-or-path] [--name <name>] [--project <id>] [--manifest <path>] [--dir <path>] [--tier <tier>] [-y|--yes] [--check|--print-spec|--plan|--require-plan <id>] [--json|--json-stream] [--quiet]
10
+ run402 up [repo-or-path] [--name <name>] [--project <id>] [--manifest <path>] [--dir <path>] [--tier <tier>] [-y|--yes] [--check|--print-spec|--plan|--require-plan <id>] [--human|--json-stream] [--quiet]
11
11
 
12
12
  Options:
13
13
  repo-or-path Local app directory or public Git repository URL. Defaults
@@ -15,8 +15,8 @@ Options:
15
15
  --name <name> Project display name when up needs to create a project.
16
16
  Not a deploy manifest field and never renames a project.
17
17
  --project <id> Explicit project id. Highest-priority project selector.
18
- --manifest <path> Deploy manifest path. Defaults to run402.deploy.json,
19
- then app.json in --dir/current directory.
18
+ --manifest <path> Manifest path. Defaults to run402.json, then
19
+ run402.deploy.json, then app.json in --dir/current directory.
20
20
  --dir <path> Workspace directory to inspect (default: current dir).
21
21
  --tier <tier> Bootstrap tier if no active Cloud tier exists
22
22
  (prototype, hobby, team; default prototype).
@@ -39,7 +39,8 @@ Options:
39
39
  --max-spend-usd <n> Maximum spend up may approve for app readiness.
40
40
  --build-mode <mode> Override app build mode: local, remote, or sandbox.
41
41
  --allow-shell-build Approve shell-string build commands in run402.json.
42
- --json Emit one final JSON object on stdout.
42
+ --json Emit one final JSON object on stdout (default; compatibility no-op).
43
+ --human Emit the legacy human success/blocking summary on stdout.
43
44
  --json-stream Emit NDJSON progress events on stdout and a final result event.
44
45
  --quiet Suppress action progress events on stderr.
45
46
 
@@ -81,6 +82,7 @@ export async function run(args = []) {
81
82
  "--allow-prune",
82
83
  "--allow-shell-build",
83
84
  "--json",
85
+ "--human",
84
86
  "--json-stream",
85
87
  ],
86
88
  [
@@ -156,9 +158,17 @@ export async function run(args = []) {
156
158
 
157
159
  const yes = parsed.includes("-y") || parsed.includes("--yes");
158
160
  const jsonStream = parsed.includes("--json-stream");
161
+ const human = parsed.includes("--human");
159
162
  const quiet = parsed.includes("--quiet") || parsed.includes("--final-only") || jsonStream;
160
163
  const mode = parseExecutionMode(parsed);
161
164
  const dryRun = parsed.includes("--dry-run");
165
+ if (human && (parsed.includes("--json") || jsonStream)) {
166
+ fail({
167
+ code: "BAD_USAGE",
168
+ message: "--human cannot be combined with --json or --json-stream.",
169
+ details: { flags: parsed.filter((arg) => arg === "--human" || arg === "--json" || arg === "--json-stream") },
170
+ });
171
+ }
162
172
  if (dryRun && mode !== undefined) {
163
173
  fail({
164
174
  code: "BAD_USAGE",
@@ -207,9 +217,9 @@ export async function run(args = []) {
207
217
  console.log(JSON.stringify({ type: "run402.up.result", result }));
208
218
  } else if (mode === "printSpec") {
209
219
  console.log(JSON.stringify(result.result?.spec ?? null, null, 2));
210
- } else if (result?.result?.app_result && !parsed.includes("--json")) {
220
+ } else if (human && result?.result?.app_result) {
211
221
  console.log(formatAppUpHuman(result.result.app_result));
212
- } else if (!parsed.includes("--json") && shouldRenderHumanSuccess(result)) {
222
+ } else if (human && shouldRenderHumanSuccess(result)) {
213
223
  console.log(formatLegacyUpSuccess(result));
214
224
  } else {
215
225
  console.log(JSON.stringify(result, null, 2));
@@ -4,10 +4,9 @@
4
4
  * Runs at the top of cli.mjs BEFORE any subcommand module (and therefore
5
5
  * before cli/lib/config.mjs snapshots its paths) is loaded. Resolves which
6
6
  * named wallet a command operates on, sets `process.env.RUN402_WALLET` so all
7
- * core path functions resolve under it, and emits a provenance line for
8
- * non-default selections. Core itself stays env-only the `--wallet` flag and
9
- * the per-directory `.run402.json` binding are translated into the env var
10
- * here, at the edge.
7
+ * core path functions resolve under it. Core itself stays env-only the
8
+ * `--wallet` flag and the per-directory `.run402.json` binding are translated
9
+ * into the env var here, at the edge.
11
10
  *
12
11
  * Precedence (highest first):
13
12
  * 1. --wallet <name> / --profile <name> (flag)
@@ -178,8 +177,9 @@ function walletAddress(name) {
178
177
  }
179
178
  }
180
179
 
181
- /** Emit the stderr provenance line for non-default selections (silent for default). */
182
- export function emitProvenance({ name, source, sourceDetail }, { cmd, quiet } = {}) {
180
+ /** Emit the stderr provenance line for non-default selections when explicitly requested. */
181
+ export function emitProvenance({ name, source, sourceDetail }, { cmd, quiet, showProvenance = false } = {}) {
182
+ if (!showProvenance) return;
183
183
  if (quiet) return;
184
184
  if (name === DEFAULT) return;
185
185
  if (cmd === "wallets") return; // the wallets group reports its own context
@@ -218,6 +218,10 @@ export function applyWalletSelection({ walletFlag, cmd, cwd = process.cwd(), env
218
218
  diverged: !!(envName && binding && envName !== binding.wallet),
219
219
  });
220
220
 
221
- emitProvenance(resolved, { cmd, quiet });
221
+ emitProvenance(resolved, {
222
+ cmd,
223
+ quiet,
224
+ showProvenance: env.RUN402_WALLET_PROVENANCE === "1",
225
+ });
222
226
  return resolved;
223
227
  }
@@ -212,15 +212,27 @@ describe("emitProvenance", () => {
212
212
  it("stays silent for the default wallet", () => {
213
213
  assert.equal(captureStderr(() => emitProvenance({ name: "default", source: "default" }, { cmd: "status" })), "");
214
214
  });
215
- it("emits a provenance line for a named wallet", () => {
215
+ it("stays silent for a named wallet by default", () => {
216
216
  ensureProfileDir("kychon");
217
217
  writeFileSync(join(tmp, "profiles", "kychon", "meta.json"), JSON.stringify({ name: "kychon", address: "0x1234567890abcdef" }));
218
218
  const out = captureStderr(() => emitProvenance({ name: "kychon", source: "env", sourceDetail: "RUN402_WALLET" }, { cmd: "status" }));
219
+ assert.equal(out, "");
220
+ });
221
+ it("can emit a provenance line when explicitly requested", () => {
222
+ ensureProfileDir("kychon");
223
+ writeFileSync(join(tmp, "profiles", "kychon", "meta.json"), JSON.stringify({ name: "kychon", address: "0x1234567890abcdef" }));
224
+ const out = captureStderr(() => emitProvenance(
225
+ { name: "kychon", source: "env", sourceDetail: "RUN402_WALLET" },
226
+ { cmd: "status", showProvenance: true },
227
+ ));
219
228
  assert.match(out, /wallet: kychon/);
220
229
  assert.match(out, /RUN402_WALLET/);
221
230
  });
222
231
  it("honors --quiet", () => {
223
- assert.equal(captureStderr(() => emitProvenance({ name: "kychon", source: "env" }, { cmd: "status", quiet: true })), "");
232
+ assert.equal(captureStderr(() => emitProvenance(
233
+ { name: "kychon", source: "env" },
234
+ { cmd: "status", quiet: true, showProvenance: true },
235
+ )), "");
224
236
  });
225
237
  it("stays silent for the wallets group", () => {
226
238
  assert.equal(captureStderr(() => emitProvenance({ name: "kychon", source: "flag" }, { cmd: "wallets" })), "");
package/lib/webhooks.mjs CHANGED
@@ -262,8 +262,6 @@ export async function run(sub, args) {
262
262
  case "deliveries": await deliveries(args); break;
263
263
  case "redrive": await redrive(args); break;
264
264
  default:
265
- console.error(`Unknown webhooks action: ${sub}\n`);
266
- console.log(HELP);
267
- process.exit(1);
265
+ fail({ code: "UNKNOWN_SUBCOMMAND", message: `Unknown webhooks action: ${sub}`, hint: "Run `run402 webhooks --help` for usage.", details: { command: "webhooks", subcommand: sub } });
268
266
  }
269
267
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "run402",
3
- "version": "3.7.5",
3
+ "version": "3.7.7",
4
4
  "description": "CLI for Run402 — provision Postgres databases, deploy static sites, generate images, and manage wallets via x402 and MPP micropayments.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -72,7 +72,7 @@ export interface Run402ActionApprovalRequest {
72
72
  message: string;
73
73
  mutations: Run402ActionMutation[];
74
74
  }
75
- export type Run402ActionMutation = "allowance.create" | "allowance.faucet" | "tier.set" | "projects.provision" | "workspace.link.write" | "app.source.resolve" | "app.install" | "deploy.apply";
75
+ export type Run402ActionMutation = "allowance.create" | "allowance.faucet" | "tier.set" | "projects.provision" | "workspace.link.write" | "app.source.resolve" | "app.install" | "app.mailbox.ensure" | "app.secret.ensure" | "app.build" | "app.webhook.ensure" | "app.verify" | "deploy.apply";
76
76
  export interface Run402ActionRunOptions {
77
77
  /**
78
78
  * Canonical execution mode for typed-config workflows.
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,7 @@ export interface Run402Options {
49
49
  }
50
50
  export declare class Run402 {
51
51
  #private;
52
+ readonly apiBase: string;
52
53
  readonly projects: Projects;
53
54
  readonly assets: Assets;
54
55
  readonly functions: Functions;