run402 1.50.1 → 1.51.1

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 CHANGED
@@ -1,8 +1,10 @@
1
1
  # run402 CLI
2
2
 
3
- Command-line interface for [Run402](https://run402.com) — provision Postgres databases, deploy static sites, generate images, and manage agent allowances via x402 micropayments.
3
+ Command-line interface for [Run402](https://run402.com) — provision Postgres databases, deploy static sites, run Node 22 serverless functions, host content-addressed CDN assets, send email, sign on-chain. Paid autonomously with x402 USDC on Base. **Prototype tier is free on testnet.**
4
4
 
5
- ## Installation
5
+ For the full CLI reference (every flag, every subcommand) see **<https://run402.com/llms-cli.txt>**.
6
+
7
+ ## Install
6
8
 
7
9
  ```bash
8
10
  npm install -g run402
@@ -14,83 +16,128 @@ Or run without installing:
14
16
  npx run402 <command>
15
17
  ```
16
18
 
17
- ## Getting Started
19
+ ## 30-second start
20
+
21
+ ```bash
22
+ run402 init # one-shot: allowance + faucet + tier check
23
+ run402 tier set prototype # FREE on testnet (verifies x402 setup)
24
+ run402 projects provision --name my-app # → anon_key, service_key, project_id
25
+ run402 sites deploy-dir ./dist # incremental upload
26
+ run402 subdomains claim my-app # → https://my-app.run402.com
27
+ ```
28
+
29
+ That's a real Postgres database + a deployed static site, paid for autonomously with testnet USDC.
30
+
31
+ ## Output contract
32
+
33
+ Every command prints **JSON to stdout**, **JSON errors to stderr**, and exits **0 on success / 1 on failure**. Designed for shells, scripts, and agent loops — pipe everything to `jq`.
34
+
35
+ ## Common commands
36
+
37
+ ### Allowance
38
+
39
+ ```bash
40
+ run402 allowance create # generate the local allowance
41
+ run402 allowance fund # request testnet USDC from the faucet
42
+ run402 allowance balance # mainnet + testnet + billing balance
43
+ run402 allowance export # print address (for funding)
44
+ ```
45
+
46
+ ### Database
18
47
 
19
48
  ```bash
20
- # 1. Create a local agent allowance
21
- run402 allowance create
49
+ run402 projects sql <id> "CREATE TABLE items (id serial PRIMARY KEY, …)"
50
+ run402 projects apply-expose <id> --file manifest.json # declare what's reachable
51
+ run402 projects rest <id> items "select=*&order=id.desc&limit=10"
52
+ run402 projects schema <id> # introspect tables + RLS
53
+ ```
22
54
 
23
- # 2. Fund it with test USDC (Base Sepolia faucet)
24
- run402 allowance fund
55
+ ### Static sites
25
56
 
26
- # 3. Deploy your app
27
- run402 deploy --tier prototype --manifest app.json
57
+ ```bash
58
+ run402 sites deploy-dir ./dist # incremental upload (plan/commit transport)
59
+ run402 deploy --manifest app.json # one-call full stack deploy
60
+ run402 subdomains claim my-app # → my-app.run402.com (auto-reassigns on next deploy)
28
61
  ```
29
62
 
30
- ## Commands
63
+ `deploy-dir` hashes each file client-side and only uploads bytes the gateway doesn't already have. Re-deploying an unchanged tree returns immediately with `bytes_uploaded: 0`. Progress events stream to stderr.
64
+
65
+ ### Storage (paste-and-go CDN assets)
66
+
67
+ ```bash
68
+ run402 blob put ./logo.png # → AssetRef with cdn_url, sri, etag
69
+ run402 blob get <key> --output /tmp/logo.png
70
+ run402 blob diagnose <url> # exit 0 if fresh, 1 if stale
71
+ ```
31
72
 
32
- ### `run402 allowance`
73
+ The returned `cdn_url` is content-addressed (`pr-<public_id>.run402.com/_blob/<key>-<8hex>.<ext>`) — paste it straight into HTML. SRI is bundled in `sri`.
33
74
 
34
- Manage your local agent allowance.
75
+ ### Functions
35
76
 
36
77
  ```bash
37
- run402 allowance create # Generate a new allowance
38
- run402 allowance status # Show address, network, funding status
39
- run402 allowance fund # Request test USDC from the faucet
40
- run402 allowance export # Print allowance address (for scripting)
78
+ run402 functions deploy <id> my-fn --file fn.ts \
79
+ --timeout 30 --memory 256 \
80
+ --schedule "*/15 * * * *" \
81
+ --deps "stripe,zod@^3"
82
+ run402 functions logs <id> my-fn --tail 100 --follow
83
+ run402 functions invoke <id> my-fn --body '{"hello":"world"}'
41
84
  ```
42
85
 
43
- ### `run402 deploy`
86
+ Functions run on Node 22 with `@run402/functions` auto-bundled. Inside the handler:
87
+
88
+ ```ts
89
+ import { db, adminDb, getUser, email, ai } from "@run402/functions";
90
+ ```
44
91
 
45
- Deploy a full-stack app or static site.
92
+ `db(req)` is the caller-context client (RLS applies); `adminDb()` bypasses RLS for platform-authored writes.
93
+
94
+ ### Email
46
95
 
47
96
  ```bash
48
- run402 deploy --tier prototype --manifest app.json
49
- run402 deploy --tier hobby --manifest app.json
50
- cat app.json | run402 deploy --tier team
97
+ run402 email create my-app
98
+ run402 email send --to user@example.com --subject "Welcome" --html "<h1>Hi</h1>"
99
+ run402 email send --to user@example.com --template notification --var project_name="My App"
51
100
  ```
52
101
 
53
- **Tiers:** `prototype` | `hobby` | `team`
54
-
55
- **Manifest format:**
56
- ```json
57
- {
58
- "name": "my-app",
59
- "files": {
60
- "index.html": "<html>...</html>",
61
- "style.css": "body { margin: 0; }"
62
- },
63
- "env": {
64
- "MY_VAR": "value"
65
- }
66
- }
102
+ ### Image generation
103
+
104
+ ```bash
105
+ run402 image generate "a serif logo" --aspect square --output logo.png
67
106
  ```
68
107
 
69
- ### `run402 projects`
108
+ $0.03 per image via x402.
70
109
 
71
- Manage your deployed projects.
110
+ ### On-chain (KMS contract wallets)
72
111
 
73
112
  ```bash
74
- run402 projects list # List all projects
75
- run402 projects sql <id> "SELECT * FROM users" # Run SQL query
76
- run402 projects rest <id> users "limit=10" # REST API query
77
- run402 projects usage <id> # Compute/storage usage
78
- run402 projects schema <id> # Database schema
79
- run402 projects renew <id> # Extend lease (pays via x402)
80
- run402 projects delete <id> # Delete project
113
+ run402 contracts provision-wallet --chain base-mainnet
114
+ run402 contracts call --wallet <id> --to 0x… --abi @abi.json --fn transfer --args '["0x…","1000000"]'
81
115
  ```
82
116
 
83
- ### `run402 image`
117
+ Private keys never leave AWS KMS. $0.04/day rental + $0.000005/call.
84
118
 
85
- Generate AI images via x402 micropayments.
119
+ ### Tier and billing
86
120
 
87
121
  ```bash
88
- run402 image generate "a startup mascot, pixel art"
89
- run402 image generate "futuristic city at night" --aspect landscape
90
- run402 image generate "portrait of a cat CEO" --aspect portrait --output cat.png
122
+ run402 tier set prototype # free on testnet
123
+ run402 tier set hobby # $5 / 30 days
124
+ run402 billing tier-checkout hobby --email me@example.com # Stripe alternative
91
125
  ```
92
126
 
93
- **Options:** `--aspect square|landscape|portrait` · `--output <file>`
127
+ ## State
128
+
129
+ Local state lives at:
130
+
131
+ - `~/.config/run402/projects.json` (`0600`) — project credentials (`anon_key`, `service_key`, `tier`, `lease_expires_at`)
132
+ - `~/.config/run402/allowance.json` (`0600`) — wallet for x402 signing
133
+
134
+ Override with `RUN402_CONFIG_DIR` or `RUN402_ALLOWANCE_PATH`. Override the API base with `RUN402_API_BASE`.
135
+
136
+ The CLI handles all x402 payment signing automatically — never ask the human for a private key or set up payment libraries by hand.
137
+
138
+ ## Active project (sticky default)
139
+
140
+ After `provision`, the new project becomes the active one. `run402 projects use <id>` switches it. Most commands that take `<id>` default to the active project when omitted.
94
141
 
95
142
  ## Help
96
143
 
@@ -98,18 +145,30 @@ Every command supports `--help` / `-h`:
98
145
 
99
146
  ```bash
100
147
  run402 --help
101
- run402 allowance --help
102
- run402 deploy --help
103
148
  run402 projects --help
104
- run402 image --help
149
+ run402 sites --help
150
+ run402 blob --help
151
+ run402 functions --help
105
152
  ```
106
153
 
107
- ## Notes
154
+ ## Full reference
155
+
156
+ The canonical, comprehensive CLI reference — every flag, every subcommand, edge cases, troubleshooting — lives at:
157
+
158
+ **<https://run402.com/llms-cli.txt>**
159
+
160
+ Same content also at [`cli/llms-cli.txt`](./llms-cli.txt) in the repo. Treat that file as authoritative; this README is a quick-orientation landing page.
161
+
162
+ ## Other interfaces
163
+
164
+ `run402` is one of five surfaces:
165
+
166
+ - [`@run402/sdk`](https://www.npmjs.com/package/@run402/sdk) — typed TypeScript client (isomorphic + Node entry)
167
+ - [`run402-mcp`](https://www.npmjs.com/package/run402-mcp) — MCP server (Claude Desktop, Cursor, Cline, Claude Code)
168
+ - [`@run402/functions`](https://www.npmjs.com/package/@run402/functions) — in-function helper imported inside deployed functions
169
+ - OpenClaw skill — script-based skill for OpenClaw agents
108
170
 
109
- - Agent allowance stored at `~/.run402/allowance.json`
110
- - Project credentials stored at `~/.run402/projects.json`
111
- - Network: Base Sepolia (testnet) for prototype tier (free). Base mainnet or Stripe for paid tiers (hobby/team).
112
- - Payments are handled automatically — no manual signing required
171
+ All five release in lockstep at the same version and share `@run402/sdk` as the kernel.
113
172
 
114
173
  ## License
115
174
 
package/lib/deploy-v2.mjs CHANGED
@@ -77,9 +77,36 @@ Output:
77
77
  stderr: one JSON event per line (suppressed with --quiet)
78
78
  `;
79
79
 
80
+ const LIST_HELP = `run402 deploy list — List recent deploy operations for a project
81
+
82
+ Usage:
83
+ run402 deploy list [--project <id>] [--limit <n>]
84
+
85
+ Options:
86
+ --project <id> Project ID to list operations for (default: active project)
87
+ --limit <n> Maximum number of operations to return
88
+
89
+ Output:
90
+ stdout: { "status": "ok", "operations": [...], "cursor": "..." | null }
91
+ `;
92
+
93
+ const EVENTS_HELP = `run402 deploy events — Fetch the recorded event stream for a deploy operation
94
+
95
+ Usage:
96
+ run402 deploy events <operation_id> [--project <id>]
97
+
98
+ Options:
99
+ --project <id> Project ID that owns the operation (default: active project)
100
+
101
+ Output:
102
+ stdout: { "status": "ok", "events": [...] }
103
+ `;
104
+
80
105
  export async function runDeployV2(sub, args) {
81
106
  if (sub === "apply") return await applyCmd(args);
82
107
  if (sub === "resume") return await resumeCmd(args);
108
+ if (sub === "list") return await listCmd(args);
109
+ if (sub === "events") return await eventsCmd(args);
83
110
  console.error(JSON.stringify({ status: "error", message: `Unknown deploy subcommand: ${sub}` }));
84
111
  process.exit(1);
85
112
  }
@@ -187,6 +214,50 @@ async function resumeCmd(args) {
187
214
  }
188
215
  }
189
216
 
217
+ async function listCmd(args) {
218
+ const opts = { project: null, limit: null };
219
+ for (let i = 0; i < args.length; i++) {
220
+ if (args[i] === "--help" || args[i] === "-h") { console.log(LIST_HELP); process.exit(0); }
221
+ if (args[i] === "--project" && args[i + 1]) { opts.project = args[++i]; continue; }
222
+ if (args[i] === "--limit" && args[i + 1]) { opts.limit = Number(args[++i]); continue; }
223
+ }
224
+
225
+ const project = resolveProjectId(opts.project);
226
+ allowanceAuthHeaders("/deploy/v2/operations");
227
+
228
+ try {
229
+ const sdkOpts = { project };
230
+ if (opts.limit !== null && Number.isFinite(opts.limit)) sdkOpts.limit = opts.limit;
231
+ const result = await getSdk().deploy.list(sdkOpts);
232
+ console.log(JSON.stringify({ status: "ok", ...result }, null, 2));
233
+ } catch (err) {
234
+ reportSdkError(err);
235
+ }
236
+ }
237
+
238
+ async function eventsCmd(args) {
239
+ const opts = { operationId: null, project: null };
240
+ for (let i = 0; i < args.length; i++) {
241
+ if (args[i] === "--help" || args[i] === "-h") { console.log(EVENTS_HELP); process.exit(0); }
242
+ if (args[i] === "--project" && args[i + 1]) { opts.project = args[++i]; continue; }
243
+ if (!args[i].startsWith("-") && !opts.operationId) opts.operationId = args[i];
244
+ }
245
+ if (!opts.operationId) {
246
+ console.error(JSON.stringify({ status: "error", message: "Usage: run402 deploy events <operation_id>" }));
247
+ process.exit(1);
248
+ }
249
+
250
+ const project = resolveProjectId(opts.project);
251
+ allowanceAuthHeaders("/deploy/v2/operations");
252
+
253
+ try {
254
+ const result = await getSdk().deploy.events(opts.operationId, { project });
255
+ console.log(JSON.stringify({ status: "ok", ...result }, null, 2));
256
+ } catch (err) {
257
+ reportSdkError(err);
258
+ }
259
+ }
260
+
190
261
  // ─── Manifest → ReleaseSpec ──────────────────────────────────────────────────
191
262
 
192
263
  function mapManifestToReleaseSpec(spec) {
package/lib/deploy.mjs CHANGED
@@ -93,17 +93,16 @@ Manifest format (JSON):
93
93
  "project_id": "prj_...",
94
94
  "migrations": "CREATE TABLE items (...)",
95
95
  "migrations_file": "setup.sql",
96
- "rls": {
97
- "template": "public_read_write_UNRESTRICTED",
98
- "tables": [{ "table": "items" }],
99
- "i_understand_this_is_unrestricted": true
100
- },
101
96
  "secrets": [{ "key": "OPENAI_API_KEY", "value": "sk-..." }],
102
97
  "functions": [{
103
98
  "name": "my-fn",
104
99
  "code": "export default async (req) => new Response('ok')"
105
100
  }],
106
101
  "files": [
102
+ {
103
+ "file": "manifest.json",
104
+ "data": "{\\"version\\":\\"1\\",\\"tables\\":[{\\"name\\":\\"items\\",\\"expose\\":true,\\"policy\\":\\"public_read_write_UNRESTRICTED\\",\\"i_understand_this_is_unrestricted\\":true}]}"
105
+ },
107
106
  { "file": "index.html", "data": "<html>...</html>" },
108
107
  { "file": "style.css", "path": "./dist/style.css" }
109
108
  ],
@@ -129,23 +128,34 @@ Manifest format (JSON):
129
128
  Paths are resolved relative to the manifest file's directory.
130
129
  Binary files (images, fonts, etc.) are auto-detected and base64-encoded.
131
130
 
132
- RLS templates (prefer user_owns_rows for anything user-scoped):
133
- user_owns_rows users see only their own rows (requires
134
- owner_column per table; uuid columns get
135
- index-friendly policies automatically)
136
- public_read_authenticated_write anyone reads; any authenticated user can
137
- INSERT/UPDATE/DELETE any row (not just
138
- their own). For collaborative content
139
- like shared boards or announcements.
140
- public_read_write_UNRESTRICTED ⚠ fully open anon_key can read AND
141
- write any row. Only for intentionally
142
- public tables (guestbooks, waitlists,
143
- feedback forms). REQUIRES the manifest's
144
- rls block to include
145
- "i_understand_this_is_unrestricted": true.
146
-
147
- ⚠️ Without RLS, tables are read-only via anon_key. If your app writes
148
- data from the browser, you almost certainly need an rls block.
131
+ Authorization (manifest.json file pattern):
132
+ Tables are dark by default anon/authenticated can't read them until a
133
+ manifest declares them with expose:true. Ship a "manifest.json" entry in
134
+ files[] (preferred — auth-as-SDLC) and the platform reads, validates,
135
+ applies, and strips it before the site deploys. Schema:
136
+ https://run402.com/schemas/manifest.v1.json
137
+
138
+ Per-table policies:
139
+ user_owns_rows users see only their own rows. Requires
140
+ "owner_column"; with
141
+ "force_owner_on_insert": true the gateway
142
+ sets it from auth.uid() automatically.
143
+ uuid columns get index-friendly policies.
144
+ public_read_authenticated_write anyone reads; any authenticated user can
145
+ INSERT/UPDATE/DELETE any row (not just
146
+ their own). For collaborative content
147
+ like shared boards or announcements.
148
+ public_read_write_UNRESTRICTED ⚠ fully open — anon_key can read AND
149
+ write any row. Only for intentionally
150
+ public tables (guestbooks, waitlists,
151
+ feedback forms). REQUIRES
152
+ "i_understand_this_is_unrestricted":
153
+ true on the table entry.
154
+ custom escape hatch. Provide "custom_sql" with
155
+ CREATE POLICY statements.
156
+
157
+ ⚠️ Without a manifest, tables are unreachable via anon_key. If your app
158
+ reads or writes data from the browser, you need a manifest.json entry.
149
159
 
150
160
  Examples:
151
161
  run402 deploy --manifest app.json
@@ -258,11 +268,15 @@ export async function run(args) {
258
268
  // Subcommand dispatch (v1.34+):
259
269
  // run402 deploy apply ... → unified deploy primitive (deploy.apply)
260
270
  // run402 deploy resume <op> → resume an activation_pending operation
271
+ // run402 deploy list → list recent deploy operations
272
+ // run402 deploy events <op> → fetch recorded event stream for an operation
261
273
  // run402 deploy --manifest … → legacy bundle deploy (still works)
262
274
  const sub = args[0];
263
275
  switch (sub) {
264
276
  case "apply":
265
- case "resume": {
277
+ case "resume":
278
+ case "list":
279
+ case "events": {
266
280
  const { runDeployV2 } = await import("./deploy-v2.mjs");
267
281
  await runDeployV2(sub, args.slice(1));
268
282
  return;
package/lib/projects.mjs CHANGED
@@ -19,8 +19,7 @@ Subcommands:
19
19
  rest [id] <table> [params] Query a table via the REST API (PostgREST)
20
20
  usage [id] Show compute/storage usage for a project
21
21
  schema [id] Inspect the database schema
22
- rls [id] <template> <tables_json> ⚠ DEPRECATED (sunset 2026-05-23) - use 'apply-expose' instead
23
- apply-expose [id] <manifest_json> Apply a declarative authorization manifest (supersedes 'rls')
22
+ apply-expose [id] <manifest_json> Apply a declarative authorization manifest
24
23
  apply-expose [id] --file <path> Apply a manifest from a JSON file
25
24
  get-expose [id] Get the current authorization manifest
26
25
  delete [id] Immediately and irreversibly delete a project (cascade purge) and remove from local state
@@ -41,7 +40,6 @@ Examples:
41
40
  run402 projects rest abc123 users "limit=10&select=id,name"
42
41
  run402 projects usage abc123
43
42
  run402 projects schema abc123
44
- run402 projects rls abc123 public_read_authenticated_write '[{"table":"posts"}]'
45
43
  run402 projects apply-expose abc123 --file manifest.json
46
44
  run402 projects get-expose abc123
47
45
  run402 projects keys abc123
@@ -54,19 +52,19 @@ Notes:
54
52
  any first positional that doesn't is treated as the next argument instead.
55
53
  - 'rest' uses PostgREST query syntax (table name + optional query string)
56
54
  - 'provision' requires a funded allowance — payment is automatic via x402
57
- - RLS templates (prefer user_owns_rows for user-scoped data):
58
- user_owns_rows users access only their own rows (requires owner_column)
59
- public_read_authenticated_write anyone reads; any authenticated user writes any row
60
- public_read_write_UNRESTRICTED fully open (anon_key writes); use 'run402 deploy' with a manifest
61
- that includes "i_understand_this_is_unrestricted": true
62
- - 'rls' is deprecated (sunset 2026-05-23) — migrate to 'apply-expose'.
63
- The expose manifest declares the full authorization surface (tables, views,
64
- RPCs) in one convergent call. Tables not listed with expose:true are dark
65
- by default. Sample manifest:
55
+ - 'apply-expose' declares the full authorization surface (tables, views, RPCs)
56
+ in one convergent call. Tables not listed with expose:true are dark by
57
+ default. Schema: https://run402.com/schemas/manifest.v1.json. Sample:
66
58
  {"version":"1",
67
59
  "tables":[{"name":"posts","expose":true,"policy":"user_owns_rows","owner_column":"user_id","force_owner_on_insert":true}],
68
60
  "views":[],
69
61
  "rpcs":[]}
62
+ Per-table policies: user_owns_rows (requires owner_column;
63
+ force_owner_on_insert sets it from auth.uid() automatically),
64
+ public_read_authenticated_write (anyone reads, any auth'd user writes any
65
+ row), public_read_write_UNRESTRICTED (fully open; requires
66
+ "i_understand_this_is_unrestricted": true on the entry), custom (provide
67
+ custom_sql with CREATE POLICY statements).
70
68
  `;
71
69
 
72
70
  const SUB_HELP = {
@@ -28,11 +28,18 @@ export function reportSdkError(err) {
28
28
  payload.http = err.status;
29
29
  if (err.body && typeof err.body === "object") {
30
30
  Object.assign(payload, err.body);
31
+ preferMessage(payload);
31
32
  } else if (typeof err.body === "string") {
32
33
  payload.body_preview = err.body.slice(0, 500);
33
34
  }
35
+ mergeStructuredErrorFields(payload, err);
36
+ } else if (err?.body && typeof err.body === "object") {
37
+ Object.assign(payload, err.body);
38
+ preferMessage(payload);
39
+ mergeStructuredErrorFields(payload, err);
34
40
  } else {
35
41
  payload.message = err?.message || String(err);
42
+ mergeStructuredErrorFields(payload, err);
36
43
  }
37
44
 
38
45
  // Keep `status: "error"` as the outer envelope even if the response body
@@ -43,3 +50,36 @@ export function reportSdkError(err) {
43
50
  console.error(JSON.stringify(payload));
44
51
  process.exit(1);
45
52
  }
53
+
54
+ function preferMessage(payload) {
55
+ if (typeof payload.message === "string" && payload.message.length > 0) return;
56
+ if (typeof payload.error === "string" && payload.error.length > 0) {
57
+ payload.message = payload.error;
58
+ }
59
+ }
60
+
61
+ function mergeStructuredErrorFields(payload, err) {
62
+ if (!err || typeof err !== "object") return;
63
+ setIfAbsent(payload, "message", err.message);
64
+ setIfAbsent(payload, "code", err.code);
65
+ setIfAbsent(payload, "category", err.category);
66
+ setIfAbsent(payload, "retryable", err.retryable);
67
+ setIfAbsent(payload, "safe_to_retry", err.safeToRetry);
68
+ setIfAbsent(payload, "mutation_state", err.mutationState);
69
+ setIfAbsent(payload, "trace_id", err.traceId);
70
+ setIfAbsent(payload, "details", err.details);
71
+ setIfAbsent(payload, "next_actions", err.nextActions);
72
+ setIfAbsent(payload, "phase", err.phase);
73
+ setIfAbsent(payload, "resource", err.resource);
74
+ setIfAbsent(payload, "operation_id", err.operationId);
75
+ setIfAbsent(payload, "plan_id", err.planId);
76
+ setIfAbsent(payload, "fix", err.fix);
77
+ setIfAbsent(payload, "logs", err.logs);
78
+ setIfAbsent(payload, "rolled_back", err.rolledBack);
79
+ }
80
+
81
+ function setIfAbsent(payload, key, value) {
82
+ if (value === undefined || value === null) return;
83
+ if (payload[key] !== undefined) return;
84
+ payload[key] = value;
85
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "run402",
3
- "version": "1.50.1",
3
+ "version": "1.51.1",
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": {
@@ -10,6 +10,22 @@ export declare abstract class Run402Error extends Error {
10
10
  readonly body: unknown;
11
11
  /** Short verb phrase identifying the attempted operation (e.g. "provisioning project"). */
12
12
  readonly context: string;
13
+ /** Canonical machine-readable Run402 error code, when the gateway provided one. */
14
+ readonly code?: string;
15
+ /** High-level error category, e.g. lifecycle, deploy, auth. */
16
+ readonly category?: string;
17
+ /** Whether the same request may succeed later. */
18
+ readonly retryable?: boolean;
19
+ /** Whether repeating the same request should avoid duplicating/corrupting a mutation. */
20
+ readonly safeToRetry?: boolean;
21
+ /** Gateway-known mutation progress for failed mutating operations. */
22
+ readonly mutationState?: string;
23
+ /** Trace id suitable for support/debugging. */
24
+ readonly traceId?: string;
25
+ /** Canonical structured context. Preserved by reference from the response body. */
26
+ readonly details?: unknown;
27
+ /** Advisory next actions from the gateway. Rendering them must not execute them. */
28
+ readonly nextActions?: unknown[];
13
29
  constructor(message: string, status: number | null, body: unknown, context: string);
14
30
  }
15
31
  /** HTTP 402 — the gateway requires payment (lease expired, insufficient balance, or x402 quote). */
@@ -46,7 +62,7 @@ export declare class LocalError extends Run402Error {
46
62
  * for a fix, or escalate. Unknown codes from a newer gateway pass through
47
63
  * verbatim — callers should treat unrecognized values as opaque.
48
64
  */
49
- export type Run402DeployErrorCode = "MIGRATION_FAILED" | "MIGRATION_CHECKSUM_MISMATCH" | "MIGRATION_SQL_NOT_FOUND" | "BASE_RELEASE_CONFLICT" | "PAYMENT_REQUIRED" | "SUBDOMAIN_MULTI_NOT_SUPPORTED" | "SCHEMA_SETTLE_TIMEOUT" | "ACTIVATION_FAILED" | "STORAGE_UNAVAILABLE" | "SITE_STAGE_FAILED" | "FUNCTION_BUILD_FAILED" | "CONTENT_UPLOAD_FAILED" | "INVALID_SPEC" | "OPERATION_NOT_FOUND" | "PLAN_NOT_FOUND" | "NOT_RESUMABLE" | "INVALID_STATE" | "RESUME_FAILED" | "INTERNAL_ERROR" | "NETWORK_ERROR" | "PROJECT_NOT_FOUND" | (string & {});
65
+ export type Run402DeployErrorCode = "MIGRATION_FAILED" | "MIGRATION_CHECKSUM_MISMATCH" | "MIGRATION_SQL_NOT_FOUND" | "BASE_RELEASE_CONFLICT" | "PAYMENT_REQUIRED" | "SUBDOMAIN_MULTI_NOT_SUPPORTED" | "SCHEMA_SETTLE_TIMEOUT" | "ACTIVATION_FAILED" | "STORAGE_UNAVAILABLE" | "SITE_STAGE_FAILED" | "FUNCTION_BUILD_FAILED" | "CONTENT_UPLOAD_FAILED" | "INVALID_SPEC" | "OPERATION_NOT_FOUND" | "PLAN_NOT_FOUND" | "MIGRATE_GATE_ACTIVE" | "NOT_RESUMABLE" | "INVALID_STATE" | "RESUME_FAILED" | "INTERNAL_ERROR" | "NETWORK_ERROR" | "PROJECT_NOT_FOUND" | (string & {});
50
66
  export interface Run402DeployErrorFix {
51
67
  action: string;
52
68
  path?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -10,14 +10,53 @@ export class Run402Error extends Error {
10
10
  body;
11
11
  /** Short verb phrase identifying the attempted operation (e.g. "provisioning project"). */
12
12
  context;
13
+ /** Canonical machine-readable Run402 error code, when the gateway provided one. */
14
+ code;
15
+ /** High-level error category, e.g. lifecycle, deploy, auth. */
16
+ category;
17
+ /** Whether the same request may succeed later. */
18
+ retryable;
19
+ /** Whether repeating the same request should avoid duplicating/corrupting a mutation. */
20
+ safeToRetry;
21
+ /** Gateway-known mutation progress for failed mutating operations. */
22
+ mutationState;
23
+ /** Trace id suitable for support/debugging. */
24
+ traceId;
25
+ /** Canonical structured context. Preserved by reference from the response body. */
26
+ details;
27
+ /** Advisory next actions from the gateway. Rendering them must not execute them. */
28
+ nextActions;
13
29
  constructor(message, status, body, context) {
14
30
  super(message);
15
31
  this.name = this.constructor.name;
16
32
  this.status = status;
17
33
  this.body = body;
18
34
  this.context = context;
35
+ const envelope = canonicalEnvelope(body);
36
+ if (typeof envelope?.code === "string")
37
+ this.code = envelope.code;
38
+ if (typeof envelope?.category === "string")
39
+ this.category = envelope.category;
40
+ if (typeof envelope?.retryable === "boolean")
41
+ this.retryable = envelope.retryable;
42
+ if (typeof envelope?.safe_to_retry === "boolean")
43
+ this.safeToRetry = envelope.safe_to_retry;
44
+ if (typeof envelope?.mutation_state === "string")
45
+ this.mutationState = envelope.mutation_state;
46
+ if (typeof envelope?.trace_id === "string")
47
+ this.traceId = envelope.trace_id;
48
+ if (envelope && Object.prototype.hasOwnProperty.call(envelope, "details")) {
49
+ this.details = envelope.details;
50
+ }
51
+ if (Array.isArray(envelope?.next_actions))
52
+ this.nextActions = envelope.next_actions;
19
53
  }
20
54
  }
55
+ function canonicalEnvelope(body) {
56
+ return body && typeof body === "object" && !Array.isArray(body)
57
+ ? body
58
+ : null;
59
+ }
21
60
  /** HTTP 402 — the gateway requires payment (lease expired, insufficient balance, or x402 quote). */
22
61
  export class PaymentRequired extends Run402Error {
23
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wDAAwD;AACxD,MAAM,WAAW,MAAM;IACrB,mIAAmI;IACnI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACpD,gIAAgI;IAChI,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACzC;AAED,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,CAAC,CAAC,CA0EZ;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQxD"}
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wDAAwD;AACxD,MAAM,WAAW,MAAM;IACrB,mIAAmI;IACnI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACpD,gIAAgI;IAChI,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACzC;AAED,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,CAAC,CAAC,CA0EZ;AAWD,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQxD"}