run402-mcp 4.98.0 → 4.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +3 -1
  2. package/dist/docs/run.md +4 -3
  3. package/dist/errors.d.ts +3 -9
  4. package/dist/errors.d.ts.map +1 -1
  5. package/dist/errors.js +55 -8
  6. package/dist/errors.js.map +1 -1
  7. package/dist/index.js +44 -9
  8. package/dist/index.js.map +1 -1
  9. package/dist/sandbox-proxy.d.ts +13 -0
  10. package/dist/sandbox-proxy.d.ts.map +1 -1
  11. package/dist/sandbox-proxy.js +81 -2
  12. package/dist/sandbox-proxy.js.map +1 -1
  13. package/dist/sandbox.js +24 -1
  14. package/dist/sandbox.js.map +1 -1
  15. package/dist/structured.d.ts +6316 -0
  16. package/dist/structured.d.ts.map +1 -0
  17. package/dist/structured.js +243 -0
  18. package/dist/structured.js.map +1 -0
  19. package/dist/tools/deploy.d.ts +2 -7
  20. package/dist/tools/deploy.d.ts.map +1 -1
  21. package/dist/tools/deploy.js +17 -6
  22. package/dist/tools/deploy.js.map +1 -1
  23. package/dist/tools/docs.d.ts +1 -8
  24. package/dist/tools/docs.d.ts.map +1 -1
  25. package/dist/tools/docs.js +10 -3
  26. package/dist/tools/docs.js.map +1 -1
  27. package/dist/tools/doctor.d.ts +1 -8
  28. package/dist/tools/doctor.d.ts.map +1 -1
  29. package/dist/tools/doctor.js +3 -1
  30. package/dist/tools/doctor.js.map +1 -1
  31. package/dist/tools/expand-result.d.ts +1 -8
  32. package/dist/tools/expand-result.d.ts.map +1 -1
  33. package/dist/tools/expand-result.js +24 -16
  34. package/dist/tools/expand-result.js.map +1 -1
  35. package/dist/tools/run.d.ts +20 -15
  36. package/dist/tools/run.d.ts.map +1 -1
  37. package/dist/tools/run.js +52 -19
  38. package/dist/tools/run.js.map +1 -1
  39. package/dist/tools/status.d.ts +1 -8
  40. package/dist/tools/status.d.ts.map +1 -1
  41. package/dist/tools/status.js +4 -2
  42. package/dist/tools/status.js.map +1 -1
  43. package/dist/tools/up.d.ts +2 -9
  44. package/dist/tools/up.d.ts.map +1 -1
  45. package/dist/tools/up.js +8 -9
  46. package/dist/tools/up.js.map +1 -1
  47. package/dist/tools/whoami.d.ts +1 -8
  48. package/dist/tools/whoami.d.ts.map +1 -1
  49. package/dist/tools/whoami.js +4 -4
  50. package/dist/tools/whoami.js.map +1 -1
  51. package/dist/value-paging.d.ts +35 -0
  52. package/dist/value-paging.d.ts.map +1 -0
  53. package/dist/value-paging.js +66 -0
  54. package/dist/value-paging.js.map +1 -0
  55. package/dist/wallet-auth.d.ts +2 -7
  56. package/dist/wallet-auth.d.ts.map +1 -1
  57. package/dist/wallet-auth.js +9 -10
  58. package/dist/wallet-auth.js.map +1 -1
  59. package/package.json +1 -1
  60. package/sdk/dist/namespaces/projects.d.ts +4 -1
  61. package/sdk/dist/namespaces/projects.d.ts.map +1 -1
  62. package/sdk/dist/namespaces/projects.js +5 -2
  63. package/sdk/dist/namespaces/projects.js.map +1 -1
package/README.md CHANGED
@@ -622,7 +622,9 @@ A snippet is the body of an async function; the value of its last expression is
622
622
  { "code": "const { projects } = await r.projects.list();\nprojects.filter((p) => !p.site_url).map((p) => p.id)" }
623
623
  ```
624
624
 
625
- The result is `{ status, value, value_ref, shown, total, logs, logs_ref, calls, duration_ms, wallet, error? }`: a large value is stored whole and shown as a 200-line window (`expand_result` pages the rest), `calls[]` lists every SDK call with its outcome, and a timeout (60 s by default, 300 s at most) still lists the calls that completed. An SDK error passes through with its own `code` and `next_actions`.
625
+ The result is `{ status, value, value_ref, shown, total, logs, logs_ref, calls, duration_ms, wallet, error? }`: a large value is stored whole by item (an array's elements, a result's `rows`) and its leading whole items arrive in `value_window`, including in `structuredContent` (`expand_result` pages the rest by item), `calls[]` lists every SDK call with its outcome, and a timeout (60 s by default, 300 s at most) still lists the calls that completed. An SDK error passes through with its own `code` and `next_actions`.
626
+
627
+ **Structured results.** Every tool also returns its result as `structuredContent` under a declared `outputSchema`, so a host reads fields instead of parsing text. The object has `status: "ok" | "error"`; the fixed tools put the SDK object under `result`, and every error carries `error.code`, `error.message`, and `error.next_actions`. The fenced JSON in the text is the same object.
626
628
 
627
629
  **One-time secrets stay in the CLI.** An operation that returns or consumes a one-time secret (minting or rotating a grant key, a Handoff or Invite Key, a Room Invite Key, provisioning a project or rotating its credentials, a project token, creating, importing, or exporting a wallet, the Lightning pairing) refuses inside `run` with `SECRET_REQUIRES_CLI` and one next action, `{ "type": "run_cli_command", "command": "run402 …" }`, naming the exact command to hand the person. The refusal is in the SDK method itself, before any request, so nothing secret reaches a result.
628
630
 
package/dist/docs/run.md CHANGED
@@ -27,8 +27,8 @@ The sandbox is QuickJS compiled to WebAssembly. It has no filesystem, no `proces
27
27
  "status": "ok",
28
28
  "value": ["prj_a", "prj_b"],
29
29
  "value_ref": "res_…",
30
- "shown": 4,
31
- "total": 4,
30
+ "shown": 2,
31
+ "total": 2,
32
32
  "logs": [{ "level": "log", "line": "…" }],
33
33
  "logs_ref": "res_…",
34
34
  "calls": [{ "path": "projects.list", "duration_ms": 212, "ok": true }],
@@ -37,7 +37,7 @@ The sandbox is QuickJS compiled to WebAssembly. It has no filesystem, no `proces
37
37
  }
38
38
  ```
39
39
 
40
- - `value` is the result. It is stored whole, as pretty-printed JSON lines, under `value_ref`; `shown` and `total` count those lines. Up to 200 lines are inline. A longer value is shown as a window above the envelope, `value` is left out of the envelope, and `expand_result` with `value_ref` pages the rest without running the snippet again.
40
+ - `value` is the result, inline whole when its pretty-printed JSON fits in 200 lines. It is stored under `value_ref` by item, and `shown` and `total` count items: an array's elements, or for an object the rows of its largest top-level array (a SQL result's `rows`), or an object's entries as `{ key, value }`, or a string's lines. A larger value is left out as `value` and arrives as `value_window`: `{ path, items, rest? }`, the leading whole items that fit the same budget, where they live (`$`, `$.rows`, `$entries`, `$lines`), and for `$.rows` the object's other fields whole. `expand_result` with `value_ref` and `offset: shown` pages the rest by item, never by text line, without running the snippet again.
41
41
  - `undefined` is reported as `value: null` with `value_kind: "undefined"`, so silence never looks like null data.
42
42
  - `logs` are the captured `console.log|info|warn|error` lines, 50 inline and the rest under `logs_ref` (500 lines of 2 KB are kept).
43
43
  - `calls` lists every SDK chain the run replayed: its dotted path, `duration_ms`, and `ok` or the error `code`. It is the audit trail of what the snippet did.
@@ -55,6 +55,7 @@ On failure `status` is `"error"` and `error` is `{ code, message, next_actions }
55
55
  | `RUN_VALUE_NOT_SERIALIZABLE` | the result is not JSON (a handle, a function, a BigInt, a cycle) | `edit_request` |
56
56
  | `RUN_VALUE_TOO_LARGE` | the result is over 4 MB | `edit_request`: select less in the snippet |
57
57
  | `RUN_ARGUMENT_NOT_CLONEABLE` | an argument to `r` is not data | `edit_request` |
58
+ | `RUN_UNKNOWN_MEMBER` | the snippet reached an `r.` path the SDK does not have | `edit_request` with `path` and `did_you_mean` (the closest public members) |
58
59
  | `RUN_EXCEPTION` | the snippet threw | `edit_request` |
59
60
  | `RUN_BUSY` | four runs are already in flight on this server | `retry` |
60
61
  | `SECRET_REQUIRES_CLI` | an SDK method refused because it returns or consumes a one-time secret | `run_cli_command` with the exact `command` |
package/dist/errors.d.ts CHANGED
@@ -1,13 +1,7 @@
1
1
  /** Shared error formatting for MCP tool handlers. */
2
2
  import { ProjectCredentialNotFound as SdkProjectCredentialNotFound } from "../sdk/dist/index.js";
3
- /** Standard return shape for all MCP tool handlers. */
4
- export interface ToolResult {
5
- content: Array<{
6
- type: "text";
7
- text: string;
8
- }>;
9
- isError?: boolean;
10
- }
3
+ import { type ToolError, type ToolResult } from "./structured.js";
4
+ export type { ToolResult } from "./structured.js";
11
5
  /**
12
6
  * Format an API error response into an agent-friendly MCP tool result.
13
7
  *
@@ -25,7 +19,7 @@ export interface ToolResult {
25
19
  export declare function formatApiError(res: {
26
20
  status: number;
27
21
  body: unknown;
28
- }, context: string): ToolResult;
22
+ }, context: string, error?: ToolError): ToolResult;
29
23
  export declare function formatCanonicalErrorContext(source: unknown, opts?: {
30
24
  includeDetails?: boolean;
31
25
  }): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAGL,yBAAyB,IAAI,4BAA4B,EAE1D,MAAM,sBAAsB,CAAC;AAE9B,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,EACtC,OAAO,EAAE,MAAM,GACd,UAAU,CA6GZ;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,MAAM,EAAE,CA+BV;AAiLD;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAY7D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,4BAA4B,GAAG,UAAU,CAWvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAwCrE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAGL,yBAAyB,IAAI,4BAA4B,EAE1D,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEjF,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,EACtC,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,SAAS,GAChB,UAAU,CAiHZ;AAyBD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,MAAM,EAAE,CA+BV;AAiLD;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAoB7D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,4BAA4B,GAAG,UAAU,CAYvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CA6CrE"}
package/dist/errors.js CHANGED
@@ -1,5 +1,6 @@
1
1
  /** Shared error formatting for MCP tool handlers. */
2
2
  import { Run402Error, NetworkError, ProjectCredentialNotFound as SdkProjectCredentialNotFound, ProjectNotFound as SdkProjectNotFound, } from "../sdk/dist/index.js";
3
+ import { toolErrorFrom } from "./structured.js";
3
4
  /**
4
5
  * Format an API error response into an agent-friendly MCP tool result.
5
6
  *
@@ -14,7 +15,7 @@ import { Run402Error, NetworkError, ProjectCredentialNotFound as SdkProjectCrede
14
15
  * @param res A response-like object with `status` and `body`.
15
16
  * @param context Short verb phrase: "running SQL", "deploying function", etc.
16
17
  */
17
- export function formatApiError(res, context) {
18
+ export function formatApiError(res, context, error) {
18
19
  const body = res.body && typeof res.body === "object"
19
20
  ? res.body
20
21
  : null;
@@ -106,7 +107,39 @@ export function formatApiError(res, context) {
106
107
  else if ((res.status === 402 || res.status === 403) && inGrace) {
107
108
  lines.push(`\nNext step: Project is in the soft-delete grace window — control-plane mutations are blocked. Renew or upgrade with a \`run\` snippet \`await r.tier.set("<tier>")\` (or \`run402 tier set <tier>\`) to reactivate the project in one transaction.`);
108
109
  }
109
- return { content: [{ type: "text", text: lines.join("\n") }], isError: true };
110
+ return {
111
+ content: [{ type: "text", text: lines.join("\n") }],
112
+ structuredContent: { status: "error", error: error ?? toolErrorFromBody(res, primary) },
113
+ isError: true,
114
+ };
115
+ }
116
+ /** The error object for a bare `{ status, body }` response that did not arrive as a `Run402Error`. */
117
+ function toolErrorFromBody(res, message) {
118
+ const body = res.body && typeof res.body === "object" && !Array.isArray(res.body) ? res.body : null;
119
+ const out = {
120
+ code: stringField(body, "code") ?? `HTTP_${res.status}`,
121
+ message,
122
+ next_actions: Array.isArray(body?.next_actions)
123
+ ? body.next_actions.filter((a) => Boolean(a) && typeof a === "object" && !Array.isArray(a))
124
+ : [],
125
+ http_status: res.status,
126
+ };
127
+ const category = stringField(body, "category");
128
+ if (category)
129
+ out.category = category;
130
+ if (typeof body?.retryable === "boolean")
131
+ out.retryable = body.retryable;
132
+ if (typeof body?.safe_to_retry === "boolean")
133
+ out.safe_to_retry = body.safe_to_retry;
134
+ const mutation = stringField(body, "mutation_state");
135
+ if (mutation)
136
+ out.mutation_state = mutation;
137
+ const trace = stringField(body, "trace_id");
138
+ if (trace)
139
+ out.trace_id = trace;
140
+ if (body?.details !== undefined && body.details !== null)
141
+ out.details = body.details;
142
+ return out;
110
143
  }
111
144
  export function formatCanonicalErrorContext(source, opts = {}) {
112
145
  const lines = [];
@@ -180,10 +213,10 @@ function addCodeGuidance(lines, code, body) {
180
213
  lines.push(`\nNext step: This operation is not permitted. Some SQL — CREATE ROLE, CREATE SCHEMA, CREATE EXTENSION, GRANT — needs cluster privileges that run402 projects don't grant; rework it within your project's schema. Otherwise verify the key is authorized for this action.`);
181
214
  return true;
182
215
  case "ADMIN_REQUIRED":
183
- lines.push(`\nNext step: Use the admin path for this operation — the admin REST endpoint (\`/admin/v1/rest/*\` with the service key) or \`run_sql\` for SQL.`);
216
+ lines.push(`\nNext step: Use the admin path for this operation — the admin REST endpoint (\`/admin/v1/rest/*\` with the service key) or a \`run\` snippet \`await r.project(id).sql(query)\` for SQL.`);
184
217
  return true;
185
218
  case "LAST_OWNER":
186
- lines.push(`\nNext step: An org must keep at least one active \`owner\`. This change would remove or demote the last one. Promote another member to \`owner\` first (\`set_org_member_role\`), then retry.`);
219
+ lines.push(`\nNext step: An org must keep at least one active \`owner\`. This change would remove or demote the last one. Promote another member to \`owner\` first (\`run402 orgs members role --principal <principal_id> --role owner\`), then retry.`);
187
220
  return true;
188
221
  case "PAYMENT_REQUIRED":
189
222
  case "INSUFFICIENT_FUNDS":
@@ -232,10 +265,10 @@ function addCodeGuidance(lines, code, body) {
232
265
  lines.push(`\nNext step: Re-link the GitHub Actions binding with covering \`--route-scope\` patterns, or run the route-changing deploy locally with wallet-backed authority.`);
233
266
  return true;
234
267
  case "PROJECT_HAS_PENDING_TRANSFER":
235
- lines.push(`\nNext step: The project has a pending transfer; owner-side mutations are blocked until it is accepted, cancelled, or expires (72h). Use \`cancel_project_transfer\` to cancel it or \`preview_project_transfer\` to view it. The transfer id is in \`details.transfer_id\`.`);
268
+ lines.push(`\nNext step: The project has a pending transfer; owner-side mutations are blocked until it is accepted, cancelled, or expires (72h). View it with \`run402 transfer preview <transfer_id>\` or cancel it with \`run402 transfer cancel <transfer_id>\` (from MCP, a \`run\` snippet over \`r.admin.transfers\`). The transfer id is in \`details.transfer_id\`.`);
236
269
  return true;
237
270
  case "CANNOT_REBUILD_UNLOCKED_DEPS":
238
- lines.push(`\nNext step: This function was deployed before dependency locking and can't be rebuilt deterministically. Redeploy it from source with \`deploy_function\` to refresh its runtime.`);
271
+ lines.push(`\nNext step: This function was deployed before dependency locking and can't be rebuilt deterministically. Redeploy it from source with \`deploy\` (its \`functions\` slice) to refresh its runtime.`);
239
272
  return true;
240
273
  default:
241
274
  return false;
@@ -313,6 +346,14 @@ export function projectNotFound(projectId) {
313
346
  `Create a project first with \`up\` (or \`run402 projects provision\`).`,
314
347
  },
315
348
  ],
349
+ structuredContent: {
350
+ status: "error",
351
+ error: {
352
+ code: "PROJECT_NOT_FOUND",
353
+ message: `Project ${projectId} not found in key store.`,
354
+ next_actions: [{ type: "create_project", why: "Create a project first with `up` (or `run402 projects provision`)." }],
355
+ },
356
+ },
316
357
  isError: true,
317
358
  };
318
359
  }
@@ -328,6 +369,7 @@ export function projectCredentialNotFound(err) {
328
369
  lines.push(...formatCanonicalErrorContext(err, { includeDetails: true }));
329
370
  return {
330
371
  content: [{ type: "text", text: lines.join("\n") }],
372
+ structuredContent: { status: "error", error: toolErrorFrom(err) },
331
373
  isError: true,
332
374
  };
333
375
  }
@@ -350,20 +392,23 @@ export function mapSdkError(err, context) {
350
392
  if (err instanceof SdkProjectNotFound) {
351
393
  return projectNotFound(err.projectId);
352
394
  }
395
+ const error = toolErrorFrom(err, context);
396
+ const structuredContent = { status: "error", error };
353
397
  if (err instanceof Run402Error) {
354
398
  if (err.code === "REST_PERMISSION_DENIED") {
355
- return { isError: true, content: [{ type: "text", text: [
399
+ return { isError: true, structuredContent, content: [{ type: "text", text: [
356
400
  `Error ${context}: ${err.message} (HTTP ${err.status})`,
357
401
  ...formatCanonicalErrorContext({ code: err.code, details: err.details, retryable: err.retryable }, { includeDetails: true }),
358
402
  "Upstream body:", JSON.stringify(err.body),
359
403
  ].join("\n") }] };
360
404
  }
361
405
  if (err.status !== null) {
362
- return formatApiError({ status: err.status, body: err.body }, context);
406
+ return formatApiError({ status: err.status, body: err.body }, context, error);
363
407
  }
364
408
  if (err instanceof NetworkError) {
365
409
  return {
366
410
  content: [{ type: "text", text: `Error ${context}: ${err.message}` }],
411
+ structuredContent,
367
412
  isError: true,
368
413
  };
369
414
  }
@@ -371,6 +416,7 @@ export function mapSdkError(err, context) {
371
416
  lines.push(...formatCanonicalErrorContext(err, { includeDetails: true }));
372
417
  return {
373
418
  content: [{ type: "text", text: lines.join("\n") }],
419
+ structuredContent,
374
420
  isError: true,
375
421
  };
376
422
  }
@@ -381,6 +427,7 @@ export function mapSdkError(err, context) {
381
427
  text: `Error ${context}: ${err?.message ?? String(err)}`,
382
428
  },
383
429
  ],
430
+ structuredContent,
384
431
  isError: true,
385
432
  };
386
433
  }
@@ -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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"}
package/dist/index.js CHANGED
@@ -7,7 +7,9 @@
7
7
  * read; `docs` serves the SDK reference that ships in this package; `run`
8
8
  * executes a TypeScript snippet against the SDK in a sandbox, which is how
9
9
  * every other operation is reached; `expand_result` pages a stored result.
10
- * The set is pinned by `MCP_TOOLS` in sync.test.ts.
10
+ * The set is pinned by `MCP_TOOLS` in sync.test.ts. Every tool declares an
11
+ * `outputSchema` and returns `structuredContent` beside its text block
12
+ * (`src/structured.ts`).
11
13
  */
12
14
  import { readFileSync } from "node:fs";
13
15
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -21,6 +23,7 @@ import { doctorSchema, handleDoctor } from "./tools/doctor.js";
21
23
  import { docsSchema, handleDocs } from "./tools/docs.js";
22
24
  import { runSchema, handleRun } from "./tools/run.js";
23
25
  import { expandResultSchema, handleExpandResult } from "./tools/expand-result.js";
26
+ import { OUTPUT_SCHEMAS } from "./structured.js";
24
27
  function currentPackageVersion() {
25
28
  const raw = readFileSync(new URL("../package.json", import.meta.url), "utf8");
26
29
  const parsed = JSON.parse(raw);
@@ -42,14 +45,46 @@ const server = new McpServer({
42
45
  version: currentPackageVersion(),
43
46
  });
44
47
  const RUN_HINT = "Any other operation is a `run` snippet against `r`, the Node SDK client; `docs` is its reference.";
45
- server.tool("up", "Plan or run the canonical app-aware `run402 up` workflow from a local path or repo URL: any missing setup (wallet, tier, project, workspace link), then the deploy. Delegates to the SDK and returns the shared up result envelope with graph steps, resources, diagnostics, and next_actions. `deploy` only deploys.", upSchema, async (args) => handleUp(args));
46
- server.tool("deploy", "Unified apply primitive. Accepts a structured ReleaseSpec — database (migrations + expose), value-free secrets.require/delete declarations, functions, site, site.public_paths, site.embedding (framing opt-in by catalog key, e.g. { frame_ancestors: ['localhost'] }; null = deny), subdomains, and routes.replace web routes — with explicit replace vs patch semantics per resource. Migration entries use id for immutable versioned SQL or name for generated/idempotent content-tracked SQL; name compiles client-side to <name>_<sha256(sql)[0:16]>. Use site.public_paths for clean static URLs such as /events backed by release asset events.html; explicit mode does not expose /events.html unless separately declared, while mode: 'implicit' restores filename-derived reachability and can widen access. Route entries map exact/final-wildcard browser paths like /admin and /admin/* to Node 22 Fetch Request -> Response functions, or exact GET/HEAD method-aware static aliases such as /events to { type: 'static', file: 'events.html' }; intentional read-only GET/HEAD wildcard function routes may set acknowledge_readonly: true. Direct /functions/v1/:name remains API-key protected. Secret values are set first with `r.secrets.set` (a `run` snippet) or `run402 secrets set`, never placed in deploy specs. All bytes ride through CAS (no inline-body cap). Returns release_id, URLs, warnings, and a structured progress-event log. Stops before upload/commit on confirmation-required warnings unless reviewed codes are passed with allow_warning_codes or allow_warnings is true.", deploySchema, async (args) => handleDeploy(args));
47
- server.tool("status", `The organization's state as this server's wallet sees it (r.status()): the wallet's local_label, server_label, and address, the tier and its lease, the allowance, the projects, and the active project. Never key material. ${RUN_HINT}`, statusSchema, async () => handleStatus());
48
- server.tool("whoami", `The remote identity (r.orgs.whoami()): the control-plane principal this server's wallet resolves to, its active authenticator and linked identities, its org memberships, and the sign-in session grade (none for a wallet). For the local wallet use status. ${RUN_HINT}`, whoamiSchema, async () => handleWhoami());
49
- server.tool("doctor", `Local health and configuration diagnostics (r.doctor()): { ok, blocking[], warnings[], checks[] }, the same report as \`run402 doctor\`. ok is false only on a blocking finding. ${RUN_HINT}`, doctorSchema, async (args) => handleDoctor(args));
50
- server.tool("docs", `The SDK reference for \`run\` snippets, from the copy shipped in this package, so it matches the SDK the snippet runs against. No arguments: the run primer, the r namespace table, and the topics. topic: one namespace or section (assets, project.apply, rooms, local-state) or sdk for all of it; search: sections containing every word. Long answers are a window plus a ref for expand_result. ${RUN_HINT}`, docsSchema, async (args) => handleDocs(args));
51
- server.tool("run", "Run a TypeScript snippet against the SDK in a sandbox. `r` is the Node SDK client (@run402/sdk/node); call `docs` for its reference. The code is the body of an async function: await r chains, and the value of the last expression (or a return) is the result, e.g. `(await r.projects.list()).projects.map((p) => p.id)`. No filesystem, process, fetch, timers, or imports; console is captured. Returns { status, value, value_ref, shown, total, logs, logs_ref, calls, duration_ms, wallet, error? }; a large value is stored whole and expand_result pages it. Operations that return or consume a one-time secret (grant keys, Handoff and Invite Keys, project credentials, wallet keys) refuse with SECRET_REQUIRES_CLI naming the exact CLI command to hand the person. Any other operation is a run snippet against r.", runSchema, async (args) => handleRun(args));
52
- server.tool("expand_result", "Fetch more of a result a previous tool showed you only a window of. Tools on this surface truncate the VIEW, never the DATA: when one prints a ref together with shown and total, the full result is held behind that ref and this is how you read the rest of it. Pass the ref plus offset and limit to page through it. Refs live in this server process only — they expire after 30 minutes and only the most recent handful are kept, so re-run the producing tool rather than storing a ref across sessions. A result that carried a secret is never retained and never has a ref, so nothing here can hand one back.", expandResultSchema, async (args) => handleExpandResult(args));
48
+ server.registerTool("up", {
49
+ description: "Plan or run the canonical app-aware `run402 up` workflow from a local path or repo URL: any missing setup (wallet, tier, project, workspace link), then the deploy. Delegates to the SDK and returns the shared up result envelope with graph steps, resources, diagnostics, and next_actions. `deploy` only deploys.",
50
+ inputSchema: upSchema,
51
+ outputSchema: OUTPUT_SCHEMAS.up,
52
+ }, async (args) => handleUp(args));
53
+ server.registerTool("deploy", {
54
+ description: "Unified apply primitive. Accepts a structured ReleaseSpec — database (migrations + expose), value-free secrets.require/delete declarations, functions, site, site.public_paths, site.embedding (framing opt-in by catalog key, e.g. { frame_ancestors: ['localhost'] }; null = deny), subdomains, and routes.replace web routes — with explicit replace vs patch semantics per resource. Migration entries use id for immutable versioned SQL or name for generated/idempotent content-tracked SQL; name compiles client-side to <name>_<sha256(sql)[0:16]>. Use site.public_paths for clean static URLs such as /events backed by release asset events.html; explicit mode does not expose /events.html unless separately declared, while mode: 'implicit' restores filename-derived reachability and can widen access. Route entries map exact/final-wildcard browser paths like /admin and /admin/* to Node 22 Fetch Request -> Response functions, or exact GET/HEAD method-aware static aliases such as /events to { type: 'static', file: 'events.html' }; intentional read-only GET/HEAD wildcard function routes may set acknowledge_readonly: true. Direct /functions/v1/:name remains API-key protected. Secret values are set first with `r.secrets.set` (a `run` snippet) or `run402 secrets set`, never placed in deploy specs. All bytes ride through CAS (no inline-body cap). Returns release_id, URLs, warnings, and a structured progress-event log. Stops before upload/commit on confirmation-required warnings unless reviewed codes are passed with allow_warning_codes or allow_warnings is true.",
55
+ inputSchema: deploySchema,
56
+ outputSchema: OUTPUT_SCHEMAS.deploy,
57
+ }, async (args) => handleDeploy(args));
58
+ server.registerTool("status", {
59
+ description: `The organization's state as this server's wallet sees it (r.status()): the wallet's local_label, server_label, and address, the tier and its lease, the allowance, the projects, and the active project. Never key material. ${RUN_HINT}`,
60
+ inputSchema: statusSchema,
61
+ outputSchema: OUTPUT_SCHEMAS.status,
62
+ }, async () => handleStatus());
63
+ server.registerTool("whoami", {
64
+ description: `The remote identity (r.orgs.whoami()): the control-plane principal this server's wallet resolves to, its active authenticator and linked identities, its org memberships, and the sign-in session grade (none for a wallet). For the local wallet use status. ${RUN_HINT}`,
65
+ inputSchema: whoamiSchema,
66
+ outputSchema: OUTPUT_SCHEMAS.whoami,
67
+ }, async () => handleWhoami());
68
+ server.registerTool("doctor", {
69
+ description: `Local health and configuration diagnostics (r.doctor()): { ok, blocking[], warnings[], checks[] }, the same report as \`run402 doctor\`. ok is false only on a blocking finding. ${RUN_HINT}`,
70
+ inputSchema: doctorSchema,
71
+ outputSchema: OUTPUT_SCHEMAS.doctor,
72
+ }, async (args) => handleDoctor(args));
73
+ server.registerTool("docs", {
74
+ description: `The SDK reference for \`run\` snippets, from the copy shipped in this package, so it matches the SDK the snippet runs against. No arguments: the run primer, the r namespace table, and the topics. topic: one namespace or section (assets, project.apply, rooms, local-state) or sdk for all of it; search: sections containing every word. Long answers are a window plus a ref for expand_result. ${RUN_HINT}`,
75
+ inputSchema: docsSchema,
76
+ outputSchema: OUTPUT_SCHEMAS.docs,
77
+ }, async (args) => handleDocs(args));
78
+ server.registerTool("run", {
79
+ description: "Run a TypeScript snippet against the SDK in a sandbox. `r` is the Node SDK client (@run402/sdk/node); call `docs` for its reference. The code is the body of an async function: await r chains, and the value of the last expression (or a return) is the result, e.g. `(await r.projects.list()).projects.map((p) => p.id)`. No filesystem, process, fetch, timers, or imports; console is captured. Returns { status, value, value_ref, shown, total, logs, logs_ref, calls, duration_ms, wallet, error? }; a large value is stored whole and expand_result pages it. Operations that return or consume a one-time secret (grant keys, Handoff and Invite Keys, project credentials, wallet keys) refuse with SECRET_REQUIRES_CLI naming the exact CLI command to hand the person. Any other operation is a run snippet against r.",
80
+ inputSchema: runSchema,
81
+ outputSchema: OUTPUT_SCHEMAS.run,
82
+ }, async (args) => handleRun(args));
83
+ server.registerTool("expand_result", {
84
+ description: "Fetch more of a result a previous tool showed you only a window of. Tools on this surface truncate the VIEW, never the DATA: when one prints a ref together with shown and total, the full result is held behind that ref and this is how you read the rest of it. Pass the ref plus offset and limit to page through it. Refs live in this server process only — they expire after 30 minutes and only the most recent handful are kept, so re-run the producing tool rather than storing a ref across sessions. A result that carried a secret is never retained and never has a ref, so nothing here can hand one back.",
85
+ inputSchema: expandResultSchema,
86
+ outputSchema: OUTPUT_SCHEMAS.expand_result,
87
+ }, async (args) => handleExpandResult(args));
53
88
  const transport = new StdioServerTransport();
54
89
  await server.connect(transport);
55
90
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,19 @@ export interface ChainCall {
59
59
  * enforced at runtime, so the declaration is the only record of it).
60
60
  */
61
61
  export declare function sdkPrivateMembers(): Map<string, Set<string>>;
62
+ /**
63
+ * A member the SDK object does not have. Carries the closest public members,
64
+ * so the run's error can say "did you mean" instead of "is not a function".
65
+ */
66
+ export declare class UnknownMember extends TypeError {
67
+ readonly path: string;
68
+ readonly suggestions: string[];
69
+ readonly members: string[];
70
+ readonly code = "RUN_UNKNOWN_MEMBER";
71
+ constructor(path: string, suggestions: string[], members: string[]);
72
+ }
73
+ /** The members closest to `key`: case-insensitive match first, then small edit distance, then containment. At most three. */
74
+ export declare function closestMembers(key: string, members: string[]): string[];
62
75
  /**
63
76
  * Replays recorded chains against `root` (the real SDK client) for one run.
64
77
  * Holds that run's handles, its `calls[]` trace, and the original errors, and
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-proxy.d.ts","sourceRoot":"","sources":["../src/sandbox-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,0CAA0C;AAC1C,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,QAAmB,CAAC;AAEzD,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAwKD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAkC5D;AA+ED;;;;GAIG;AACH,qBAAa,SAAS;;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAM;IACjC,YAAY,SAAK;gBAQL,IAAI,EAAE,OAAO;IAIzB,0EAA0E;IAC1E,SAAS,IAAI,gBAAgB;IAI7B,+FAA+F;IAC/F,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAI1C,+CAA+C;IAC/C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,OAAO,IAAI,IAAI;IAKT,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAyI7C"}
1
+ {"version":3,"file":"sandbox-proxy.d.ts","sourceRoot":"","sources":["../src/sandbox-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,0CAA0C;AAC1C,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,QAAmB,CAAC;AAEzD,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAwKD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAkC5D;AAUD;;;GAGG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAGxC,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;IAJ5B,QAAQ,CAAC,IAAI,wBAAwB;gBAE1B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,MAAM,EAAE;CAS7B;AAgCD,6HAA6H;AAC7H,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAevE;AA8ED;;;;GAIG;AACH,qBAAa,SAAS;;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAM;IACjC,YAAY,SAAK;gBAQL,IAAI,EAAE,OAAO;IAIzB,0EAA0E;IAC1E,SAAS,IAAI,gBAAgB;IAI7B,+FAA+F;IAC/F,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAI1C,+CAA+C;IAC/C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,OAAO,IAAI,IAAI;IAKT,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAyI7C"}
@@ -248,6 +248,78 @@ function isPlainData(value) {
248
248
  }
249
249
  class RefusedProperty extends TypeError {
250
250
  }
251
+ /**
252
+ * A member the SDK object does not have. Carries the closest public members,
253
+ * so the run's error can say "did you mean" instead of "is not a function".
254
+ */
255
+ export class UnknownMember extends TypeError {
256
+ path;
257
+ suggestions;
258
+ members;
259
+ code = "RUN_UNKNOWN_MEMBER";
260
+ constructor(path, suggestions, members) {
261
+ super(suggestions.length > 0
262
+ ? `r.${path} is not part of the SDK. Did you mean ${suggestions.map((s) => `r.${s}`).join(" or ")}?`
263
+ : `r.${path} is not part of the SDK. Its parent has: ${members.slice(0, 20).join(", ")}${members.length > 20 ? ", …" : ""}.`);
264
+ this.path = path;
265
+ this.suggestions = suggestions;
266
+ this.members = members;
267
+ this.name = "UnknownMember";
268
+ }
269
+ }
270
+ /** The public members an SDK object offers: own and inherited, minus private, internal, and intrinsic ones. */
271
+ function publicMembers(holder) {
272
+ const out = new Set();
273
+ const privates = sdkPrivateMembers();
274
+ for (let p = holder; p && !INTRINSIC_PROTOTYPES.has(p); p = Object.getPrototypeOf(p)) {
275
+ const className = typeof p === "function" ? null : p.constructor?.name;
276
+ const hidden = typeof className === "string" ? privates.get(className) : undefined;
277
+ for (const key of Object.getOwnPropertyNames(p)) {
278
+ if (ALWAYS_REFUSED.has(key) || key.startsWith("_") || key.startsWith("#") || hidden?.has(key))
279
+ continue;
280
+ if (typeof holder === "function" && (key === "length" || key === "name" || key === "arguments" || key === "caller"))
281
+ continue;
282
+ out.add(key);
283
+ }
284
+ }
285
+ return [...out].sort();
286
+ }
287
+ /** Edit distance with adjacent transpositions (optimal string alignment). */
288
+ function editDistance(a, b) {
289
+ const d = Array.from({ length: a.length + 1 }, (_, i) => [i, ...Array(b.length).fill(0)]);
290
+ for (let j = 1; j <= b.length; j++)
291
+ d[0][j] = j;
292
+ for (let i = 1; i <= a.length; i++) {
293
+ for (let j = 1; j <= b.length; j++) {
294
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
295
+ d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);
296
+ if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1])
297
+ d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);
298
+ }
299
+ }
300
+ return d[a.length][b.length];
301
+ }
302
+ /** The members closest to `key`: case-insensitive match first, then small edit distance, then containment. At most three. */
303
+ export function closestMembers(key, members) {
304
+ const lower = key.toLowerCase();
305
+ const scored = [];
306
+ for (const m of members) {
307
+ const ml = m.toLowerCase();
308
+ let score = null;
309
+ if (ml === lower)
310
+ score = 0;
311
+ else {
312
+ const dist = editDistance(lower, ml);
313
+ if (dist <= Math.max(2, Math.floor(key.length / 3)))
314
+ score = dist;
315
+ else if (lower.length >= 3 && (ml.includes(lower) || lower.includes(ml)))
316
+ score = 10;
317
+ }
318
+ if (score !== null)
319
+ scored.push({ m, score });
320
+ }
321
+ return scored.sort((x, y) => x.score - y.score || x.m.localeCompare(y.m)).slice(0, 3).map((s) => s.m);
322
+ }
251
323
  /** Read `key` from `holder` if the SDK's public surface allows it; throw otherwise. */
252
324
  function readAllowed(holder, key, path) {
253
325
  if (holder === null || holder === undefined) {
@@ -268,8 +340,13 @@ function readAllowed(holder, key, path) {
268
340
  let owner = holder;
269
341
  while (owner && !Object.prototype.hasOwnProperty.call(owner, key))
270
342
  owner = Object.getPrototypeOf(owner);
271
- if (!owner)
272
- return undefined;
343
+ if (!owner) {
344
+ // An SDK object has no such member: name the closest ones rather than
345
+ // letting the next call fail as "is not a function".
346
+ const members = publicMembers(holder);
347
+ const full = path ? `${path}.${key}` : key;
348
+ throw new UnknownMember(full, closestMembers(key, members).map((m) => (path ? `${path}.${m}` : m)), members);
349
+ }
273
350
  if (INTRINSIC_PROTOTYPES.has(owner)) {
274
351
  throw new RefusedProperty(`${path ? `${path}.` : ""}${key} is not part of the SDK surface`);
275
352
  }
@@ -316,6 +393,8 @@ function describeError(err) {
316
393
  ...(e.retryable !== undefined ? { retryable: e.retryable } : {}),
317
394
  };
318
395
  }
396
+ if (err instanceof UnknownMember)
397
+ return { name: err.name, message: err.message, code: err.code };
319
398
  if (err instanceof Error)
320
399
  return { name: err.name, message: err.message };
321
400
  return { name: "Error", message: String(err) };