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 +117 -58
- package/lib/deploy-v2.mjs +71 -0
- package/lib/deploy.mjs +37 -23
- package/lib/projects.mjs +10 -12
- package/lib/sdk-errors.mjs +40 -0
- package/package.json +1 -1
- package/sdk/dist/errors.d.ts +17 -1
- package/sdk/dist/errors.d.ts.map +1 -1
- package/sdk/dist/errors.js +39 -0
- package/sdk/dist/errors.js.map +1 -1
- package/sdk/dist/kernel.d.ts.map +1 -1
- package/sdk/dist/kernel.js +13 -3
- package/sdk/dist/kernel.js.map +1 -1
- package/sdk/dist/namespaces/allowance.d.ts +3 -0
- package/sdk/dist/namespaces/allowance.d.ts.map +1 -1
- package/sdk/dist/namespaces/allowance.js +10 -1
- package/sdk/dist/namespaces/allowance.js.map +1 -1
- package/sdk/dist/namespaces/apps.d.ts +1 -1
- package/sdk/dist/namespaces/apps.d.ts.map +1 -1
- package/sdk/dist/namespaces/apps.js +1 -11
- package/sdk/dist/namespaces/apps.js.map +1 -1
- package/sdk/dist/namespaces/deploy.d.ts +23 -1
- package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
- package/sdk/dist/namespaces/deploy.js +132 -25
- package/sdk/dist/namespaces/deploy.js.map +1 -1
- package/sdk/dist/namespaces/deploy.types.d.ts +20 -0
- package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/projects.types.d.ts +6 -1
- package/sdk/dist/namespaces/projects.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/subdomains.d.ts.map +1 -1
- package/sdk/dist/namespaces/subdomains.js +4 -1
- package/sdk/dist/namespaces/subdomains.js.map +1 -1
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,
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
21
|
-
run402
|
|
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
|
-
|
|
24
|
-
run402 allowance fund
|
|
55
|
+
### Static sites
|
|
25
56
|
|
|
26
|
-
|
|
27
|
-
run402 deploy
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
75
|
+
### Functions
|
|
35
76
|
|
|
36
77
|
```bash
|
|
37
|
-
run402
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
49
|
-
run402
|
|
50
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
108
|
+
$0.03 per image via x402.
|
|
70
109
|
|
|
71
|
-
|
|
110
|
+
### On-chain (KMS contract wallets)
|
|
72
111
|
|
|
73
112
|
```bash
|
|
74
|
-
run402
|
|
75
|
-
run402
|
|
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
|
-
|
|
117
|
+
Private keys never leave AWS KMS. $0.04/day rental + $0.000005/call.
|
|
84
118
|
|
|
85
|
-
|
|
119
|
+
### Tier and billing
|
|
86
120
|
|
|
87
121
|
```bash
|
|
88
|
-
run402
|
|
89
|
-
run402
|
|
90
|
-
run402
|
|
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
|
-
|
|
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
|
|
149
|
+
run402 sites --help
|
|
150
|
+
run402 blob --help
|
|
151
|
+
run402 functions --help
|
|
105
152
|
```
|
|
106
153
|
|
|
107
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
58
|
-
|
|
59
|
-
|
|
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 = {
|
package/lib/sdk-errors.mjs
CHANGED
|
@@ -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
package/sdk/dist/errors.d.ts
CHANGED
|
@@ -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;
|
package/sdk/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8BAAsB,WAAY,SAAQ,KAAK;IAC7C,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/errors.js
CHANGED
|
@@ -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
|
}
|
package/sdk/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,OAAgB,WAAY,SAAQ,KAAK;IAC7C,iFAAiF;IACxE,MAAM,CAAgB;IAC/B,+DAA+D;IACtD,IAAI,CAAU;IACvB,2FAA2F;IAClF,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/kernel.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|