@percher/core 0.3.0 → 0.4.1

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 (270) 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 +69 -0
  14. package/dist/commands/alerts.d.ts.map +1 -0
  15. package/dist/commands/alerts.js +80 -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 +3 -2
  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 +20 -35
  63. package/dist/commands/doctor.d.ts.map +1 -1
  64. package/dist/commands/doctor.js +42 -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 +1 -1
  77. package/dist/commands/forgejo.d.ts +45 -0
  78. package/dist/commands/forgejo.d.ts.map +1 -0
  79. package/dist/commands/forgejo.js +125 -0
  80. package/dist/commands/forgejo.js.map +1 -0
  81. package/dist/commands/generate.d.ts +2 -6
  82. package/dist/commands/generate.d.ts.map +1 -1
  83. package/dist/commands/generate.js +1 -1
  84. package/dist/commands/generate.js.map +1 -1
  85. package/dist/commands/github.d.ts +4 -15
  86. package/dist/commands/github.d.ts.map +1 -1
  87. package/dist/commands/github.js +17 -1
  88. package/dist/commands/github.js.map +1 -1
  89. package/dist/commands/import-project.d.ts +13 -9
  90. package/dist/commands/import-project.d.ts.map +1 -1
  91. package/dist/commands/import-project.js +73 -22
  92. package/dist/commands/import-project.js.map +1 -1
  93. package/dist/commands/init.d.ts +26 -11
  94. package/dist/commands/init.d.ts.map +1 -1
  95. package/dist/commands/init.js +103 -2
  96. package/dist/commands/init.js.map +1 -1
  97. package/dist/commands/insights.d.ts +2 -6
  98. package/dist/commands/insights.d.ts.map +1 -1
  99. package/dist/commands/insights.js +1 -1
  100. package/dist/commands/insights.js.map +1 -1
  101. package/dist/commands/login.d.ts +2 -8
  102. package/dist/commands/login.d.ts.map +1 -1
  103. package/dist/commands/login.js +22 -1
  104. package/dist/commands/login.js.map +1 -1
  105. package/dist/commands/logs.d.ts +25 -10
  106. package/dist/commands/logs.d.ts.map +1 -1
  107. package/dist/commands/logs.js +65 -5
  108. package/dist/commands/logs.js.map +1 -1
  109. package/dist/commands/mcp.d.ts +2 -2
  110. package/dist/commands/mcp.d.ts.map +1 -1
  111. package/dist/commands/mcp.js +1 -1
  112. package/dist/commands/mcp.js.map +1 -1
  113. package/dist/commands/migrate-supabase-map.d.ts +171 -0
  114. package/dist/commands/migrate-supabase-map.d.ts.map +1 -0
  115. package/dist/commands/migrate-supabase-map.js +452 -0
  116. package/dist/commands/migrate-supabase-map.js.map +1 -0
  117. package/dist/commands/migrate-supabase-schema.d.ts +67 -0
  118. package/dist/commands/migrate-supabase-schema.d.ts.map +1 -0
  119. package/dist/commands/migrate-supabase-schema.js +321 -0
  120. package/dist/commands/migrate-supabase-schema.js.map +1 -0
  121. package/dist/commands/migrate-supabase-scripts.d.ts +64 -0
  122. package/dist/commands/migrate-supabase-scripts.d.ts.map +1 -0
  123. package/dist/commands/migrate-supabase-scripts.js +564 -0
  124. package/dist/commands/migrate-supabase-scripts.js.map +1 -0
  125. package/dist/commands/migrate-supabase-sdk.d.ts +133 -0
  126. package/dist/commands/migrate-supabase-sdk.d.ts.map +1 -0
  127. package/dist/commands/migrate-supabase-sdk.js +1119 -0
  128. package/dist/commands/migrate-supabase-sdk.js.map +1 -0
  129. package/dist/commands/migrate-supabase-walker.d.ts +93 -0
  130. package/dist/commands/migrate-supabase-walker.d.ts.map +1 -0
  131. package/dist/commands/migrate-supabase-walker.js +413 -0
  132. package/dist/commands/migrate-supabase-walker.js.map +1 -0
  133. package/dist/commands/migrate-supabase.d.ts +81 -0
  134. package/dist/commands/migrate-supabase.d.ts.map +1 -0
  135. package/dist/commands/migrate-supabase.js +579 -0
  136. package/dist/commands/migrate-supabase.js.map +1 -0
  137. package/dist/commands/open.d.ts +2 -6
  138. package/dist/commands/open.d.ts.map +1 -1
  139. package/dist/commands/open.js +1 -1
  140. package/dist/commands/open.js.map +1 -1
  141. package/dist/commands/publish-api-error.d.ts +46 -0
  142. package/dist/commands/publish-api-error.d.ts.map +1 -0
  143. package/dist/commands/publish-api-error.js +307 -0
  144. package/dist/commands/publish-api-error.js.map +1 -0
  145. package/dist/commands/publish-failure.d.ts.map +1 -1
  146. package/dist/commands/publish-failure.js +11 -3
  147. package/dist/commands/publish-failure.js.map +1 -1
  148. package/dist/commands/publish-node.d.ts +5 -2
  149. package/dist/commands/publish-node.d.ts.map +1 -1
  150. package/dist/commands/publish-node.js +7 -3
  151. package/dist/commands/publish-node.js.map +1 -1
  152. package/dist/commands/publish.d.ts +58 -17
  153. package/dist/commands/publish.d.ts.map +1 -1
  154. package/dist/commands/publish.js +407 -145
  155. package/dist/commands/publish.js.map +1 -1
  156. package/dist/commands/push.d.ts +2 -12
  157. package/dist/commands/push.d.ts.map +1 -1
  158. package/dist/commands/push.js +25 -7
  159. package/dist/commands/push.js.map +1 -1
  160. package/dist/commands/redeploy.d.ts +2 -8
  161. package/dist/commands/redeploy.d.ts.map +1 -1
  162. package/dist/commands/redeploy.js +20 -16
  163. package/dist/commands/redeploy.js.map +1 -1
  164. package/dist/commands/rename.d.ts +2 -8
  165. package/dist/commands/rename.d.ts.map +1 -1
  166. package/dist/commands/rename.js +1 -1
  167. package/dist/commands/rename.js.map +1 -1
  168. package/dist/commands/reproduce.d.ts +2 -8
  169. package/dist/commands/reproduce.d.ts.map +1 -1
  170. package/dist/commands/reproduce.js +1 -1
  171. package/dist/commands/reproduce.js.map +1 -1
  172. package/dist/commands/reset-superuser.d.ts +2 -16
  173. package/dist/commands/reset-superuser.d.ts.map +1 -1
  174. package/dist/commands/reset-superuser.js +1 -1
  175. package/dist/commands/reset-superuser.js.map +1 -1
  176. package/dist/commands/restore.d.ts +7 -22
  177. package/dist/commands/restore.d.ts.map +1 -1
  178. package/dist/commands/restore.js +1 -1
  179. package/dist/commands/restore.js.map +1 -1
  180. package/dist/commands/resume.d.ts +2 -6
  181. package/dist/commands/resume.d.ts.map +1 -1
  182. package/dist/commands/resume.js +1 -1
  183. package/dist/commands/resume.js.map +1 -1
  184. package/dist/commands/rollback.d.ts +4 -9
  185. package/dist/commands/rollback.d.ts.map +1 -1
  186. package/dist/commands/rollback.js +3 -2
  187. package/dist/commands/rollback.js.map +1 -1
  188. package/dist/commands/sharing.d.ts +48 -0
  189. package/dist/commands/sharing.d.ts.map +1 -0
  190. package/dist/commands/sharing.js +85 -0
  191. package/dist/commands/sharing.js.map +1 -0
  192. package/dist/commands/status.d.ts +29 -0
  193. package/dist/commands/status.d.ts.map +1 -0
  194. package/dist/commands/status.js +48 -0
  195. package/dist/commands/status.js.map +1 -0
  196. package/dist/commands/transfers.d.ts +34 -0
  197. package/dist/commands/transfers.d.ts.map +1 -0
  198. package/dist/commands/transfers.js +62 -0
  199. package/dist/commands/transfers.js.map +1 -0
  200. package/dist/commands/unsuspend.d.ts +2 -6
  201. package/dist/commands/unsuspend.d.ts.map +1 -1
  202. package/dist/commands/unsuspend.js +1 -1
  203. package/dist/commands/unsuspend.js.map +1 -1
  204. package/dist/commands/versions.d.ts +2 -6
  205. package/dist/commands/versions.d.ts.map +1 -1
  206. package/dist/commands/versions.js +1 -1
  207. package/dist/commands/versions.js.map +1 -1
  208. package/dist/commands/wait-deploy.d.ts +2 -12
  209. package/dist/commands/wait-deploy.d.ts.map +1 -1
  210. package/dist/commands/wait-deploy.js +5 -4
  211. package/dist/commands/wait-deploy.js.map +1 -1
  212. package/dist/context.d.ts +15 -0
  213. package/dist/context.d.ts.map +1 -1
  214. package/dist/detect.d.ts +11 -0
  215. package/dist/detect.d.ts.map +1 -1
  216. package/dist/detect.js +31 -8
  217. package/dist/detect.js.map +1 -1
  218. package/dist/env-scan-source.js +1 -1
  219. package/dist/env-scan-source.js.map +1 -1
  220. package/dist/error-classifier.d.ts +17 -0
  221. package/dist/error-classifier.d.ts.map +1 -1
  222. package/dist/error-classifier.js +95 -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/event-renderer.d.ts +17 -0
  228. package/dist/event-renderer.d.ts.map +1 -0
  229. package/dist/event-renderer.js +130 -0
  230. package/dist/event-renderer.js.map +1 -0
  231. package/dist/index.d.ts +63 -47
  232. package/dist/index.d.ts.map +1 -1
  233. package/dist/index.js +56 -40
  234. package/dist/index.js.map +1 -1
  235. package/dist/plans.d.ts +70 -5
  236. package/dist/plans.d.ts.map +1 -1
  237. package/dist/plans.js +83 -18
  238. package/dist/plans.js.map +1 -1
  239. package/dist/poll-deployment.d.ts +13 -1
  240. package/dist/poll-deployment.d.ts.map +1 -1
  241. package/dist/poll-deployment.js +37 -1
  242. package/dist/poll-deployment.js.map +1 -1
  243. package/dist/publish-retry.d.ts +29 -0
  244. package/dist/publish-retry.d.ts.map +1 -0
  245. package/dist/publish-retry.js +224 -0
  246. package/dist/publish-retry.js.map +1 -0
  247. package/dist/recovery.d.ts +60 -3
  248. package/dist/recovery.d.ts.map +1 -1
  249. package/dist/recovery.js +24 -1
  250. package/dist/recovery.js.map +1 -1
  251. package/dist/static-docker.d.ts +77 -0
  252. package/dist/static-docker.d.ts.map +1 -0
  253. package/dist/static-docker.js +105 -0
  254. package/dist/static-docker.js.map +1 -0
  255. package/dist/structured-error-codes.d.ts +30 -0
  256. package/dist/structured-error-codes.d.ts.map +1 -0
  257. package/dist/structured-error-codes.js +86 -0
  258. package/dist/structured-error-codes.js.map +1 -0
  259. package/dist/tarball.d.ts +11 -0
  260. package/dist/tarball.d.ts.map +1 -1
  261. package/dist/tarball.js +31 -10
  262. package/dist/tarball.js.map +1 -1
  263. package/dist/templates/ai-files/cursor-percher-mdc.d.ts.map +1 -1
  264. package/dist/templates/ai-files/cursor-percher-mdc.js +12 -9
  265. package/dist/templates/ai-files/cursor-percher-mdc.js.map +1 -1
  266. package/dist/templates.js +11 -11
  267. package/dist/templates.js.map +1 -1
  268. package/dist/watcher.js +1 -1
  269. package/dist/watcher.js.map +1 -1
  270. package/package.json +7 -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;AA4QD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,307 @@
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
+ * Resolution path is contacting support or using the dashboard —
162
+ * NOT `percher login` (the user's auth is fine) and NOT editing the
163
+ * toml. Distinct from `ACCOUNT_SUSPENDED` which suspends the whole
164
+ * account, not a single app.
165
+ */
166
+ function matchAppSuspended(err) {
167
+ if (err.code !== "APP_SUSPENDED" || err.status !== 403)
168
+ return null;
169
+ return {
170
+ title: "App suspended",
171
+ explanation: err.message,
172
+ suggestion: "Contact support at https://percher.app or check the dashboard for unsuspend options. Re-publishing won't unsuspend the app.",
173
+ recovery: recoveryAsk({
174
+ prompt: `${err.message} Open https://percher.app or contact support — re-publish won't help until the app is unsuspended.`,
175
+ options: ["contact support", "open dashboard"],
176
+ reasonCode: "unknown",
177
+ }),
178
+ summary: `App suspended: ${err.message}`,
179
+ };
180
+ }
181
+ /**
182
+ * Email-verification gate. Server emits `EMAIL_NOT_VERIFIED` (403)
183
+ * from the deploy route when `PERCHER_REQUIRE_EMAIL_VERIFICATION=1`
184
+ * and the user account is past its grace window without a verified
185
+ * email. Resolution path is checking inbox / using the settings
186
+ * page — not editing the toml.
187
+ */
188
+ function matchEmailNotVerified(err) {
189
+ if (err.code !== "EMAIL_NOT_VERIFIED" || err.status !== 403)
190
+ return null;
191
+ return {
192
+ title: "Email not verified",
193
+ explanation: err.message,
194
+ suggestion: "Open the verification link in your inbox, or visit https://percher.app/settings to resend the email. Re-publish after verifying.",
195
+ recovery: recoveryAsk({
196
+ prompt: `${err.message} Verify the email, then retry publish.`,
197
+ options: ["check inbox", "open settings"],
198
+ reasonCode: "unknown",
199
+ }),
200
+ summary: `Email not verified: ${err.message}`,
201
+ };
202
+ }
203
+ /**
204
+ * Auth / permission errors. 401 always belongs here regardless of
205
+ * code (server may not even include a code on missing-token); 403
206
+ * with `UNAUTHORIZED` or `FORBIDDEN` codes is the generic
207
+ * permission-denied path that the specific 403s
208
+ * (plan-limit/suspended/app-suspended/email) didn't already pick
209
+ * up. The 401 path uses `recoveryLogin` so MCP agents see
210
+ * `nextAction: "open_login"` + `suggestedTool: "percher_login"`
211
+ * (the canonical login-recovery contract from recovery.ts); the
212
+ * 403 path uses `recoveryAsk` because permission-denied isn't
213
+ * always login-fixable (could be team-membership, role, etc.).
214
+ *
215
+ * Codex P2 catch on a3b3336: pre-fix this matcher used recoveryAsk
216
+ * for 401 too, which broke the MCP login-recovery flow — agents
217
+ * saw "ask_user" + the suggestion text but no `open_login` action,
218
+ * so they couldn't automate the next step.
219
+ */
220
+ function matchAuthError(err) {
221
+ const isUnauthorized = err.status === 401;
222
+ const isGenericForbidden = err.status === 403 && (err.code === "UNAUTHORIZED" || err.code === "FORBIDDEN");
223
+ if (!isUnauthorized && !isGenericForbidden)
224
+ return null;
225
+ if (isUnauthorized) {
226
+ return {
227
+ title: "Not signed in",
228
+ explanation: err.message,
229
+ suggestion: "Run `percher login` to authenticate and re-publish.",
230
+ recovery: recoveryLogin({ reasonCode: "auth_required" }),
231
+ summary: `Auth required (${err.status} ${err.code || "—"}): ${err.message}`,
232
+ };
233
+ }
234
+ return {
235
+ title: "Permission denied",
236
+ explanation: err.message,
237
+ 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.",
238
+ recovery: recoveryAsk({
239
+ prompt: `${err.message} (${err.code || "FORBIDDEN"}). Confirm account via \`percher whoami\` or re-login.`,
240
+ reasonCode: "auth_required",
241
+ }),
242
+ summary: `Permission denied (${err.status} ${err.code || "—"}): ${err.message}`,
243
+ };
244
+ }
245
+ /**
246
+ * Generic 4xx fall-through. Matches any client-error response from
247
+ * the Percher API that wasn't picked up by a specific matcher
248
+ * above (plan/rate/concurrent/suspended/auth). Renders the server's
249
+ * code + message verbatim instead of layering on the
250
+ * "network issue / Percher bug" suggestion that the publish.ts
251
+ * catch-all uses — those are genuinely server / unknown failures,
252
+ * client-errors are not.
253
+ *
254
+ * Exclusions:
255
+ * - 5xx → catch-all (transient server / "may be a Percher bug").
256
+ * - 408 Request Timeout → catch-all (often network flakiness, not
257
+ * a deterministic client mistake; retry guidance fits better).
258
+ * - 401 / 403 generic auth → handled by `matchAuthError` above
259
+ * so the suggestion routes to `percher login`, not "edit your
260
+ * percher.toml" (Codex P2 catch on a051623).
261
+ */
262
+ function matchGenericClientError(err) {
263
+ if (err.status < 400 || err.status >= 500)
264
+ return null;
265
+ if (err.status === 408)
266
+ return null;
267
+ if (err.status === 401)
268
+ return null;
269
+ if (err.status === 403 && (err.code === "UNAUTHORIZED" || err.code === "FORBIDDEN")) {
270
+ return null;
271
+ }
272
+ const title = titleFromCode(err.code);
273
+ return {
274
+ title,
275
+ explanation: err.message,
276
+ suggestion: "Fix the input (percher.toml, env, app name) and re-publish. Run `percher doctor` if you think the server message is wrong.",
277
+ recovery: recoveryAsk({
278
+ prompt: `${err.message} (${err.code}). Fix the input and re-publish, or run \`percher doctor\` for diagnostics.`,
279
+ reasonCode: "unknown",
280
+ }),
281
+ summary: `${err.code} (${err.status}): ${err.message}`,
282
+ };
283
+ }
284
+ /**
285
+ * Render a screaming-snake API error code as a sentence-case
286
+ * human title. `APP_NAME_TAKEN` → `App name taken`,
287
+ * `NAME_BLOCKED` → `Name blocked`, etc. Keeps the rendering
288
+ * deterministic so tests can assert on it; the server code is
289
+ * still surfaced verbatim in `summary` for log-grep.
290
+ *
291
+ * Uses `charAt(0)` instead of `lower[0]!` so Biome's
292
+ * `noNonNullAssertion` rule stays happy (Codex P3 catch on
293
+ * a051623). Empty input still routes to the explicit
294
+ * "Request rejected" fallback above so charAt's empty-string
295
+ * behaviour can't surface.
296
+ */
297
+ function titleFromCode(code) {
298
+ const lower = code.toLowerCase().replace(/_/g, " ");
299
+ if (lower.length === 0)
300
+ return "Request rejected";
301
+ return lower.charAt(0).toUpperCase() + lower.slice(1);
302
+ }
303
+ /** Re-exported for tests so they don't have to import from publish.ts. */
304
+ export function tomlPathForCwd(cwd) {
305
+ return join(cwd, "percher.toml");
306
+ }
307
+ //# 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;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAwG3E;;;;;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;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,6 +1,7 @@
1
1
  import { join } from "node:path";
2
2
  import { classifyError } from "../error-classifier";
3
3
  import { recoveryAsk, recoveryFromErrorClass } from "../recovery";
4
+ import { classifyByErrorCode } from "../structured-error-codes";
4
5
  function tomlPathFor(cwd) {
5
6
  return join(cwd, "percher.toml");
6
7
  }
@@ -43,9 +44,16 @@ async function buildFailureError(ctx, app, deployment) {
43
44
  buildLogFetchFailed = true;
44
45
  }
45
46
  const errorMessage = deployment.errorMessage ?? "";
46
- // Classify against the build log first (post-build failures are richer),
47
- // then against errorMessage as a fallback for the pre-build / infra case.
48
- const classified = classifyError("Deployment failed", fullLog) ?? classifyError(errorMessage, "");
47
+ // Phase 4.3 prefer the canonical structured `errorCode` from
48
+ // the deployment row. The server-side worker / pipeline /
49
+ // reconciler set this directly, so we don't have to regex-parse
50
+ // the free-form errorMessage. Falls through to the regex
51
+ // classifier when the code is NULL / unknown (legacy deploys
52
+ // from before Phase 4 shipped, or future code variants this
53
+ // CLI build doesn't know about).
54
+ const classified = classifyByErrorCode(deployment.errorCode, errorMessage) ??
55
+ classifyError("Deployment failed", fullLog) ??
56
+ classifyError(errorMessage, "");
49
57
  // Always preserve the raw upstream string when we have one and there's
50
58
  // no build log to anchor to. The classifier replaces it with a friendly
51
59
  // 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":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAwB,WAAW,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGxF,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,iBAAiB,CAC9B,GAAY,EACZ,GAAQ,EACR,UAAsB;IAEtB,yEAAyE;IACzE,sEAAsE;IACtE,2EAA2E;IAC3E,wEAAwE;IACxE,gCAAgC;IAChC,EAAE;IACF,oEAAoE;IACpE,wDAAwD;IACxD,IAAI,YAAgC,CAAC;IACrC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QACnE,+DAA+D;QAC/D,6DAA6D;QAC7D,iEAAiE;QACjE,6DAA6D;QAC7D,mEAAmE;QACnE,sDAAsD;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9C,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mBAAmB,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;IACnD,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,UAAU,GAAG,aAAa,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAAI,aAAa,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAElG,uEAAuE;IACvE,wEAAwE;IACxE,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,eAAe,GACnB,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC9E,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,SAAS,CAAC;IAEhB,sEAAsE;IACtE,MAAM,QAAQ,GACZ,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1F,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,YAAY;YACZ,eAAe;YACf,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,YAAY;YACvB,CAAC,CAAC,0BAA0B,YAAY,EAAE;YAC1C,CAAC,CAAC,uDAAuD;QAC3D,UAAU,EAAE,YAAY;YACtB,CAAC,CAAC,4GAA4G;YAC9G,CAAC,CAAC,mBAAmB;gBACnB,CAAC,CAAC,8KAA8K,GAAG,CAAC,IAAI,YAAY,UAAU,CAAC,EAAE,EAAE;gBACnN,CAAC,CAAC,YAAY;oBACZ,CAAC,CAAC,2BAA2B,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wDAAwD,GAAG,CAAC,IAAI,YAAY,UAAU,CAAC,EAAE,+EAA+E,UAAU,CAAC,EAAE,sBAAsB;oBACnQ,CAAC,CAAC,+MAA+M,UAAU,CAAC,EAAE,EAAE;QACtO,YAAY;QACZ,UAAU,EAAE,cAAc;QAC1B,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,SAAS;QAChB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;QAClB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAK/C;IACC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAoB,KAAK,CAAC,UAAU;QAChD,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,EAAE;YACvC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,QAAQ,EAAE,UAAU,CAAC,EAAE;YACvB,OAAO,EAAE,GAAG,CAAC,IAAI;YACjB,YAAY;YACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;QACJ,CAAC,CAAC,WAAW,CAAC;YACV,MAAM,EACJ,GAAG,GAAG,CAAC,IAAI,WAAW,UAAU,CAAC,EAAE,YAAY,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE;YAC1F,UAAU,EAAE,cAAc;SAC3B,CAAC,CAAC;IACP,OAAO;QACL,KAAK;QACL,QAAQ;QACR,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,YAAY,UAAU,CAAC,EAAE,IAAI;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAMxC;IACC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,yBAAyB,CAAC;QACnE,GAAG;QACH,GAAG;QACH,UAAU;QACV,YAAY,EAAE,KAAgC;KAC/C,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,GAAG;QACH,UAAU;QACV,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK;QACL,QAAQ;QACR,OAAO;QACP,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;QAChC,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;KAC/D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"publish-failure.js","sourceRoot":"","sources":["../../src/commands/publish-failure.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,11 @@
2
2
  * Resolve which Node version will be used by the build, in priority order:
3
3
  * 1. user `.nvmrc` (literal contents trimmed)
4
4
  * 2. user `engines.node` from package.json
5
- * 3. server-side default ("Node 22 LTS" kept in sync with
6
- * packages/api/src/nixpacks/build.ts:DEFAULT_NODE_VERSION)
5
+ * 3. server-side default — sourced from `@percher/shared/runtime` so
6
+ * this can never drift from the API's `DEFAULT_NODE_VERSION` (the
7
+ * Nixpacks `.nvmrc` synthesizer in
8
+ * `packages/api/src/nixpacks/build.ts` reads the same constant).
9
+ * Pre-FUTURE14 the two were independent literals and drifted.
7
10
  * Returns null when this isn't a Node project (no package.json + no .nvmrc).
8
11
  */
9
12
  export declare function resolveNodeVersion(cwd: string): {
@@ -1 +1 @@
1
- {"version":3,"file":"publish-node.d.ts","sourceRoot":"","sources":["../../src/commands/publish-node.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAsBxF"}
1
+ {"version":3,"file":"publish-node.d.ts","sourceRoot":"","sources":["../../src/commands/publish-node.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAsBxF"}
@@ -1,11 +1,15 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
+ import { DEFAULT_NODE_VERSION_LABEL } from "@percher/shared/runtime";
3
4
  /**
4
5
  * Resolve which Node version will be used by the build, in priority order:
5
6
  * 1. user `.nvmrc` (literal contents trimmed)
6
7
  * 2. user `engines.node` from package.json
7
- * 3. server-side default ("Node 22 LTS" kept in sync with
8
- * packages/api/src/nixpacks/build.ts:DEFAULT_NODE_VERSION)
8
+ * 3. server-side default — sourced from `@percher/shared/runtime` so
9
+ * this can never drift from the API's `DEFAULT_NODE_VERSION` (the
10
+ * Nixpacks `.nvmrc` synthesizer in
11
+ * `packages/api/src/nixpacks/build.ts` reads the same constant).
12
+ * Pre-FUTURE14 the two were independent literals and drifted.
9
13
  * Returns null when this isn't a Node project (no package.json + no .nvmrc).
10
14
  */
11
15
  export function resolveNodeVersion(cwd) {
@@ -33,6 +37,6 @@ export function resolveNodeVersion(cwd) {
33
37
  catch {
34
38
  /* fall through */
35
39
  }
36
- return { value: "22 LTS", source: "default" };
40
+ return { value: DEFAULT_NODE_VERSION_LABEL, source: "default" };
37
41
  }
38
42
  //# sourceMappingURL=publish-node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"publish-node.js","sourceRoot":"","sources":["../../src/commands/publish-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"publish-node.js","sourceRoot":"","sources":["../../src/commands/publish-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;QACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAClE,CAAC"}