@percher/core 0.4.0 → 0.4.2

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 (252) hide show
  1. package/dist/commands/account.d.ts +24 -14
  2. package/dist/commands/account.d.ts.map +1 -1
  3. package/dist/commands/account.js +17 -4
  4. package/dist/commands/account.js.map +1 -1
  5. package/dist/commands/admin-reconcile-routes.d.ts +18 -0
  6. package/dist/commands/admin-reconcile-routes.d.ts.map +1 -0
  7. package/dist/commands/admin-reconcile-routes.js +22 -0
  8. package/dist/commands/admin-reconcile-routes.js.map +1 -0
  9. package/dist/commands/ai-files.d.ts +5 -17
  10. package/dist/commands/ai-files.d.ts.map +1 -1
  11. package/dist/commands/ai-files.js +3 -4
  12. package/dist/commands/ai-files.js.map +1 -1
  13. package/dist/commands/alerts.d.ts +70 -0
  14. package/dist/commands/alerts.d.ts.map +1 -0
  15. package/dist/commands/alerts.js +82 -0
  16. package/dist/commands/alerts.js.map +1 -0
  17. package/dist/commands/app-resources.d.ts +30 -0
  18. package/dist/commands/app-resources.d.ts.map +1 -0
  19. package/dist/commands/app-resources.js +34 -0
  20. package/dist/commands/app-resources.js.map +1 -0
  21. package/dist/commands/app-topology.d.ts +18 -0
  22. package/dist/commands/app-topology.d.ts.map +1 -0
  23. package/dist/commands/app-topology.js +25 -0
  24. package/dist/commands/app-topology.js.map +1 -0
  25. package/dist/commands/billing.d.ts +8 -8
  26. package/dist/commands/billing.d.ts.map +1 -1
  27. package/dist/commands/billing.js +1 -1
  28. package/dist/commands/billing.js.map +1 -1
  29. package/dist/commands/continue.d.ts +1 -1
  30. package/dist/commands/create.d.ts +2 -12
  31. package/dist/commands/create.d.ts.map +1 -1
  32. package/dist/commands/create.js +1 -1
  33. package/dist/commands/create.js.map +1 -1
  34. package/dist/commands/dashboard.d.ts +2 -8
  35. package/dist/commands/dashboard.d.ts.map +1 -1
  36. package/dist/commands/dashboard.js +1 -1
  37. package/dist/commands/dashboard.js.map +1 -1
  38. package/dist/commands/data-export.d.ts +2 -8
  39. package/dist/commands/data-export.d.ts.map +1 -1
  40. package/dist/commands/data-export.js +1 -1
  41. package/dist/commands/data-export.js.map +1 -1
  42. package/dist/commands/data.d.ts +2 -8
  43. package/dist/commands/data.d.ts.map +1 -1
  44. package/dist/commands/data.js +1 -1
  45. package/dist/commands/data.js.map +1 -1
  46. package/dist/commands/delete.d.ts +2 -8
  47. package/dist/commands/delete.d.ts.map +1 -1
  48. package/dist/commands/delete.js +1 -1
  49. package/dist/commands/delete.js.map +1 -1
  50. package/dist/commands/deploys.d.ts +4 -28
  51. package/dist/commands/deploys.d.ts.map +1 -1
  52. package/dist/commands/deploys.js +1 -1
  53. package/dist/commands/deploys.js.map +1 -1
  54. package/dist/commands/dev.d.ts +2 -6
  55. package/dist/commands/dev.d.ts.map +1 -1
  56. package/dist/commands/dev.js +1 -1
  57. package/dist/commands/dev.js.map +1 -1
  58. package/dist/commands/diagnose.d.ts +2 -22
  59. package/dist/commands/diagnose.d.ts.map +1 -1
  60. package/dist/commands/diagnose.js +1 -1
  61. package/dist/commands/diagnose.js.map +1 -1
  62. package/dist/commands/doctor.d.ts +10 -35
  63. package/dist/commands/doctor.d.ts.map +1 -1
  64. package/dist/commands/doctor.js +12 -4
  65. package/dist/commands/doctor.js.map +1 -1
  66. package/dist/commands/domains.d.ts +5 -27
  67. package/dist/commands/domains.d.ts.map +1 -1
  68. package/dist/commands/domains.js +1 -1
  69. package/dist/commands/domains.js.map +1 -1
  70. package/dist/commands/env-scan.js +1 -1
  71. package/dist/commands/env-scan.js.map +1 -1
  72. package/dist/commands/env.d.ts +4 -20
  73. package/dist/commands/env.d.ts.map +1 -1
  74. package/dist/commands/env.js +1 -1
  75. package/dist/commands/env.js.map +1 -1
  76. package/dist/commands/export.d.ts +6 -15
  77. package/dist/commands/export.d.ts.map +1 -1
  78. package/dist/commands/export.js +1 -1
  79. package/dist/commands/forgejo.d.ts +45 -0
  80. package/dist/commands/forgejo.d.ts.map +1 -0
  81. package/dist/commands/forgejo.js +125 -0
  82. package/dist/commands/forgejo.js.map +1 -0
  83. package/dist/commands/generate.d.ts +2 -6
  84. package/dist/commands/generate.d.ts.map +1 -1
  85. package/dist/commands/generate.js +1 -1
  86. package/dist/commands/generate.js.map +1 -1
  87. package/dist/commands/github.d.ts +4 -15
  88. package/dist/commands/github.d.ts.map +1 -1
  89. package/dist/commands/github.js +17 -1
  90. package/dist/commands/github.js.map +1 -1
  91. package/dist/commands/import-project.d.ts +13 -9
  92. package/dist/commands/import-project.d.ts.map +1 -1
  93. package/dist/commands/import-project.js +73 -22
  94. package/dist/commands/import-project.js.map +1 -1
  95. package/dist/commands/init.d.ts +26 -11
  96. package/dist/commands/init.d.ts.map +1 -1
  97. package/dist/commands/init.js +103 -2
  98. package/dist/commands/init.js.map +1 -1
  99. package/dist/commands/insights.d.ts +2 -6
  100. package/dist/commands/insights.d.ts.map +1 -1
  101. package/dist/commands/insights.js +1 -1
  102. package/dist/commands/insights.js.map +1 -1
  103. package/dist/commands/login.d.ts +2 -8
  104. package/dist/commands/login.d.ts.map +1 -1
  105. package/dist/commands/login.js +22 -1
  106. package/dist/commands/login.js.map +1 -1
  107. package/dist/commands/logs.d.ts +25 -10
  108. package/dist/commands/logs.d.ts.map +1 -1
  109. package/dist/commands/logs.js +65 -5
  110. package/dist/commands/logs.js.map +1 -1
  111. package/dist/commands/mcp.d.ts +2 -2
  112. package/dist/commands/mcp.d.ts.map +1 -1
  113. package/dist/commands/mcp.js +1 -1
  114. package/dist/commands/mcp.js.map +1 -1
  115. package/dist/commands/migrate-supabase-map.d.ts +171 -0
  116. package/dist/commands/migrate-supabase-map.d.ts.map +1 -0
  117. package/dist/commands/migrate-supabase-map.js +452 -0
  118. package/dist/commands/migrate-supabase-map.js.map +1 -0
  119. package/dist/commands/migrate-supabase-schema.d.ts +67 -0
  120. package/dist/commands/migrate-supabase-schema.d.ts.map +1 -0
  121. package/dist/commands/migrate-supabase-schema.js +321 -0
  122. package/dist/commands/migrate-supabase-schema.js.map +1 -0
  123. package/dist/commands/migrate-supabase-scripts.d.ts +64 -0
  124. package/dist/commands/migrate-supabase-scripts.d.ts.map +1 -0
  125. package/dist/commands/migrate-supabase-scripts.js +564 -0
  126. package/dist/commands/migrate-supabase-scripts.js.map +1 -0
  127. package/dist/commands/migrate-supabase-sdk.d.ts +133 -0
  128. package/dist/commands/migrate-supabase-sdk.d.ts.map +1 -0
  129. package/dist/commands/migrate-supabase-sdk.js +1119 -0
  130. package/dist/commands/migrate-supabase-sdk.js.map +1 -0
  131. package/dist/commands/migrate-supabase-walker.d.ts +93 -0
  132. package/dist/commands/migrate-supabase-walker.d.ts.map +1 -0
  133. package/dist/commands/migrate-supabase-walker.js +413 -0
  134. package/dist/commands/migrate-supabase-walker.js.map +1 -0
  135. package/dist/commands/migrate-supabase.d.ts +81 -0
  136. package/dist/commands/migrate-supabase.d.ts.map +1 -0
  137. package/dist/commands/migrate-supabase.js +579 -0
  138. package/dist/commands/migrate-supabase.js.map +1 -0
  139. package/dist/commands/open.d.ts +2 -6
  140. package/dist/commands/open.d.ts.map +1 -1
  141. package/dist/commands/open.js +1 -1
  142. package/dist/commands/open.js.map +1 -1
  143. package/dist/commands/publish-api-error.d.ts +46 -0
  144. package/dist/commands/publish-api-error.d.ts.map +1 -0
  145. package/dist/commands/publish-api-error.js +358 -0
  146. package/dist/commands/publish-api-error.js.map +1 -0
  147. package/dist/commands/publish-failure.d.ts.map +1 -1
  148. package/dist/commands/publish-failure.js +11 -2
  149. package/dist/commands/publish-failure.js.map +1 -1
  150. package/dist/commands/publish.d.ts +40 -17
  151. package/dist/commands/publish.d.ts.map +1 -1
  152. package/dist/commands/publish.js +115 -8
  153. package/dist/commands/publish.js.map +1 -1
  154. package/dist/commands/push.d.ts +2 -12
  155. package/dist/commands/push.d.ts.map +1 -1
  156. package/dist/commands/push.js +2 -2
  157. package/dist/commands/push.js.map +1 -1
  158. package/dist/commands/redeploy.d.ts +2 -8
  159. package/dist/commands/redeploy.d.ts.map +1 -1
  160. package/dist/commands/redeploy.js +2 -2
  161. package/dist/commands/redeploy.js.map +1 -1
  162. package/dist/commands/rename.d.ts +2 -8
  163. package/dist/commands/rename.d.ts.map +1 -1
  164. package/dist/commands/rename.js +1 -1
  165. package/dist/commands/rename.js.map +1 -1
  166. package/dist/commands/reproduce.d.ts +2 -8
  167. package/dist/commands/reproduce.d.ts.map +1 -1
  168. package/dist/commands/reproduce.js +1 -1
  169. package/dist/commands/reproduce.js.map +1 -1
  170. package/dist/commands/reset-superuser.d.ts +2 -16
  171. package/dist/commands/reset-superuser.d.ts.map +1 -1
  172. package/dist/commands/reset-superuser.js +1 -1
  173. package/dist/commands/reset-superuser.js.map +1 -1
  174. package/dist/commands/restore.d.ts +7 -22
  175. package/dist/commands/restore.d.ts.map +1 -1
  176. package/dist/commands/restore.js +1 -1
  177. package/dist/commands/restore.js.map +1 -1
  178. package/dist/commands/resume.d.ts +2 -6
  179. package/dist/commands/resume.d.ts.map +1 -1
  180. package/dist/commands/resume.js +1 -1
  181. package/dist/commands/resume.js.map +1 -1
  182. package/dist/commands/rollback.d.ts +2 -8
  183. package/dist/commands/rollback.d.ts.map +1 -1
  184. package/dist/commands/rollback.js +1 -1
  185. package/dist/commands/rollback.js.map +1 -1
  186. package/dist/commands/sharing.d.ts +48 -0
  187. package/dist/commands/sharing.d.ts.map +1 -0
  188. package/dist/commands/sharing.js +85 -0
  189. package/dist/commands/sharing.js.map +1 -0
  190. package/dist/commands/status.d.ts +2 -6
  191. package/dist/commands/status.d.ts.map +1 -1
  192. package/dist/commands/status.js +1 -1
  193. package/dist/commands/status.js.map +1 -1
  194. package/dist/commands/transfers.d.ts +34 -0
  195. package/dist/commands/transfers.d.ts.map +1 -0
  196. package/dist/commands/transfers.js +62 -0
  197. package/dist/commands/transfers.js.map +1 -0
  198. package/dist/commands/unsuspend.d.ts +2 -6
  199. package/dist/commands/unsuspend.d.ts.map +1 -1
  200. package/dist/commands/unsuspend.js +1 -1
  201. package/dist/commands/unsuspend.js.map +1 -1
  202. package/dist/commands/versions.d.ts +2 -6
  203. package/dist/commands/versions.d.ts.map +1 -1
  204. package/dist/commands/versions.js +1 -1
  205. package/dist/commands/versions.js.map +1 -1
  206. package/dist/commands/wait-deploy.d.ts +2 -12
  207. package/dist/commands/wait-deploy.d.ts.map +1 -1
  208. package/dist/commands/wait-deploy.js +1 -1
  209. package/dist/commands/wait-deploy.js.map +1 -1
  210. package/dist/context.d.ts +15 -0
  211. package/dist/context.d.ts.map +1 -1
  212. package/dist/detect.d.ts +11 -0
  213. package/dist/detect.d.ts.map +1 -1
  214. package/dist/detect.js +31 -8
  215. package/dist/detect.js.map +1 -1
  216. package/dist/env-scan-source.d.ts +8 -1
  217. package/dist/env-scan-source.d.ts.map +1 -1
  218. package/dist/env-scan-source.js +100 -24
  219. package/dist/env-scan-source.js.map +1 -1
  220. package/dist/error-classifier.d.ts +18 -1
  221. package/dist/error-classifier.d.ts.map +1 -1
  222. package/dist/error-classifier.js +171 -9
  223. package/dist/error-classifier.js.map +1 -1
  224. package/dist/errors.d.ts +1 -1
  225. package/dist/errors.d.ts.map +1 -1
  226. package/dist/errors.js.map +1 -1
  227. package/dist/index.d.ts +64 -49
  228. package/dist/index.d.ts.map +1 -1
  229. package/dist/index.js +57 -42
  230. package/dist/index.js.map +1 -1
  231. package/dist/plans.d.ts +86 -8
  232. package/dist/plans.d.ts.map +1 -1
  233. package/dist/plans.js +113 -24
  234. package/dist/plans.js.map +1 -1
  235. package/dist/recovery.d.ts +73 -3
  236. package/dist/recovery.d.ts.map +1 -1
  237. package/dist/recovery.js +36 -0
  238. package/dist/recovery.js.map +1 -1
  239. package/dist/static-docker.d.ts +77 -0
  240. package/dist/static-docker.d.ts.map +1 -0
  241. package/dist/static-docker.js +105 -0
  242. package/dist/static-docker.js.map +1 -0
  243. package/dist/tarball.js +1 -1
  244. package/dist/tarball.js.map +1 -1
  245. package/dist/templates/ai-files/cursor-percher-mdc.d.ts.map +1 -1
  246. package/dist/templates/ai-files/cursor-percher-mdc.js +12 -9
  247. package/dist/templates/ai-files/cursor-percher-mdc.js.map +1 -1
  248. package/dist/templates.js +11 -11
  249. package/dist/templates.js.map +1 -1
  250. package/dist/watcher.js +1 -1
  251. package/dist/watcher.js.map +1 -1
  252. package/package.json +6 -2
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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"}
package/dist/plans.d.ts CHANGED
@@ -1,9 +1,38 @@
1
1
  export type PlanId = "free" | "starter" | "maker" | "pro";
2
+ /**
3
+ * Disk-pool symmetry (Phase 1) — the disk footprint (MB) charged for
4
+ * a PocketBase app that has no measured volume sample yet. A new PB
5
+ * volume starts near-empty; this is the accounting placeholder until
6
+ * the PB-volume sampler records a real size. Same value across all
7
+ * tiers — it's a property of an empty PB volume, not of the plan.
8
+ * Pool accounting then tracks the measured size; the tier
9
+ * `diskPoolMb` is the real ceiling. See `PlanLimits.storageMb`.
10
+ */
11
+ export declare const PB_INITIAL_FOOTPRINT_MB = 256;
2
12
  export interface PlanLimits {
13
+ /**
14
+ * Hard cap on app count per account, enforced at creation. Acts as
15
+ * anti-abuse backstop; pool dimensions are the real resource
16
+ * constraint. Enforcement lives in `packages/api/src/routes/apps.ts`
17
+ * (responds 403 `APP_LIMIT_REACHED` when the cap is hit).
18
+ */
3
19
  apps: number;
4
20
  deploysPerMonth: number | "unlimited";
5
21
  deploysPerHour: number;
22
+ /**
23
+ * Per-app default RAM allocation when the user doesn't specify
24
+ * `[resources].memory` in percher.toml. Pool-style enforcement
25
+ * (FUTURE20 Fas 3) replaces the old "this is a hard ceiling"
26
+ * semantics: a user can deploy an app of any size as long as
27
+ * Σ(allocated across their apps) ≤ `ramPoolMb`. Format mirrors
28
+ * the historical "256mb" / "1gb" strings parsed by `parseMemory`.
29
+ */
6
30
  memory: string;
31
+ /**
32
+ * Per-app default vCPU allocation when the user doesn't specify
33
+ * `[resources].cpu`. Same pool semantics as `memory` — sum across
34
+ * user's apps must fit `vcpuPool`.
35
+ */
7
36
  cpu: number;
8
37
  pids: number;
9
38
  activePreviewsPerApp: number;
@@ -20,16 +49,48 @@ export interface PlanLimits {
20
49
  buildLogRetentionDays: number;
21
50
  /** Max user-defined cron jobs (Phase 5.3) */
22
51
  cronJobs: number;
23
- /** Object storage quota in MB (Phase 5.1 — prep, not yet enforced) */
52
+ /**
53
+ * Initial disk footprint in MB charged for a `data.mode =
54
+ * "pocketbase"` app that has no measured volume sample yet (a
55
+ * freshly-created, still-empty PB volume).
56
+ *
57
+ * Disk-pool symmetry (Phase 1, 2026-05-24): this is NO LONGER the
58
+ * whole-pool worst-case reservation it used to be. Pool accounting
59
+ * now sums the MEASURED PB volume size (`app_pb_volume_samples`,
60
+ * fed by the PB-volume sampler) per app against `diskPoolMb`; this
61
+ * footprint is only the placeholder used until the first sample
62
+ * lands. Per-app disk is elastic — a volume grows freely with its
63
+ * data up to the remaining pool. The tier pool (`diskPoolMb`) is
64
+ * the only real ceiling. NOT a UI-surfaced per-app cap.
65
+ */
24
66
  storageMb: number;
25
67
  /** Max parallel container instances per app (Phase 6.1) */
26
68
  instances: number;
27
- /** SLA uptime target (Phase 8.3). null = no SLA for this tier. */
28
- slaUptime: string | null;
29
- /** Support response target (Phase 8.3). null = community support only. */
30
- supportResponseTime: string | null;
31
69
  /** Per-app KV store size cap in MB (Phase 5.4) */
32
70
  kvStorageMb: number;
71
+ /**
72
+ * FUTURE20 Fas 3 — total RAM in MB the user can commit across
73
+ * ALL their apps × instances. Hard cap enforced at deploy +
74
+ * autoscale time. `apps × memory × instances` is the worst-case
75
+ * if the user fills every slot at the per-app default; the pool
76
+ * is the actually-sellable total per tier.
77
+ */
78
+ ramPoolMb: number;
79
+ /**
80
+ * FUTURE20 Fas 3 — total vCPU the user can commit across all
81
+ * their apps × instances. Hard cap; same dimension as `cpu` per
82
+ * app but enforced as a sum. Box-level oversubscription is OK
83
+ * (kernel time-shares; we monitor cgroup throttling); per-account
84
+ * pool is the contract with the user.
85
+ */
86
+ vcpuPool: number;
87
+ /**
88
+ * FUTURE20 Fas 3 — total disk in MB the user can commit across
89
+ * all their app data + PB sidecar volumes. Tracked at deploy
90
+ * time; soft-warned today (PB volumes don't have docker quotas
91
+ * wired yet), hard-enforced when a new app would exceed it.
92
+ */
93
+ diskPoolMb: number;
33
94
  /**
34
95
  * Uptime probe interval in seconds. 0 disables external uptime
35
96
  * monitoring entirely (Free tier). Non-zero values become the
@@ -63,6 +124,17 @@ export interface PlanInfo {
63
124
  priceEur: number;
64
125
  limits: PlanLimits;
65
126
  }
127
+ /**
128
+ * Pool sizes are derived from `docs/operations/capacity-model.md`'s
129
+ * "Konkreta startpooler" table. They are the *sellable* totals per
130
+ * tier — the user can fill them with any mix of apps × sizes as
131
+ * long as the sum fits. Per-app `memory` / `cpu` are now defaults
132
+ * (used when `[resources]` is omitted in percher.toml), not hard
133
+ * ceilings.
134
+ *
135
+ * `apps` is a hard cap (anti-abuse backstop) enforced at app-create;
136
+ * pool dimensions are the load-bearing constraint.
137
+ */
66
138
  export declare const PLAN_CATALOG: Record<PlanId, PlanInfo>;
67
139
  export declare const PLAN_IDS: PlanId[];
68
140
  /** Look up plan limits, defaulting to free for unknown plan ids */
@@ -77,9 +149,15 @@ export declare function getPlanInfo(plan: string): PlanInfo;
77
149
  * plus `Number.POSITIVE_INFINITY` for every cap that would otherwise
78
150
  * cause platform-driven friction when they're operating the
79
151
  * platform: app count, deploy rate, preview slots, custom domains,
80
- * cron jobs, KV size, retention windows. Auto-sleep is forced off
81
- * and inactivity windows are essentially infinite so admin apps
82
- * never get hibernated or suspended underneath them.
152
+ * cron jobs, KV size. Auto-sleep is forced off and inactivity windows
153
+ * are essentially infinite so admin apps never get hibernated or
154
+ * suspended underneath them.
155
+ *
156
+ * EXCEPTION — `deployRetention` inherits Pro's finite 60, NOT infinity:
157
+ * it's storage (old deploy images/tarballs), and infinite made
158
+ * retention-cleanup a no-op for the operator's own apps. See the inline
159
+ * note on the override. (logRetentionDays / buildLogRetentionDays stay
160
+ * infinite — see that note for why.)
83
161
  *
84
162
  * Pure function, no side effects — callers compute `isAdmin` from
85
163
  * the user record (typically `isAdminEmail(user.email)`) and pass
@@ -1 +1 @@
1
- {"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,WAAW,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0EAA0E;IAC1E,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;8DAE0D;IAC1D,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA6HjD,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAgC,MAAM,EAAE,CAAC;AAE9D,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEtD;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAElD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,UAAU,CA0BhF"}
1
+ {"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1D;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,WAAW,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;OAaG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;8DAE0D;IAC1D,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA2KjD,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAgC,MAAM,EAAE,CAAC;AAE9D,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEtD;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAElD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,UAAU,CA0ChF"}
package/dist/plans.js CHANGED
@@ -1,9 +1,30 @@
1
+ /**
2
+ * Disk-pool symmetry (Phase 1) — the disk footprint (MB) charged for
3
+ * a PocketBase app that has no measured volume sample yet. A new PB
4
+ * volume starts near-empty; this is the accounting placeholder until
5
+ * the PB-volume sampler records a real size. Same value across all
6
+ * tiers — it's a property of an empty PB volume, not of the plan.
7
+ * Pool accounting then tracks the measured size; the tier
8
+ * `diskPoolMb` is the real ceiling. See `PlanLimits.storageMb`.
9
+ */
10
+ export const PB_INITIAL_FOOTPRINT_MB = 256;
11
+ /**
12
+ * Pool sizes are derived from `docs/operations/capacity-model.md`'s
13
+ * "Konkreta startpooler" table. They are the *sellable* totals per
14
+ * tier — the user can fill them with any mix of apps × sizes as
15
+ * long as the sum fits. Per-app `memory` / `cpu` are now defaults
16
+ * (used when `[resources]` is omitted in percher.toml), not hard
17
+ * ceilings.
18
+ *
19
+ * `apps` is a hard cap (anti-abuse backstop) enforced at app-create;
20
+ * pool dimensions are the load-bearing constraint.
21
+ */
1
22
  export const PLAN_CATALOG = {
2
23
  free: {
3
24
  label: "Free",
4
25
  priceEur: 0,
5
26
  limits: {
6
- apps: 2,
27
+ apps: 3,
7
28
  deploysPerMonth: 50,
8
29
  deploysPerHour: 12,
9
30
  memory: "256mb",
@@ -19,26 +40,36 @@ export const PLAN_CATALOG = {
19
40
  logRetentionDays: 1,
20
41
  buildLogRetentionDays: 3,
21
42
  cronJobs: 1,
22
- storageMb: 500,
43
+ storageMb: PB_INITIAL_FOOTPRINT_MB,
23
44
  instances: 1,
24
- slaUptime: null,
25
- supportResponseTime: null,
26
45
  kvStorageMb: 10,
27
46
  uptimeIntervalSec: 0,
28
47
  dailyLiveDeploys: 50,
29
48
  dailyPreviewDeploys: 25,
30
49
  userConcurrentDeploys: 2,
50
+ // 512 MB pool / 0.5 vCPU pool / 1 GB disk — per capacity-model
51
+ // CX22 line. Free relies on auto-sleep as the pressure valve,
52
+ // so committed actual usage is ≈ 0 when idle.
53
+ ramPoolMb: 512,
54
+ vcpuPool: 0.5,
55
+ diskPoolMb: 1_000,
31
56
  },
32
57
  },
33
58
  starter: {
34
59
  label: "Starter",
35
60
  priceEur: 3,
36
61
  limits: {
37
- apps: 5,
62
+ apps: 10,
38
63
  deploysPerMonth: 200,
39
64
  deploysPerHour: 30,
40
65
  memory: "512mb",
41
- cpu: 0.5,
66
+ // 0.25 default × 1 instance (Starter cap) = 0.25, fits the 1.0
67
+ // vCPU pool with generous headroom for users to bump per-app
68
+ // cpu in their toml. FUTURE21 rounded the pool from 0.75 to a
69
+ // full vCPU for round-number sellability — CPU isn't a hard
70
+ // capacity gate (kernel time-shares; we monitor cgroup
71
+ // throttling), so a half-vCPU bump costs nothing operationally.
72
+ cpu: 0.25,
42
73
  pids: 256,
43
74
  activePreviewsPerApp: 3,
44
75
  customDomainsPerApp: 2,
@@ -50,26 +81,34 @@ export const PLAN_CATALOG = {
50
81
  logRetentionDays: 7,
51
82
  buildLogRetentionDays: 14,
52
83
  cronJobs: 3,
53
- storageMb: 5000,
84
+ storageMb: PB_INITIAL_FOOTPRINT_MB,
54
85
  instances: 1,
55
- slaUptime: null,
56
- supportResponseTime: "72h email",
57
86
  kvStorageMb: 50,
58
87
  uptimeIntervalSec: 300,
59
88
  dailyLiveDeploys: 100,
60
89
  dailyPreviewDeploys: 50,
61
90
  userConcurrentDeploys: 3,
91
+ // 1.5 GB / 1.0 vCPU / 5 GB disk — capacity-model CX22 line.
92
+ // FUTURE21 rounded vcpuPool from 0.75 → 1.0 for round-number
93
+ // sellability (CPU is time-shared by the kernel, not hard-gated).
94
+ ramPoolMb: 1_536,
95
+ vcpuPool: 1.0,
96
+ diskPoolMb: 5_000,
62
97
  },
63
98
  },
64
99
  maker: {
65
100
  label: "Maker",
66
101
  priceEur: 12,
67
102
  limits: {
68
- apps: 10,
103
+ apps: 20,
69
104
  deploysPerMonth: 500,
70
105
  deploysPerHour: 60,
71
106
  memory: "1gb",
72
- cpu: 1,
107
+ // 0.5 default × 2 instances (Maker cap) = 1.0, fits 2 vCPU
108
+ // pool with 1.0 headroom for users to bump per-app cpu. Was
109
+ // 1 — that saturated the pool with a single app × 2 instances
110
+ // and made the documented multi-app cap meaningless on CPU.
111
+ cpu: 0.5,
73
112
  pids: 512,
74
113
  activePreviewsPerApp: 3,
75
114
  customDomainsPerApp: 5,
@@ -81,26 +120,43 @@ export const PLAN_CATALOG = {
81
120
  logRetentionDays: 30,
82
121
  buildLogRetentionDays: 30,
83
122
  cronJobs: 10,
84
- storageMb: 50_000,
123
+ storageMb: PB_INITIAL_FOOTPRINT_MB,
85
124
  instances: 2,
86
- slaUptime: "99.5%",
87
- supportResponseTime: "24h email",
88
125
  kvStorageMb: 200,
89
126
  uptimeIntervalSec: 60,
90
127
  dailyLiveDeploys: 200,
91
128
  dailyPreviewDeploys: 100,
92
129
  userConcurrentDeploys: 5,
130
+ // 4 GB / 2 vCPU / 25 GB disk — capacity-model CX22 line.
131
+ // FUTURE21 halved diskPoolMb from 50 GB → 25 GB to keep the
132
+ // promised pool fits-on-disk-honestly on CX32 (80 GB local disk
133
+ // minus platform overhead). Disk-pool symmetry (Phase 1) charges
134
+ // MEASURED PB volume sizes against this pool — not one whole-pool
135
+ // reservation per PB app — so a Maker account can run many PB
136
+ // apps until the summed measured disk nears 25 GB (no more
137
+ // 1-PB-app-per-account wall). Worst-case committed RAM (pool +
138
+ // 20 PB-sidecars) = 6.56 GB, which is why Maker is closed on
139
+ // CX22 (committed_budget = 4.4 GB).
140
+ ramPoolMb: 4_096,
141
+ vcpuPool: 2,
142
+ diskPoolMb: 25_000,
93
143
  },
94
144
  },
95
145
  pro: {
96
146
  label: "Pro",
97
147
  priceEur: 29,
98
148
  limits: {
99
- apps: 25,
149
+ apps: 40,
100
150
  deploysPerMonth: "unlimited",
101
151
  deploysPerHour: 120,
102
- memory: "2gb",
103
- cpu: 2,
152
+ memory: "1gb",
153
+ // 1.0 default × 4 instances (Pro cap) = 4.0, fits 4 vCPU pool
154
+ // exactly with no headroom. Was 2 — that would have made any
155
+ // multi-instance deploy exceed the pool at default cpu. Users
156
+ // can drop per-app cpu in toml to leave headroom for more
157
+ // apps, or bump it on a single-instance app up to the full
158
+ // pool (= dedicated 4 vCPU).
159
+ cpu: 1,
104
160
  pids: 1024,
105
161
  activePreviewsPerApp: 3,
106
162
  customDomainsPerApp: 10,
@@ -112,15 +168,26 @@ export const PLAN_CATALOG = {
112
168
  logRetentionDays: 90,
113
169
  buildLogRetentionDays: 90,
114
170
  cronJobs: 25,
115
- storageMb: 200_000,
171
+ storageMb: PB_INITIAL_FOOTPRINT_MB,
116
172
  instances: 4,
117
- slaUptime: "99.9%",
118
- supportResponseTime: "8h email + priority Discord",
119
173
  kvStorageMb: 1000,
120
174
  uptimeIntervalSec: 30,
121
175
  dailyLiveDeploys: 1000,
122
176
  dailyPreviewDeploys: 500,
123
177
  userConcurrentDeploys: 20,
178
+ // 10 GB / 4 vCPU / 75 GB disk — capacity-model CX22 line.
179
+ // FUTURE21 sized diskPoolMb down from 200 GB → 75 GB so the
180
+ // promised pool actually fits on the boxes we run (CX42 has
181
+ // 160 GB local disk — 75 GB pool leaves room for platform +
182
+ // one more paying customer). Disk-pool symmetry (Phase 1) tracks
183
+ // MEASURED PB volume sizes against this pool, so a Pro account
184
+ // runs many PB apps until summed measured disk nears 75 GB
185
+ // (no single-PB-app-per-account reservation). Worst-case
186
+ // committed RAM (pool + 40 PB-sidecars) = 15.36 GB, which is
187
+ // why Pro still requires CX42 minimum.
188
+ ramPoolMb: 10_240,
189
+ vcpuPool: 4,
190
+ diskPoolMb: 75_000,
124
191
  },
125
192
  },
126
193
  };
@@ -141,9 +208,15 @@ export function getPlanInfo(plan) {
141
208
  * plus `Number.POSITIVE_INFINITY` for every cap that would otherwise
142
209
  * cause platform-driven friction when they're operating the
143
210
  * platform: app count, deploy rate, preview slots, custom domains,
144
- * cron jobs, KV size, retention windows. Auto-sleep is forced off
145
- * and inactivity windows are essentially infinite so admin apps
146
- * never get hibernated or suspended underneath them.
211
+ * cron jobs, KV size. Auto-sleep is forced off and inactivity windows
212
+ * are essentially infinite so admin apps never get hibernated or
213
+ * suspended underneath them.
214
+ *
215
+ * EXCEPTION — `deployRetention` inherits Pro's finite 60, NOT infinity:
216
+ * it's storage (old deploy images/tarballs), and infinite made
217
+ * retention-cleanup a no-op for the operator's own apps. See the inline
218
+ * note on the override. (logRetentionDays / buildLogRetentionDays stay
219
+ * infinite — see that note for why.)
147
220
  *
148
221
  * Pure function, no side effects — callers compute `isAdmin` from
149
222
  * the user record (typically `isAdminEmail(user.email)`) and pass
@@ -168,11 +241,27 @@ export function getEffectivePlanLimits(plan, isAdmin = false) {
168
241
  autoSleep: false,
169
242
  inactivityWarningDays: INF,
170
243
  inactivityGraceDays: INF,
171
- deployRetention: INF,
244
+ // deployRetention is NOT infinite for admin (decision 2026-05-24): it's
245
+ // the count of recent deploys whose Docker images + tarballs
246
+ // retention-cleanup keeps. Infinite meant the operator's own apps never
247
+ // shed old deploy images (the big disk consumer — e.g. stale multi-GB
248
+ // images lingered after an app was rebuilt). Inherit Pro's finite 60
249
+ // from `...pro` above. logRetentionDays / buildLogRetentionDays stay
250
+ // infinite: they only gate text/telemetry (not the image disk) AND
251
+ // logRetentionDays' finiteness doubles as the admin signal in
252
+ // plan5MinRetentionDays — flipping it would silently reap admin metrics
253
+ // history. Revisit those two separately if ever needed.
172
254
  logRetentionDays: INF,
173
255
  buildLogRetentionDays: INF,
174
256
  cronJobs: INF,
175
257
  kvStorageMb: INF,
258
+ // FUTURE20 Fas 3 — admin bypasses pool checks too. Otherwise
259
+ // the operator's own apps would hit "your tier pool is full"
260
+ // when running platform-management apps (admin tooling,
261
+ // dogfood deploys, etc.).
262
+ ramPoolMb: INF,
263
+ vcpuPool: INF,
264
+ diskPoolMb: INF,
176
265
  // Admin probes still happen at the pro cadence (30s) — no point in
177
266
  // trying to make this "infinite", and faster than 30s starts to
178
267
  // matter for outbound bandwidth without paying for itself.
package/dist/plans.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,17 @@ export type RecoveryAction =
52
52
  | "fix_config"
53
53
  /** Plan limits exceeded or otherwise needs human input; agent should ask the user. */
54
54
  | "ask_user"
55
+ /**
56
+ * FUTURE16 Fas 3 — pre-fetched device-code is in-flight. Agent should
57
+ * call `percher_wait_for_auth` to short-poll the device-code exchange,
58
+ * then resume the original publish call. Pairs 1:1 with the
59
+ * `auth_pending` PublishStatus. Distinct from `open_login` (which
60
+ * tells the agent to *start* a login flow via `percher_login`) — by
61
+ * the time `wait_auth` is emitted the device-code already exists and
62
+ * the user has been pointed at the verification URL; only the wait
63
+ * step remains.
64
+ */
65
+ | "wait_auth"
55
66
  /** Success path — no further action required. */
56
67
  | "none";
57
68
  /** MCP tool the agent should invoke for `nextAction`, when applicable. */
@@ -70,7 +81,14 @@ export type SuggestedTool = "percher_login" | "percher_env_set" | "percher_deplo
70
81
  | "percher_redeploy"
71
82
  /** FUTURE1 Phase 4.2 — percher_reproduce tool, surfaced via
72
83
  * alternativeActions on build-failure recovery. */
73
- | "percher_reproduce";
84
+ | "percher_reproduce"
85
+ /**
86
+ * FUTURE16 Fas 3 — short-polls a pre-fetched device-code and resumes
87
+ * the original publish input once a token lands. Pairs with the
88
+ * `wait_auth` recovery action and the `auth_pending` publish status.
89
+ * MCP-only tool — CLI's `percher login` already polls in-process.
90
+ */
91
+ | "percher_wait_for_auth";
74
92
  /**
75
93
  * FUTURE12 Phase 1a — stable, enumerated reason an agent or human can
76
94
  * branch on. Intentionally orthogonal to `RecoveryAction`: action says
@@ -135,6 +153,26 @@ export type ReasonCode =
135
153
  | "log_fetch_failed"
136
154
  /** Deploy died before the build phase started (e.g. tarball validation). */
137
155
  | "failed_before_build"
156
+ /** FUTURE_app-suspension-lift Fas 3. App was suspended by admin
157
+ * moderation (or by the failure-loop guard when the new
158
+ * lift-via-publish flow is enabled). The recovery prompt + the
159
+ * client error's `extra` block carry `liftAfter` (ISO timestamp
160
+ * or null), `liftableNow` (bool), `canLiftViaPublish` (bool),
161
+ * and `fixInstructions` (string or null). Agents should:
162
+ * - if `canLiftViaPublish && liftableNow` → ask the user to
163
+ * fix per `fixInstructions` then retry publish (a successful
164
+ * deploy auto-clears the suspension);
165
+ * - if `canLiftViaPublish && !liftableNow` → surface the
166
+ * countdown to `liftAfter` verbatim, don't retry sooner;
167
+ * - otherwise → contact-support path (existing behaviour). */
168
+ | "app_suspended"
169
+ /** FUTURE_account-deletion-guards Fas 4. percher_account_delete
170
+ * pre-flighted percher_account_deletion_preview and got back a
171
+ * non-empty blocker list (apps_owned, apps_with_collaborators,
172
+ * pending_outgoing_transfers, deploys_in_progress, etc.). The agent
173
+ * must surface `recovery.prompt` verbatim and let the user resolve
174
+ * the blockers via the existing routes before retrying. */
175
+ | "account_deletion_blocked"
138
176
  /** Catch-all for unclassified state — agents should route to doctor. */
139
177
  | "unknown";
140
178
  /**
@@ -152,7 +190,18 @@ export type DoctorMode = "auto" | "deploy" | "runtime" | "config" | "env" | "acc
152
190
  * deploy. Pinning the value here so the CLI/MCP can declare exhaustive
153
191
  * switches before the server path lands.
154
192
  */
155
- export type PublishStatus = "live" | "failed" | "needs_login" | "dry_run" | "queued" | "replaced" | "already_in_progress";
193
+ export type PublishStatus = "live" | "failed" | "needs_login"
194
+ /**
195
+ * FUTURE16 Fas 3 — MCP `percher_publish` returns this when the
196
+ * caller's session has no token AND a device-code has already been
197
+ * pre-fetched. The agent's next step is `percher_wait_for_auth`
198
+ * (carried in `recovery`); the tarball has NOT been packed yet, so
199
+ * the resume call is the first and only packaging operation in the
200
+ * entire auth flow. CLI uses the existing `needs_login` path —
201
+ * `auth_pending` is MCP-specific because only a long-lived agent
202
+ * session benefits from the pre-fetch + in-process poll split.
203
+ */
204
+ | "auth_pending" | "dry_run" | "queued" | "replaced" | "already_in_progress";
156
205
  /**
157
206
  * Structured problem entry used by `fix_config` and `fix_problems`
158
207
  * recoveries. Agents apply file edits directly using these.
@@ -199,7 +248,14 @@ interface BaseRecovery {
199
248
  * Phase 4 migrates it to `run_doctor`.
200
249
  */
201
250
  export interface ToolRecovery extends BaseRecovery {
202
- nextAction: "open_login" | "wait_deploy" | "run_doctor" | "set_env_vars" | "retry" | "inspect_build_log";
251
+ nextAction: "open_login" | "wait_deploy" | "run_doctor" | "set_env_vars" | "retry" | "inspect_build_log"
252
+ /**
253
+ * FUTURE16 Fas 3 — short-poll a pre-fetched device-code via
254
+ * `percher_wait_for_auth`. `args` carries `{ deviceCode,
255
+ * publishArgs }` so the agent can resume the original publish
256
+ * call without re-deriving inputs.
257
+ */
258
+ | "wait_auth";
203
259
  suggestedTool: SuggestedTool;
204
260
  args: Record<string, unknown>;
205
261
  }
@@ -241,6 +297,20 @@ export declare function recoveryNone(opts?: {
241
297
  export declare function recoveryLogin(opts?: {
242
298
  reasonCode?: ReasonCode;
243
299
  }): ToolRecovery;
300
+ /**
301
+ * FUTURE16 Fas 3 — pre-fetched device-code is in-flight; agent should
302
+ * call `percher_wait_for_auth` to short-poll the exchange and resume
303
+ * publish once a token lands. `publishArgs` carries the *raw user
304
+ * input flags* (cwd is implicit on ctx; preview/live/message/dryRun/
305
+ * etc. ride here) so the resume call is a first-time publish — no
306
+ * tarball state is preserved across the wait, no upload state to
307
+ * invalidate. That's the entire point of pre-fetch + in-process poll
308
+ * over the alternative anonymous-staged-tarball design (see plan).
309
+ */
310
+ export declare function recoveryAuthPending(opts: {
311
+ deviceCode: string;
312
+ publishArgs: Record<string, unknown>;
313
+ }): ToolRecovery;
244
314
  /** Wait on an in-flight deploy — agent should call `percher_wait_for_deploy`. */
245
315
  export declare function recoveryWait(opts: {
246
316
  app: string;
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
package/dist/recovery.js CHANGED
@@ -24,6 +24,28 @@ export function recoveryLogin(opts = {}) {
24
24
  reasonCode: opts.reasonCode ?? "auth_required",
25
25
  };
26
26
  }
27
+ /**
28
+ * FUTURE16 Fas 3 — pre-fetched device-code is in-flight; agent should
29
+ * call `percher_wait_for_auth` to short-poll the exchange and resume
30
+ * publish once a token lands. `publishArgs` carries the *raw user
31
+ * input flags* (cwd is implicit on ctx; preview/live/message/dryRun/
32
+ * etc. ride here) so the resume call is a first-time publish — no
33
+ * tarball state is preserved across the wait, no upload state to
34
+ * invalidate. That's the entire point of pre-fetch + in-process poll
35
+ * over the alternative anonymous-staged-tarball design (see plan).
36
+ */
37
+ export function recoveryAuthPending(opts) {
38
+ return {
39
+ retryable: false,
40
+ nextAction: "wait_auth",
41
+ suggestedTool: "percher_wait_for_auth",
42
+ args: {
43
+ deviceCode: opts.deviceCode,
44
+ publishArgs: opts.publishArgs,
45
+ },
46
+ reasonCode: "auth_required",
47
+ };
48
+ }
27
49
  /** Wait on an in-flight deploy — agent should call `percher_wait_for_deploy`. */
28
50
  export function recoveryWait(opts) {
29
51
  return {
@@ -200,6 +222,20 @@ export function recoveryFromErrorClass(errorClass, failure = {}) {
200
222
  args: failure.publishInput ?? {},
201
223
  reasonCode: "infra_unavailable",
202
224
  });
225
+ case "platform_at_capacity":
226
+ // Track A — A1: a box-admission rejection is a transient platform-side
227
+ // limit (the host is full right now), not the app's fault. Hand the
228
+ // agent the same retry recovery as infra_unavailable so it re-issues
229
+ // the publish once capacity frees up, instead of falling through to
230
+ // the generic ask_user/doctor path. reasonCode `infra_transient`
231
+ // (retryable) keeps it distinct from a hard infra outage. The
232
+ // failure-loop guard already excludes this class (A2), so retries
233
+ // won't trip auto-suspension.
234
+ return recoveryRetry({
235
+ suggestedTool: "percher_publish",
236
+ args: failure.publishInput ?? {},
237
+ reasonCode: "infra_transient",
238
+ });
203
239
  case "config_invalid":
204
240
  return recoveryFixConfig({
205
241
  problems: [