@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-supabase.js","sourceRoot":"","sources":["../../src/commands/migrate-supabase.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,8 @@
1
- import { z } from "zod/v3";
1
+ import { z } from "zod";
2
2
  import type { Context } from "../context";
3
3
  export declare const openInputSchema: z.ZodObject<{
4
4
  app: z.ZodOptional<z.ZodString>;
5
- }, "strip", z.ZodTypeAny, {
6
- app?: string | undefined;
7
- }, {
8
- app?: string | undefined;
9
- }>;
5
+ }, z.core.$strip>;
10
6
  export type OpenInput = z.infer<typeof openInputSchema>;
11
7
  export declare function open(ctx: Context, input?: OpenInput): Promise<string>;
12
8
  //# sourceMappingURL=open.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wBAAsB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAW/E"}
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wBAAsB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAW/E"}
@@ -1,4 +1,4 @@
1
- import { z } from "zod/v3";
1
+ import { z } from "zod";
2
2
  import { readPercherTomlAppName } from "../app-name";
3
3
  import { PercherCoreError } from "../errors";
4
4
  export const openInputSchema = z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAY,EAAE,QAAmB,EAAE;IAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,gBAAgB,CAAC,4CAA4C,EAAE;YACvE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,6DAA6D;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAY,EAAE,QAAmB,EAAE;IAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,gBAAgB,CAAC,4CAA4C,EAAE;YACvE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,6DAA6D;SACpE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { PublishResult } from "./publish";
2
+ /**
3
+ * Dogfood 2026-05-13 Fynd #2 — `publish.ts` catch-all wrapped every
4
+ * `PercherApiError` (regardless of code/status) as "Unexpected error /
5
+ * This may be a network issue or a Percher bug". That's actively
6
+ * misleading for business-rule 403s like `APP_LIMIT_REACHED`: the user
7
+ * gets told to "check your connection" when the real fix is "upgrade
8
+ * or delete an app".
9
+ *
10
+ * This classifier maps the known `PercherApiError.code` values that the
11
+ * server emits as business-rule denials into structured `PublishResult`
12
+ * shapes with accurate titles + actionable suggestions. Anything not
13
+ * matched returns null so the catch-all fallback still wins for
14
+ * genuine network/internal failures.
15
+ *
16
+ * Source-of-truth for the codes lives in the API. Grep both files
17
+ * whenever extending the maps so a status drift (403 vs 429) doesn't
18
+ * silently fall through to the catch-all — the kind of mistake the
19
+ * 2026-05-13 codex passes caught twice on this very file:
20
+ *
21
+ * - `packages/api/src/routes/*.ts` — `new ApiError(`
22
+ * - `packages/api/src/middleware/rate-limit.ts` — default `errorCode`
23
+ *
24
+ * Current code/status set this classifier covers (sync with the maps
25
+ * below + the test file when changing):
26
+ *
27
+ * 403 APP_LIMIT_REACHED, PREVIEW_LIMIT_REACHED, DOMAIN_LIMIT_REACHED
28
+ * 403 ACCOUNT_SUSPENDED
29
+ * 429 DEPLOY_RATE_LIMIT (hourly, deploys.ts)
30
+ * 429 DEPLOY_RATE_LIMITED (60s burst, rate-limit.ts default)
31
+ * 429 RATE_LIMIT_EXCEEDED (generic user-route limit)
32
+ * 429 USER_CONCURRENT_LIMIT, USER_UPLOAD_CONCURRENT_LIMIT
33
+ */
34
+ export interface ClassifyInput {
35
+ /** Absolute path to percher.toml for the bundle metadata round-trip. */
36
+ configPath: string;
37
+ /** Bundle stats. Zero on classify paths since we haven't packed yet. */
38
+ bundle: {
39
+ fileCount: number;
40
+ bytes: number;
41
+ };
42
+ }
43
+ export declare function classifyPublishApiError(err: unknown, input: ClassifyInput): PublishResult | null;
44
+ /** Re-exported for tests so they don't have to import from publish.ts. */
45
+ export declare function tomlPathForCwd(cwd: string): string;
46
+ //# sourceMappingURL=publish-api-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-api-error.d.ts","sourceRoot":"","sources":["../../src/commands/publish-api-error.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAoDhG;AAgUD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,358 @@
1
+ import { join } from "node:path";
2
+ import { PercherApiError } from "@percher/client";
3
+ import { recoveryAsk, recoveryLogin } from "../recovery";
4
+ export function classifyPublishApiError(err, input) {
5
+ if (!(err instanceof PercherApiError))
6
+ return null;
7
+ const planLimit = matchPlanLimit(err);
8
+ if (planLimit)
9
+ return buildResult(planLimit, input);
10
+ const rateLimit = matchRateLimit(err);
11
+ if (rateLimit)
12
+ return buildResult(rateLimit, input);
13
+ const concurrent = matchConcurrentLimit(err);
14
+ if (concurrent)
15
+ return buildResult(concurrent, input);
16
+ const suspended = matchSuspended(err);
17
+ if (suspended)
18
+ return buildResult(suspended, input);
19
+ // App-level suspension is its own path — distinct from the
20
+ // account-level `ACCOUNT_SUSPENDED` above. Server emits
21
+ // `APP_SUSPENDED` (403) from the deploy route when an app's
22
+ // moderation_status is "suspended"; resolution is via the
23
+ // dashboard or support, not via `percher login` or editing the
24
+ // toml. Codex P2 follow-up on a3b3336.
25
+ const appSuspended = matchAppSuspended(err);
26
+ if (appSuspended)
27
+ return buildResult(appSuspended, input);
28
+ // Email-verification gate (403 EMAIL_NOT_VERIFIED, emitted when
29
+ // PERCHER_REQUIRE_EMAIL_VERIFICATION=1 and the user is past
30
+ // grace). Resolution is "check inbox / use settings page".
31
+ // Codex P2 follow-up on a3b3336.
32
+ const emailUnverified = matchEmailNotVerified(err);
33
+ if (emailUnverified)
34
+ return buildResult(emailUnverified, input);
35
+ // Auth / permission errors must NOT fall into the generic
36
+ // client-error renderer below — its suggestion talks about
37
+ // editing percher.toml / env / app name, which is wrong advice
38
+ // for an expired token or a deny-by-policy 403. Codex P2 catch
39
+ // on a051623.
40
+ const auth = matchAuthError(err);
41
+ if (auth)
42
+ return buildResult(auth, input);
43
+ // Dogfood Fas 2 F2-#2/#3 — fall-through for any other 4xx with a
44
+ // structured server message. Without this, codes like
45
+ // `APP_NAME_TAKEN` (409) or `NAME_BLOCKED` (400) used to land in
46
+ // publish.ts's generic catch-all, which appended "This may be a
47
+ // network issue or a Percher bug" — actively misleading for a
48
+ // client-side error with a clear server message. Specific
49
+ // matchers (plan/rate/concurrent/suspended/auth) ran first above
50
+ // and win on their own UX; this is the safety net for the long
51
+ // tail.
52
+ const clientError = matchGenericClientError(err);
53
+ if (clientError)
54
+ return buildResult(clientError, input);
55
+ return null;
56
+ }
57
+ function buildResult(c, input) {
58
+ return {
59
+ status: "failed",
60
+ fileCount: input.bundle.fileCount,
61
+ bytes: input.bundle.bytes,
62
+ error: {
63
+ title: c.title,
64
+ explanation: c.explanation,
65
+ suggestion: c.suggestion,
66
+ },
67
+ recovery: c.recovery,
68
+ summary: c.summary,
69
+ configPath: input.configPath,
70
+ bundle: input.bundle,
71
+ };
72
+ }
73
+ const PLAN_LIMIT_CODES = new Set([
74
+ "APP_LIMIT_REACHED",
75
+ "PREVIEW_LIMIT_REACHED",
76
+ "DOMAIN_LIMIT_REACHED",
77
+ ]);
78
+ function matchPlanLimit(err) {
79
+ if (!PLAN_LIMIT_CODES.has(err.code) || err.status !== 403)
80
+ return null;
81
+ return {
82
+ title: "Plan limit reached",
83
+ explanation: err.message,
84
+ suggestion: "Upgrade your plan at https://percher.app/settings, or delete unused apps with `percher delete <name>`.",
85
+ recovery: recoveryAsk({
86
+ prompt: `${err.message}. Upgrade at https://percher.app/settings, or delete an unused app with \`percher delete <name>\`.`,
87
+ options: ["upgrade", "delete unused app", "cancel"],
88
+ reasonCode: "quota_exceeded",
89
+ }),
90
+ summary: `Plan limit reached: ${err.message}`,
91
+ };
92
+ }
93
+ // Two distinct rate-limit codes hit publish: `DEPLOY_RATE_LIMIT`
94
+ // (no "ED") from deploys.ts is the hourly per-app cap, and
95
+ // `DEPLOY_RATE_LIMITED` (with "ED") from rate-limit.ts is the 60s
96
+ // burst-window default emitted by `appRateLimit()`. The trailing-ED
97
+ // variant survives `runDeployWithRetry`'s two waits and lands here;
98
+ // missing it from this set meant burst-limited users got the old
99
+ // "Unexpected error" catch-all even after the F2 classifier landed
100
+ // (caught by codex re-review of a3c9197 on 2026-05-13).
101
+ const RATE_LIMIT_CODES = new Set([
102
+ "DEPLOY_RATE_LIMIT",
103
+ "DEPLOY_RATE_LIMITED",
104
+ "RATE_LIMIT_EXCEEDED",
105
+ ]);
106
+ function matchRateLimit(err) {
107
+ if (!RATE_LIMIT_CODES.has(err.code))
108
+ return null;
109
+ return {
110
+ title: "Rate limit hit",
111
+ explanation: err.message,
112
+ suggestion: "Wait a few minutes and try again. If you need a higher cap, upgrade at https://percher.app/settings.",
113
+ recovery: recoveryAsk({
114
+ prompt: `Rate limit: ${err.message}. Wait a few minutes then retry, or upgrade your plan.`,
115
+ options: ["wait and retry", "upgrade", "cancel"],
116
+ reasonCode: "quota_exceeded",
117
+ }),
118
+ summary: `Rate limit hit: ${err.message}`,
119
+ };
120
+ }
121
+ const CONCURRENT_LIMIT_CODES = new Set(["USER_CONCURRENT_LIMIT", "USER_UPLOAD_CONCURRENT_LIMIT"]);
122
+ function matchConcurrentLimit(err) {
123
+ // Both codes are emitted as 429 with `Retry-After`: USER_CONCURRENT_LIMIT
124
+ // from capacity-gates.ts (deploy creation) and USER_UPLOAD_CONCURRENT_LIMIT
125
+ // from deploys.ts (tarball upload semaphore). The initial implementation
126
+ // gated on 403 — that was wrong and let the codes fall through to the
127
+ // "Unexpected error" catch-all. Caught in the codex review of the F2
128
+ // commit (5ecdf99) on 2026-05-13.
129
+ if (!CONCURRENT_LIMIT_CODES.has(err.code) || err.status !== 429)
130
+ return null;
131
+ return {
132
+ title: "Concurrent deploy limit reached",
133
+ explanation: err.message,
134
+ suggestion: "Wait for one of your in-flight deploys to finish, or upgrade your plan to raise the concurrency cap.",
135
+ recovery: recoveryAsk({
136
+ prompt: `${err.message} Wait for one to finish, or upgrade at https://percher.app/settings.`,
137
+ options: ["wait", "upgrade", "cancel"],
138
+ reasonCode: "deploy_already_in_progress",
139
+ }),
140
+ summary: `Concurrent deploy limit: ${err.message}`,
141
+ };
142
+ }
143
+ function matchSuspended(err) {
144
+ if (err.code !== "ACCOUNT_SUSPENDED" || err.status !== 403)
145
+ return null;
146
+ return {
147
+ title: "Account suspended",
148
+ explanation: err.message,
149
+ suggestion: "Contact support at hello@percher.app to restore access.",
150
+ recovery: recoveryAsk({
151
+ prompt: `${err.message} Contact support at hello@percher.app.`,
152
+ options: ["contact support"],
153
+ reasonCode: "unknown",
154
+ }),
155
+ summary: `Account suspended: ${err.message}`,
156
+ };
157
+ }
158
+ /**
159
+ * App-level moderation suspension. Server emits `APP_SUSPENDED` (403)
160
+ * from the deploy route when `apps.moderation_status === 'suspended'`.
161
+ *
162
+ * FUTURE_app-suspension-lift Fas 3 — the 403 now carries a structured
163
+ * `extra` block when the admin (or failure-loop) configured a
164
+ * self-service window: `{ liftAfter, liftableNow, canLiftViaPublish,
165
+ * fixInstructions }`. Three render shapes flow from those flags:
166
+ *
167
+ * 1. `canLiftViaPublish && liftableNow` → "fix and re-publish now —
168
+ * a successful deploy will lift it"
169
+ * 2. `canLiftViaPublish && !liftableNow` → countdown until liftAfter,
170
+ * then re-publish
171
+ * 3. neither/legacy → "contact support"
172
+ *
173
+ * The server message already contains the human prose; we replicate the
174
+ * key bits in `summary` for log-grep and drive the recovery prompt off
175
+ * the structured fields so MCP agents can act without parsing English.
176
+ *
177
+ * Distinct from `ACCOUNT_SUSPENDED` which suspends the whole account,
178
+ * not a single app.
179
+ */
180
+ function matchAppSuspended(err) {
181
+ if (err.code !== "APP_SUSPENDED" || err.status !== 403)
182
+ return null;
183
+ const liftAfterRaw = typeof err.extra?.liftAfter === "string" ? err.extra.liftAfter : null;
184
+ const liftableNow = err.extra?.liftableNow === true;
185
+ const canLiftViaPublish = err.extra?.canLiftViaPublish === true;
186
+ const fixInstructions = typeof err.extra?.fixInstructions === "string" && err.extra.fixInstructions.length > 0
187
+ ? err.extra.fixInstructions
188
+ : null;
189
+ let suggestion;
190
+ let prompt;
191
+ let options;
192
+ if (canLiftViaPublish && liftableNow) {
193
+ suggestion = fixInstructions
194
+ ? `Fix the underlying cause (${fixInstructions}) and run \`percher publish\` — a successful deploy will lift the suspension automatically.`
195
+ : "Fix the underlying cause and run `percher publish` — a successful deploy will lift the suspension automatically.";
196
+ prompt = fixInstructions
197
+ ? `${err.message}\n\nThe suspension window has passed. Fix the underlying cause per the admin's instructions (${fixInstructions}), then run \`percher publish\` — a successful deploy will lift the suspension.`
198
+ : `${err.message}\n\nThe suspension window has passed. Fix the underlying cause, then run \`percher publish\` — a successful deploy will lift the suspension.`;
199
+ options = ["fix and republish", "open dashboard", "contact support"];
200
+ }
201
+ else if (canLiftViaPublish && liftAfterRaw) {
202
+ suggestion = fixInstructions
203
+ ? `Wait until ${liftAfterRaw}, then fix the underlying cause (${fixInstructions}) and run \`percher publish\`. A successful deploy after the window passes will lift the suspension.`
204
+ : `Wait until ${liftAfterRaw}, then run \`percher publish\`. A successful deploy after the window passes will lift the suspension.`;
205
+ prompt = `${err.message}\n\nYou can try again after ${liftAfterRaw}. Until then, retrying will fail.`;
206
+ options = ["wait and republish", "open dashboard", "contact support"];
207
+ }
208
+ else if (liftAfterRaw) {
209
+ // Scheduled manual unlock — countdown set, but lift-via-publish is off.
210
+ suggestion = `A Percher admin will review the suspension after ${liftAfterRaw}. Contact support if you need it lifted sooner.`;
211
+ prompt = `${err.message}\n\nAdmin will review after ${liftAfterRaw}. Contact support at https://percher.app if you need it lifted sooner.`;
212
+ options = ["wait", "contact support"];
213
+ }
214
+ else {
215
+ suggestion =
216
+ "Contact support at https://percher.app or check the dashboard for unsuspend options. Re-publishing won't unsuspend the app.";
217
+ prompt = `${err.message} Open https://percher.app or contact support — re-publish won't help until the app is unsuspended.`;
218
+ options = ["contact support", "open dashboard"];
219
+ }
220
+ return {
221
+ title: "App suspended",
222
+ explanation: err.message,
223
+ suggestion,
224
+ recovery: recoveryAsk({
225
+ prompt,
226
+ options,
227
+ reasonCode: "app_suspended",
228
+ }),
229
+ summary: `App suspended: ${err.message}`,
230
+ };
231
+ }
232
+ /**
233
+ * Email-verification gate. Server emits `EMAIL_NOT_VERIFIED` (403)
234
+ * from the deploy route when `PERCHER_REQUIRE_EMAIL_VERIFICATION=1`
235
+ * and the user account is past its grace window without a verified
236
+ * email. Resolution path is checking inbox / using the settings
237
+ * page — not editing the toml.
238
+ */
239
+ function matchEmailNotVerified(err) {
240
+ if (err.code !== "EMAIL_NOT_VERIFIED" || err.status !== 403)
241
+ return null;
242
+ return {
243
+ title: "Email not verified",
244
+ explanation: err.message,
245
+ suggestion: "Open the verification link in your inbox, or visit https://percher.app/settings to resend the email. Re-publish after verifying.",
246
+ recovery: recoveryAsk({
247
+ prompt: `${err.message} Verify the email, then retry publish.`,
248
+ options: ["check inbox", "open settings"],
249
+ reasonCode: "unknown",
250
+ }),
251
+ summary: `Email not verified: ${err.message}`,
252
+ };
253
+ }
254
+ /**
255
+ * Auth / permission errors. 401 always belongs here regardless of
256
+ * code (server may not even include a code on missing-token); 403
257
+ * with `UNAUTHORIZED` or `FORBIDDEN` codes is the generic
258
+ * permission-denied path that the specific 403s
259
+ * (plan-limit/suspended/app-suspended/email) didn't already pick
260
+ * up. The 401 path uses `recoveryLogin` so MCP agents see
261
+ * `nextAction: "open_login"` + `suggestedTool: "percher_login"`
262
+ * (the canonical login-recovery contract from recovery.ts); the
263
+ * 403 path uses `recoveryAsk` because permission-denied isn't
264
+ * always login-fixable (could be team-membership, role, etc.).
265
+ *
266
+ * Codex P2 catch on a3b3336: pre-fix this matcher used recoveryAsk
267
+ * for 401 too, which broke the MCP login-recovery flow — agents
268
+ * saw "ask_user" + the suggestion text but no `open_login` action,
269
+ * so they couldn't automate the next step.
270
+ */
271
+ function matchAuthError(err) {
272
+ const isUnauthorized = err.status === 401;
273
+ const isGenericForbidden = err.status === 403 && (err.code === "UNAUTHORIZED" || err.code === "FORBIDDEN");
274
+ if (!isUnauthorized && !isGenericForbidden)
275
+ return null;
276
+ if (isUnauthorized) {
277
+ return {
278
+ title: "Not signed in",
279
+ explanation: err.message,
280
+ suggestion: "Run `percher login` to authenticate and re-publish.",
281
+ recovery: recoveryLogin({ reasonCode: "auth_required" }),
282
+ summary: `Auth required (${err.status} ${err.code || "—"}): ${err.message}`,
283
+ };
284
+ }
285
+ return {
286
+ title: "Permission denied",
287
+ explanation: err.message,
288
+ suggestion: "The server rejected this request based on permissions. Run `percher whoami` to confirm the account, then `percher login` if you need to switch users.",
289
+ recovery: recoveryAsk({
290
+ prompt: `${err.message} (${err.code || "FORBIDDEN"}). Confirm account via \`percher whoami\` or re-login.`,
291
+ reasonCode: "auth_required",
292
+ }),
293
+ summary: `Permission denied (${err.status} ${err.code || "—"}): ${err.message}`,
294
+ };
295
+ }
296
+ /**
297
+ * Generic 4xx fall-through. Matches any client-error response from
298
+ * the Percher API that wasn't picked up by a specific matcher
299
+ * above (plan/rate/concurrent/suspended/auth). Renders the server's
300
+ * code + message verbatim instead of layering on the
301
+ * "network issue / Percher bug" suggestion that the publish.ts
302
+ * catch-all uses — those are genuinely server / unknown failures,
303
+ * client-errors are not.
304
+ *
305
+ * Exclusions:
306
+ * - 5xx → catch-all (transient server / "may be a Percher bug").
307
+ * - 408 Request Timeout → catch-all (often network flakiness, not
308
+ * a deterministic client mistake; retry guidance fits better).
309
+ * - 401 / 403 generic auth → handled by `matchAuthError` above
310
+ * so the suggestion routes to `percher login`, not "edit your
311
+ * percher.toml" (Codex P2 catch on a051623).
312
+ */
313
+ function matchGenericClientError(err) {
314
+ if (err.status < 400 || err.status >= 500)
315
+ return null;
316
+ if (err.status === 408)
317
+ return null;
318
+ if (err.status === 401)
319
+ return null;
320
+ if (err.status === 403 && (err.code === "UNAUTHORIZED" || err.code === "FORBIDDEN")) {
321
+ return null;
322
+ }
323
+ const title = titleFromCode(err.code);
324
+ return {
325
+ title,
326
+ explanation: err.message,
327
+ suggestion: "Fix the input (percher.toml, env, app name) and re-publish. Run `percher doctor` if you think the server message is wrong.",
328
+ recovery: recoveryAsk({
329
+ prompt: `${err.message} (${err.code}). Fix the input and re-publish, or run \`percher doctor\` for diagnostics.`,
330
+ reasonCode: "unknown",
331
+ }),
332
+ summary: `${err.code} (${err.status}): ${err.message}`,
333
+ };
334
+ }
335
+ /**
336
+ * Render a screaming-snake API error code as a sentence-case
337
+ * human title. `APP_NAME_TAKEN` → `App name taken`,
338
+ * `NAME_BLOCKED` → `Name blocked`, etc. Keeps the rendering
339
+ * deterministic so tests can assert on it; the server code is
340
+ * still surfaced verbatim in `summary` for log-grep.
341
+ *
342
+ * Uses `charAt(0)` instead of `lower[0]!` so Biome's
343
+ * `noNonNullAssertion` rule stays happy (Codex P3 catch on
344
+ * a051623). Empty input still routes to the explicit
345
+ * "Request rejected" fallback above so charAt's empty-string
346
+ * behaviour can't surface.
347
+ */
348
+ function titleFromCode(code) {
349
+ const lower = code.toLowerCase().replace(/_/g, " ");
350
+ if (lower.length === 0)
351
+ return "Request rejected";
352
+ return lower.charAt(0).toUpperCase() + lower.slice(1);
353
+ }
354
+ /** Re-exported for tests so they don't have to import from publish.ts. */
355
+ export function tomlPathForCwd(cwd) {
356
+ return join(cwd, "percher.toml");
357
+ }
358
+ //# sourceMappingURL=publish-api-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-api-error.js","sourceRoot":"","sources":["../../src/commands/publish-api-error.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"publish-failure.d.ts","sourceRoot":"","sources":["../../src/commands/publish-failure.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,KAAK,eAAe,EAAuC,MAAM,aAAa,CAAC;AAExF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAgH3E;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/E;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,KAAK,EAAE,YAAY,CAAC;CACrB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoBzB"}
1
+ {"version":3,"file":"publish-failure.d.ts","sourceRoot":"","sources":["../../src/commands/publish-failure.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,KAAK,eAAe,EAAuC,MAAM,aAAa,CAAC;AAExF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAyH3E;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/E;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,KAAK,EAAE,YAAY,CAAC;CACrB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoBzB"}
@@ -51,9 +51,18 @@ async function buildFailureError(ctx, app, deployment) {
51
51
  // classifier when the code is NULL / unknown (legacy deploys
52
52
  // from before Phase 4 shipped, or future code variants this
53
53
  // CLI build doesn't know about).
54
+ // Classify off the REAL errorMessage together with the build log — not a
55
+ // dummy "Deployment failed" placeholder. The errorMessage carries the
56
+ // authoritative, load-bearing tokens (worker `/deployer/run` 500, HTTP 502,
57
+ // OOM exit code, capacity rejection), and the pattern array is ordered so
58
+ // those high-priority infra/capacity classes win first. Classifying the log
59
+ // alone (its old behaviour) let a loose match in the log shadow them — e.g.
60
+ // a PocketBase app's log mentions POCKETBASE_URL, so the lenient PB matcher
61
+ // rewrote a real worker-500 into misleading "fix your percher.toml" advice
62
+ // (2026-06-02). When there's no top-level message (pure build failure) we
63
+ // fall back to the placeholder so log-only classification still works.
54
64
  const classified = classifyByErrorCode(deployment.errorCode, errorMessage) ??
55
- classifyError("Deployment failed", fullLog) ??
56
- classifyError(errorMessage, "");
65
+ classifyError(errorMessage || "Deployment failed", fullLog);
57
66
  // Always preserve the raw upstream string when we have one and there's
58
67
  // no build log to anchor to. The classifier replaces it with a friendly
59
68
  // template, but the actual error often carries the load-bearing detail
@@ -1 +1 @@
1
- {"version":3,"file":"publish-failure.js","sourceRoot":"","sources":["../../src/commands/publish-failure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish-failure.js","sourceRoot":"","sources":["../../src/commands/publish-failure.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type App, type BuildProblem, type Deployment } from "@percher/client";
2
- import { z } from "zod/v3";
2
+ import { z } from "zod";
3
3
  import type { Context } from "../context";
4
- import { type DeployPhase, type ErrorClass } from "../error-classifier";
4
+ import type { DeployPhase, ErrorClass } from "../error-classifier";
5
5
  import { type PublishRecovery, type PublishStatus } from "../recovery";
6
6
  export declare const publishInputSchema: z.ZodObject<{
7
7
  force: z.ZodOptional<z.ZodBoolean>;
@@ -10,21 +10,7 @@ export declare const publishInputSchema: z.ZodObject<{
10
10
  dryRun: z.ZodOptional<z.ZodBoolean>;
11
11
  noCache: z.ZodOptional<z.ZodBoolean>;
12
12
  waitForLive: z.ZodOptional<z.ZodBoolean>;
13
- }, "strip", z.ZodTypeAny, {
14
- message?: string | undefined;
15
- force?: boolean | undefined;
16
- dryRun?: boolean | undefined;
17
- preview?: boolean | undefined;
18
- noCache?: boolean | undefined;
19
- waitForLive?: boolean | undefined;
20
- }, {
21
- message?: string | undefined;
22
- force?: boolean | undefined;
23
- dryRun?: boolean | undefined;
24
- preview?: boolean | undefined;
25
- noCache?: boolean | undefined;
26
- waitForLive?: boolean | undefined;
27
- }>;
13
+ }, z.core.$strip>;
28
14
  export type PublishInput = z.infer<typeof publishInputSchema>;
29
15
  export interface PublishTiming {
30
16
  totalSeconds: number;
@@ -91,6 +77,29 @@ export interface PublishResult {
91
77
  qrDataUri?: string;
92
78
  loginUrl?: string;
93
79
  loginCode?: string;
80
+ /**
81
+ * FUTURE16 Fas 3 — opaque device-code returned alongside `loginUrl`
82
+ * on the MCP `auth_pending` path. The agent passes this verbatim to
83
+ * `percher_wait_for_auth({ deviceCode, publishArgs })` to short-poll
84
+ * the exchange. Echoed in `recovery.args.deviceCode` too — both slots
85
+ * carry the same value so a literal-recovery-following agent doesn't
86
+ * need to read top-level fields. Absent on every other code-path.
87
+ */
88
+ deviceCode?: string;
89
+ /**
90
+ * FUTURE16 Fas 3 — recommended seconds between `exchangeDeviceCode`
91
+ * polls when the agent runs its own poll loop instead of using
92
+ * `percher_wait_for_auth`. The wait tool defaults to this value
93
+ * already; the field exists for transparency / debugging.
94
+ */
95
+ pollIntervalSec?: number;
96
+ /**
97
+ * FUTURE16 Fas 3 — ISO-8601 deadline after which the device-code is
98
+ * dead and the exchange will return `AUTHORIZATION_PENDING` forever.
99
+ * `percher_wait_for_auth` enforces this internally and returns
100
+ * `auth_failed` with `reason: "expired"` if hit.
101
+ */
102
+ expiresAt?: string;
94
103
  app?: App;
95
104
  deployment?: Deployment;
96
105
  timing?: PublishTiming;
@@ -114,8 +123,22 @@ export interface PublishResult {
114
123
  * Absent (not just `false`) when we couldn't fetch the timeline —
115
124
  * makes "we don't know" distinguishable from "we know it wasn't a
116
125
  * cache hit."
126
+ *
127
+ * @deprecated FUTURE11 Fas 4 — prefer {@link cacheStatus} when
128
+ * available. `cacheHit: true` ↔ `cacheStatus === "image_reused"`,
129
+ * but the boolean cannot distinguish layer-hit from fresh-build.
117
130
  */
118
131
  cacheHit?: boolean;
132
+ /**
133
+ * FUTURE11 Fas 4 — three-valued cache status:
134
+ * - `"image_reused"` — content-hash hit, build skipped entirely.
135
+ * - `"layer_hit"` — fresh build ran, BuildKit reused ≥50% of steps.
136
+ * - `"fresh"` — fresh build, ≤50% of steps cached.
137
+ *
138
+ * Absent on pre-Fas-4 deploys (server hasn't reported it); CLI
139
+ * falls back to `cacheHit` in that case.
140
+ */
141
+ cacheStatus?: "image_reused" | "layer_hit" | "fresh";
119
142
  /**
120
143
  * Phase 7.8 follow-up — true when the CLI's pre-upload cache-probe
121
144
  * matched a prior live deploy and we redeployed via /rerun instead