@mozole/cli 1.4.1 → 1.4.3

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 (82) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +27 -2
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +49 -22
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/adopt.d.ts +2 -0
  7. package/dist/commands/adopt.d.ts.map +1 -1
  8. package/dist/commands/adopt.js +53 -16
  9. package/dist/commands/adopt.js.map +1 -1
  10. package/dist/commands/logs.d.ts.map +1 -1
  11. package/dist/commands/logs.js +2 -1
  12. package/dist/commands/logs.js.map +1 -1
  13. package/dist/commands/new.d.ts.map +1 -1
  14. package/dist/commands/new.js +63 -15
  15. package/dist/commands/new.js.map +1 -1
  16. package/dist/commands/template.d.ts +8 -0
  17. package/dist/commands/template.d.ts.map +1 -0
  18. package/dist/commands/template.js +392 -0
  19. package/dist/commands/template.js.map +1 -0
  20. package/dist/commands/ui.d.ts +5 -0
  21. package/dist/commands/ui.d.ts.map +1 -1
  22. package/dist/commands/ui.js +159 -9
  23. package/dist/commands/ui.js.map +1 -1
  24. package/dist/config/project.d.ts +3 -0
  25. package/dist/config/project.d.ts.map +1 -1
  26. package/dist/config/project.js +21 -2
  27. package/dist/config/project.js.map +1 -1
  28. package/dist/governor/fingerprint.d.ts.map +1 -1
  29. package/dist/governor/fingerprint.js +19 -28
  30. package/dist/governor/fingerprint.js.map +1 -1
  31. package/dist/output-safety.d.ts +3 -0
  32. package/dist/output-safety.d.ts.map +1 -0
  33. package/dist/output-safety.js +44 -0
  34. package/dist/output-safety.js.map +1 -0
  35. package/dist/platform/process.d.ts +2 -0
  36. package/dist/platform/process.d.ts.map +1 -1
  37. package/dist/platform/process.js +16 -6
  38. package/dist/platform/process.js.map +1 -1
  39. package/dist/qa/artifacts.d.ts +3 -0
  40. package/dist/qa/artifacts.d.ts.map +1 -0
  41. package/dist/qa/artifacts.js +15 -0
  42. package/dist/qa/artifacts.js.map +1 -0
  43. package/dist/qa/diff.d.ts.map +1 -1
  44. package/dist/qa/diff.js +0 -1
  45. package/dist/qa/diff.js.map +1 -1
  46. package/dist/qa/runner.d.ts +3 -2
  47. package/dist/qa/runner.d.ts.map +1 -1
  48. package/dist/qa/runner.js +12 -16
  49. package/dist/qa/runner.js.map +1 -1
  50. package/dist/qa/server.d.ts.map +1 -1
  51. package/dist/qa/server.js +7 -7
  52. package/dist/qa/server.js.map +1 -1
  53. package/dist/scaffold/design.d.ts +1 -1
  54. package/dist/scaffold/design.d.ts.map +1 -1
  55. package/dist/scaffold/design.js +1 -0
  56. package/dist/scaffold/design.js.map +1 -1
  57. package/dist/scaffold/standalone.d.ts +1 -1
  58. package/dist/scaffold/standalone.d.ts.map +1 -1
  59. package/dist/scaffold/standalone.js +82 -2
  60. package/dist/scaffold/standalone.js.map +1 -1
  61. package/dist/scaffold/templates.d.ts +1 -0
  62. package/dist/scaffold/templates.d.ts.map +1 -1
  63. package/dist/scaffold/templates.js +23 -2
  64. package/dist/scaffold/templates.js.map +1 -1
  65. package/dist/template/servers.d.ts +21 -0
  66. package/dist/template/servers.d.ts.map +1 -0
  67. package/dist/template/servers.js +193 -0
  68. package/dist/template/servers.js.map +1 -0
  69. package/dist/template/workspace.d.ts +23 -0
  70. package/dist/template/workspace.d.ts.map +1 -0
  71. package/dist/template/workspace.js +152 -0
  72. package/dist/template/workspace.js.map +1 -0
  73. package/dist/verify/runner.d.ts +2 -1
  74. package/dist/verify/runner.d.ts.map +1 -1
  75. package/dist/verify/runner.js +2 -2
  76. package/dist/verify/runner.js.map +1 -1
  77. package/dist/version.d.ts +4 -2
  78. package/dist/version.d.ts.map +1 -1
  79. package/dist/version.js +3 -1
  80. package/dist/version.js.map +1 -1
  81. package/docs/agent-audit.md +1 -1
  82. package/package.json +1 -1
@@ -28,6 +28,8 @@ export function projectConfig(name, options = {}) {
28
28
  },
29
29
  verifiers: [],
30
30
  };
31
+ if (options.sharedDependencies)
32
+ config.workspace = { sharedDependencies: true };
31
33
  if (!isScaffold) {
32
34
  config.cce = {
33
35
  enabled: true,
@@ -55,6 +57,9 @@ const json = (value) => `${JSON.stringify(value, null, 2)}\n`;
55
57
  export function projectTemplates(name, options = {}) {
56
58
  const isScaffold = options.scaffold !== false;
57
59
  const cliSpec = process.env.MOZOLE_CLI_SPEC ?? TOOLCHAIN.mozoleCli;
60
+ const dependencyGuide = options.sharedDependencies
61
+ ? "Dependencies and test tools are provided by the parent Mozole template workspace; do not create a project-local node_modules tree."
62
+ : "Dependencies and test tools are pre-installed by `mozole new`.";
58
63
  const scripts = {
59
64
  build: "react-router build",
60
65
  dev: "react-router dev",
@@ -99,6 +104,8 @@ export function projectTemplates(name, options = {}) {
99
104
  "@types/react": TOOLCHAIN.typesReact,
100
105
  "@types/react-dom": TOOLCHAIN.typesReactDom,
101
106
  "@vitejs/plugin-react": TOOLCHAIN.viteReact,
107
+ "@tailwindcss/vite": TOOLCHAIN.tailwindVite,
108
+ tailwindcss: TOOLCHAIN.tailwindcss,
102
109
  jsdom: TOOLCHAIN.jsdom,
103
110
  typescript: TOOLCHAIN.typescript,
104
111
  vite: TOOLCHAIN.vite,
@@ -168,7 +175,9 @@ export function projectTemplates(name, options = {}) {
168
175
  },
169
176
  }),
170
177
  "react-router.config.ts": 'import type { Config } from "@react-router/dev/config";\n\nexport default {\n ssr: false,\n prerender: true,\n} satisfies Config;\n',
171
- "vite.config.ts": viteConfig,
178
+ "vite.config.ts": viteConfig
179
+ .replace("import { defineConfig }", 'import tailwindcss from "@tailwindcss/vite";\nimport { defineConfig }')
180
+ .replace("plugins: [reactRouter()]", "plugins: [tailwindcss(), reactRouter()]"),
172
181
  "tsconfig.json": json({
173
182
  include: ["**/*", ".react-router/types/**/*"],
174
183
  compilerOptions: {
@@ -226,7 +235,7 @@ export function projectTemplates(name, options = {}) {
226
235
  "AGENTS.md": "# Project guide\n\n## Commands\n\n- `npm run dev` — local app\n- `npm run verify` — lint, typecheck, tests, production build\n- `npm run qa` — deterministic browser QA (no screenshots)\n- `npm run qa:interactive` — adds safe interaction probes\n- `npm run qa:visual` — explicit screenshot review\n- `mozole cce install` — install persistent CCE and required uv runtime\n- `mozole ui` — full-screen terminal dashboard\n\n## Architecture\n\nReact Router Framework Mode lives in `app/`; routes are in `app/routes.ts`; static output is `build/client/`. Mozole settings are in `.mozole/`; Antigravity integration is in `.agents/`; deeper decisions belong in `docs/`.\n\n## Mandatory CCE contract\n\nRepository reads are forbidden by default. Allowed retrieval order:\n\n1. CCE `context_search`\n2. additional CCE search, `expand_chunk`, or `related_context`\n3. bounded line-range read only when CCE output is insufficient\n4. full-file read only after explicit escalation\n\nEditing a file is NOT sufficient justification for reading it in full. If CCE is unavailable, stop and report the blocker instead of falling back to repository reads. Prefer localized patches and inspect `git diff`. Keep narration and successful logs concise. Routine browser validation uses screenshot-free `mozole qa`; visual QA requires an explicit user request or confirmed deterministic failure. Stop after requested work, `mozole verify`, and relevant routine QA pass.\n",
227
236
  "CLAUDE.md": "@AGENTS.md\n\n## Claude Code CCE contract\n\nRepository reads are forbidden by default. Use `context_search`, then additional CCE retrieval. Read may use a bounded line range only when CCE is insufficient; a full-file Read requires explicit escalation. Editing is not justification. If CCE is unavailable, report the blocker; do not fall back.\n",
228
237
  "docs/architecture.md": "# Architecture\n\nThe app uses React Router Framework Mode with Vite. `ssr: false` and `prerender: true` emit real HTML for every statically declared route. Static files in `build/client/` can be served beside a future PHP backend without a production Node process. Mozole fingerprints relevant inputs under `.mozole/state/`; unchanged successful verification and QA are reused, while `--force` requests fresh evidence. Codex and Claude Code use the shared root instructions; Antigravity workspace MCP, rules, and workflows live under `.agents/` and share the same CCE index.\n",
229
- "README.md": `# ${name}\n\nStatic-first React Router Framework Mode project generated by Mozole for Codex, Claude Code, and Google Antigravity.\n\n## Start\n\n\`\`\`sh\nnpm run dev\n\`\`\`\n\nDependencies and test tools are pre-installed by \`mozole new\`. Run \`npm run verify\` before handoff and \`npm run qa\` for screenshot-free browser checks. Unchanged successful checks are reused; use \`--force\` for intentionally fresh evidence. Visual QA is explicit only. Antigravity workspace integration is under \`.agents/\`. Production files are emitted to \`build/client/\`.\n`,
238
+ "README.md": `# ${name}\n\nStatic-first React Router Framework Mode project generated by Mozole for Codex, Claude Code, and Google Antigravity.\n\n## Start\n\n\`\`\`sh\nnpm run dev\n\`\`\`\n\n${dependencyGuide} Run \`npm run verify\` before handoff and \`npm run qa\` for screenshot-free browser checks. Unchanged successful checks are reused; use \`--force\` for intentionally fresh evidence. Visual QA is explicit only. Antigravity workspace integration is under \`.agents/\`. Production files are emitted to \`build/client/\`.\n`,
230
239
  };
231
240
  if (!isScaffold) {
232
241
  for (const [file, agent] of [
@@ -290,6 +299,18 @@ export function projectTemplates(name, options = {}) {
290
299
  }
291
300
  if (!isScaffold)
292
301
  files["AGENTS.md"] += `\n${designGuardrails}`;
302
+ files["app/styles/global.css"] =
303
+ '@import "tailwindcss";\n\n@layer base {\n' +
304
+ (files["app/styles/global.css"] ?? "")
305
+ .split("\n")
306
+ .filter(Boolean)
307
+ .map((line) => ` ${line}`)
308
+ .join("\n") +
309
+ "\n}\n";
310
+ files["app/routes/home.tsx"] =
311
+ files["app/routes/home.tsx"]?.replace('<p className="eyebrow">', '<p className="eyebrow text-sm">') ?? "";
312
+ files["README.md"] +=
313
+ "\n## Styling\n\nTailwind CSS v4 is installed through `@tailwindcss/vite`. The CSS entry is `app/styles/global.css`; starter styles live in `@layer base` so utilities can override them. Use complete, static utility class names. Map project design tokens with `@theme` when needed.\n";
293
314
  files["AGENTS.md"] = instructionBlock(files["AGENTS.md"] ?? "");
294
315
  return files;
295
316
  }
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAOzB,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,OAAO,GAA2B,EAAE;IAEpC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC;IAE9C,MAAM,MAAM,GAAiB;QAC3B,aAAa,EAAE,CAAC;QAChB,IAAI;QACJ,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;QAC3C,SAAS,EAAE,cAAc;QACzB,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC;QACnC,EAAE,EAAE;YACF,SAAS,EAAE;gBACT,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;gBAC3B,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC5B,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;aAC7B;YACD,mBAAmB,EAAE,IAAI;YACzB,MAAM,EAAE;gBACN,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC;gBACjD,aAAa,EAAE,GAAG;gBAClB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,GAAG;YACX,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,sBAAsB;SAChC,CAAC;QACF,MAAM,CAAC,QAAQ,GAAG;YAChB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;SACrC,CAAC;QACF,MAAM,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,GAAG;YACf,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAEvE,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,OAAO,GAA2B,EAAE;IAEpC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC,SAAS,CAAC;IAEnE,MAAM,OAAO,GAA2B;QACtC,KAAK,EAAE,oBAAoB;QAC3B,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,wBAAwB;QAChC,SAAS,EAAE,sCAAsC;QACjD,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,uBAAuB;QACvC,EAAE,EAAE,WAAW;QACf,UAAU,EAAE,mBAAmB;QAC/B,gBAAgB,EAAE,yBAAyB;QAC3C,WAAW,EAAE,oBAAoB;KAClC,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,SAAS,CAAC,GAAG,4CAA4C,CAAC;QAClE,OAAO,CAAC,WAAW,CAAC,GAAG,4BAA4B,CAAC;QACpD,OAAO,CAAC,cAAc,CAAC;YACrB,+DAA+D,CAAC;IACpE,CAAC;IAED,MAAM,WAAW,GAQb;QACF,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;QACjC,IAAI;QACJ,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,YAAY,EAAE;YACZ,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,WAAW,EAAE,SAAS,CAAC,QAAQ;YAC/B,cAAc,EAAE,SAAS,CAAC,WAAW;SACtC;QACD,eAAe,EAAE;YACf,gBAAgB,EAAE,SAAS,CAAC,KAAK;YACjC,aAAa,EAAE,OAAO;YACtB,mBAAmB,EAAE,SAAS,CAAC,WAAW;YAC1C,2BAA2B,EAAE,SAAS,CAAC,qBAAqB;YAC5D,wBAAwB,EAAE,SAAS,CAAC,mBAAmB;YACvD,6BAA6B,EAAE,SAAS,CAAC,uBAAuB;YAChE,aAAa,EAAE,SAAS,CAAC,SAAS;YAClC,cAAc,EAAE,SAAS,CAAC,UAAU;YACpC,kBAAkB,EAAE,SAAS,CAAC,aAAa;YAC3C,sBAAsB,EAAE,SAAS,CAAC,SAAS;YAC3C,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,SAAS,CAAC,MAAM;SACzB;KACF,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAClD,WAAW,CAAC,eAAe,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAC9D,OAAO,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,yGAAyG,CAAC;QAC5K,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACzC,OAAO,CAAC,EAAE,GAAG,qBAAqB,CAAC;QACnC,OAAO,CAAC,UAAU,CAAC,GAAG,6BAA6B,CAAC;QACpD,OAAO,CAAC,gBAAgB,CAAC,GAAG,mCAAmC,CAAC;QAChE,OAAO,CAAC,WAAW,CAAC,GAAG,8BAA8B,CAAC;IACxD,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO;QAChC,CAAC,CAAC,6SAA6S;QAC/S,CAAC,CAAC,6JAA6J,CAAC;IAElK,MAAM,KAAK,GAA2B;QACpC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC;QACjC,sBAAsB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC;QACzC,YAAY,EACV,kMAAkM;QACpM,sBAAsB,EACpB,6GAA6G;QAC/G,yBAAyB,EAAE,IAAI,CAAC;YAC9B,UAAU,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE;SAC7C,CAAC;QACF,yBAAyB,EACvB,8mBAA8mB;QAChnB,oCAAoC,EAClC,wTAAwT;QAC1T,gCAAgC,EAC9B,4PAA4P;QAC9P,4CAA4C,EAC1C,2MAA2M;QAC7M,uCAAuC,EACrC,sSAAsS;QACxS,mBAAmB,EAAE,IAAI,CAAC;YACxB,WAAW,EAAE,qDAAqD;YAClE,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE,kBAAkB;wBAC3B,KAAK,EAAE;4BACL;gCACE,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,6CAA6C;gCACtD,cAAc,EAAE,6CAA6C;gCAC7D,OAAO,EAAE,EAAE;gCACX,sBAAsB,EAAE,GAAG;6BAC5B;yBACF;qBACF;iBACF;aACF;SACF,CAAC;QACF,uBAAuB,EAAE,IAAI,CAAC;YAC5B,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV;wBACE,OAAO,EAAE,WAAW;wBACpB,KAAK,EAAE;4BACL;gCACE,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,8CAA8C;gCACvD,OAAO,EAAE,EAAE;6BACZ;yBACF;qBACF;iBACF;aACF;SACF,CAAC;QACF,wBAAwB,EACtB,uIAAuI;QACzI,gBAAgB,EAAE,UAAU;QAC5B,eAAe,EAAE,IAAI,CAAC;YACpB,OAAO,EAAE,CAAC,MAAM,EAAE,0BAA0B,CAAC;YAC7C,eAAe,EAAE;gBACf,GAAG,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;gBACtC,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC;gBAChD,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,QAAQ;gBAChB,gBAAgB,EAAE,SAAS;gBAC3B,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,IAAI;gBACZ,wBAAwB,EAAE,IAAI;gBAC9B,0BAA0B,EAAE,IAAI;gBAChC,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;gBACvB,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,GAAG,EAAE,uBAAuB,CAAC;gBACxC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;aAC9B;SACF,CAAC;QACF,YAAY,EAAE,IAAI,CAAC;YACjB,OAAO,EAAE,gDAAgD;YACzD,KAAK,EAAE;gBACL,QAAQ,EAAE;oBACR,IAAI;oBACJ,QAAQ;oBACR,SAAS;oBACT,OAAO;oBACP,gBAAgB;oBAChB,eAAe;oBACf,WAAW;oBACX,UAAU;oBACV,OAAO;oBACP,SAAS;oBACT,SAAS;oBACT,iBAAiB;iBAClB;aACF;YACD,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE;YAClE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE;YAC3D,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;YACzE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;SAC1C,CAAC;QACF,kBAAkB,EAChB,+SAA+S;QACjT,eAAe,EACb,2OAA2O;QAC7O,cAAc,EACZ,qsCAAqsC;QACvsC,qBAAqB,EACnB,+bAA+b;QACjc,sBAAsB,EACpB,kUAAkU;QACpU,wBAAwB,EACtB,6SAA6S;QAC/S,uBAAuB,EACrB,43BAA43B;QAC93B,gBAAgB,EAAE,8CAA8C;QAChE,sBAAsB,EACpB,mWAAmW;QACrW,uBAAuB,EAAE,kBAAkB;QAC3C,WAAW,EACT,y6CAAy6C;QAC36C,WAAW,EACT,2VAA2V;QAC7V,sBAAsB,EACpB,mkBAAmkB;QACrkB,WAAW,EAAE,KAAK,IAAI,4iBAA4iB;KACnkB,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;YAC1B,CAAC,mBAAmB,EAAE,OAAO,CAAC;YAC9B,CAAC,uBAAuB,EAAE,QAAQ,CAAC;SAC3B,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YAC9C,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,+BAA+B,CAAC;YACpE,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG;gBACxB;oBACE,OAAO,EACL,mFAAmF;oBACrF,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,yCAAyC,KAAK,EAAE;4BACzD,OAAO,EAAE,EAAE;yBACZ;qBACF;iBACF;aACF,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,uBAAuB,CAAC,GAAG,kBAAkB,CAAC;QACpD,KAAK,CAAC,oBAAoB,CAAC,GAAG,YAAY,CAAC;QAC3C,IAAI,CAAC,UAAU;YACb,KAAK,CAAC,WAAW,CAAC;gBAChB,oMAAoM,CAAC;IAC3M,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,IAAI,IAAI;YACjB,sBAAsB;YACtB,yBAAyB;YACzB,yBAAyB;YACzB,oCAAoC;YACpC,gCAAgC;YAChC,4CAA4C;YAC5C,uCAAuC;YACvC,mBAAmB;YACnB,uBAAuB;SACxB,EAAE,CAAC;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC;QACpC,KAAK,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;QACnC,KAAK,CAAC,0BAA0B,CAAC,GAAG,mBAAmB,CAAC;QACxD,MAAM,EACJ,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,YAAY,EACzB,GAAG,cAAc,EAClB,GAAG,SAAS,CAAC;QACd,KAAK,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACvD,KAAK,CAAC,YAAY,CAAC;YACjB,oIAAoI,CAAC;QACvI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;QACtD,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAChD,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,KAAK,OAAO,CACrC,CAAC;QACF,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,KAAK,CAAC,sBAAsB,CAAC;YAC3B,yIAAyI,CAAC;QAC5I,KAAK,CAAC,WAAW,CAAC;YAChB,KAAK,IAAI,6RAA6R,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,0MAA0M,CAAC,CAAC,CAAC,iEAAiE,EAAE,CAAC;IAC7kB,CAAC;IAED,IAAI,CAAC,UAAU;QAAE,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;IAC/D,KAAK,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type TemplateProject } from "./workspace.js";
2
+ export type ServerStatus = "stopped" | "starting" | "running" | "failed";
3
+ export interface ManagedServer extends TemplateProject {
4
+ status: ServerStatus;
5
+ port: number;
6
+ pid?: number | undefined;
7
+ error?: string | undefined;
8
+ logFile?: string | undefined;
9
+ }
10
+ export declare function availablePort(preferred: number, reserved?: ReadonlySet<number>, probe?: (port: number) => Promise<boolean>): Promise<number>;
11
+ export declare class TemplateServerManager {
12
+ #private;
13
+ readonly root: string;
14
+ constructor(root: string);
15
+ refresh(): Promise<ManagedServer[]>;
16
+ list(): ManagedServer[];
17
+ start(relativePath: string): Promise<ManagedServer>;
18
+ stop(relativePath: string): Promise<void>;
19
+ stopAll(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=servers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../src/template/servers.ts"],"names":[],"mappings":"AAMA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAkBD,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,WAAW,CAAC,MAAM,CAAa,EACzC,KAAK,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAiB,GACxD,OAAO,CAAC,MAAM,CAAC,CAKjB;AAsBD,qBAAa,qBAAqB;;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAItB,YAAY,IAAI,EAAE,MAAM,EAEvB;IAEK,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAmBxC;IAED,IAAI,IAAI,aAAa,EAAE,CAItB;IAEK,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6ExD;IAEK,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C9C;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7B;CACF"}
@@ -0,0 +1,193 @@
1
+ import { spawn } from "node:child_process";
2
+ import { createWriteStream } from "node:fs";
3
+ import { mkdir, readdir, rm, rmdir } from "node:fs/promises";
4
+ import net from "node:net";
5
+ import path from "node:path";
6
+ import { prepareSpawn, terminateProcess } from "../platform/process.js";
7
+ import { listTemplateProjects } from "./workspace.js";
8
+ const MAX_SERVER_LOG_BYTES = 10 * 1024 * 1024;
9
+ async function portAvailable(port) {
10
+ return await new Promise((resolve) => {
11
+ const server = net.createServer();
12
+ server.unref();
13
+ server.once("error", () => resolve(false));
14
+ server.listen(port, "127.0.0.1", () => server.close(() => resolve(true)));
15
+ });
16
+ }
17
+ export async function availablePort(preferred, reserved = new Set(), probe = portAvailable) {
18
+ for (let port = preferred; port <= 65535; port += 1) {
19
+ if (!reserved.has(port) && (await probe(port)))
20
+ return port;
21
+ }
22
+ throw new Error(`No available port at or above ${preferred}.`);
23
+ }
24
+ async function waitForReady(server, child, timeoutMs = 20_000) {
25
+ const url = `http://127.0.0.1:${server.port}${server.readinessPath}`;
26
+ const deadline = Date.now() + timeoutMs;
27
+ while (Date.now() < deadline) {
28
+ if (child.exitCode !== null) {
29
+ throw new Error(`Development server exited with code ${child.exitCode}.`);
30
+ }
31
+ try {
32
+ const response = await fetch(url, { signal: AbortSignal.timeout(750) });
33
+ if (response.ok)
34
+ return;
35
+ }
36
+ catch { }
37
+ await new Promise((resolve) => setTimeout(resolve, 100));
38
+ }
39
+ throw new Error(`Development server was not ready within ${timeoutMs}ms.`);
40
+ }
41
+ export class TemplateServerManager {
42
+ root;
43
+ #servers = new Map();
44
+ #processes = new Map();
45
+ constructor(root) {
46
+ this.root = root;
47
+ }
48
+ async refresh() {
49
+ const projects = await listTemplateProjects(this.root);
50
+ const discovered = new Set(projects.map((project) => project.relativePath));
51
+ for (const project of projects) {
52
+ const previous = this.#servers.get(project.relativePath);
53
+ this.#servers.set(project.relativePath, {
54
+ ...project,
55
+ status: previous?.status ?? "stopped",
56
+ port: previous?.port ?? project.preferredPort,
57
+ ...(previous?.pid ? { pid: previous.pid } : {}),
58
+ ...(previous?.error ? { error: previous.error } : {}),
59
+ ...(previous?.logFile ? { logFile: previous.logFile } : {}),
60
+ });
61
+ }
62
+ for (const key of this.#servers.keys()) {
63
+ if (!discovered.has(key) && !this.#processes.has(key))
64
+ this.#servers.delete(key);
65
+ }
66
+ return this.list();
67
+ }
68
+ list() {
69
+ return [...this.#servers.values()].sort((left, right) => left.relativePath.localeCompare(right.relativePath));
70
+ }
71
+ async start(relativePath) {
72
+ const server = this.#servers.get(relativePath);
73
+ if (!server)
74
+ throw new Error(`Unknown project: ${relativePath}`);
75
+ if (this.#processes.has(relativePath))
76
+ return server;
77
+ const reserved = new Set(this.list()
78
+ .filter((candidate) => candidate.status !== "stopped")
79
+ .map((candidate) => candidate.port));
80
+ server.port = await availablePort(server.preferredPort, reserved);
81
+ server.status = "starting";
82
+ delete server.error;
83
+ const args = [...server.args, "--port", String(server.port)];
84
+ const prepared = prepareSpawn(server.command, args);
85
+ const logDirectory = path.join(this.root, ".mozole", "logs", "servers");
86
+ await mkdir(logDirectory, { recursive: true });
87
+ const safeName = server.relativePath.replace(/[^a-z0-9._-]/gi, "-");
88
+ const logFile = path.join(logDirectory, `${safeName}.log`);
89
+ const log = createWriteStream(logFile, { flags: "w" });
90
+ let logBytes = 0;
91
+ let logTruncated = false;
92
+ const writeLog = (chunk) => {
93
+ if (logTruncated)
94
+ return;
95
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
96
+ const remaining = MAX_SERVER_LOG_BYTES - logBytes;
97
+ if (buffer.length <= remaining) {
98
+ log.write(buffer);
99
+ logBytes += buffer.length;
100
+ return;
101
+ }
102
+ if (remaining > 0)
103
+ log.write(buffer.subarray(0, remaining));
104
+ log.write("\n[... server log truncated at 10 MiB ...]\n");
105
+ logBytes = MAX_SERVER_LOG_BYTES;
106
+ logTruncated = true;
107
+ };
108
+ writeLog(`[${new Date().toISOString()}] ${server.command} ${args.join(" ")}\n`);
109
+ const child = spawn(prepared.command, prepared.args, {
110
+ cwd: server.root,
111
+ env: { ...process.env, PORT: String(server.port) },
112
+ shell: false,
113
+ windowsHide: true,
114
+ windowsVerbatimArguments: prepared.windowsVerbatimArguments,
115
+ detached: process.platform !== "win32",
116
+ stdio: ["ignore", "pipe", "pipe"],
117
+ });
118
+ server.pid = child.pid;
119
+ server.logFile = logFile;
120
+ child.stdout?.on("data", writeLog);
121
+ child.stderr?.on("data", writeLog);
122
+ this.#processes.set(relativePath, { child, log });
123
+ child.once("close", (code) => {
124
+ this.#processes.delete(relativePath);
125
+ log.end();
126
+ delete server.pid;
127
+ if (server.status !== "stopped") {
128
+ server.status = code === 0 ? "stopped" : "failed";
129
+ if (code !== 0)
130
+ server.error = `Exited with code ${code ?? 1}`;
131
+ }
132
+ });
133
+ child.once("error", (error) => {
134
+ server.status = "failed";
135
+ server.error = error.message;
136
+ });
137
+ try {
138
+ await waitForReady(server, child);
139
+ server.status = "running";
140
+ }
141
+ catch (error) {
142
+ server.status = "failed";
143
+ server.error = error instanceof Error ? error.message : String(error);
144
+ terminateProcess(child.pid);
145
+ }
146
+ return server;
147
+ }
148
+ async stop(relativePath) {
149
+ const server = this.#servers.get(relativePath);
150
+ const running = this.#processes.get(relativePath);
151
+ if (!server || !running) {
152
+ if (server)
153
+ server.status = "stopped";
154
+ return;
155
+ }
156
+ server.status = "stopped";
157
+ const closed = new Promise((resolve) => running.child.once("close", () => resolve()));
158
+ terminateProcess(running.child.pid);
159
+ await Promise.race([
160
+ closed,
161
+ new Promise((resolve) => setTimeout(resolve, 2_000)),
162
+ ]);
163
+ if (running.child.exitCode === null)
164
+ terminateProcess(running.child.pid, true);
165
+ this.#processes.delete(relativePath);
166
+ running.log.end();
167
+ delete server.pid;
168
+ const localModules = path.join(server.root, "node_modules");
169
+ try {
170
+ for (const entry of await readdir(localModules))
171
+ if (entry === ".vite" || entry.startsWith(".vite-"))
172
+ await rm(path.join(localModules, entry), {
173
+ recursive: true,
174
+ force: true,
175
+ });
176
+ }
177
+ catch (error) {
178
+ if (error.code !== "ENOENT")
179
+ throw error;
180
+ }
181
+ try {
182
+ await rmdir(localModules);
183
+ }
184
+ catch (error) {
185
+ if (!["ENOENT", "ENOTEMPTY"].includes(error.code ?? ""))
186
+ throw error;
187
+ }
188
+ }
189
+ async stopAll() {
190
+ await Promise.all([...this.#processes.keys()].map((key) => this.stop(key)));
191
+ }
192
+ }
193
+ //# sourceMappingURL=servers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../src/template/servers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface TemplateConfig {
2
+ schemaVersion: 1;
3
+ kind: "mozole-template";
4
+ name: string;
5
+ projects: "managed";
6
+ sharedDependencies: true;
7
+ }
8
+ export interface TemplateProject {
9
+ name: string;
10
+ root: string;
11
+ relativePath: string;
12
+ preferredPort: number;
13
+ readinessPath: string;
14
+ command: string;
15
+ args: string[];
16
+ }
17
+ export declare function readTemplateConfig(root: string): Promise<TemplateConfig>;
18
+ export declare function isTemplateRoot(root: string): Promise<boolean>;
19
+ export declare function findTemplateRoot(start?: string): Promise<string | undefined>;
20
+ export declare function initializeTemplateRoot(root: string): Promise<void>;
21
+ export declare function listTemplateProjects(root: string): Promise<TemplateProject[]>;
22
+ export declare function registerTemplateProject(root: string, projectRoot: string): Promise<void>;
23
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/template/workspace.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,EAAE,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA2DD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAczB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED,wBAAsB,gBAAgB,CACpC,KAAK,SAAgB,GACpB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7B;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxE;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,eAAe,EAAE,CAAC,CAiC5B;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -0,0 +1,152 @@
1
+ import { lstat, mkdir, readdir, readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { readConfig } from "../config/project.js";
4
+ import { writeFiles } from "../scaffold/write.js";
5
+ import { TOOLCHAIN } from "../version.js";
6
+ const marker = path.join(".mozole", "template.json");
7
+ function templateFiles(name) {
8
+ const cliSpec = process.env.MOZOLE_CLI_SPEC ?? TOOLCHAIN.mozoleCli;
9
+ const packageName = name
10
+ .toLowerCase()
11
+ .replace(/[^a-z0-9._-]+/g, "-")
12
+ .replace(/^[^a-z0-9]+|[^a-z0-9]+$/g, "") || "mozole-template";
13
+ const config = {
14
+ schemaVersion: 1,
15
+ kind: "mozole-template",
16
+ name,
17
+ projects: "managed",
18
+ sharedDependencies: true,
19
+ };
20
+ return {
21
+ [marker]: `${JSON.stringify(config, null, 2)}\n`,
22
+ "package.json": `${JSON.stringify({
23
+ name: packageName,
24
+ private: true,
25
+ engines: { node: TOOLCHAIN.node },
26
+ workspaces: [],
27
+ dependencies: {
28
+ isbot: TOOLCHAIN.isbot,
29
+ react: TOOLCHAIN.react,
30
+ "react-dom": TOOLCHAIN.reactDom,
31
+ "react-router": TOOLCHAIN.reactRouter,
32
+ },
33
+ devDependencies: {
34
+ "@biomejs/biome": TOOLCHAIN.biome,
35
+ "@mozole/cli": cliSpec,
36
+ "@react-router/dev": TOOLCHAIN.reactRouter,
37
+ "@tailwindcss/vite": TOOLCHAIN.tailwindVite,
38
+ "@testing-library/jest-dom": TOOLCHAIN.testingLibraryJestDom,
39
+ "@testing-library/react": TOOLCHAIN.testingLibraryReact,
40
+ "@testing-library/user-event": TOOLCHAIN.testingLibraryUserEvent,
41
+ "@types/node": TOOLCHAIN.typesNode,
42
+ "@types/react": TOOLCHAIN.typesReact,
43
+ "@types/react-dom": TOOLCHAIN.typesReactDom,
44
+ "@vitejs/plugin-react": TOOLCHAIN.viteReact,
45
+ jsdom: TOOLCHAIN.jsdom,
46
+ playwright: TOOLCHAIN.playwright,
47
+ tailwindcss: TOOLCHAIN.tailwindcss,
48
+ typescript: TOOLCHAIN.typescript,
49
+ vite: TOOLCHAIN.vite,
50
+ vitest: TOOLCHAIN.vitest,
51
+ },
52
+ }, null, 2)}\n`,
53
+ ".gitignore": "node_modules/\n.mozole/logs/\n*.log\n.DS_Store\n",
54
+ };
55
+ }
56
+ export async function readTemplateConfig(root) {
57
+ const value = JSON.parse(await readFile(path.join(root, marker), "utf8"));
58
+ if (value.schemaVersion !== 1 ||
59
+ value.kind !== "mozole-template" ||
60
+ typeof value.name !== "string" ||
61
+ value.projects !== "managed" ||
62
+ value.sharedDependencies !== true) {
63
+ throw new Error("Unsupported or invalid .mozole/template.json");
64
+ }
65
+ return value;
66
+ }
67
+ export async function isTemplateRoot(root) {
68
+ try {
69
+ await readTemplateConfig(root);
70
+ return true;
71
+ }
72
+ catch {
73
+ return false;
74
+ }
75
+ }
76
+ export async function findTemplateRoot(start = process.cwd()) {
77
+ let current = path.resolve(start);
78
+ while (true) {
79
+ if (await isTemplateRoot(current))
80
+ return current;
81
+ const parent = path.dirname(current);
82
+ if (parent === current)
83
+ return undefined;
84
+ current = parent;
85
+ }
86
+ }
87
+ export async function initializeTemplateRoot(root) {
88
+ const target = path.resolve(root);
89
+ await mkdir(target, { recursive: true });
90
+ for (const protectedFile of [marker, "package.json"]) {
91
+ try {
92
+ await lstat(path.join(target, protectedFile));
93
+ throw new Error(`Cannot initialize ${target}: ${protectedFile} already exists.`);
94
+ }
95
+ catch (error) {
96
+ if (error.code !== "ENOENT")
97
+ throw error;
98
+ }
99
+ }
100
+ await writeFiles(target, templateFiles(path.basename(target)));
101
+ }
102
+ export async function listTemplateProjects(root) {
103
+ await readTemplateConfig(root);
104
+ const projects = [];
105
+ const visit = async (directory) => {
106
+ const entries = await readdir(directory, { withFileTypes: true });
107
+ for (const entry of entries) {
108
+ if (!entry.isDirectory() ||
109
+ entry.name.startsWith(".") ||
110
+ entry.name === "node_modules")
111
+ continue;
112
+ const projectRoot = path.join(directory, entry.name);
113
+ try {
114
+ const config = await readConfig(projectRoot);
115
+ projects.push({
116
+ name: config.name,
117
+ root: projectRoot,
118
+ relativePath: path.relative(root, projectRoot),
119
+ preferredPort: config.qa.server.preferredPort,
120
+ readinessPath: config.qa.server.readinessPath,
121
+ command: config.qa.server.command,
122
+ args: [...config.qa.server.args],
123
+ });
124
+ continue;
125
+ }
126
+ catch { }
127
+ await visit(projectRoot);
128
+ }
129
+ };
130
+ await visit(root);
131
+ return projects.sort((left, right) => left.relativePath.localeCompare(right.relativePath));
132
+ }
133
+ export async function registerTemplateProject(root, projectRoot) {
134
+ await readTemplateConfig(root);
135
+ const relative = path.relative(root, projectRoot);
136
+ if (!relative ||
137
+ path.isAbsolute(relative) ||
138
+ relative.split(path.sep).includes(".."))
139
+ throw new Error("Template project must be inside the workspace root.");
140
+ const packageFile = path.join(root, "package.json");
141
+ const packageJson = JSON.parse(await readFile(packageFile, "utf8"));
142
+ if (!Array.isArray(packageJson.workspaces))
143
+ throw new Error("Template package.json workspaces must be an array.");
144
+ const workspacePath = relative.split(path.sep).join("/");
145
+ const workspaces = new Set(packageJson.workspaces.filter((value) => typeof value === "string"));
146
+ if (workspaces.has(workspacePath))
147
+ return;
148
+ workspaces.add(workspacePath);
149
+ packageJson.workspaces = [...workspaces].sort();
150
+ await writeFiles(root, { "package.json": `${JSON.stringify(packageJson, null, 2)}\n` }, true);
151
+ }
152
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/template/workspace.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import type { MozoleConfig } from "../config/project.js";
2
+ import { sanitizeTerminalText } from "../output-safety.js";
2
3
  export interface CheckResult {
3
4
  name: string;
4
5
  passed: boolean;
5
6
  detail?: string | undefined;
6
7
  rawChars: number;
7
8
  }
8
- export declare const stripAnsi: (value: string) => string;
9
+ export declare const stripAnsi: typeof sanitizeTerminalText;
9
10
  export declare function actionableFailure(output: string, limit?: number): string;
10
11
  export declare function runVerification(root: string, config: MozoleConfig, signal?: AbortSignal, onStep?: (checkName: string, index: number, total: number) => void): Promise<{
11
12
  results: CheckResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/verify/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,MAAiC,CAAC;AAE5E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,CAoBpE;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACjE,OAAO,CAAC;IAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CA4FtE"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/verify/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAM3D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,eAAO,MAAM,SAAS,6BAAuB,CAAC;AAE9C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,CAoBpE;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACjE,OAAO,CAAC;IAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CA4FtE"}
@@ -1,11 +1,11 @@
1
1
  import { access } from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import { sanitizeTerminalText } from "../output-safety.js";
3
4
  import { npmExecutable, resolveExecutable } from "../platform/executable.js";
4
5
  import { run } from "../platform/process.js";
5
6
  import { inspectBackendScaffold } from "../scaffold/backend.js";
6
7
  import { updateTelemetry } from "../telemetry/store.js";
7
- const ansi = new RegExp(`${String.fromCharCode(27)}\\[[0-?]*[ -/]*[@-~]`, "g");
8
- export const stripAnsi = (value) => value.replace(ansi, "");
8
+ export const stripAnsi = sanitizeTerminalText;
9
9
  export function actionableFailure(output, limit = 18) {
10
10
  const clean = stripAnsi(output)
11
11
  .split(/\r?\n/)
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/verify/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/verify/runner.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export declare const CLI_VERSION = "1.4.1";
1
+ export declare const CLI_VERSION = "1.4.3";
2
2
  export declare const TOOLCHAIN: Readonly<{
3
3
  schemaVersion: 1;
4
- mozoleCli: "1.4.1";
4
+ mozoleCli: "1.4.3";
5
5
  node: ">=22";
6
6
  react: "19.2.8";
7
7
  reactDom: "19.2.8";
@@ -9,6 +9,8 @@ export declare const TOOLCHAIN: Readonly<{
9
9
  isbot: "5.2.2";
10
10
  vite: "8.2.2";
11
11
  viteReact: "6.1.1";
12
+ tailwindcss: "4.3.3";
13
+ tailwindVite: "4.3.3";
12
14
  typescript: "7.0.2";
13
15
  biome: "2.5.11";
14
16
  vitest: "4.1.11";
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;QAsBlB,OAAO;QACP,OAAO;QACP,UAAU;QACV,OAAO;QACP,WAAW;;;QAIX,OAAO;QACP,SAAS;QACT,SAAS;;EAEX,CAAC;AAEH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAQvC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;QAwBlB,OAAO;QACP,OAAO;QACP,UAAU;QACV,OAAO;QACP,WAAW;;;QAIX,OAAO;QACP,SAAS;QACT,SAAS;;EAEX,CAAC;AAEH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAQvC"}