hatchkit 0.1.40 → 0.1.41

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 (56) hide show
  1. package/dist/adopt.d.ts.map +1 -1
  2. package/dist/adopt.js +305 -73
  3. package/dist/adopt.js.map +1 -1
  4. package/dist/deploy/pages.d.ts +41 -0
  5. package/dist/deploy/pages.d.ts.map +1 -1
  6. package/dist/deploy/pages.js +360 -13
  7. package/dist/deploy/pages.js.map +1 -1
  8. package/dist/deploy/regen-infra.js +4 -0
  9. package/dist/deploy/regen-infra.js.map +1 -1
  10. package/dist/deploy/rollback.d.ts.map +1 -1
  11. package/dist/deploy/rollback.js +14 -0
  12. package/dist/deploy/rollback.js.map +1 -1
  13. package/dist/index.js +193 -18
  14. package/dist/index.js.map +1 -1
  15. package/dist/inventory.d.ts +37 -0
  16. package/dist/inventory.d.ts.map +1 -1
  17. package/dist/inventory.js +502 -44
  18. package/dist/inventory.js.map +1 -1
  19. package/dist/overview.d.ts +101 -0
  20. package/dist/overview.d.ts.map +1 -0
  21. package/dist/overview.js +852 -0
  22. package/dist/overview.js.map +1 -0
  23. package/dist/prompts.d.ts +22 -0
  24. package/dist/prompts.d.ts.map +1 -1
  25. package/dist/prompts.js +239 -33
  26. package/dist/prompts.js.map +1 -1
  27. package/dist/scaffold/infra.d.ts.map +1 -1
  28. package/dist/scaffold/infra.js +7 -1
  29. package/dist/scaffold/infra.js.map +1 -1
  30. package/dist/scaffold/manifest.d.ts +6 -0
  31. package/dist/scaffold/manifest.d.ts.map +1 -1
  32. package/dist/scaffold/manifest.js +1 -0
  33. package/dist/scaffold/manifest.js.map +1 -1
  34. package/dist/scaffold/pages-heuristics.d.ts +17 -0
  35. package/dist/scaffold/pages-heuristics.d.ts.map +1 -0
  36. package/dist/scaffold/pages-heuristics.js +344 -0
  37. package/dist/scaffold/pages-heuristics.js.map +1 -0
  38. package/dist/scaffold/pages-mode.d.ts +10 -0
  39. package/dist/scaffold/pages-mode.d.ts.map +1 -0
  40. package/dist/scaffold/pages-mode.js +109 -0
  41. package/dist/scaffold/pages-mode.js.map +1 -0
  42. package/dist/scaffold/surfaces.d.ts.map +1 -1
  43. package/dist/scaffold/surfaces.js +12 -1
  44. package/dist/scaffold/surfaces.js.map +1 -1
  45. package/dist/utils/cloudflare-api.d.ts +19 -0
  46. package/dist/utils/cloudflare-api.d.ts.map +1 -1
  47. package/dist/utils/cloudflare-api.js +16 -0
  48. package/dist/utils/cloudflare-api.js.map +1 -1
  49. package/dist/utils/coolify-api.d.ts +9 -0
  50. package/dist/utils/coolify-api.d.ts.map +1 -1
  51. package/dist/utils/coolify-api.js +26 -0
  52. package/dist/utils/coolify-api.js.map +1 -1
  53. package/dist/utils/run-ledger.d.ts +20 -0
  54. package/dist/utils/run-ledger.d.ts.map +1 -1
  55. package/dist/utils/run-ledger.js.map +1 -1
  56. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"infra.js","sourceRoot":"","sources":["../../src/scaffold/infra.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"infra.js","sourceRoot":"","sources":["../../src/scaffold/infra.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,12 @@ export interface ProjectManifest {
28
28
  /** Where the app deploys. `existing` vs `new` is public-safe; the
29
29
  * actual serverId/IP is not in the manifest. */
30
30
  deployTarget: "existing" | "new";
31
+ /** How the project is deployed. Optional for back-compat — older
32
+ * manifests predate the field; readers should fall back to
33
+ * `coolify` when absent. `gh-pages` projects skip the Coolify
34
+ * pipeline entirely; downstream tooling (destroy, regen-infra)
35
+ * branches on this. */
36
+ deploymentMode?: "coolify" | "gh-pages" | "scaffold-only";
31
37
  /** GPU platforms each ML service was deployed to. First entry is
32
38
  * the runtime default (`ML_BACKEND`); change `ML_BACKEND` on the
33
39
  * deploy to flip which one serves traffic. */
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/scaffold/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/scaffold/manifest.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,7 @@ export function toManifest(config, ports, cliVersion) {
45
45
  mlServices: [...config.mlServices],
46
46
  s3Provider: config.s3Provider,
47
47
  deployTarget: config.deployTarget,
48
+ deploymentMode: config.deploymentMode,
48
49
  surfaces: config.surfaces,
49
50
  gpuPlatforms: config.gpuPlatforms,
50
51
  customHfModelId: config.customHfModelId,
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/scaffold/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAuIlC;;oEAEoE;AACpE,MAAM,UAAU,UAAU,CACxB,MAAqB,EACrB,KAAmB,EACnB,UAAkB;IAElB,OAAO;QACL,OAAO,EAAE,gBAAgB;QACzB,UAAU;QACV,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC9B,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,KAAK,EAAE;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,QAAyB;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAChD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;gCAGgC;AAChC,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,uBAAwB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IACE,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QACzB,MAAgC,CAAC,OAAO,KAAK,gBAAgB,EAC9D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,kCAAkC,gBAAgB,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,MAAyB,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/scaffold/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AA6IlC;;oEAEoE;AACpE,MAAM,UAAU,UAAU,CACxB,MAAqB,EACrB,KAAmB,EACnB,UAAkB;IAElB,OAAO;QACL,OAAO,EAAE,gBAAgB;QACzB,UAAU;QACV,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC9B,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,KAAK,EAAE;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,QAAyB;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAChD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;gCAGgC;AAChC,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,uBAAwB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IACE,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QACzB,MAAgC,CAAC,OAAO,KAAK,gBAAgB,EAC9D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,kCAAkC,gBAAgB,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,MAAyB,CAAC;AACnC,CAAC"}
@@ -0,0 +1,17 @@
1
+ export type WarningLevel = "block" | "warn" | "info";
2
+ export interface PagesWarning {
3
+ level: WarningLevel;
4
+ /** Short headline (single line). */
5
+ title: string;
6
+ /** Longer explanation of WHY this is a problem on Pages. */
7
+ detail: string;
8
+ /** Paths that triggered the finding, relative to the project root.
9
+ * Empty when the finding is config- rather than file-based. */
10
+ evidence: string[];
11
+ }
12
+ /** Run every check against `projectDir` and return the union of
13
+ * findings, ordered block > warn > info. Returns an empty array
14
+ * when nothing's wrong. */
15
+ export declare function detectPagesIncompatibilities(projectDir: string): PagesWarning[];
16
+ export declare function hasBlockingFinding(warnings: PagesWarning[]): boolean;
17
+ //# sourceMappingURL=pages-heuristics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages-heuristics.d.ts","sourceRoot":"","sources":["../../src/scaffold/pages-heuristics.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf;oEACgE;IAChE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA+UD;;4BAE4B;AAC5B,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,CAgB/E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAEpE"}
@@ -0,0 +1,344 @@
1
+ // Static-site sanity checks for projects targeting GitHub Pages.
2
+ //
3
+ // Run BEFORE pushing a project at `hatchkit gh-pages` so users with
4
+ // a Next.js server, a docker-compose backend, or a `packages/server`
5
+ // don't end up with a successful CI run and a 404 in production.
6
+ //
7
+ // Surfaces three severity levels:
8
+ // · block — almost certainly won't work; refuse to proceed unless
9
+ // the user explicitly overrides.
10
+ // · warn — likely won't function as designed; show + confirm.
11
+ // · info — nothing's broken but the user should know (e.g.
12
+ // `next/image` needs `unoptimized: true` on static export).
13
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
14
+ import { basename, join } from "node:path";
15
+ const EXCLUDED_DIRS = new Set([
16
+ "node_modules",
17
+ ".git",
18
+ "dist",
19
+ "build",
20
+ ".next",
21
+ "out",
22
+ ".turbo",
23
+ ".cache",
24
+ "coverage",
25
+ ".vercel",
26
+ ]);
27
+ // How deep we walk. Most repos that fit a Pages deploy are shallow
28
+ // (<= 4 levels); deeper than that is almost always vendored code we
29
+ // don't want to surface heuristics about.
30
+ const MAX_DEPTH = 5;
31
+ /** Walk a project directory and collect the inputs the per-rule
32
+ * checks need. One disk pass per repo — every rule reads from the
33
+ * same {@link ScanFiles} struct. */
34
+ function scan(projectDir) {
35
+ const packageJsons = [];
36
+ const matches = new Map();
37
+ const probeDirNames = new Set([
38
+ "packages",
39
+ "apps",
40
+ "services",
41
+ "api",
42
+ ]);
43
+ // File names + suffixes we want to record sightings of.
44
+ const fileProbes = [
45
+ { key: "nextConfig", match: (n) => /^next\.config\.(?:ts|js|mjs|cjs)$/.test(n) },
46
+ { key: "middleware", match: (n) => /^middleware\.(?:ts|js)$/.test(n) },
47
+ { key: "dockerfile", match: (n) => n === "Dockerfile" },
48
+ { key: "dockerCompose", match: (n) => /^docker-compose(\..+)?\.ya?ml$/.test(n) },
49
+ ];
50
+ const visit = (dir, depth) => {
51
+ if (depth > MAX_DEPTH)
52
+ return;
53
+ let names;
54
+ try {
55
+ names = readdirSync(dir);
56
+ }
57
+ catch {
58
+ return;
59
+ }
60
+ for (const name of names) {
61
+ if (EXCLUDED_DIRS.has(name))
62
+ continue;
63
+ const fullPath = join(dir, name);
64
+ let s;
65
+ try {
66
+ s = statSync(fullPath);
67
+ }
68
+ catch {
69
+ continue;
70
+ }
71
+ if (s.isDirectory()) {
72
+ if (probeDirNames.has(name)) {
73
+ const arr = matches.get(`dir:${name}`) ?? [];
74
+ arr.push(relative(fullPath, projectDir));
75
+ matches.set(`dir:${name}`, arr);
76
+ }
77
+ if (name === "api") {
78
+ const parent = basename(dir);
79
+ if (parent === "app" || parent === "pages") {
80
+ const arr = matches.get(`nextApiRoutes`) ?? [];
81
+ arr.push(relative(fullPath, projectDir));
82
+ matches.set("nextApiRoutes", arr);
83
+ }
84
+ }
85
+ visit(fullPath, depth + 1);
86
+ continue;
87
+ }
88
+ if (!s.isFile())
89
+ continue;
90
+ if (name === "package.json") {
91
+ try {
92
+ const content = JSON.parse(readFileSync(fullPath, "utf8"));
93
+ packageJsons.push({ path: fullPath, content });
94
+ }
95
+ catch {
96
+ // unreadable / invalid — skip
97
+ }
98
+ continue;
99
+ }
100
+ for (const probe of fileProbes) {
101
+ if (probe.match(name)) {
102
+ const arr = matches.get(probe.key) ?? [];
103
+ arr.push(relative(fullPath, projectDir));
104
+ matches.set(probe.key, arr);
105
+ }
106
+ }
107
+ }
108
+ };
109
+ if (existsSync(projectDir) && statSync(projectDir).isDirectory()) {
110
+ visit(projectDir, 0);
111
+ }
112
+ return { packageJsons, matches };
113
+ }
114
+ function relative(p, root) {
115
+ if (p.startsWith(root))
116
+ return p.slice(root.length + 1);
117
+ return p;
118
+ }
119
+ // ---------------------------------------------------------------------------
120
+ // Individual checks
121
+ // ---------------------------------------------------------------------------
122
+ /** Detect a Next.js project. Returns the paths of every `next.config.*`
123
+ * found AND a flag for whether each one declares `output: "export"`.
124
+ * Anything else (`output: "standalone"`, missing key, etc.) blocks
125
+ * Pages — Next without static export produces a Node server bundle,
126
+ * not the flat `out/` Pages can serve. */
127
+ function checkNextStaticExport(files, projectDir) {
128
+ const configs = files.matches.get("nextConfig") ?? [];
129
+ if (configs.length === 0)
130
+ return null;
131
+ const bad = [];
132
+ for (const rel of configs) {
133
+ let content;
134
+ try {
135
+ content = readFileSync(join(projectDir, rel), "utf8");
136
+ }
137
+ catch {
138
+ continue;
139
+ }
140
+ // `output: "export"` — accept both single and double quotes,
141
+ // and the `output:'export'` (no space) form. We don't try to
142
+ // statically evaluate the file — a simple regex is right 99% of
143
+ // the time and false-positives are user-fixable.
144
+ const hasExport = /output\s*:\s*['"]export['"]/.test(content);
145
+ if (!hasExport)
146
+ bad.push(rel);
147
+ }
148
+ if (bad.length === 0)
149
+ return null;
150
+ return {
151
+ level: "block",
152
+ title: "Next.js without `output: \"export\"`",
153
+ detail: "GitHub Pages serves static files only. Without `output: \"export\"` in your next.config, Next builds a Node server bundle that Pages can't host. Either set `output: \"export\"` (and remove any server-only features) or deploy somewhere with a runtime (Vercel / Coolify).",
154
+ evidence: bad,
155
+ };
156
+ }
157
+ /** Next's `middleware.ts` runs server-side per request — incompatible
158
+ * with static export. Different from regular page rendering. */
159
+ function checkNextMiddleware(files) {
160
+ const middleware = files.matches.get("middleware") ?? [];
161
+ // Only treat as a problem when there's also a Next config — `middleware.ts`
162
+ // in a non-Next project is just a file.
163
+ if (middleware.length === 0)
164
+ return null;
165
+ const hasNext = (files.matches.get("nextConfig") ?? []).length > 0;
166
+ if (!hasNext)
167
+ return null;
168
+ return {
169
+ level: "block",
170
+ title: "Next.js middleware present",
171
+ detail: "Next's `middleware.ts` runs per request and isn't available on static export. Pages can't execute it. Remove the middleware or deploy to a runtime that supports it.",
172
+ evidence: middleware,
173
+ };
174
+ }
175
+ /** API routes (`app/api/*` or `pages/api/*`) are server-only on Next.
176
+ * Static export drops them silently — the user gets a successful
177
+ * build and broken endpoints in prod. */
178
+ function checkNextApiRoutes(files) {
179
+ const routes = files.matches.get("nextApiRoutes") ?? [];
180
+ if (routes.length === 0)
181
+ return null;
182
+ return {
183
+ level: "warn",
184
+ title: "Next.js API routes present",
185
+ detail: "`app/api/*` and `pages/api/*` are server-only — static export silently drops them. Anything that fetches `/api/...` from the client will 404 on Pages. Move the API to a separate backend (Coolify / a different host) or remove these routes.",
186
+ evidence: routes,
187
+ };
188
+ }
189
+ /** A second package or workspace dir that looks like a backend
190
+ * (packages/server, apps/server, apps/api, services/*). Static
191
+ * Pages can't run these. */
192
+ function checkServerPackages(files) {
193
+ const evidence = [];
194
+ const packagesDirs = files.matches.get("dir:packages") ?? [];
195
+ const appsDirs = files.matches.get("dir:apps") ?? [];
196
+ const servicesDirs = files.matches.get("dir:services") ?? [];
197
+ // Common backend folder names under packages/ or apps/. We can't
198
+ // walk into them again here (visit already did), so trust naming.
199
+ // Find package.jsons whose directory name screams "backend".
200
+ for (const pkg of files.packageJsons) {
201
+ const dirName = basename(pkg.path.replace(/\/package\.json$/, ""));
202
+ if (/^(server|api|backend|worker)$/i.test(dirName)) {
203
+ evidence.push(pkg.path.replace(/^.*\/packages\//, "packages/").replace(/^.*\/apps\//, "apps/"));
204
+ }
205
+ }
206
+ // services/<thing>/Dockerfile typically signals a deployable service.
207
+ const dockerfiles = files.matches.get("dockerfile") ?? [];
208
+ for (const df of dockerfiles) {
209
+ if (df.startsWith("services/") || df.startsWith("apps/server/") || df.startsWith("packages/server/")) {
210
+ evidence.push(df);
211
+ }
212
+ }
213
+ // Dedup against signal noise from packagesDirs / appsDirs / servicesDirs.
214
+ if (evidence.length === 0 && servicesDirs.length === 0 && packagesDirs.length === 0 && appsDirs.length === 0) {
215
+ return null;
216
+ }
217
+ if (evidence.length === 0)
218
+ return null;
219
+ const unique = Array.from(new Set(evidence));
220
+ return {
221
+ level: "warn",
222
+ title: "Backend / server packages detected",
223
+ detail: "These directories look like they ship a server (Dockerfile, server/api/worker package). GitHub Pages can't host them. If your client calls these from the browser, the calls will fail in production unless the backend lives somewhere else. Consider Coolify for the full-stack deploy.",
224
+ evidence: unique,
225
+ };
226
+ }
227
+ /** Server-only deps in any package.json (mongodb, postgres, redis,
228
+ * prisma, etc.). Catches projects where someone imported a DB driver
229
+ * intending to use it server-side. */
230
+ function checkServerDeps(files) {
231
+ const serverDeps = new Map([
232
+ ["mongoose", "MongoDB driver"],
233
+ ["mongodb", "MongoDB driver"],
234
+ ["pg", "Postgres driver"],
235
+ ["postgres", "Postgres driver"],
236
+ ["mysql2", "MySQL driver"],
237
+ ["redis", "Redis client"],
238
+ ["ioredis", "Redis client"],
239
+ ["@prisma/client", "Prisma ORM"],
240
+ ["prisma", "Prisma ORM"],
241
+ ["drizzle-orm", "Drizzle ORM"],
242
+ ["better-auth", "server-side auth"],
243
+ ["next-auth", "server-side auth"],
244
+ ["socket.io", "WebSocket server"],
245
+ ["ws", "WebSocket server"],
246
+ ["express", "HTTP server framework"],
247
+ ["hono", "HTTP server framework"],
248
+ ["fastify", "HTTP server framework"],
249
+ ["koa", "HTTP server framework"],
250
+ ["@trpc/server", "tRPC server"],
251
+ ]);
252
+ const findings = [];
253
+ for (const pkg of files.packageJsons) {
254
+ const allDeps = { ...(pkg.content.dependencies ?? {}), ...(pkg.content.devDependencies ?? {}) };
255
+ for (const dep of Object.keys(allDeps)) {
256
+ const reason = serverDeps.get(dep);
257
+ if (reason) {
258
+ const rel = pkg.path.replace(/.*\//, "");
259
+ const dirHint = pkg.path
260
+ .replace(/\/package\.json$/, "")
261
+ .split("/")
262
+ .slice(-2)
263
+ .join("/");
264
+ findings.push(`${dep} (${reason}) — ${dirHint}/${rel}`);
265
+ }
266
+ }
267
+ }
268
+ if (findings.length === 0)
269
+ return null;
270
+ return {
271
+ level: "warn",
272
+ title: "Server-side dependencies in package.json",
273
+ detail: "These packages only do useful work on a server. On Pages they'll either be dead weight in the client bundle or import-fail at build. Make sure they're tree-shaken out of any client entrypoint, or migrate to a deploy target that runs Node.",
274
+ evidence: findings,
275
+ };
276
+ }
277
+ /** docker-compose typically describes a multi-service runtime —
278
+ * Pages can't host that. Soft warn rather than block: some projects
279
+ * keep compose around for local dev only. */
280
+ function checkDockerCompose(files) {
281
+ const composes = files.matches.get("dockerCompose") ?? [];
282
+ if (composes.length === 0)
283
+ return null;
284
+ return {
285
+ level: "info",
286
+ title: "docker-compose.yml present",
287
+ detail: "Compose describes services hatchkit can't deploy to Pages. If it's local-dev-only, you can leave it; otherwise, anything it spins up won't exist in production.",
288
+ evidence: composes,
289
+ };
290
+ }
291
+ /** Static export drops `next/image` optimization — needs `unoptimized:
292
+ * true` or use a third-party loader. Info-level: the build won't fail,
293
+ * but images will be unoptimized at runtime. */
294
+ function checkNextImageUnoptimized(files, projectDir) {
295
+ const configs = files.matches.get("nextConfig") ?? [];
296
+ if (configs.length === 0)
297
+ return null;
298
+ const missing = [];
299
+ for (const rel of configs) {
300
+ try {
301
+ const content = readFileSync(join(projectDir, rel), "utf8");
302
+ if (!/images\s*:\s*\{[^}]*unoptimized\s*:\s*true/s.test(content)) {
303
+ missing.push(rel);
304
+ }
305
+ }
306
+ catch {
307
+ // skip
308
+ }
309
+ }
310
+ if (missing.length === 0)
311
+ return null;
312
+ return {
313
+ level: "info",
314
+ title: "`images.unoptimized: true` not set",
315
+ detail: "Static export can't run the Next image optimizer. Set `images: { unoptimized: true }` in next.config or images will fail to load (especially with `<Image>`). hatchkit's scaffold path can apply this automatically.",
316
+ evidence: missing,
317
+ };
318
+ }
319
+ // ---------------------------------------------------------------------------
320
+ // Public entrypoint
321
+ // ---------------------------------------------------------------------------
322
+ /** Run every check against `projectDir` and return the union of
323
+ * findings, ordered block > warn > info. Returns an empty array
324
+ * when nothing's wrong. */
325
+ export function detectPagesIncompatibilities(projectDir) {
326
+ const files = scan(projectDir);
327
+ const checks = [
328
+ checkNextStaticExport(files, projectDir),
329
+ checkNextMiddleware(files),
330
+ checkNextApiRoutes(files),
331
+ checkServerPackages(files),
332
+ checkServerDeps(files),
333
+ checkDockerCompose(files),
334
+ checkNextImageUnoptimized(files, projectDir),
335
+ ];
336
+ const order = { block: 0, warn: 1, info: 2 };
337
+ return checks
338
+ .filter((w) => w !== null)
339
+ .sort((a, b) => order[a.level] - order[b.level]);
340
+ }
341
+ export function hasBlockingFinding(warnings) {
342
+ return warnings.some((w) => w.level === "block");
343
+ }
344
+ //# sourceMappingURL=pages-heuristics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages-heuristics.js","sourceRoot":"","sources":["../../src/scaffold/pages-heuristics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** Apply all gh-pages-specific changes to a scaffolded project that
2
+ * has already gone through `pruneToClientOnly`. Idempotent: safe to
3
+ * call against a project that's already had these tweaks applied
4
+ * (each step checks for the desired end state first). */
5
+ export declare function applyPagesMode(outputDir: string, modifications: string[]): void;
6
+ /** Read the patched next.config back as a string. Useful for tests
7
+ * and for the adopt flow's heuristics-driven warning ("we WOULD
8
+ * patch your next.config to look like X"). */
9
+ export declare function previewPatchedNextConfig(outputDir: string): string | null;
10
+ //# sourceMappingURL=pages-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages-mode.d.ts","sourceRoot":"","sources":["../../src/scaffold/pages-mode.ts"],"names":[],"mappings":"AAcA;;;0DAG0D;AAC1D,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAG/E;AAoFD;;+CAE+C;AAC/C,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOzE"}
@@ -0,0 +1,109 @@
1
+ // Pages-specific tweaks applied AFTER `pruneToClientOnly`.
2
+ //
3
+ // The client-only prune strips the server package + tRPC/auth glue,
4
+ // but leaves the Next config configured for a standalone server +
5
+ // `/api/*` rewrites that assume a backend. Pages serves flat static
6
+ // files; nothing of that wiring makes sense here.
7
+ //
8
+ // This module patches what's left so `pnpm build` in the pruned
9
+ // package produces an `out/` directory ready for `actions/upload-pages-artifact`.
10
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
11
+ import { join } from "node:path";
12
+ import { rewriteFile } from "./starter-files.js";
13
+ /** Apply all gh-pages-specific changes to a scaffolded project that
14
+ * has already gone through `pruneToClientOnly`. Idempotent: safe to
15
+ * call against a project that's already had these tweaks applied
16
+ * (each step checks for the desired end state first). */
17
+ export function applyPagesMode(outputDir, modifications) {
18
+ patchNextConfig(outputDir, modifications);
19
+ ensureCnameDirExists(outputDir, modifications);
20
+ }
21
+ /** Rewrite `packages/client/next.config.ts` (or .js/.mjs) so it
22
+ * static-exports cleanly:
23
+ * · `output: "export"` — produces a flat `out/` Pages can host
24
+ * · drop the `rewrites()` block — Pages can't run server rewrites
25
+ * · `images: { unoptimized: true }` — static export has no image server
26
+ *
27
+ * No-ops when there's no Next config (e.g. someone's swapped the
28
+ * client for plain Vite — they'll have their own build pipeline).
29
+ * Failures here aren't fatal because hatchkit-create can warn the
30
+ * user before the first push.
31
+ */
32
+ function patchNextConfig(outputDir, modifications) {
33
+ const candidates = ["next.config.ts", "next.config.js", "next.config.mjs", "next.config.cjs"];
34
+ const clientDir = join(outputDir, "packages/client");
35
+ const found = candidates
36
+ .map((c) => join(clientDir, c))
37
+ .find((p) => existsSync(p));
38
+ if (!found)
39
+ return;
40
+ rewriteFile(found, (raw) => {
41
+ let out = raw;
42
+ // 1. Switch `output: "standalone"` → `output: "export"`. The
43
+ // starter writes "standalone"; users on different configs
44
+ // may have something else. Accept any quoted value or no
45
+ // `output` key at all.
46
+ if (/output\s*:\s*['"][^'"]*['"]/.test(out)) {
47
+ out = out.replace(/output\s*:\s*['"][^'"]*['"]/, 'output: "export"');
48
+ }
49
+ else {
50
+ // Inject into the config object. Match the opening of the
51
+ // typed `: NextConfig = {` declaration (or a bare `= {` for
52
+ // .js configs). Insert as the first property.
53
+ out = out.replace(/(NextConfig\s*=\s*\{|=\s*\{)/, '$1\n output: "export",');
54
+ }
55
+ // 2. Drop the `rewrites()` block. It's an async function inside
56
+ // the config object. Match `async rewrites() { ... },` —
57
+ // JS doesn't have multi-line regex without `s` flag; use it.
58
+ out = out.replace(/async\s+rewrites\s*\(\s*\)\s*\{[\s\S]*?\n\s*\},?\s*\n/, "");
59
+ // 3. Ensure `images.unoptimized: true`. Without this, `<Image>`
60
+ // fails at runtime on a static export.
61
+ if (!/images\s*:\s*\{[^}]*unoptimized\s*:\s*true/s.test(out)) {
62
+ // No images block at all? Inject right after `output: "export"`.
63
+ if (!/images\s*:\s*\{/.test(out)) {
64
+ out = out.replace(/(output\s*:\s*['"]export['"]\s*,)/, '$1\n images: { unoptimized: true },');
65
+ }
66
+ else {
67
+ // images block exists but missing the flag. Add unoptimized.
68
+ out = out.replace(/(images\s*:\s*\{)/, "$1 unoptimized: true,");
69
+ }
70
+ }
71
+ return out;
72
+ });
73
+ modifications.push("gh-pages: patched next.config (output=export, dropped rewrites, images.unoptimized=true)");
74
+ }
75
+ /** Make sure the publish folder hatchkit's gh-pages flow writes
76
+ * CNAME into actually exists. For Next.js client-only that's
77
+ * `packages/client/public/`. The starter ships this folder, but if
78
+ * someone's stripped it bare we recreate it (and drop a `.gitkeep`)
79
+ * so the CNAME write doesn't fail.
80
+ *
81
+ * Mirrors the safety net in `writeCnameFile` in pages.ts — duplicated
82
+ * here because applyPagesMode runs at scaffold time, before the
83
+ * pages-setup step that writes CNAME.
84
+ */
85
+ function ensureCnameDirExists(outputDir, modifications) {
86
+ const publicDir = join(outputDir, "packages/client/public");
87
+ if (existsSync(publicDir))
88
+ return;
89
+ // Create with a placeholder so git tracks the directory. We don't
90
+ // import mkdirSync at the top to keep imports tight; pull it lazily.
91
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
92
+ const { mkdirSync } = require("node:fs");
93
+ mkdirSync(publicDir, { recursive: true });
94
+ writeFileSync(join(publicDir, ".gitkeep"), "");
95
+ modifications.push("gh-pages: created packages/client/public/ for CNAME placement");
96
+ }
97
+ /** Read the patched next.config back as a string. Useful for tests
98
+ * and for the adopt flow's heuristics-driven warning ("we WOULD
99
+ * patch your next.config to look like X"). */
100
+ export function previewPatchedNextConfig(outputDir) {
101
+ const candidates = ["next.config.ts", "next.config.js", "next.config.mjs", "next.config.cjs"];
102
+ const found = candidates
103
+ .map((c) => join(outputDir, "packages/client", c))
104
+ .find((p) => existsSync(p));
105
+ if (!found)
106
+ return null;
107
+ return readFileSync(found, "utf8");
108
+ }
109
+ //# sourceMappingURL=pages-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages-mode.js","sourceRoot":"","sources":["../../src/scaffold/pages-mode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"surfaces.d.ts","sourceRoot":"","sources":["../../src/scaffold/surfaces.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI5D;;6BAE6B;AAC7B,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EAAE,GACtB,IAAI,CAIN;AA2TD;yEACyE;AACzE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE1D"}
1
+ {"version":3,"file":"surfaces.d.ts","sourceRoot":"","sources":["../../src/scaffold/surfaces.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI5D;;6BAE6B;AAC7B,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EAAE,GACtB,IAAI,CAgBN;AA2TD;yEACyE;AACzE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE1D"}
@@ -33,8 +33,19 @@ export function pruneToSurface(config, outputDir, modifications) {
33
33
  return;
34
34
  if (config.surfaces === "server-only")
35
35
  pruneToServerOnly(outputDir, modifications);
36
- else
36
+ else {
37
37
  pruneToClientOnly(outputDir, modifications);
38
+ // Pages needs additional config tweaks on top of the client-only
39
+ // prune — the prune leaves `output: "standalone"` + `/api/*`
40
+ // rewrites in place, both of which assume a running backend.
41
+ if (config.deploymentMode === "gh-pages") {
42
+ // Lazy import to avoid pulling node:fs deeper than needed for
43
+ // the non-pages paths. The dep graph here is already heavy.
44
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
45
+ const { applyPagesMode } = require("./pages-mode.js");
46
+ applyPagesMode(outputDir, modifications);
47
+ }
48
+ }
38
49
  }
39
50
  // ── server-only ────────────────────────────────────────────────────────
40
51
  function pruneToServerOnly(outputDir, modifications) {