run402 4.37.1 → 4.38.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 (55) hide show
  1. package/README.md +3 -1
  2. package/git-remote-run402.mjs +49 -10
  3. package/lib/command-manifest.mjs +7 -0
  4. package/lib/gitvault.mjs +50 -5
  5. package/lib/org.mjs +70 -0
  6. package/lib/repos.mjs +108 -4
  7. package/package.json +1 -1
  8. package/sdk/dist/index.d.ts +1 -1
  9. package/sdk/dist/index.d.ts.map +1 -1
  10. package/sdk/dist/index.js +1 -1
  11. package/sdk/dist/index.js.map +1 -1
  12. package/sdk/dist/namespaces/gitvault.crypto.d.ts +11 -2
  13. package/sdk/dist/namespaces/gitvault.crypto.d.ts.map +1 -1
  14. package/sdk/dist/namespaces/gitvault.crypto.js +11 -2
  15. package/sdk/dist/namespaces/gitvault.crypto.js.map +1 -1
  16. package/sdk/dist/namespaces/gitvault.d.ts +109 -3
  17. package/sdk/dist/namespaces/gitvault.d.ts.map +1 -1
  18. package/sdk/dist/namespaces/gitvault.js +114 -1
  19. package/sdk/dist/namespaces/gitvault.js.map +1 -1
  20. package/sdk/dist/namespaces/org.d.ts +18 -1
  21. package/sdk/dist/namespaces/org.d.ts.map +1 -1
  22. package/sdk/dist/namespaces/org.js +38 -0
  23. package/sdk/dist/namespaces/org.js.map +1 -1
  24. package/sdk/dist/namespaces/org.types.d.ts +16 -0
  25. package/sdk/dist/namespaces/org.types.d.ts.map +1 -1
  26. package/sdk/dist/namespaces/projects.d.ts +11 -1
  27. package/sdk/dist/namespaces/projects.d.ts.map +1 -1
  28. package/sdk/dist/namespaces/projects.js +16 -0
  29. package/sdk/dist/namespaces/projects.js.map +1 -1
  30. package/sdk/dist/namespaces/projects.types.d.ts +7 -0
  31. package/sdk/dist/namespaces/projects.types.d.ts.map +1 -1
  32. package/sdk/dist/node/gitvault-address.d.ts +89 -0
  33. package/sdk/dist/node/gitvault-address.d.ts.map +1 -0
  34. package/sdk/dist/node/gitvault-address.js +113 -0
  35. package/sdk/dist/node/gitvault-address.js.map +1 -0
  36. package/sdk/dist/node/gitvault-creation-journal.d.ts +81 -9
  37. package/sdk/dist/node/gitvault-creation-journal.d.ts.map +1 -1
  38. package/sdk/dist/node/gitvault-creation-journal.js +93 -17
  39. package/sdk/dist/node/gitvault-creation-journal.js.map +1 -1
  40. package/sdk/dist/node/gitvault-publication.d.ts +13 -0
  41. package/sdk/dist/node/gitvault-publication.d.ts.map +1 -1
  42. package/sdk/dist/node/gitvault-publication.js +1 -0
  43. package/sdk/dist/node/gitvault-publication.js.map +1 -1
  44. package/sdk/dist/node/gitvault-push-to-create.d.ts +75 -0
  45. package/sdk/dist/node/gitvault-push-to-create.d.ts.map +1 -0
  46. package/sdk/dist/node/gitvault-push-to-create.js +132 -0
  47. package/sdk/dist/node/gitvault-push-to-create.js.map +1 -0
  48. package/sdk/dist/node/index.d.ts +6 -2
  49. package/sdk/dist/node/index.d.ts.map +1 -1
  50. package/sdk/dist/node/index.js +8 -1
  51. package/sdk/dist/node/index.js.map +1 -1
  52. package/sdk/dist/scoped.d.ts +2 -1
  53. package/sdk/dist/scoped.d.ts.map +1 -1
  54. package/sdk/dist/scoped.js +3 -0
  55. package/sdk/dist/scoped.js.map +1 -1
package/README.md CHANGED
@@ -65,7 +65,9 @@ run402 repos list --org org_1a2b3c
65
65
  run402 repos delete prj_xyz --force # refuses without --force while the vault holds generations
66
66
  ```
67
67
 
68
- A hosted git remote, encrypted before it leaves the machine — no deploy, no manifest, no app. `origin` is claimed additively — an existing `origin` is never touched, the run402 remote falls back to `run402` instead. `repos create|list|delete` and `gitvault`'s mutating verbs (`init`, `snapshot`, `policy`, `compact`, `prune`) are CLI/OpenClaw-only by design — no MCP tool exists or will exist for them (one-shot recovery receipts, immutable generations, irreversible delete). See `run402 gitvault --help` and `run402 repos --help` for the full surface, and the CLI reference's `gitvault` / `repos` sections for the terminal-loss statement and the progressive backup warning.
68
+ A hosted git remote, encrypted before it leaves the machine — no deploy, no manifest, no app. `origin` is claimed additively — an existing `origin` is never touched, the run402 remote falls back to `run402` instead. `repos create|list|delete|name` and `gitvault`'s mutating verbs (`init`, `snapshot`, `policy`, `compact`, `prune`) are CLI/OpenClaw-only by design — no MCP tool exists or will exist for them (one-shot recovery receipts, immutable generations, irreversible delete). See `run402 gitvault --help` and `run402 repos --help` for the full surface, and the CLI reference's `gitvault` / `repos` sections for the terminal-loss statement and the progressive backup warning.
69
+
70
+ **Named addressing (design D6).** `run402 org slug <slug>` (owner-only, small one-time fee) claims an org's globally-unique, address-form slug, after which `run402::<slug>/<name>` addresses any repo under it — `git push` to a name that doesn't exist yet push-to-creates it. `run402 repos name <name> [--project <id>]` claims the per-org-unique `<name>` half explicitly (no fee); `repos create` claims one automatically, best-effort, when the org already has a slug. Also CLI/SDK-only — no MCP tool.
69
71
 
70
72
  ### Allowance
71
73
 
@@ -28,6 +28,21 @@
28
28
  * completes the push. One command, no prior `gitvault init`. `git ls-remote`
29
29
  * / `fetch` stay pure reads and allocate nothing.
30
30
  *
31
+ * NAMED ADDRESSING + PUSH-TO-CREATE (repo-first-onramp task 4, design D6).
32
+ * `run402::<org>/<name>` admits TWO forms in the same slot — id-form
33
+ * (`org_id`/`prj_...`, unchanged: resolved via `r.gitvault.openOrCreate`
34
+ * above) and slug-form (`run402::<org-slug>/<name>`, e.g.
35
+ * `run402::acme/my-notes`) — discriminated by
36
+ * `gitvaultRemoteAddressForm`. A slug-form remote resolves through
37
+ * `r.gitvault.resolveOrCreateAddress`, which ALSO drives push-to-create on a
38
+ * miss (`push` only; `list`/`fetch` pass `allow_create: false`, same "reads
39
+ * never allocate" discipline as the id-form path) and PINS the resolved
40
+ * `repo_id` in this checkout's local git config the first time it resolves
41
+ * (task 4.5) — every later invocation on THIS checkout goes straight to the
42
+ * pinned id, skipping the address resolution round-trip entirely and
43
+ * surviving a later rename of either half. `SLUG_RELEASED` is never
44
+ * auto-followed: it refuses, naming the successor slug.
45
+ *
31
46
  * WHICH REPOSITORY (the fail-closed rule). `process.cwd()` is NOT the
32
47
  * repository. git identifies the repository with `GIT_DIR`, and during
33
48
  * `git clone` cwd is the directory clone was RUN FROM — routinely some other,
@@ -68,7 +83,7 @@
68
83
 
69
84
  import { createInterface } from "node:readline";
70
85
  import { getSdk } from "./lib/sdk.mjs";
71
- import { parseGitvaultRemoteUrl } from "#sdk";
86
+ import { gitvaultRemoteAddressForm, gitvaultSlugReleasedInfo, parseGitvaultRemoteUrl } from "#sdk";
72
87
  import { hardenedGit, resolveGitInvocationRepo } from "#sdk/node";
73
88
 
74
89
  const out = (line) => process.stdout.write(`${line}\n`);
@@ -84,7 +99,11 @@ function oneLine(value) {
84
99
  function describeError(err) {
85
100
  const code = err?.code ?? err?.body?.code ?? null;
86
101
  const message = err?.message ?? err?.body?.message ?? String(err);
87
- return oneLine(code ? `${code}: ${message}` : message);
102
+ // SLUG_RELEASED is never auto-followed but the successor slug (design D6)
103
+ // is exactly the fact a human/agent reading stderr needs to act on it.
104
+ const released = gitvaultSlugReleasedInfo(err);
105
+ const suffix = released?.successor_slug ? ` (renamed to "${released.successor_slug}" — update the remote and re-run)` : "";
106
+ return oneLine(code ? `${code}: ${message}${suffix}` : message);
88
107
  }
89
108
 
90
109
  /**
@@ -132,7 +151,10 @@ async function main(argv) {
132
151
  // `org_id` rides in the parsed address (`run402::<org_id>/<project_id>`),
133
152
  // so it costs nothing extra to carry — it is exactly what D2's lazy
134
153
  // creation needs to allocate an unresolved vault from `runPush` below, with
135
- // no separate lookup.
154
+ // no separate lookup. Only meaningful for an ID-FORM address; a slug-form
155
+ // one resolves through `resolveOrCreateAddress` instead (below), which
156
+ // needs no separate org_id at all — the gateway resolves the slug itself.
157
+ const addressForm = gitvaultRemoteAddressForm(address);
136
158
  const target = { project_id: address.project_id, org_id: address.org_id };
137
159
  let verbosity = 1;
138
160
 
@@ -160,25 +182,42 @@ async function main(argv) {
160
182
  note(`if you meant to restore this vault: git init --bare <dir> && git -C <dir> remote add run402 run402::${address.org_id}/${address.project_id} && git -C <dir> fetch run402 '+refs/heads/*:refs/heads/*'`);
161
183
  }
162
184
 
163
- /** Open the vault lazily — `capabilities` and `option` must never touch the network. */
164
- const openVault = async (repoDir) => (await getSdk().gitvault.open(repoDir ? { ...target, repo_dir: repoDir } : target)).vault;
165
-
166
185
  /** A 404/absent-vault refusal — the "nothing here yet" shape, never a genuine failure to mask. */
167
186
  function isVaultNotFound(err) {
168
187
  return err?.status === 404 || err?.code === "RESOURCE_NOT_FOUND" || err?.code === "ROUTE_NOT_FOUND";
169
188
  }
170
189
 
171
190
  /**
172
- * Open the vault, allocating it first when it does not exist yet (D2). Used
173
- * ONLY by `runPush` `list`/`fetch` stay pure reads and never create
174
- * anything (see `runList`'s own not-found handling below).
191
+ * Open the vault lazily `capabilities` and `option` must never touch the
192
+ * network. Dispatches on the address form (design D6): id-form is
193
+ * BYTE-IDENTICAL to before (`gitvault.open` with `{org_id, project_id}`);
194
+ * slug-form resolves (and, on the first successful resolution, PINS
195
+ * `repo_id` in local git state — task 4.5) through
196
+ * `gitvault.resolveOrCreateAddress` with `allow_create: false` — a read
197
+ * never allocates, same discipline the id-form path already had.
198
+ */
199
+ const openVault = async (repoDir) => {
200
+ if (addressForm === "id") return (await getSdk().gitvault.open(repoDir ? { ...target, repo_dir: repoDir } : target)).vault;
201
+ const result = await getSdk().gitvault.resolveOrCreateAddress({ address, allow_create: false, ...(repoDir ? { repo_dir: repoDir } : {}) });
202
+ return result.handle.vault;
203
+ };
204
+
205
+ /**
206
+ * Open the vault, allocating it first when it does not exist yet (D2), and
207
+ * — for a SLUG-form address whose name does not resolve yet —
208
+ * PUSH-TO-CREATE it (design D6, task 4.4/4.5). Used ONLY by `runPush` —
209
+ * `list`/`fetch` stay pure reads and never create anything (see
210
+ * `runList`'s own not-found handling below).
175
211
  *
176
212
  * Prints the one-shot recovery receipt and the keystore path to stderr the
177
213
  * moment allocation happens, per the client-surface spec: an agent reads
178
214
  * stderr, and the receipt is worth exactly as many copies as get kept.
179
215
  */
180
216
  async function openOrCreateVault(repoDir) {
181
- const result = await getSdk().gitvault.openOrCreate({ ...target, repo_dir: repoDir });
217
+ const result =
218
+ addressForm === "id"
219
+ ? await getSdk().gitvault.openOrCreate({ ...target, repo_dir: repoDir })
220
+ : await getSdk().gitvault.resolveOrCreateAddress({ address, repo_dir: repoDir, allow_create: true });
182
221
  if (!result.found && result.created) {
183
222
  note("");
184
223
  note(`vault ${result.handle.repo_id} allocated (genesis ${result.created.genesis_sha256}) — one-shot recovery receipt, keep many copies:`);
@@ -197,6 +197,11 @@ export const COMMAND_MANIFEST = [
197
197
  { path: ["org", "get"], positionals: [p("org_id")], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["org_gate1"] },
198
198
  { path: ["org", "rename"], positionals: [p("org_id")], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["org_gate1", "--name", "Gate"] },
199
199
  { path: ["org", "payout-wallet"], positionals: [p("org_id")], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["org_gate1", "--wallet", "0x1111111111111111111111111111111111111111"] },
200
+ // repo-first-onramp task 4.1 (design D6). `--org` (not a positional org_id
201
+ // like rename/payout-wallet above) goes through resolveOrg's SHAPE
202
+ // validation (a real UUID) — "org_gate1" fails that locally, so this needs
203
+ // the same UUID-shaped fixture `org use` below already established.
204
+ { path: ["org", "slug"], positionals: [p("slug")], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["acme", "--org", "11111111-2222-3333-4444-555555555555"] },
200
205
  { path: ["org", "whoami"], positionals: [], projectScoped: false, legacyPositionalProject: false, minimalArgs: [] },
201
206
  { path: ["org", "audit"], positionals: [p("org_id")], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["org_gate1"] },
202
207
  { path: ["org", "use"], positionals: [p("org_id")], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["11111111-2222-3333-4444-555555555555"] },
@@ -274,6 +279,8 @@ export const COMMAND_MANIFEST = [
274
279
  { path: ["repos", "create"], positionals: [p("name")], projectScoped: false, legacyPositionalProject: false, minimalArgs: ["my-notes"], runStyle: "sub", skipBehavioral: "provisions a project, allocates a vault, and scaffolds a real git remote into cwd" },
275
280
  { path: ["repos", "list"], positionals: [], projectScoped: false, legacyPositionalProject: false, minimalArgs: [], runStyle: "sub", skipBehavioral: "cross-references live projects against their live gitvault status, one call per project" },
276
281
  { path: ["repos", "delete"], positionals: [], projectScoped: true, legacyPositionalProject: true, minimalArgs: [], runStyle: "sub", skipBehavioral: "irreversibly deletes a project after reading its live vault generation count" },
282
+ // repo-first-onramp task 4.2 (design D6): explicit address-form name claim.
283
+ { path: ["repos", "name"], positionals: [p("name")], projectScoped: true, legacyPositionalProject: false, minimalArgs: ["my-notes"], runStyle: "sub", skipBehavioral: "claims a per-org-unique repo name against a live project" },
277
284
  { path: ["errors"], positionals: [p("fingerprint_id", { required: false })], projectScoped: true, legacyPositionalProject: false, minimalArgs: [], runStyle: "merged" },
278
285
 
279
286
  // ── jobs ─────────────────────────────────────────────────────────────────
package/lib/gitvault.mjs CHANGED
@@ -69,8 +69,12 @@ Subcommands:
69
69
  deploy — a vault-only project snapshots for months without one.
70
70
  Against a project with no vault yet, this ALLOCATES one inline
71
71
  (the six-stage creation, same as \`init\`) before publishing — one
72
- command, no prior \`gitvault init\`. The one-shot recovery receipt
73
- and keystore path print to stderr the moment that happens.
72
+ command, no prior \`gitvault init\`. When --repo/--project are
73
+ both omitted and the local run402/origin remote is a slug-form
74
+ address (run402::<org-slug>/<name>), PUSH-TO-CREATES through it
75
+ instead (design D6) — same as pushing that name with \`git\`. The
76
+ one-shot recovery receipt and keystore path print to stderr the
77
+ moment that happens.
74
78
  Before reporting a snapshot as landed the SDK compares finalization
75
79
  receipts against the expected manifest and reads the admitted head
76
80
  back from storage; a 200 alone is never enough. \`push\` is a
@@ -370,6 +374,15 @@ async function status(args) {
370
374
  if (s.remote) {
371
375
  console.error(`remote '${s.remote.name}': ${s.remote.url}${s.remote.matches ? "" : " ← points at a DIFFERENT project than this status"}`);
372
376
  }
377
+ // The id-pinning state (design D6, task 4.5): a slug-form remote pins
378
+ // repo_id in local git state the first time it resolves; id-form pins
379
+ // nothing (it needs no pin — see resolveGitvaultAddress's doc comment).
380
+ if (s.pinned) {
381
+ console.error(
382
+ `pinned: repo_id ${s.pinned.repo_id}` +
383
+ (s.pinned.resolved_from ? ` (resolved from run402::${s.pinned.resolved_from.org_slug}/${s.pinned.resolved_from.repo_name})` : ""),
384
+ );
385
+ }
373
386
  if (s.refs) {
374
387
  const names = Object.keys(s.refs).sort();
375
388
  console.error(names.length === 0 ? "refs: (none yet)" : `refs (${names.length}):`);
@@ -396,6 +409,33 @@ async function status(args) {
396
409
  * only the dispatched SUBCOMMAND name changed (see `run()` below, where
397
410
  * `gitvault push` survives one release as a deprecation-warning alias).
398
411
  */
412
+ /**
413
+ * D6 (repo-first-onramp task 4): when neither `--repo` nor `--project` was
414
+ * given explicitly, look at the local `run402`/`origin` remote (in that
415
+ * order, mirroring `scaffoldRemote`'s own naming) and, if it is a SLUG-form
416
+ * address (`run402::<org-slug>/<name>`), return the parsed address so
417
+ * `snapshot` can push-to-create through it — the same address-form
418
+ * resolution `git push` drives via the remote helper. `null` for an
419
+ * id-form remote, no remote at all, or an explicit `--repo`/`--project`.
420
+ */
421
+ async function detectSlugFormRemote(a, repoDir) {
422
+ if (flagValue(a, "--repo") != null || flagValue(a, "--project") != null) return null;
423
+ const { hardenedGit } = await import("#sdk/node");
424
+ const { parseGitvaultRemoteUrl, gitvaultRemoteAddressForm } = await import("#sdk");
425
+ for (const name of ["run402", "origin"]) {
426
+ let url;
427
+ try {
428
+ url = (await hardenedGit(repoDir, ["remote", "get-url", name])).text().trim();
429
+ } catch {
430
+ continue;
431
+ }
432
+ if (!url) continue;
433
+ const address = parseGitvaultRemoteUrl(url);
434
+ if (address && gitvaultRemoteAddressForm(address) === "slug") return address;
435
+ }
436
+ return null;
437
+ }
438
+
399
439
  async function snapshot(args) {
400
440
  const a = normalizeArgv(args);
401
441
  const valueFlags = [...COMMON_VALUE_FLAGS, "--message"];
@@ -404,14 +444,19 @@ async function snapshot(args) {
404
444
  min: 0, max: 0, command: "run402 gitvault snapshot", missing: "",
405
445
  });
406
446
  const message = flagValue(a, "--message");
407
- const target = vaultTarget(a);
447
+ const repoDir = process.cwd();
448
+ const address = await detectSlugFormRemote(a, repoDir);
408
449
  // D2: lazily allocate the vault on first push when there is a project to
409
450
  // resolve the owning org from — the same resolution `gitvault init` uses.
410
451
  // `--repo`-only addressing has nothing to create FROM (no project_id), so
411
- // it is skipped there, matching `open()`'s own precedence.
412
- const orgId = target.project_id ? await resolveOwningOrgId(target.project_id) : null;
452
+ // it is skipped there, matching `open()`'s own precedence. Skipped
453
+ // entirely for a slug-form remote (`address` above) that resolves
454
+ // through the address, not a project_id, and needs no separate org_id.
455
+ const target = address ? { repo_dir: repoDir } : vaultTarget(a);
456
+ const orgId = !address && target.project_id ? await resolveOwningOrgId(target.project_id) : null;
413
457
  const opts = {
414
458
  ...target,
459
+ ...(address ? { address } : {}),
415
460
  ...(orgId ? { org_id: orgId } : {}),
416
461
  // The gitvault_commit line is progress, not payload: print it the moment
417
462
  // the snapshot exists, well before the publication round-trips finish, so
package/lib/org.mjs CHANGED
@@ -30,6 +30,7 @@ Usage:
30
30
  run402 org get <org_id>
31
31
  run402 org rename <org_id> --name <display_name> (or: --clear to remove the label)
32
32
  run402 org payout-wallet <org_id> --wallet <wallet_address> (or: --clear to remove the explicit default)
33
+ run402 org slug <slug> [--org <org_id>]
33
34
  run402 org whoami
34
35
  run402 org use <org_id>
35
36
  run402 org current
@@ -53,6 +54,9 @@ Subcommands:
53
54
  list Orgs you are a member of
54
55
  get Read one org (label + tier/lease + your role)
55
56
  rename Set or clear an org's display label (owner-only)
57
+ slug Claim or rename the org's globally-unique, address-form slug
58
+ (owner-only). A genesis claim spends a one-time claim fee; a
59
+ rename releases the old slug into a ~90-day cooldown.
56
60
  use Select the current org for this wallet profile
57
61
  current Report the resolved current org and where it came from
58
62
  clear Clear this wallet profile's org selection
@@ -120,6 +124,26 @@ Legacy (still supported):
120
124
 
121
125
  Owner-only + step-up gated. Pass --clear (or an empty display_name) to remove
122
126
  the label. Output includes the updated tier and lease timestamps.
127
+ `,
128
+ slug: `run402 org slug — claim or rename the org's address-form slug
129
+
130
+ Usage:
131
+ run402 org slug <slug> [--org <org_id>] [--idempotency-key <key>]
132
+
133
+ The slug is a globally-unique, claimable, address-form handle for the org
134
+ (repo-first-onramp design D6) — the <org-slug> half of a named repo address
135
+ run402::<org-slug>/<name>. Grammar: lowercase [a-z0-9-], no leading/trailing/
136
+ double hyphen, max 39 chars. Owner-only.
137
+
138
+ A genesis claim (the org had no prior slug) spends a one-time claim fee off
139
+ the org's balance. A rename is free but releases the OLD slug into a ~90-day
140
+ cooldown: it stops resolving, with a typed SLUG_RELEASED refusal naming the
141
+ new slug as successor — there is no redirect, so update every remote and
142
+ address that still names the old one.
143
+
144
+ This is a paid, side-effecting mutation and requires Idempotency-Key; the SDK
145
+ generates one automatically unless --idempotency-key is passed, so a retried
146
+ call after a dropped response can never double-bill.
123
147
  `,
124
148
  "payout-wallet": `run402 org payout-wallet — set or clear the tenant route payout wallet
125
149
 
@@ -413,6 +437,51 @@ async function payoutWallet(args) {
413
437
  }
414
438
  }
415
439
 
440
+ /**
441
+ * `run402 org slug <slug>` — claim or rename the org's address-form slug
442
+ * (repo-first-onramp design D6). Owner-only, and a genesis claim spends a
443
+ * one-time claim fee — this is a PAID, side-effecting mutation, so it
444
+ * requires `Idempotency-Key`; the SDK generates one client-side when
445
+ * `--idempotency-key` is omitted, so a retried call after a dropped response
446
+ * can never double-bill.
447
+ */
448
+ async function slug(args) {
449
+ const a = normalizeArgv(args);
450
+ const valueFlags = ["--org", "--idempotency-key"];
451
+ assertKnownFlags(a, [...valueFlags, "--help", "-h"], valueFlags);
452
+ const [newSlug] = requirePositionalCount(a, valueFlags, {
453
+ min: 1,
454
+ max: 1,
455
+ command: "run402 org slug <slug> [--org <org_id>]",
456
+ missing: "Missing <slug>.",
457
+ });
458
+ const org = await resolveOrg(a, { cmd: "org" });
459
+ if (!org) {
460
+ fail({
461
+ code: "ORG_UNRESOLVED",
462
+ message: "Could not resolve which organization to claim this slug for.",
463
+ hint: "Pass --org <org_id>, or select one first with `run402 org use <id>`.",
464
+ });
465
+ }
466
+ const idempotencyKey = flagValue(a, "--idempotency-key");
467
+ try {
468
+ const result = await getSdk().org(org.orgId).claimSlug(newSlug, idempotencyKey != null ? { idempotencyKey } : {});
469
+ console.log(JSON.stringify(result, null, 2));
470
+ if (result.created) {
471
+ console.error(`slug "${result.slug}" claimed for ${org.orgId} — a one-time claim fee was debited from the org's balance.`);
472
+ } else if (result.previous_slug && result.previous_slug !== result.slug) {
473
+ console.error(
474
+ `org ${org.orgId} renamed from "${result.previous_slug}" to "${result.slug}" — no fee. ` +
475
+ `"${result.previous_slug}" now enters its ~90-day release cooldown: it stops resolving with a typed SLUG_RELEASED refusal (naming "${result.slug}" as the successor), never a redirect. Update every remote and address that still names it.`,
476
+ );
477
+ } else {
478
+ console.error(`"${result.slug}" was already ${org.orgId}'s current slug — nothing changed, no fee.`);
479
+ }
480
+ } catch (err) {
481
+ reportSdkError(err);
482
+ }
483
+ }
484
+
416
485
  async function audit(args) {
417
486
  const a = normalizeArgv(args);
418
487
  const valueFlags = ["--limit", "--after", "--before"];
@@ -630,6 +699,7 @@ export async function run(sub, args) {
630
699
  case "get": await get(args); break;
631
700
  case "rename": await rename(args); break;
632
701
  case "payout-wallet": await payoutWallet(args); break;
702
+ case "slug": await slug(args); break;
633
703
  case "whoami": await whoami(args); break;
634
704
  case "use": await use(args); break;
635
705
  case "current": await current(args); break;
package/lib/repos.mjs CHANGED
@@ -35,11 +35,12 @@
35
35
  import { getSdk } from "./sdk.mjs";
36
36
  import { reportSdkError, fail } from "./sdk-errors.mjs";
37
37
  import { withAutoApprove } from "./operator.mjs";
38
- import { allowanceAuthHeaders, isCoreApiTarget } from "./config.mjs";
38
+ import { allowanceAuthHeaders, isCoreApiTarget, resolveProjectId } from "./config.mjs";
39
39
  import { loadLiveControlPlaneSession } from "../core-dist/control-plane-session.js";
40
40
  import { resolveOrgId, resolveOwningOrgId } from "./org-context.mjs";
41
41
  import { nextAction } from "./next-actions.mjs";
42
42
  import { printKeystoreLocation } from "./gitvault.mjs";
43
+ import { gitvaultRemoteUrlForRepo } from "#sdk";
43
44
  import {
44
45
  normalizeArgv,
45
46
  hasHelp,
@@ -56,21 +57,30 @@ Usage:
56
57
  run402 repos create <name> [--org <org_id>] [--dir <path>] [--tier <tier>]
57
58
  run402 repos list [--org <org_id>]
58
59
  run402 repos delete <project_id> [--force]
60
+ run402 repos name <name> [--project <id>]
59
61
 
60
62
  Subcommands:
61
63
  create Provision a project, ALLOCATE its vault (mints key material and a
62
64
  one-shot recovery receipt), and scaffold the run402 remote —
63
65
  origin when free, run402 when taken (D1). No deploy plan, no
64
66
  release, nothing deployed: the vault-only track (design D8), for a
65
- project that only ever hosts encrypted source.
67
+ project that only ever hosts encrypted source. When the owning org
68
+ has a slug (run402 org slug), also claims the project's address-
69
+ form repo name (best-effort — a name collision or missing slug
70
+ never fails the command) and prints the run402::<slug>/<name>
71
+ address (design D6).
66
72
  list The organization's vault-bearing projects — those with an
67
73
  allocated vault, whether or not they have ever deployed. Not
68
- every project in the org; ones with no vault are omitted.
74
+ every project in the org; ones with no vault are omitted. Shows
75
+ the run402::<slug>/<name> address for a repo that has claimed one.
69
76
  delete Delete the project and everything in it (database, functions,
70
77
  subdomains, mailbox, secrets). REFUSES while the vault holds any
71
78
  admitted generation unless --force is passed — this is
72
79
  irreversible and destroys the vault's entire encrypted history
73
80
  along with everything else.
81
+ name Claim or rename the project's per-org-unique, address-form name
82
+ (design D6) — the <name> half of run402::<org-slug>/<name>. No
83
+ fee, unlike the org slug. Same authority as renaming the project.
74
84
 
75
85
  Options:
76
86
  --org <org_id> create/list: the owning organization. create resolves it
@@ -88,6 +98,8 @@ Options:
88
98
  derived from the name)
89
99
  --force delete: proceed even though the vault holds generations
90
100
  that would be permanently and irrecoverably lost
101
+ --project <id> name: project to claim the repo name for (default: the
102
+ active project)
91
103
  --json No-op: stdout is already JSON.
92
104
 
93
105
  There is no separate gitvault price: bytes count against the same
@@ -97,6 +109,7 @@ organization-pooled storage budget every project already has.
97
109
  const CREATE_VALUE_FLAGS = ["--org", "--dir", "--tier", "--idempotency-key"];
98
110
  const LIST_VALUE_FLAGS = ["--org"];
99
111
  const DELETE_VALUE_FLAGS = ["--project"];
112
+ const NAME_VALUE_FLAGS = ["--project"];
100
113
 
101
114
  function validateProjectName(name) {
102
115
  if (name === "") {
@@ -123,6 +136,24 @@ function validateProjectName(name) {
123
136
  }
124
137
  }
125
138
 
139
+ /**
140
+ * Best-effort slugify for the address-form repo name (design D6's grammar:
141
+ * lowercase [a-z0-9-], no leading/trailing/double hyphen, <=63 chars). The
142
+ * free-text project display name (`repos create <name>`'s positional) is
143
+ * NOT already in this charset, so `create` derives a candidate rather than
144
+ * sending the raw name straight to the claim route and failing on the first
145
+ * space or capital letter.
146
+ */
147
+ function slugifyRepoName(name) {
148
+ return name
149
+ .toLowerCase()
150
+ .replace(/[^a-z0-9-]+/g, "-")
151
+ .replace(/-+/g, "-")
152
+ .replace(/^-+|-+$/g, "")
153
+ .slice(0, 63)
154
+ .replace(/-+$/g, "");
155
+ }
156
+
126
157
  async function create(args) {
127
158
  const a = normalizeArgv(args);
128
159
  assertKnownFlags(a, [...CREATE_VALUE_FLAGS, "--help", "-h"], CREATE_VALUE_FLAGS);
@@ -177,9 +208,29 @@ async function create(args) {
177
208
  project_id: provisioned.project_id,
178
209
  repo_dir: dir,
179
210
  });
211
+ // Best-effort address-form name claim (design D6): when the owning org
212
+ // has a slug, name this repo so it is reachable as
213
+ // run402::<slug>/<name> too — never fails `create` itself. A collision,
214
+ // a missing slug, or any other refusal just means no address this time;
215
+ // `run402 repos name <name>` claims it explicitly later.
216
+ let address = null;
217
+ try {
218
+ const orgRecord = await getSdk().org(effectiveOrgId).get();
219
+ if (orgRecord.slug) {
220
+ const candidate = slugifyRepoName(name);
221
+ if (candidate) {
222
+ const named = await getSdk().projects.setRepoName(provisioned.project_id, candidate);
223
+ address = gitvaultRemoteUrlForRepo(orgRecord.slug, named.repo_name);
224
+ }
225
+ }
226
+ } catch (err) {
227
+ console.error(`repo name not claimed (non-fatal): ${err?.message ?? String(err)}`);
228
+ }
229
+
180
230
  const out = {
181
231
  project_id: provisioned.project_id,
182
232
  repo_id: vault.repo_id,
233
+ address,
183
234
  remote: vault.remote,
184
235
  deduplicated: vault.deduplicated,
185
236
  genesis_sha256: vault.genesis_sha256,
@@ -192,6 +243,7 @@ async function create(args) {
192
243
  `project ${provisioned.project_id} provisioned; vault ${vault.repo_id} ` +
193
244
  (vault.deduplicated ? "already existed — nothing was re-allocated" : `allocated (genesis ${vault.genesis_sha256})`),
194
245
  );
246
+ if (address) console.error(`address: ${address}`);
195
247
  if (vault.remote) console.error(`remote '${vault.remote.name}' -> ${vault.remote.url} (${vault.remote.reason})`);
196
248
  console.error("");
197
249
  console.error(vault.terminal_loss_statement);
@@ -244,8 +296,21 @@ async function list(args) {
244
296
  genesis_admitted_at: status.vault.genesis_admitted_at,
245
297
  });
246
298
  }
247
- console.log(JSON.stringify({ org_id: orgId, repos }, null, 2));
299
+ // The org's slug, when claimed (design D6) — printed so a human/agent can
300
+ // construct run402::<slug>/<name> addresses by hand. There is deliberately
301
+ // no per-project `address` field here yet: the gateway has no bulk (or
302
+ // even single) READ for a project's claimed repo_name today, only the
303
+ // WRITE route (`POST /projects/v1/:id/repo-name`) — adding one is gateway
304
+ // work, out of scope for this client-only change (see the final report).
305
+ let orgSlug = null;
306
+ try {
307
+ orgSlug = (await getSdk().org(orgId).get()).slug;
308
+ } catch {
309
+ // Best-effort — `list` must not fail over an org-slug lookup.
310
+ }
311
+ console.log(JSON.stringify({ org_id: orgId, org_slug: orgSlug, repos }, null, 2));
248
312
  console.error(`${repos.length} vault-bearing project(s) of ${projects.length} total in this organization`);
313
+ if (orgSlug) console.error(`org slug: ${orgSlug} — a repo with a claimed address-form name is reachable at run402::${orgSlug}/<name>`);
249
314
  }
250
315
 
251
316
  async function del(args) {
@@ -297,6 +362,41 @@ async function del(args) {
297
362
  }
298
363
  }
299
364
 
365
+ /**
366
+ * `run402 repos name <name> [--project <id>]` — the explicit address-form
367
+ * claim (design D6, task 4.2): a project gets its per-org-unique `<name>`
368
+ * half of `run402::<org-slug>/<name>` either at push-to-create time or here.
369
+ */
370
+ async function name(args) {
371
+ const a = normalizeArgv(args);
372
+ assertKnownFlags(a, [...NAME_VALUE_FLAGS, "--help", "-h"], NAME_VALUE_FLAGS);
373
+ const [repoName] = requirePositionalCount(a, NAME_VALUE_FLAGS, {
374
+ min: 1, max: 1, command: "run402 repos name <name> [--project <id>]", missing: "run402 repos name <name>: a name is required",
375
+ });
376
+ const projectId = resolveProjectId(flagValue(a, "--project"));
377
+ try {
378
+ const result = await getSdk().projects.setRepoName(projectId, repoName);
379
+ let address = null;
380
+ try {
381
+ const owningOrg = await resolveOwningOrgId(projectId);
382
+ const orgSlug = owningOrg ? (await getSdk().org(owningOrg).get()).slug : null;
383
+ if (orgSlug) address = gitvaultRemoteUrlForRepo(orgSlug, result.repo_name);
384
+ } catch {
385
+ // The claim itself already succeeded — a failed address-preview lookup is never fatal.
386
+ }
387
+ console.log(JSON.stringify({ ...result, address }, null, 2));
388
+ console.error(
389
+ result.previous_repo_name && result.previous_repo_name !== result.repo_name
390
+ ? `renamed from "${result.previous_repo_name}" to "${result.repo_name}"`
391
+ : `name "${result.repo_name}" claimed for ${projectId}`,
392
+ );
393
+ if (address) console.error(`address: ${address}`);
394
+ else console.error("this org has no slug yet — claim one with `run402 org slug <slug>` to get a full run402::<slug>/<name> address");
395
+ } catch (err) {
396
+ reportSdkError(err);
397
+ }
398
+ }
399
+
300
400
  export async function run(sub, args) {
301
401
  const argv = Array.isArray(args) ? args : [];
302
402
  if (!sub || hasHelp([sub, ...argv])) {
@@ -316,6 +416,10 @@ export async function run(sub, args) {
316
416
  await del(argv);
317
417
  break;
318
418
  }
419
+ case "name": {
420
+ await name(argv);
421
+ break;
422
+ }
319
423
  default:
320
424
  failUnknownSubcommand("repos", sub, {
321
425
  hint: "Run `run402 repos --help` for usage.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "run402",
3
- "version": "4.37.1",
3
+ "version": "4.38.0",
4
4
  "description": "CLI for Run402 — full-stack backend infrastructure for AI agents: Postgres, auth, storage, serverless functions and atomic deploys. Paid with x402/MPP. Includes $0.03 image generation.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -363,6 +363,6 @@ export type * from "./namespaces/wallets.js";
363
363
  export * from "./namespaces/gitvault.crypto.js";
364
364
  export type * from "./namespaces/gitvault.crypto.js";
365
365
  export type * from "./namespaces/gitvault.types.js";
366
- export { Gitvault, gitvaultRemoteUrl, parseGitvaultRemoteUrl, GITVAULT_LOSS_WARNING_THRESHOLDS, gitvaultLossWarningTrip, gitvaultLossWarningTripped, gitvaultLossWarningMessage, } from "./namespaces/gitvault.js";
366
+ export { Gitvault, gitvaultRemoteUrl, gitvaultRemoteUrlForRepo, parseGitvaultRemoteUrl, gitvaultRemoteAddressForm, gitvaultSlugReleasedInfo, GITVAULT_LOSS_WARNING_THRESHOLDS, gitvaultLossWarningTrip, gitvaultLossWarningTripped, gitvaultLossWarningMessage, } from "./namespaces/gitvault.js";
367
367
  export type * from "./namespaces/gitvault.js";
368
368
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/sdk/dist/index.js CHANGED
@@ -393,5 +393,5 @@ export { ScopedWallet } from "./namespaces/wallets.js";
393
393
  // noble + @hpke/core, no I/O. The keystore + creation journal live under
394
394
  // `@run402/sdk/node`.
395
395
  export * from "./namespaces/gitvault.crypto.js";
396
- export { Gitvault, gitvaultRemoteUrl, parseGitvaultRemoteUrl, GITVAULT_LOSS_WARNING_THRESHOLDS, gitvaultLossWarningTrip, gitvaultLossWarningTripped, gitvaultLossWarningMessage, } from "./namespaces/gitvault.js";
396
+ export { Gitvault, gitvaultRemoteUrl, gitvaultRemoteUrlForRepo, parseGitvaultRemoteUrl, gitvaultRemoteAddressForm, gitvaultSlugReleasedInfo, GITVAULT_LOSS_WARNING_THRESHOLDS, gitvaultLossWarningTrip, gitvaultLossWarningTripped, gitvaultLossWarningMessage, } from "./namespaces/gitvault.js";
397
397
  //# sourceMappingURL=index.js.map