@mozole/cli 2.0.0 → 2.1.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 (96) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +109 -15
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add.d.ts +7 -0
  5. package/dist/commands/add.d.ts.map +1 -0
  6. package/dist/commands/add.js +87 -0
  7. package/dist/commands/add.js.map +1 -0
  8. package/dist/commands/adopt.d.ts +2 -0
  9. package/dist/commands/adopt.d.ts.map +1 -1
  10. package/dist/commands/adopt.js +243 -45
  11. package/dist/commands/adopt.js.map +1 -1
  12. package/dist/commands/assets.d.ts +28 -0
  13. package/dist/commands/assets.d.ts.map +1 -0
  14. package/dist/commands/assets.js +176 -0
  15. package/dist/commands/assets.js.map +1 -0
  16. package/dist/commands/backend.d.ts +5 -0
  17. package/dist/commands/backend.d.ts.map +1 -0
  18. package/dist/commands/backend.js +68 -0
  19. package/dist/commands/backend.js.map +1 -0
  20. package/dist/commands/new.d.ts +1 -1
  21. package/dist/commands/new.d.ts.map +1 -1
  22. package/dist/commands/new.js +13 -5
  23. package/dist/commands/new.js.map +1 -1
  24. package/dist/commands/prototype.d.ts.map +1 -1
  25. package/dist/commands/prototype.js +68 -20
  26. package/dist/commands/prototype.js.map +1 -1
  27. package/dist/commands/release.d.ts +10 -0
  28. package/dist/commands/release.d.ts.map +1 -0
  29. package/dist/commands/release.js +181 -0
  30. package/dist/commands/release.js.map +1 -0
  31. package/dist/commands/ui.d.ts +5 -0
  32. package/dist/commands/ui.d.ts.map +1 -1
  33. package/dist/commands/ui.js +49 -0
  34. package/dist/commands/ui.js.map +1 -1
  35. package/dist/scaffold/agents.d.ts.map +1 -1
  36. package/dist/scaffold/agents.js +40 -6
  37. package/dist/scaffold/agents.js.map +1 -1
  38. package/dist/scaffold/backend.d.ts +1 -1
  39. package/dist/scaffold/backend.d.ts.map +1 -1
  40. package/dist/scaffold/backend.js +63 -31
  41. package/dist/scaffold/backend.js.map +1 -1
  42. package/dist/scaffold/components.d.ts +8 -0
  43. package/dist/scaffold/components.d.ts.map +1 -0
  44. package/dist/scaffold/components.js +305 -0
  45. package/dist/scaffold/components.js.map +1 -0
  46. package/dist/scaffold/design.d.ts.map +1 -1
  47. package/dist/scaffold/design.js +47 -25
  48. package/dist/scaffold/design.js.map +1 -1
  49. package/dist/scaffold/flagship.d.ts +5 -0
  50. package/dist/scaffold/flagship.d.ts.map +1 -1
  51. package/dist/scaffold/flagship.js +161 -102
  52. package/dist/scaffold/flagship.js.map +1 -1
  53. package/dist/scaffold/index.d.ts +1 -1
  54. package/dist/scaffold/index.d.ts.map +1 -1
  55. package/dist/scaffold/index.js +22 -7
  56. package/dist/scaffold/index.js.map +1 -1
  57. package/dist/scaffold/library.d.ts +3 -0
  58. package/dist/scaffold/library.d.ts.map +1 -0
  59. package/dist/scaffold/library.js +98 -0
  60. package/dist/scaffold/library.js.map +1 -0
  61. package/dist/scaffold/phases.d.ts.map +1 -1
  62. package/dist/scaffold/phases.js +19 -14
  63. package/dist/scaffold/phases.js.map +1 -1
  64. package/dist/scaffold/repomap.d.ts +3 -3
  65. package/dist/scaffold/repomap.d.ts.map +1 -1
  66. package/dist/scaffold/repomap.js +22 -10
  67. package/dist/scaffold/repomap.js.map +1 -1
  68. package/dist/scaffold/standard.d.ts.map +1 -1
  69. package/dist/scaffold/standard.js +3 -2
  70. package/dist/scaffold/standard.js.map +1 -1
  71. package/dist/scaffold/tools-guide.d.ts +3 -0
  72. package/dist/scaffold/tools-guide.d.ts.map +1 -0
  73. package/dist/scaffold/tools-guide.js +117 -0
  74. package/dist/scaffold/tools-guide.js.map +1 -0
  75. package/dist/scaffold/workflow.d.ts +5 -0
  76. package/dist/scaffold/workflow.d.ts.map +1 -0
  77. package/dist/scaffold/workflow.js +221 -0
  78. package/dist/scaffold/workflow.js.map +1 -0
  79. package/dist/ui/CockpitApp.d.ts +2 -2
  80. package/dist/ui/CockpitApp.d.ts.map +1 -1
  81. package/dist/ui/CockpitApp.js +361 -15
  82. package/dist/ui/CockpitApp.js.map +1 -1
  83. package/dist/ui/ToolsPanel.d.ts +9 -0
  84. package/dist/ui/ToolsPanel.d.ts.map +1 -0
  85. package/dist/ui/ToolsPanel.js +230 -0
  86. package/dist/ui/ToolsPanel.js.map +1 -0
  87. package/dist/utils/fs.d.ts.map +1 -1
  88. package/dist/utils/fs.js +42 -6
  89. package/dist/utils/fs.js.map +1 -1
  90. package/dist/utils/project-files.d.ts +4 -0
  91. package/dist/utils/project-files.d.ts.map +1 -0
  92. package/dist/utils/project-files.js +49 -0
  93. package/dist/utils/project-files.js.map +1 -0
  94. package/dist/version.d.ts +1 -1
  95. package/dist/version.js +1 -1
  96. package/package.json +29 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/scaffold/library.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,UAAU,CAAC,IAAI,EAAE;QACrB,8BAA8B,EAAE,qBAAqB,EAAE;QACvD,6BAA6B,EAAE,oBAAoB,EAAE;QACrD,8BAA8B,EAAE,cAAc,EAAE;QAChD,qCAAqC,EAAE;;;;;;;;;;CAU1C;QACG,kCAAkC,EAAE,cAAc;QAClD,kCAAkC,EAAE,cAAc;QAClD,gCAAgC,EAAE,cAAc;QAChD,wBAAwB,EAAE,cAAc;QACxC,iCAAiC,EAC/B,qHAAqH;QACvH,yBAAyB,EACvB,uHAAuH;QACzH,iBAAiB,EACf,yiCAAyiC;KAC5iC,CAAC,CAAC;IACH,MAAM,OAAO,GAA6B;QACxC,4BAA4B,EAAE;YAC5B,2BAA2B;YAC3B,0BAA0B;YAC1B,2BAA2B;SAC5B;QACD,gCAAgC,EAAE,CAAC,0CAA0C,CAAC;QAC9E,sBAAsB,EAAE;YACtB,mCAAmC;YACnC,uCAAuC;YACvC,yCAAyC;YACzC,yCAAyC;YACzC,uCAAuC;YACvC,+BAA+B;SAChC;KACF,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC7C,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,yBAAyB,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC;YAC5E,OAAO,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,oBAAoB,SAAS,IAAI,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,0FAA0F;QAC1F,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAAE,MAAM,WAAW,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC9B,MAAM,WAAW,CACf,QAAQ,EACR,IAAI,CAAC,SAAS,CACZ;YACE,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,sBAAsB;YAC7B,EAAE,EAAE,mBAAmB;YACvB,MAAM,EAAE,uBAAuB;YAC/B,QAAQ,EAAE,yBAAyB;YACnC,QAAQ,EAAE,yBAAyB;YACnC,MAAM,EAAE,uBAAuB;YAC/B,QAAQ,EAAE,eAAe;SAC1B,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../src/scaffold/phases.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,EAAE,eAAe,EAuInC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,YAAY,SAAO,GAAG,MAAM,CA0BlE;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE"}
1
+ {"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../src/scaffold/phases.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,EAAE,eAAe,EA4InC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,YAAY,SAAO,GAAG,MAAM,CA0BlE;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE"}
@@ -16,12 +16,12 @@ export const PHASES = [
16
16
  {
17
17
  id: "01",
18
18
  name: "Core Architecture & Layout",
19
- description: "Application root shell, navigation container, footer, and responsive viewport frame.",
19
+ description: "Technical root shell and module boundaries before visual composition.",
20
20
  checklist: [
21
21
  "Root layout established with single <main> landmark",
22
22
  "Skip-to-content accessible link implemented",
23
- "Navigation header with responsive mobile drawer/menu",
24
- "Footer landmark with copyright and essential links",
23
+ "Project-local UI, feature, section, layout, motion and behavior boundaries documented",
24
+ "Starter layout is not treated as approved design; no unrequested visual composition",
25
25
  "Zero viewport overflow at 320px minimum mobile width",
26
26
  ],
27
27
  },
@@ -30,7 +30,9 @@ export const PHASES = [
30
30
  name: "Design Tokens & Primitive Components",
31
31
  description: "Bespoke Radix UI primitives, typography hierarchies, and token integration.",
32
32
  checklist: [
33
- "Bespoke primitives implemented in src/components/ui/ (Button, Dialog, Input)",
33
+ "Each independent primitive in its own src/components/ui/ file; related primitive parts may stay together",
34
+ "Reusable modules exported through local barrels and src/library/index.ts",
35
+ "Settled conversation decisions recorded separately from assumptions in docs/decisions.md",
34
36
  "Zero hardcoded color hex/rgb literals (enforced by PostCSS AST audit)",
35
37
  "Semantic typography applied via var(--font-display) and var(--font-body)",
36
38
  "Interactive targets satisfy minimum 24px/44px touch area",
@@ -40,9 +42,12 @@ export const PHASES = [
40
42
  {
41
43
  id: "03",
42
44
  name: "Primary Routes & Pages",
43
- description: "Static content routes, hierarchy, meta tags, and document title management.",
45
+ description: "Compose feature components, then sections, then pages as authorized by the user.",
44
46
  checklist: [
45
- "Home page and primary sub-pages declared with unique routes",
47
+ "Only requested pages declared with unique routes",
48
+ "Feature components compose primitives; separate section files compose features",
49
+ "Pages compose sections; visual modules receive data/actions via props",
50
+ "No /ui gallery or additional design stage created without user direction",
46
51
  "Single <h1> per page verified across all views",
47
52
  "Semantic HTML tags used (section, article, nav, aside)",
48
53
  "All images include descriptive alt text or explicit decorative alt=''",
@@ -75,14 +80,14 @@ export const PHASES = [
75
80
  },
76
81
  {
77
82
  id: "06",
78
- name: "Backend Integration & Security",
79
- description: "Zero-dependency PHP 8.1+ endpoints, honeypot spam protection, and rate limiting.",
83
+ name: "Integrations & Security",
84
+ description: "Form submission handling, anti-spam honeypot, security headers, and optional API endpoints.",
80
85
  checklist: [
81
- "PHP endpoints responding with valid JSON headers and CORS checks",
82
- "Honeypot field stops bot spam without user friction",
83
- "IP rate limiting active and bounded by temporary storage window",
84
- "Direct file access to config.php denied via .htaccess / security headers",
85
- "Input sanitization and email header injection protection active",
86
+ "Form submissions validated and protected against spam (honeypot or rate limiting)",
87
+ "Security headers and CORS origins verified",
88
+ "Input sanitization active on all interactive input fields",
89
+ "Backend API endpoints (if applicable) or client form handlers respond cleanly",
90
+ "Sensitive secrets and environment variables protected from client bundle leakage",
86
91
  ],
87
92
  },
88
93
  {
@@ -137,7 +142,7 @@ export const PHASES = [
137
142
  export function generatePhasesStatusMd(currentPhase = "00") {
138
143
  let content = `# Project Development Phases & Status
139
144
 
140
- > **Discipline Notice:** Development proceeds sequentially through phases 00 to 10. Run \`mozole phase status\` to inspect progress, and \`mozole phase next\` to advance upon passing all checklist criteria and \`mozole verify\`.
145
+ > **Discipline Notice:** Engineering progress is tracked through phases 00 to 10. Follow docs/workflow.md: primitives, feature components, sections, then pages, only within conversation-authorized scope. Phase 01 establishes technical boundaries, not a finished visual layout. Run \`mozole phase status\` to inspect progress, and \`mozole phase next\` to advance after applicable criteria and authorized checks. It does not run verification itself and may create a Git commit. If tests are prohibited, report them as not run; do not mark them passed.
141
146
 
142
147
  **Current Phase:** Phase ${currentPhase}
143
148
 
@@ -1 +1 @@
1
- {"version":3,"file":"phases.js","sourceRoot":"","sources":["../../src/scaffold/phases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phases.js","sourceRoot":"","sources":["../../src/scaffold/phases.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- export declare function generateRepomapArchitecture(projectName: string, isFlagship: boolean): string;
1
+ export declare function generateRepomapArchitecture(projectName: string, isFlagship: boolean, backend?: "none" | "php" | "node"): string;
2
2
  export declare function generateRepomapComponents(): string;
3
- export declare function generateRepomapRoutes(): string;
3
+ export declare function generateRepomapRoutes(isFlagship?: boolean): string;
4
4
  export declare function generateRepomapTokens(): string;
5
- export declare function scaffoldRepomap(projectRoot: string, projectName: string, isFlagship?: boolean): Promise<void>;
5
+ export declare function scaffoldRepomap(projectRoot: string, projectName: string, isFlagship?: boolean, backend?: "none" | "php" | "node"): Promise<void>;
6
6
  //# sourceMappingURL=repomap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repomap.d.ts","sourceRoot":"","sources":["../../src/scaffold/repomap.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CA6B5F;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAelD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAW9C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAoB9C;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,UAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CASf"}
1
+ {"version":3,"file":"repomap.d.ts","sourceRoot":"","sources":["../../src/scaffold/repomap.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE,MAAM,GAAG,KAAK,GAAG,MAAe,GACxC,MAAM,CA+BR;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAelD;AAED,wBAAgB,qBAAqB,CAAC,UAAU,UAAQ,GAAG,MAAM,CAqBhE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAoB9C;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,UAAQ,EAClB,OAAO,GAAE,MAAM,GAAG,KAAK,GAAG,MAAe,GACxC,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { atomicWrite } from "../utils/fs.js";
3
- export function generateRepomapArchitecture(projectName, isFlagship) {
3
+ export function generateRepomapArchitecture(projectName, isFlagship, backend = "none") {
4
4
  return `# Architecture Overview - ${projectName}
5
5
 
6
6
  ## Technology Stack
@@ -10,11 +10,13 @@ export function generateRepomapArchitecture(projectName, isFlagship) {
10
10
  - **Styling Architecture:** Tailwind CSS v4 with Canonical Tokens in \`src/styles/tokens.css\`
11
11
  - **UI Primitives:** Bespoke application components backed by unstyled Radix UI primitives
12
12
  ${isFlagship ? "- **Creative Experience:** Lenis (Smooth Scroll) + Motion + Persistent Canvas Layer\n" : ""}
13
- - **Backend Architecture:** Pure PHP 8.1+ Zero-Dependency API (Contact Mailer, Honeypot, IP Rate Limiter)
13
+ - **Backend Architecture:** ${backend === "none" ? "None (static frontend)" : backend === "php" ? "PHP 8.1+ API in api/" : "Node.js HTTP API in server/"}
14
+ - **Library Ownership:** UI, Layout, Motion and Behavior implementations are project-local; only npm dependencies may be shared.
15
+ - **Library Entry:** src/library/index.ts
14
16
 
15
17
  ## Directory Hierarchy
16
18
  \`\`\`
17
- ├── api/ # Pure PHP 8.1+ endpoints & security htaccess
19
+ ${backend === "none" ? "" : backend === "php" ? "├── api/ # PHP endpoints\n" : "├── server/ # Node endpoints\n"}
18
20
  ├── docs/
19
21
  │ ├── design/ # Design references, exported assets & screens
20
22
  │ ├── phases/ # 10-step atomic development status
@@ -37,23 +39,33 @@ All UI primitives are bespoke application code located in \`src/components/ui/\`
37
39
 
38
40
  | Component | Path | Backing Primitive | Responsibilities |
39
41
  | :--- | :--- | :--- | :--- |
40
- | **Header** | \`src/components/layout/Header.tsx\` | Semantic \`<header>\` | Main navigation, mobile drawer toggle, branding |
42
+ | **Header** | \`src/components/layout/Header.tsx\` | Semantic \`<header>\` | Main navigation, branding |
41
43
  | **Footer** | \`src/components/layout/Footer.tsx\` | Semantic \`<footer>\` | Site links, legal notes, copyright |
42
- | **Button** | \`src/components/ui/Button.tsx\` | Native \`<button>\` | Accessible action trigger, variant styling, loading state |
44
+ | **Button** | \`src/components/ui/Button.tsx\` | Native \`<button>\` | Accessible action trigger, variant styling, composition via Radix Slot |
43
45
  | **Dialog** | \`src/components/ui/Dialog.tsx\` | Radix \`@radix-ui/react-dialog\` | Accessible modal dialog, focus trap, escape key |
44
46
  | **Input** | \`src/components/ui/Input.tsx\` | Native \`<input>\` | Form control with 16px mobile font floor and error states |
45
47
 
46
48
  > **Contract Rule:** Primitives must remain unopinionated, unstyled Radix foundations with project design tokens applied. No external template dumping.
47
49
  `;
48
50
  }
49
- export function generateRepomapRoutes() {
51
+ export function generateRepomapRoutes(isFlagship = false) {
52
+ if (isFlagship)
53
+ return `# Routes & Page Index
54
+
55
+ | Path | Component | Purpose |
56
+ | :--- | :--- | :--- |
57
+ | / | src/routes/home.tsx | Landing page |
58
+ | /showcase | src/routes/showcase.tsx | Creative showcase |
59
+
60
+ Routing is composed in src/App.tsx with Wouter. Header and Footer live in src/components/layout.
61
+ `;
50
62
  return `# Routes & Page Index
51
63
 
52
64
  | Path | Component | Layout | Purpose |
53
65
  | :--- | :--- | :--- | :--- |
54
66
  | \`/\` | \`src/routes/home.tsx\` | Root Layout | Primary landing page & value proposition |
55
67
  | \`/about\` | \`src/routes/about.tsx\` | Root Layout | Studio background and team ethos |
56
- | \`/contact\` | \`src/routes/contact.tsx\` | Root Layout | Contact form, interactive inquiry submission |
68
+ | \`/contact\` | \`src/routes/contact.tsx\` | Root Layout | Contact information |
57
69
 
58
70
  > **SEO & A11y Requirement:** Every route must export a unique title and meta description, and render exactly one top-level \`<h1>\` tag.
59
71
  `;
@@ -79,11 +91,11 @@ Canonical token definitions live in \`src/styles/tokens.css\` using Tailwind v4
79
91
  - \`--text-xs\` to \`--text-5xl\`: Fluid viewport-scaled typography via \`clamp()\`.
80
92
  `;
81
93
  }
82
- export async function scaffoldRepomap(projectRoot, projectName, isFlagship = false) {
94
+ export async function scaffoldRepomap(projectRoot, projectName, isFlagship = false, backend = "none") {
83
95
  const repomapDir = path.join(projectRoot, "docs", "repomap");
84
- await atomicWrite(path.join(repomapDir, "architecture.md"), generateRepomapArchitecture(projectName, isFlagship));
96
+ await atomicWrite(path.join(repomapDir, "architecture.md"), generateRepomapArchitecture(projectName, isFlagship, backend));
85
97
  await atomicWrite(path.join(repomapDir, "components.md"), generateRepomapComponents());
86
- await atomicWrite(path.join(repomapDir, "routes.md"), generateRepomapRoutes());
98
+ await atomicWrite(path.join(repomapDir, "routes.md"), generateRepomapRoutes(isFlagship));
87
99
  await atomicWrite(path.join(repomapDir, "tokens.md"), generateRepomapTokens());
88
100
  }
89
101
  //# sourceMappingURL=repomap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repomap.js","sourceRoot":"","sources":["../../src/scaffold/repomap.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,UAAU,2BAA2B,CAAC,WAAmB,EAAE,UAAmB;IAClF,OAAO,6BAA6B,WAAW;;;;;uBAK1B,UAAU,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,iEAAiE;;;EAGpK,UAAU,CAAC,CAAC,CAAC,uFAAuF,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;CAmB1G,CAAC;AACF,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;;;;;;;;;;;;;CAaR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;CASR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,WAAmB,EACnB,UAAU,GAAG,KAAK;IAElB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7D,MAAM,WAAW,CACf,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EACxC,2BAA2B,CAAC,WAAW,EAAE,UAAU,CAAC,CACrD,CAAC;IACF,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACvF,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC/E,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"repomap.js","sourceRoot":"","sources":["../../src/scaffold/repomap.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,UAAU,2BAA2B,CACzC,WAAmB,EACnB,UAAmB,EACnB,UAAmC,MAAM;IAEzC,OAAO,6BAA6B,WAAW;;;;;uBAK1B,UAAU,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,iEAAiE;;;EAGpK,UAAU,CAAC,CAAC,CAAC,uFAAuF,CAAC,CAAC,CAAC,EAAE;8BAC7E,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,6BAA6B;;;;;;EAMtJ,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,gDAAgD;;;;;;;;;;;;;;CAcjJ,CAAC;AACF,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;;;;;;;;;;;;;CAaR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAU,GAAG,KAAK;IACtD,IAAI,UAAU;QACZ,OAAO;;;;;;;;CAQV,CAAC;IACA,OAAO;;;;;;;;;CASR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,WAAmB,EACnB,UAAU,GAAG,KAAK,EAClB,UAAmC,MAAM;IAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7D,MAAM,WAAW,CACf,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EACxC,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAC9D,CAAC;IACF,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACvF,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACjF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/scaffold/standard.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAmCvE;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAYnD;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAWrD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAsBjD;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAmBlD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAsC7C;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAkCnD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAkD/C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAW/C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAwD9C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAiC7C;AAED,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
1
+ {"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/scaffold/standard.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAmCvE;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAanD;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAWrD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAsBjD;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAmBlD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAsC7C;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAkCnD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAkD/C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAW/C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAwD9C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAiC7C;AAED,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
@@ -8,7 +8,7 @@ export function generateStandardPackageJson(projectName) {
8
8
  scripts: {
9
9
  dev: "react-router dev",
10
10
  build: "react-router build",
11
- preview: "vite preview",
11
+ preview: "vite preview --outDir build/client",
12
12
  typecheck: "react-router typegen && tsc --noEmit",
13
13
  verify: "mozole verify",
14
14
  },
@@ -45,6 +45,7 @@ export default defineConfig({
45
45
  plugins: [tailwindcss(), reactRouter()],
46
46
  server: {
47
47
  port: 5173,
48
+ proxy: { "/api": "http://127.0.0.1:3001" },
48
49
  },
49
50
  });
50
51
  `;
@@ -136,7 +137,7 @@ export default function App() {
136
137
  `;
137
138
  }
138
139
  export function generateStandardRoutesHome() {
139
- return `import { Button } from "../components/ui/Button";
140
+ return `import { Button } from "../components/ui";
140
141
  import type { Route } from "./+types/home";
141
142
 
142
143
  export function meta(_args: Route.MetaArgs) {
@@ -1 +1 @@
1
- {"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/scaffold/standard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/scaffold/standard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function generateToolsGuide(): string;
2
+ export declare function scaffoldToolsGuide(root: string): Promise<void>;
3
+ //# sourceMappingURL=tools-guide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-guide.d.ts","sourceRoot":"","sources":["../../src/scaffold/tools-guide.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,IAAI,MAAM,CA8G3C;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE"}
@@ -0,0 +1,117 @@
1
+ import { writeFiles } from "../utils/fs.js";
2
+ import { COMPONENTS } from "./components.js";
3
+ export function generateToolsGuide() {
4
+ return `# Components, assets and release tools
5
+
6
+ ## Components
7
+
8
+ Run mozole add --list to inspect the catalog. Run mozole add accordion,select,sheet
9
+ for several components, or mozole add all for the suite. Use --path <project> to select
10
+ a customer project explicitly. These are project-owned, token-based foundations; adapt
11
+ their design to conversation instructions. No shared implementation package is created.
12
+
13
+ Files go to src/components/ui, exports to its index.ts and src/library/index.ts, and
14
+ installation records to .mozole/components.json. Existing component files are preserved
15
+ and skipped, including their exports. Review custom files manually rather than replacing
16
+ them. New required dependencies are added to package.json; run npm install afterward,
17
+ at the prototype root if applicable. The command never installs dependencies itself.
18
+
19
+ Catalog: ${Object.keys(COMPONENTS).join(", ")}.
20
+
21
+ Accessibility composition matters: Dialog/Sheet/Drawer need a Title, appropriate Description
22
+ (or aria-describedby={undefined}), and a close control. Sheet and Drawer include a visible
23
+ Close control; Drawer is a bottom dialog foundation, without drag-to-dismiss. Menus need
24
+ named triggers and indicators for checked/radio items. Tooltip needs TooltipProvider.
25
+ Toast needs ToastProvider and ToastViewport. Select needs SelectTrigger/SelectValue and
26
+ SelectContent/SelectItem. Form controls need visible associated labels. Progress and
27
+ button groups need meaningful accessible names; do not rely on color alone.
28
+
29
+ Example accordion composition:
30
+
31
+ <Accordion type="single" collapsible>
32
+ <AccordionItem value="details">
33
+ <AccordionTrigger>Details</AccordionTrigger>
34
+ <AccordionContent>Project content</AccordionContent>
35
+ </AccordionItem>
36
+ </Accordion>
37
+
38
+ ## Image optimization
39
+
40
+ Put source raster files in assets/images (outside public), then run:
41
+
42
+ mozole assets
43
+ mozole assets --input assets/photos --output public/media --quality 78
44
+ mozole assets --widths 320,640,1280,1920,3840 --base /client/
45
+
46
+ Sharp creates AVIF/WebP width variants up to source resolution, auto-orients EXIF images,
47
+ strips metadata by default, and writes a JPEG/PNG fallback. Default widths are
48
+ 320, 480, 640, 768, 1024, 1280, 1600, 1920, 2560 and 3840 pixels. Small sources are never
49
+ upscaled. Animated and multipage images are skipped and reported; SVGs remain vectors and
50
+ are not converted. Source files are preserved. Output is confined to a public subdirectory.
51
+ Content-addressed output filenames preserve old variants, so existing page references are
52
+ not deleted. manifest.json and src/assets/images.generated.ts describe the latest batch;
53
+ one invocation should include all source images needed by the project. Older unused files
54
+ can be removed deliberately after confirming they are no longer referenced.
55
+
56
+ ResponsiveImage.tsx is created only if absent; existing custom implementations are kept.
57
+ Import images from src/assets/images.generated and ResponsiveImage from the local UI barrel.
58
+ Pass a truthful sizes value for the actual layout. Mark only an above-the-fold critical
59
+ image priority; other images lazy-load. Width and height reserve the image's aspect ratio.
60
+
61
+ <ResponsiveImage image={images["hero.jpg"]} alt="Restaurant terrace"
62
+ sizes="(max-width: 768px) 100vw, 50vw" priority className="h-auto w-full" />
63
+
64
+ Set --base to match the deployment path and rebuild the site after regenerating assets.
65
+ The command encodes files only; it does not capture or inspect screenshots.
66
+
67
+ ## Production packaging
68
+
69
+ mozole release
70
+ mozole release --format zip --output releases/client-v1
71
+ mozole release --format directory --output releases/client-v1
72
+ mozole release --skip-build --from build/client
73
+
74
+ Default behavior runs npm run build, then writes release/ and release.zip. --skip-build
75
+ packages existing output without establishing freshness. Standard React Router static
76
+ output defaults to build/client; Flagship defaults to dist. Use --from after customizing
77
+ your build directory. index.html is required. This command is not a test runner.
78
+
79
+ Static assets and the dependency-free PHP api/ module are assembled at the document root.
80
+ Node APIs require a separate deployment and are rejected by this packaging target.
81
+ Existing outputs are never overwritten; choose a new --output for each release. A file
82
+ manifest with SHA-256 hashes and DEPLOYMENT.txt accompany the package. Runtime data, .env,
83
+ keys, source maps, databases, logs and development directories are excluded. Review the
84
+ omission list. api/config.php is intentionally included as runtime configuration; set its
85
+ customer-specific values and server mail transport before deployment.
86
+
87
+ Apache rewrite/deny rules are included. Existing root .htaccess is preserved; review its
88
+ routing if customized. Nginx does not read .htaccess: apply equivalent PHP routing and
89
+ configuration-file access restrictions on the server. Configure mail and HTTPS on hosting.
90
+ The tool does not log into FTP, run rsync or upload anything; upload the directory contents
91
+ through your authorized deployment process. Packages are capped at 512 MiB input size.
92
+
93
+ ## TUI
94
+
95
+ Open mozole ui and select [6] TOOLS. Choose Add components, Optimize images, or Create
96
+ release. Enter configuration with Tab/arrow navigation, Ctrl+U to clear, Enter to run,
97
+ and Escape to return. Actions use the currently selected project and report results in
98
+ both the panel and cockpit log. Component addition preserves custom code; image encoding
99
+ preserves originals; release builds unless Skip build is yes and never uploads.
100
+
101
+ Headless equivalents:
102
+
103
+ mozole ui --action component-add --component accordion,sheet
104
+ mozole ui --action assets-optimize --input assets/images
105
+ mozole ui --action release --format zip --output releases/v1
106
+
107
+ ## Implementation references
108
+
109
+ - Radix primitives: https://www.radix-ui.com/primitives/docs/overview/introduction
110
+ - Sharp encoders: https://sharp.pixelplumbing.com/api-output/
111
+ - Sharp resize: https://sharp.pixelplumbing.com/api-resize/
112
+ `;
113
+ }
114
+ export async function scaffoldToolsGuide(root) {
115
+ await writeFiles(root, { "docs/tools.md": generateToolsGuide() });
116
+ }
117
+ //# sourceMappingURL=tools-guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-guide.js","sourceRoot":"","sources":["../../src/scaffold/tools-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;WAeE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6F5C,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,UAAU,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function generateProductionWorkflow(): string;
2
+ export declare function generateToolkitGuide(): string;
3
+ export declare function scaffoldWorkflow(root: string): Promise<void>;
4
+ export declare function linkWorkflowPolicies(root: string): Promise<void>;
5
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/scaffold/workflow.ts"],"names":[],"mappings":"AAKA,wBAAgB,0BAA0B,IAAI,MAAM,CAkFnD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CA6E7C;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlE;AAGD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BtE"}