percher 0.5.24 → 1.0.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 (101) hide show
  1. package/LICENSE +132 -0
  2. package/THIRD-PARTY-NOTICES.txt +1228 -0
  3. package/dist/bin/percher.js +64485 -72730
  4. package/dist/package.json +10 -8
  5. package/dist/src/commands/account.js +5 -5
  6. package/dist/src/commands/account.js.map +1 -1
  7. package/dist/src/commands/admin.d.ts.map +1 -1
  8. package/dist/src/commands/admin.js +180 -15
  9. package/dist/src/commands/admin.js.map +1 -1
  10. package/dist/src/commands/analytics.js +1 -1
  11. package/dist/src/commands/apps.js +2 -2
  12. package/dist/src/commands/auth.js +1 -1
  13. package/dist/src/commands/data.js +1 -1
  14. package/dist/src/commands/deploys.d.ts.map +1 -1
  15. package/dist/src/commands/deploys.js +24 -2
  16. package/dist/src/commands/deploys.js.map +1 -1
  17. package/dist/src/commands/env.js +3 -3
  18. package/dist/src/commands/export.js +1 -1
  19. package/dist/src/commands/github.js +1 -1
  20. package/dist/src/commands/hooks.js +1 -1
  21. package/dist/src/commands/migrate.js +1 -1
  22. package/dist/src/commands/sharing.js +1 -1
  23. package/dist/src/commands/status.js +1 -1
  24. package/dist/src/commands/token.js +1 -1
  25. package/dist/src/commands/transfers.js +1 -1
  26. package/dist/src/context.js +3 -3
  27. package/dist/src/index.js +21 -21
  28. package/dist/src/version-check.d.ts +2 -0
  29. package/dist/src/version-check.d.ts.map +1 -1
  30. package/dist/src/version-check.js +23 -2
  31. package/dist/src/version-check.js.map +1 -1
  32. package/dist/templates/LICENSE +14 -0
  33. package/dist/templates/astro/Dockerfile +51 -35
  34. package/dist/templates/astro/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  35. package/dist/templates/bun/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  36. package/dist/templates/capsule/Dockerfile +30 -12
  37. package/dist/templates/capsule/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  38. package/dist/templates/django/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  39. package/dist/templates/django/percher.toml +1 -0
  40. package/dist/templates/dotnet/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  41. package/dist/templates/eleventy/Dockerfile +51 -35
  42. package/dist/templates/eleventy/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  43. package/dist/templates/elysia/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  44. package/dist/templates/express/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  45. package/dist/templates/express/package.json +2 -1
  46. package/dist/templates/fastify/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  47. package/dist/templates/fastify/package.json +2 -1
  48. package/dist/templates/flask/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  49. package/dist/templates/flask/percher.toml +1 -0
  50. package/dist/templates/flask/requirements.txt +1 -0
  51. package/dist/templates/go/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  52. package/dist/templates/hono/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  53. package/dist/templates/hono/index.ts +4 -2
  54. package/dist/templates/hono/package.json +3 -1
  55. package/dist/templates/htmx/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  56. package/dist/templates/htmx/package.json +1 -1
  57. package/dist/templates/hugo/Dockerfile +49 -33
  58. package/dist/templates/hugo/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  59. package/dist/templates/java/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  60. package/dist/templates/laravel/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  61. package/dist/templates/nextjs/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  62. package/dist/templates/node/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  63. package/dist/templates/nuxt/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  64. package/dist/templates/phoenix/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  65. package/dist/templates/preact/Dockerfile +51 -35
  66. package/dist/templates/preact/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  67. package/dist/templates/python/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  68. package/dist/templates/rails/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  69. package/dist/templates/remix/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  70. package/dist/templates/remix/app/routes/health.tsx +3 -1
  71. package/dist/templates/rust/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  72. package/dist/templates/solid/Dockerfile +51 -35
  73. package/dist/templates/solid/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  74. package/dist/templates/static/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  75. package/dist/templates/sveltekit/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  76. package/dist/templates/sveltekit/package.json +1 -1
  77. package/dist/templates/vite-react/Dockerfile +51 -35
  78. package/dist/templates/vite-react/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  79. package/dist/templates/vite-vue/Dockerfile +51 -35
  80. package/dist/templates/vite-vue/PERCHER-TEMPLATE-LICENSE.txt +14 -0
  81. package/package.json +10 -8
  82. package/dist/context.d.ts +0 -3
  83. package/dist/context.d.ts.map +0 -1
  84. package/dist/context.js +0 -31
  85. package/dist/context.js.map +0 -1
  86. package/dist/index.d.ts +0 -3
  87. package/dist/index.d.ts.map +0 -1
  88. package/dist/index.js +0 -385
  89. package/dist/index.js.map +0 -1
  90. package/dist/open.d.ts +0 -2
  91. package/dist/open.d.ts.map +0 -1
  92. package/dist/open.js +0 -16
  93. package/dist/open.js.map +0 -1
  94. package/dist/output.d.ts +0 -2
  95. package/dist/output.d.ts.map +0 -1
  96. package/dist/output.js +0 -44
  97. package/dist/output.js.map +0 -1
  98. package/dist/prompt.d.ts +0 -4
  99. package/dist/prompt.d.ts.map +0 -1
  100. package/dist/prompt.js +0 -14
  101. package/dist/prompt.js.map +0 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "percher",
3
- "version": "0.5.24",
3
+ "version": "1.0.0",
4
4
  "description": "CLI for the Percher hosting platform — publish apps with one command",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,31 +16,33 @@
16
16
  }
17
17
  },
18
18
  "files": [
19
- "dist"
19
+ "dist",
20
+ "THIRD-PARTY-NOTICES.txt"
20
21
  ],
21
22
  "publishConfig": {
22
23
  "access": "public"
23
24
  },
24
25
  "scripts": {
25
- "build": "tsc -p tsconfig.json && bun build bin/percher.ts --outfile dist/bin/percher.js --target node --format esm && node scripts/copy-templates.mjs && node -e \"require('fs').chmodSync('dist/bin/percher.js',0o755)\"",
26
+ "build": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json && bun build bin/percher.ts --outfile dist/bin/percher.js --target node --format esm --metafile=bundle-meta.json && node ../../scripts/bundle-notices.mjs . bundle-meta.json && node scripts/copy-templates.mjs && node -e \"require('fs').chmodSync('dist/bin/percher.js',0o755)\"",
26
27
  "test": "bun test",
27
28
  "typecheck": "tsc --noEmit"
28
29
  },
29
30
  "dependencies": {
30
- "@percher/client": "^0.3.1",
31
- "@percher/core": "^0.4.29",
32
- "@percher/toml": "^0.1.11",
31
+ "@percher/client": "^1.0.0",
32
+ "@percher/core": "^1.0.0",
33
+ "@percher/toml": "^1.0.0",
33
34
  "cac": "^7.0.0",
34
35
  "picocolors": "^1.1.1"
35
36
  },
36
37
  "devDependencies": {
37
- "bun-types": "^1.1.0"
38
+ "bun-types": "^1.1.0",
39
+ "tsc-alias": "^1.8.17"
38
40
  },
39
41
  "engines": {
40
42
  "bun": ">=1.0.0",
41
43
  "node": ">=22.0.0"
42
44
  },
43
- "license": "MIT",
45
+ "license": "FSL-1.1-MIT",
44
46
  "author": "Mattias Malmborg",
45
47
  "repository": {
46
48
  "type": "git",
@@ -1,10 +1,10 @@
1
1
  import * as core from "@percher/core";
2
2
  import pc from "picocolors";
3
- import { SilentExitError, writeLine } from "../cli-utils";
3
+ import { SilentExitError, writeLine } from "../cli-utils.js";
4
4
  /**
5
- * FUTURE_account-deletion-guards Fas 4 — human-readable next-action
5
+ * the account-deletion-guards plan, Fas 4 — human-readable next-action
6
6
  * per blocker kind. Mirrors the plan's "Recovery (Fas 4 MCP)" table
7
- * (docs/plans/FUTURE_account-deletion-guards.md §2.2) so the CLI's
7
+ * (account-deletion-guards plan in docs/plans/, §2.2) so the CLI's
8
8
  * exit messaging matches what the MCP recovery contract will surface
9
9
  * once those tools land.
10
10
  */
@@ -133,7 +133,7 @@ export function registerAccountCommands(cli, ctx) {
133
133
  // Unreachable — handled by parent `account [action] ...` action.
134
134
  });
135
135
  cli
136
- .command("mcp", "Print the MCP server config for AI assistants (Claude Code, Cursor, Windsurf)")
136
+ .command("mcp", "Print local and hosted MCP setup for AI assistants")
137
137
  .option("--json", "Output JSON only (paste-ready)")
138
138
  .action(async (options) => {
139
139
  const result = core.mcp(ctx, {});
@@ -161,7 +161,7 @@ export function registerAccountCommands(cli, ctx) {
161
161
  await writeLine(ctx, pc.dim(note));
162
162
  }
163
163
  await writeLine(ctx, "");
164
- await writeLine(ctx, pc.dim("Once installed, your assistant gets percher_publish + 28 other tools."));
164
+ await writeLine(ctx, pc.dim("Once installed, your assistant can publish and manage apps with Percher tools."));
165
165
  });
166
166
  cli
167
167
  .command("ai-files <action>", "Manage AI-assistant rules files (install | update | status | remove)")
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/commands/account.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/commands/account.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/commands/admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI/B;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAqHlE"}
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/commands/admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI/B;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CA0VlE"}
@@ -1,6 +1,6 @@
1
1
  import * as core from "@percher/core";
2
2
  import pc from "picocolors";
3
- import { SilentExitError, writeLine } from "../cli-utils";
3
+ import { SilentExitError, writeLine } from "../cli-utils.js";
4
4
  /**
5
5
  * FUTURE18 Fas 4 — operator-only `percher admin reconcile-routes`.
6
6
  *
@@ -21,12 +21,134 @@ export function registerAdminCommands(cli, ctx) {
21
21
  // `admin [action]` and add help-only registrations below for
22
22
  // discoverability.
23
23
  cli
24
- .command("admin [action] [...rest]", "Operator commands (admin only): reconcile-routes")
24
+ .command("admin [action] [...rest]", "Operator commands (admin only): reconcile-routes | migrate-networks | legacy-inventory | legacy-audit")
25
25
  .option("--app <name>", "(reconcile-routes) Limit to a single app by name")
26
26
  .option("--app-id <id>", "(reconcile-routes) Limit to a single app by id")
27
27
  .option("--dry-run", "(reconcile-routes) Read-only diff — no Caddy mutations, returns missing/extra/host drift")
28
28
  .option("--json", "(reconcile-routes) Output JSON instead of formatted text")
29
+ .option("--app-ids <ids>", "(migrate-networks) Comma-separated immutable app ids; required with --rollback")
30
+ .option("--limit <n>", "(migrate-networks) Maximum apps, 1..20 (default 5)")
31
+ .option("--rollback", "(migrate-networks) Move explicit --app-ids back to shared networking")
29
32
  .action(async (action, _rest, options) => {
33
+ if (action === "legacy-audit") {
34
+ if (!ctx.client.token) {
35
+ await writeLine(ctx, `${pc.red("✗")} Not logged in. Run: percher login`);
36
+ throw new SilentExitError();
37
+ }
38
+ const result = await core.adminLegacyAudit(ctx);
39
+ const green = core.legacyAuditIsGreen(result);
40
+ if (options.json)
41
+ await writeLine(ctx, JSON.stringify(result, null, 2));
42
+ else {
43
+ await writeLine(ctx, green
44
+ ? `${pc.green("✓")} Zero-legacy audit is green.`
45
+ : `${pc.red("✗")} Zero-legacy audit is RED — the launch gate is not closed.`);
46
+ for (const term of result.conjuncts ?? []) {
47
+ const icon = !term.measured ? pc.red("?") : term.ok ? pc.green("✓") : pc.red("✗");
48
+ const detail = !term.measured
49
+ ? "not measured"
50
+ : term.reasons.length > 0
51
+ ? term.reasons.join(", ")
52
+ : "ok";
53
+ await writeLine(ctx, ` ${icon} ${term.name.padEnd(28)} ${detail}`);
54
+ // A note qualifies a term that PASSED. Printing it under the
55
+ // green tick is the whole point: an exception that only shows up
56
+ // in --json is an exception that was silently subtracted.
57
+ for (const note of term.notes ?? []) {
58
+ await writeLine(ctx, ` ${pc.yellow("!")} ${note}`);
59
+ }
60
+ }
61
+ const c = result.counters;
62
+ if (c) {
63
+ await writeLine(ctx, pc.dim(` counters: runtimes ${c.legacyRuntimeCount}, sidecars ${c.legacyPocketBaseSidecarCount}, topology ${c.legacyTopologyCount}, rollback images ${c.incompatibleRollbackImageCount}, unknown ${c.unknownGenerationCount}`));
64
+ }
65
+ // Owner exceptions are printed whether the audit is green or red,
66
+ // and every entry is named. §11: listed, never silently subtracted.
67
+ for (const entry of result.ownerExceptions?.entries ?? []) {
68
+ const label = entry.matched
69
+ ? pc.yellow("EXCEPTED")
70
+ : pc.dim("STALE (excuses nothing)");
71
+ await writeLine(ctx, ` ${label} ${entry.deployId} — ${entry.reason} (${entry.recordedAt})`);
72
+ }
73
+ for (const id of result.ownerExceptions?.unexcusedDeployIds ?? []) {
74
+ await writeLine(ctx, ` ${pc.red("✗")} incompatible rollback image, no exception: ${id}`);
75
+ }
76
+ for (const name of result.volumes?.unattributed ?? []) {
77
+ await writeLine(ctx, ` ${pc.red("?")} unattributed volume: ${name}`);
78
+ }
79
+ for (const app of result.desiredLiveApps?.missing ?? []) {
80
+ await writeLine(ctx, ` ${pc.red("✗")} desired live app not running: ${app}`);
81
+ }
82
+ }
83
+ if (!green)
84
+ throw new SilentExitError(1);
85
+ return;
86
+ }
87
+ if (action === "legacy-inventory") {
88
+ if (!ctx.client.token) {
89
+ await writeLine(ctx, `${pc.red("✗")} Not logged in. Run: percher login`);
90
+ throw new SilentExitError();
91
+ }
92
+ const result = await core.adminLegacyInventory(ctx);
93
+ if (options.json)
94
+ await writeLine(ctx, JSON.stringify(result, null, 2));
95
+ else {
96
+ const c = result.counters;
97
+ const line = (label, value) => writeLine(ctx, ` ${value === 0 ? pc.green("✓") : pc.red("✗")} ${label} ${value}`);
98
+ await writeLine(ctx, `Fleet inventory (evidence ${result.complete ? "complete" : pc.red("INCOMPLETE")})`);
99
+ await line("legacy runtimes ", c.legacyRuntimeCount);
100
+ await line("legacy PocketBase sidecars", c.legacyPocketBaseSidecarCount);
101
+ await line("legacy topology (apps) ", c.legacyTopologyCount);
102
+ await line("incompatible rollback imgs", c.incompatibleRollbackImageCount);
103
+ await line("unknown / unattributed ", c.unknownGenerationCount);
104
+ // Only the unknown class is enumerated by default. It is the one an
105
+ // operator has to act on before any other number can be believed —
106
+ // and the legacy classes run to hundreds of rows on a full box,
107
+ // which is what --json is for.
108
+ for (const resource of result.resources.filter((r) => r.class === "unknown_unattributed")) {
109
+ await writeLine(ctx, ` ${pc.red("?")} ${resource.kind} ${resource.id} — ${resource.reasons.join(", ")}`);
110
+ }
111
+ }
112
+ if (core.legacyInventoryIsRed(result))
113
+ throw new SilentExitError(1);
114
+ return;
115
+ }
116
+ if (action === "migrate-networks") {
117
+ if (!ctx.client.token) {
118
+ await writeLine(ctx, `${pc.red("✗")} Not logged in. Run: percher login`);
119
+ throw new SilentExitError();
120
+ }
121
+ const appIds = options.appIds
122
+ ?.split(",")
123
+ .map((value) => value.trim())
124
+ .filter(Boolean);
125
+ if (options.rollback && (!appIds || appIds.length === 0)) {
126
+ await writeLine(ctx, `${pc.red("✗")} --rollback requires --app-ids <id,...>; automatic rollback scope is forbidden`);
127
+ throw new SilentExitError(1);
128
+ }
129
+ const result = await core.adminMigrateNetworks(ctx, {
130
+ appIds,
131
+ limit: options.limit === undefined ? undefined : Number(options.limit),
132
+ dryRun: Boolean(options.dryRun),
133
+ direction: options.rollback ? "to-shared" : "to-per-app",
134
+ });
135
+ if (options.json)
136
+ await writeLine(ctx, JSON.stringify(result, null, 2));
137
+ else {
138
+ for (const item of result.results) {
139
+ const icon = ["migrated", "already", "eligible"].includes(item.status)
140
+ ? pc.green("✓")
141
+ : item.status === "skipped"
142
+ ? pc.yellow("!")
143
+ : pc.red("✗");
144
+ await writeLine(ctx, `${icon} [${item.appName}] ${item.status}${item.reason ? ` — ${item.reason}` : ""}`);
145
+ }
146
+ }
147
+ if (result.results.some((item) => item.status === "failed" || item.status === "uncertain")) {
148
+ throw new SilentExitError(1);
149
+ }
150
+ return;
151
+ }
30
152
  if (action === "reconcile-routes") {
31
153
  if (!ctx.client.token) {
32
154
  await writeLine(ctx, `${pc.red("✗")} Not logged in. Run: percher login`);
@@ -39,6 +161,9 @@ export function registerAdminCommands(cli, ctx) {
39
161
  });
40
162
  if (options.json) {
41
163
  await writeLine(ctx, JSON.stringify(result, null, 2));
164
+ if (options.dryRun && result.launchGateReady !== true) {
165
+ throw new SilentExitError(1);
166
+ }
42
167
  return;
43
168
  }
44
169
  if (options.dryRun) {
@@ -46,24 +171,48 @@ export function registerAdminCommands(cli, ctx) {
46
171
  const hostDrift = result.missingHost ?? 0;
47
172
  const extra = result.extraRoute ?? 0;
48
173
  const drift = result.dryRunDrift ?? [];
49
- if (missing === 0 && hostDrift === 0 && extra === 0) {
50
- await writeLine(ctx, `${pc.green("✓")} No drift — Caddy matches expected routes.`);
174
+ if (result.tenantDenyAtIndexZero !== true) {
175
+ await writeLine(ctx, `${pc.red("✗")} tenant-supernet deny is missing, displaced or unverified at Caddy route index 0 — no launch all-clear.`);
176
+ }
177
+ const topology = result.tenantTopologyAudit;
178
+ if (topology?.topologyReady !== true) {
179
+ await writeLine(ctx, `${pc.red("✗")} tenant topology audit is red or unavailable — no launch all-clear.`);
180
+ for (const finding of topology?.findings ?? []) {
181
+ const target = finding.network ?? finding.containerId ?? finding.appId ?? "fleet";
182
+ await writeLine(ctx, ` ${pc.red("✗")} ${finding.code} [${target}] — ${finding.detail}`);
183
+ }
184
+ }
185
+ if (options.app || options.appId) {
186
+ await writeLine(ctx, `${pc.red("✗")} a filtered route diff cannot prove the whole-fleet launch gate.`);
187
+ }
188
+ if (result.launchGateReady === true) {
189
+ await writeLine(ctx, `${pc.green("✓")} Whole-fleet launch audit is clean.`);
51
190
  return;
52
191
  }
53
- await writeLine(ctx, `${pc.yellow("!")} drift: ${missing} missing route(s), ${hostDrift} missing host(s), ${extra} extra route(s)`);
54
- for (const d of drift) {
55
- const label = d.kind === "missing_route"
56
- ? pc.red("MISSING")
57
- : d.kind === "missing_host"
58
- ? pc.yellow("HOST_DRIFT")
59
- : pc.dim("EXTRA");
60
- const target = d.appName ? `[${d.appName}] ` : "";
61
- await writeLine(ctx, ` ${label} ${target}${d.routeId} (${d.routeType}) — ${d.hosts.join(", ")}`);
192
+ if (missing > 0 || hostDrift > 0 || extra > 0) {
193
+ await writeLine(ctx, `${pc.yellow("!")} drift: ${missing} missing route(s), ${hostDrift} missing host(s), ${extra} extra route(s)`);
194
+ for (const d of drift) {
195
+ const label = d.kind === "missing_route"
196
+ ? pc.red("MISSING")
197
+ : d.kind === "missing_host"
198
+ ? pc.yellow("HOST_DRIFT")
199
+ : pc.dim("EXTRA");
200
+ const target = d.appName ? `[${d.appName}] ` : "";
201
+ await writeLine(ctx, ` ${label} ${target}${d.routeId} (${d.routeType}) — ${d.hosts.join(", ")}`);
202
+ }
62
203
  }
63
204
  await writeLine(ctx, pc.dim(`Repair: percher admin reconcile-routes${options.app ? ` --app ${options.app}` : ""}`));
64
- return;
205
+ throw new SilentExitError(1);
65
206
  }
66
207
  // Live reconcile.
208
+ const skipped = result.skippedApps?.length ?? 0;
209
+ if (skipped > 0) {
210
+ await writeLine(ctx, `${pc.yellow("!")} ${skipped} app(s) skipped this tick (mutation lock held) — re-run to cover them`);
211
+ }
212
+ const uncertain = result.uncertainRoutes?.length ?? 0;
213
+ if (uncertain > 0) {
214
+ await writeLine(ctx, `${pc.yellow("!")} ${uncertain} route(s) unchecked this tick (multi-instance membership could not be verified) — re-run to cover them`);
215
+ }
67
216
  if (result.errors === 0) {
68
217
  await writeLine(ctx, `${pc.green("✓")} reconciled ${result.reconciled}, recovered ${result.recovered}, stale ${result.stale}, errors 0`);
69
218
  return;
@@ -74,7 +223,7 @@ export function registerAdminCommands(cli, ctx) {
74
223
  }
75
224
  throw new SilentExitError(1);
76
225
  }
77
- throw new Error(`Unknown admin action "${action ?? ""}". Use: reconcile-routes.`);
226
+ throw new Error(`Unknown admin action "${action ?? ""}". Use: reconcile-routes, migrate-networks, legacy-inventory or legacy-audit.`);
78
227
  });
79
228
  // Help-only registration so `percher --help` advertises the
80
229
  // subcommand. cac falls through to the parent `admin [action] ...`
@@ -88,5 +237,21 @@ export function registerAdminCommands(cli, ctx) {
88
237
  .action(async () => {
89
238
  // Unreachable — handled by parent `admin [action] ...`.
90
239
  });
240
+ cli
241
+ .command("admin migrate-networks", "(admin only) Audit or migrate standing apps to worker-owned tenant networks")
242
+ .option("--app-ids <ids>", "Comma-separated immutable app ids; required with --rollback")
243
+ .option("--limit <n>", "Maximum apps, 1..20")
244
+ .option("--dry-run", "Read-only eligibility report")
245
+ .option("--rollback", "Move explicit --app-ids back to shared networking")
246
+ .option("--json", "Output JSON")
247
+ .action(async () => { });
248
+ cli
249
+ .command("admin legacy-inventory", "(admin only) Classify every Percher-owned runtime resource as current, legacy or unknown")
250
+ .option("--json", "Output JSON instead of the five counters")
251
+ .action(async () => { });
252
+ cli
253
+ .command("admin legacy-audit", "(admin only) The zero-legacy launch gate — exits 1 unless every term is measured and green")
254
+ .option("--json", "Output JSON instead of the conjunction")
255
+ .action(async () => { });
91
256
  }
92
257
  //# sourceMappingURL=admin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/commands/admin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/commands/admin.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as core from "@percher/core";
2
2
  import pc from "picocolors";
3
- import { writeLine } from "../cli-utils";
3
+ import { writeLine } from "../cli-utils.js";
4
4
  export function registerAnalyticsCommands(cli, ctx) {
5
5
  cli
6
6
  .command("analytics [app]", "Show visitor analytics for an app")
@@ -1,6 +1,6 @@
1
1
  import * as core from "@percher/core";
2
2
  import pc from "picocolors";
3
- import { formatBytes, SilentExitError, writeLine } from "../cli-utils";
3
+ import { formatBytes, SilentExitError, writeLine } from "../cli-utils.js";
4
4
  /**
5
5
  * FUTURE12 Phase 8 — exhaustiveness tripwire for the publish-handler
6
6
  * switch. Adding a new value to `PublishStatus` without a matching
@@ -334,7 +334,7 @@ export function registerAppsCommands(cli, ctx) {
334
334
  .option("--no-cache", "Skip image-cache lookup and force a fresh build (use when you suspect cached image is stale)")
335
335
  .option("--anonymous", "Publish without an account — a 72h sandbox you can claim later (where enabled)")
336
336
  .action(async (options) => {
337
- const { detectCiBranchMessage } = await import("../ci-env");
337
+ const { detectCiBranchMessage } = await import("../ci-env.js");
338
338
  let messageOverride = options.message;
339
339
  if (options.preview && !options.message) {
340
340
  const ci = detectCiBranchMessage(process.env);
@@ -1,6 +1,6 @@
1
1
  import * as core from "@percher/core";
2
2
  import pc from "picocolors";
3
- import { SilentExitError, writeLine } from "../cli-utils";
3
+ import { SilentExitError, writeLine } from "../cli-utils.js";
4
4
  export function registerAuthCommands(cli, ctx) {
5
5
  cli
6
6
  .command("login", "Authenticate with Percher")
@@ -1,6 +1,6 @@
1
1
  import * as core from "@percher/core";
2
2
  import pc from "picocolors";
3
- import { firstNonFlagAfter, printSuperuserResetResult, writeLine } from "../cli-utils";
3
+ import { firstNonFlagAfter, printSuperuserResetResult, writeLine } from "../cli-utils.js";
4
4
  export function registerDataCommands(cli, ctx, argv) {
5
5
  cli
6
6
  // The trailing `[...rest]` is a variadic absorber that exists only
@@ -1 +1 @@
1
- {"version":3,"file":"deploys.d.ts","sourceRoot":"","sources":["../../../src/commands/deploys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAW/B,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAgYpF"}
1
+ {"version":3,"file":"deploys.d.ts","sourceRoot":"","sources":["../../../src/commands/deploys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAW/B,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA+ZpF"}
@@ -1,6 +1,6 @@
1
1
  import * as core from "@percher/core";
2
2
  import pc from "picocolors";
3
- import { firstNonFlagAfter, formatDeployTimestamp, formatStatus, runDeploysInspect, SilentExitError, writeLine, } from "../cli-utils";
3
+ import { firstNonFlagAfter, formatDeployTimestamp, formatStatus, runDeploysInspect, SilentExitError, writeLine, } from "../cli-utils.js";
4
4
  export function registerDeploysCommands(cli, ctx, argv) {
5
5
  cli
6
6
  // The trailing `[...rest]` is a variadic absorber that exists only
@@ -76,12 +76,14 @@ export function registerDeploysCommands(cli, ctx, argv) {
76
76
  cli
77
77
  .command("rollback [sha] [app]", "Roll back to a previous version (bare: pick from the 5 most recent)")
78
78
  .option("--last-good", "Roll back to the most recent version that went live without crash-looping")
79
+ .option("--rebuild", "Build this version again from its source when its image is no longer kept")
79
80
  .option("--app <name>", "App name (defaults to percher.toml in cwd)")
80
81
  .action(async (sha, app, options) => {
81
82
  const result = await core.rollback(ctx, {
82
83
  app: options.app ?? app,
83
84
  commitSha: sha,
84
85
  toLastGood: Boolean(options.lastGood),
86
+ rebuild: Boolean(options.rebuild),
85
87
  });
86
88
  await writeLine(ctx, `${pc.green("✓")} rolled back to ${result.rolledBackTo.slice(0, 10)} (status: ${result.status})`);
87
89
  });
@@ -172,6 +174,12 @@ export function registerDeploysCommands(cli, ctx, argv) {
172
174
  .command("versions [app]", "List deployed versions for an app")
173
175
  .action(async (app) => {
174
176
  const list = await core.versions(ctx, { app });
177
+ // The rollback boundary's verdict, marked per row and explained once per
178
+ // distinct reason underneath. Inline explanations would repeat the same
179
+ // sentence on every expired row — a retention window of three makes most
180
+ // of a listing expired — so the reasons are collected and printed as a
181
+ // key, which still leaves no marker on the page without its meaning.
182
+ const reasons = new Map();
175
183
  for (const v of list) {
176
184
  // Print FULL SHA — `percher rollback <sha>` passes the
177
185
  // input straight through to Forgejo's `git fetch <ref>`,
@@ -193,7 +201,18 @@ export function registerDeploysCommands(cli, ctx, argv) {
193
201
  };
194
202
  const label = v.channel ? (channelLabels[v.channel] ?? v.channel) : null;
195
203
  const suffix = label ? ` · via ${label}` : "";
196
- await writeLine(ctx, `${v.sha} ${v.timestamp} ${message}${suffix}`);
204
+ const target = v.rollbackTarget;
205
+ const marker = target && target.mode !== "in-window"
206
+ ? target.mode === "rebuild"
207
+ ? "[rebuild required]"
208
+ : "[not a rollback target]"
209
+ : null;
210
+ if (marker && target)
211
+ reasons.set(marker, target.explanation);
212
+ await writeLine(ctx, `${v.sha} ${v.timestamp} ${message}${suffix}${marker ? ` ${marker}` : ""}`);
213
+ }
214
+ for (const [marker, explanation] of reasons) {
215
+ await writeLine(ctx, `\n${marker} ${explanation}`);
197
216
  }
198
217
  });
199
218
  // FUTURE25 Fas 2 — file diff between two deploy versions.
@@ -244,6 +263,9 @@ export function registerDeploysCommands(cli, ctx, argv) {
244
263
  throw new Error("Deploy ID required. Usage: percher preview promote <id>");
245
264
  const result = await ctx.client.apps.promotePreview(appRef, arg);
246
265
  await writeLine(ctx, `${pc.green("✓")} Preview promoted to live. Status: ${result.status}`);
266
+ if (result.routeSwapDeferred) {
267
+ await writeLine(ctx, `${pc.yellow("!")} The live route could not move yet - the promotion is committed and the route converges via reconcile within minutes; until then the previous version keeps serving.`);
268
+ }
247
269
  }
248
270
  else if (action === "discard") {
249
271
  if (!arg)