@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.
- package/CHANGELOG.md +16 -0
- package/README.md +27 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +49 -22
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +2 -0
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +53 -16
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +2 -1
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +63 -15
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/template.d.ts +8 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +392 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/ui.d.ts +5 -0
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +159 -9
- package/dist/commands/ui.js.map +1 -1
- package/dist/config/project.d.ts +3 -0
- package/dist/config/project.d.ts.map +1 -1
- package/dist/config/project.js +21 -2
- package/dist/config/project.js.map +1 -1
- package/dist/governor/fingerprint.d.ts.map +1 -1
- package/dist/governor/fingerprint.js +19 -28
- package/dist/governor/fingerprint.js.map +1 -1
- package/dist/output-safety.d.ts +3 -0
- package/dist/output-safety.d.ts.map +1 -0
- package/dist/output-safety.js +44 -0
- package/dist/output-safety.js.map +1 -0
- package/dist/platform/process.d.ts +2 -0
- package/dist/platform/process.d.ts.map +1 -1
- package/dist/platform/process.js +16 -6
- package/dist/platform/process.js.map +1 -1
- package/dist/qa/artifacts.d.ts +3 -0
- package/dist/qa/artifacts.d.ts.map +1 -0
- package/dist/qa/artifacts.js +15 -0
- package/dist/qa/artifacts.js.map +1 -0
- package/dist/qa/diff.d.ts.map +1 -1
- package/dist/qa/diff.js +0 -1
- package/dist/qa/diff.js.map +1 -1
- package/dist/qa/runner.d.ts +3 -2
- package/dist/qa/runner.d.ts.map +1 -1
- package/dist/qa/runner.js +12 -16
- package/dist/qa/runner.js.map +1 -1
- package/dist/qa/server.d.ts.map +1 -1
- package/dist/qa/server.js +7 -7
- package/dist/qa/server.js.map +1 -1
- package/dist/scaffold/design.d.ts +1 -1
- package/dist/scaffold/design.d.ts.map +1 -1
- package/dist/scaffold/design.js +1 -0
- package/dist/scaffold/design.js.map +1 -1
- package/dist/scaffold/standalone.d.ts +1 -1
- package/dist/scaffold/standalone.d.ts.map +1 -1
- package/dist/scaffold/standalone.js +82 -2
- package/dist/scaffold/standalone.js.map +1 -1
- package/dist/scaffold/templates.d.ts +1 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +23 -2
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/template/servers.d.ts +21 -0
- package/dist/template/servers.d.ts.map +1 -0
- package/dist/template/servers.js +193 -0
- package/dist/template/servers.js.map +1 -0
- package/dist/template/workspace.d.ts +23 -0
- package/dist/template/workspace.d.ts.map +1 -0
- package/dist/template/workspace.js +152 -0
- package/dist/template/workspace.js.map +1 -0
- package/dist/verify/runner.d.ts +2 -1
- package/dist/verify/runner.d.ts.map +1 -1
- package/dist/verify/runner.js +2 -2
- package/dist/verify/runner.js.map +1 -1
- package/dist/version.d.ts +4 -2
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +3 -1
- package/dist/version.js.map +1 -1
- package/docs/agent-audit.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.4.3
|
|
4
|
+
|
|
5
|
+
- Make visual diff threshold violations fail QA without replacing the accepted baseline, and reject colliding route artifact names.
|
|
6
|
+
- Invalidate optimized verification evidence for every non-generated project file and across CLI upgrades.
|
|
7
|
+
- Sanitize untrusted terminal output and bound captured process and development-server logs.
|
|
8
|
+
- Reject empty, duplicate, or excessive QA route and viewport configurations in managed and standalone runners.
|
|
9
|
+
- Roll back newly initialized template workspaces when dependency or browser installation fails so creation can be retried.
|
|
10
|
+
|
|
11
|
+
## 1.4.2
|
|
12
|
+
|
|
13
|
+
- Package the default Tailwind CSS 4.3.3 and `@tailwindcss/vite` integration for Vite, React Router and PHP scaffolds.
|
|
14
|
+
- Keep generated starter styles in the Tailwind base layer and verify that utility CSS is emitted in production builds.
|
|
15
|
+
- Extend design guidance with static utility classes, semantic theme tokens and styling-pipeline checks for adopted projects.
|
|
16
|
+
|
|
3
17
|
## 1.4.1
|
|
4
18
|
|
|
19
|
+
- Include Tailwind CSS 4.3.3 and its Vite plugin in every new project; keep starter styles in the base layer and verify generated utilities in production CSS.
|
|
20
|
+
|
|
5
21
|
- Make `adopt` reconcile legacy and previously optimized projects with the current canonical project system without requiring an integration flag.
|
|
6
22
|
- Archive Mozole-owned legacy state and managed files during migration, preserve unrelated user integrations and design exports, and restore managed changes if installation fails.
|
|
7
23
|
- Refresh managed instruction blocks, standalone verification/QA scripts, PHP templates, tooling pins and configured project verifiers idempotently.
|
package/README.md
CHANGED
|
@@ -25,10 +25,30 @@ npm run qa:interactive
|
|
|
25
25
|
npm run qa:visual
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
`verify` runs lint, strict TypeScript, tests, and production build every time. PHP projects also run PHP version and recursive syntax checks first. `qa` starts a loopback development server on an available port, checks the configured routes at three viewports, and closes its browser and server. Normal QA never captures screenshots. `qa:visual` explicitly captures screenshots under `.mozole/qa/`. Reinstall Chromium with `npx playwright install chromium` if necessary.
|
|
28
|
+
`verify` runs lint, strict TypeScript, tests, and production build every time. PHP projects also run PHP version and recursive syntax checks first. `qa` starts a loopback development server on an available port, checks the configured routes at three viewports, and closes its browser and server. Normal QA never captures screenshots. `qa:visual` explicitly captures screenshots under `.mozole/qa/`. Optional `--diff` comparisons preserve the accepted baseline and fail when the configured threshold is exceeded. Reinstall Chromium with `npx playwright install chromium` if necessary.
|
|
29
29
|
|
|
30
30
|
React Router uses `ssr: false` and `prerender: true`. The starter builds real HTML for `/`, `/about`, and `/contact` into `build/client/`, plus `__spa-fallback.html`. Production requires no Node server. See [React Router prerendering](https://reactrouter.com/how-to/pre-rendering).
|
|
31
31
|
|
|
32
|
+
## Shared template workspaces
|
|
33
|
+
|
|
34
|
+
Use a template workspace when multiple generated projects should share one pinned Node.js toolkit instead of installing a separate `node_modules` tree for every project:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
mozole template init MozoleProjects
|
|
38
|
+
cd MozoleProjects
|
|
39
|
+
mozole new marketing-site
|
|
40
|
+
mozole new admin-panel --backend
|
|
41
|
+
mozole template adopt ../existing-vite-app
|
|
42
|
+
mozole template list
|
|
43
|
+
mozole ui
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The template root is an npm workspace marked by `.mozole/template.json`. Its `package.json` owns React, React Router, Vite, Tailwind, TypeScript, Biome, Vitest, Playwright, and the Mozole CLI. Child manifests retain standardized dependency declarations for framework compatibility, while npm hoists their physical installation to the root; no project-local `node_modules` is created. `mozole new` searches parent directories for the marker, so it automatically registers projects created from the template root or nested category folders such as `Architecture/`. Creation from inside an existing managed project is rejected to prevent accidental project nesting. Projects outside a template workspace retain the normal standalone installation behavior.
|
|
47
|
+
|
|
48
|
+
`mozole template adopt <path>` imports an external React/Vite project as a copy, leaving its source directory untouched. Running it for an existing direct child standardizes that project in place. Runtime, optional, peer, and development packages are merged into the root toolkit; template versions win conflicts so every managed project resolves one standardized version. The child's previous lockfile is archived under `.mozole/backups/`, and its disposable local `node_modules` is removed after a successful shared install. `--cce-install` remains available for optimized adoption.
|
|
49
|
+
|
|
50
|
+
The TUI's **Servers** screen discovers nested Mozole projects and starts each configured npm development server on its preferred port or the next available port. Use Enter/`s` to toggle one server, `a` to start all, and `x` to stop all. Server output is retained under `.mozole/logs/servers/`. Managed servers are stopped when the TUI exits, so the UI remains the single lifecycle owner; disposable project-local Vite caches are cleaned on stop.
|
|
51
|
+
|
|
32
52
|
## Design references and assets
|
|
33
53
|
|
|
34
54
|
Place exported `design.md`, images, icons, fonts and reference screens under `docs/design/`. Generated `AGENTS.md` treats these as design evidence, preserves their intent, and requires checks for spacing, loaded fonts, foreground/background contrast, responsive behavior and interaction states. It permits justified corrections instead of blindly copying tokens. `docs/design/README.md` explains the handoff; no provider-specific design is generated. Existing exports remain untouched during adoption. Routine QA stays screenshot-free; visual comparison remains opt-in.
|
|
@@ -71,10 +91,12 @@ Optimized `AGENTS.md` provides the shared CCE-first contract; `CLAUDE.md` import
|
|
|
71
91
|
|
|
72
92
|
Read and command policies run on `PreToolUse`. CCE retrieval tracking runs on `PostToolUse`, including MCP tool names, and ignores explicit tool-error responses. The Antigravity visual workflow provides a reason accepted by the visual QA gate. Host-specific agent sessions are not automatically launched by the CLI test suite.
|
|
73
93
|
|
|
74
|
-
Optimized verification/QA reuses matching successful evidence. Use `--force` for a fresh run. Routine QA is screenshot-free; visual QA uses explicit `--visual` and, after successful routine QA, `--reason` or `--force`. Enabled governors enforce read/command policies and can deny calls; they are not advisory-only. Local telemetry reports measured output compression and tool activity, not model billing savings.
|
|
94
|
+
Optimized verification/QA reuses matching successful evidence. Verification evidence covers all non-generated project files and is invalidated by CLI upgrades. Use `--force` for a fresh run. Routine QA is screenshot-free; visual QA uses explicit `--visual` and, after successful routine QA, `--reason` or `--force`. Enabled governors enforce read/command policies and can deny calls; they are not advisory-only. Local telemetry reports measured output compression and tool activity, not model billing savings.
|
|
75
95
|
|
|
76
96
|
## Adopt an existing project
|
|
77
97
|
|
|
98
|
+
New projects include pinned Tailwind CSS v4 and `@tailwindcss/vite` by default in all modes, including PHP projects. `app/styles/global.css` imports Tailwind and keeps starter styles in the base layer. Adoption preserves existing CSS and Vite configuration; it does not automatically migrate older styling pipelines or inject Preflight into an existing design.
|
|
99
|
+
|
|
78
100
|
```sh
|
|
79
101
|
mozole adopt ../existing-app
|
|
80
102
|
```
|
|
@@ -85,6 +107,9 @@ Adoption reconciles a React/Vite or React Router project with the current projec
|
|
|
85
107
|
|
|
86
108
|
```text
|
|
87
109
|
mozole new <name> [--backend] [--cce-install] [--verbose]
|
|
110
|
+
mozole template init [folder]
|
|
111
|
+
mozole template adopt <project-path> [--cce-install] [--verbose]
|
|
112
|
+
mozole template list
|
|
88
113
|
mozole adopt <path> [--cce-install] [--verbose]
|
|
89
114
|
mozole doctor
|
|
90
115
|
mozole verify [--force]
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAsBA,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,OAAO,CAOT;AAuDD,wBAAsB,IAAI,CACxB,IAAI,WAAwB,EAC5B,GAAG,SAAgB,GAClB,OAAO,CAAC,MAAM,CAAC,CA2KjB"}
|
package/dist/cli.js
CHANGED
|
@@ -8,9 +8,11 @@ import { logsCommand } from "./commands/logs.js";
|
|
|
8
8
|
import { newCommand } from "./commands/new.js";
|
|
9
9
|
import { qaCommand } from "./commands/qa.js";
|
|
10
10
|
import { statsCommand } from "./commands/stats.js";
|
|
11
|
+
import { templateAdoptCommand, templateInitCommand, templateListCommand, } from "./commands/template.js";
|
|
11
12
|
import { uiCommand } from "./commands/ui.js";
|
|
12
13
|
import { verifyCommand } from "./commands/verify.js";
|
|
13
14
|
import { governorHookCommand } from "./governor/hook.js";
|
|
15
|
+
import { sanitizeTerminalText } from "./output-safety.js";
|
|
14
16
|
import { CLI_VERSION } from "./version.js";
|
|
15
17
|
export function isCliEntrypoint(entryUrl, invokedPath) {
|
|
16
18
|
if (!invokedPath)
|
|
@@ -26,6 +28,9 @@ const help = `mozole ${CLI_VERSION}
|
|
|
26
28
|
|
|
27
29
|
Usage:
|
|
28
30
|
mozole new <name> [--backend] [--cce-install] [--verbose]
|
|
31
|
+
mozole template init [folder]
|
|
32
|
+
mozole template adopt <project-path> [--cce-install] [--verbose]
|
|
33
|
+
mozole template list
|
|
29
34
|
mozole adopt <path> [--cce-install] [--verbose]
|
|
30
35
|
mozole cce install [--verbose]
|
|
31
36
|
mozole doctor [--verbose]
|
|
@@ -34,6 +39,10 @@ Usage:
|
|
|
34
39
|
mozole stats [--verbose]
|
|
35
40
|
mozole ui
|
|
36
41
|
mozole logs [name] [--raw]`;
|
|
42
|
+
const terminalOutput = {
|
|
43
|
+
log: (message, ...optional) => console.log(...[message, ...optional].map((value) => sanitizeTerminalText(String(value ?? "")))),
|
|
44
|
+
error: (message, ...optional) => console.error(...[message, ...optional].map((value) => sanitizeTerminalText(String(value ?? "")))),
|
|
45
|
+
};
|
|
37
46
|
function parseCliArgs(args, allowedFlags = [], isAllowedFlag) {
|
|
38
47
|
const clean = args.filter((arg) => Boolean(arg));
|
|
39
48
|
const positional = clean.filter((arg) => !arg.startsWith("-"));
|
|
@@ -49,36 +58,54 @@ export async function main(args = process.argv.slice(2), cwd = process.cwd()) {
|
|
|
49
58
|
command === "help" ||
|
|
50
59
|
command === "--help" ||
|
|
51
60
|
command === "-h") {
|
|
52
|
-
|
|
61
|
+
terminalOutput.log(help);
|
|
53
62
|
return 0;
|
|
54
63
|
}
|
|
55
64
|
if (command === "--version" || (command === "-v" && !value)) {
|
|
56
|
-
|
|
65
|
+
terminalOutput.log(CLI_VERSION);
|
|
57
66
|
return 0;
|
|
58
67
|
}
|
|
59
68
|
if (command === "new") {
|
|
60
69
|
const { positional, flags, unknown, verbose } = parseCliArgs([value, ...rest], ["--backend", "--cce-install", "--install-cce", "--scaffold"]);
|
|
61
70
|
if (unknown.length || positional.length > 1) {
|
|
62
|
-
|
|
71
|
+
terminalOutput.error(`Unknown option: ${unknown[0] ?? positional[1]}`);
|
|
63
72
|
return 2;
|
|
64
73
|
}
|
|
65
74
|
const cceInstall = flags.includes("--cce-install") || flags.includes("--install-cce");
|
|
66
75
|
const backend = flags.includes("--backend");
|
|
67
76
|
const scaffold = flags.includes("--scaffold");
|
|
68
|
-
return newCommand(positional[0], cwd,
|
|
77
|
+
return newCommand(positional[0], cwd, terminalOutput, {
|
|
69
78
|
verbose,
|
|
70
79
|
cceInstall,
|
|
71
80
|
backend,
|
|
72
81
|
scaffold,
|
|
73
82
|
});
|
|
74
83
|
}
|
|
84
|
+
if (command === "template") {
|
|
85
|
+
const { positional, flags, unknown, verbose } = parseCliArgs([value, ...rest], ["--cce-install", "--install-cce"]);
|
|
86
|
+
if (unknown.length) {
|
|
87
|
+
terminalOutput.error(`Unknown template option: ${unknown[0]}`);
|
|
88
|
+
return 2;
|
|
89
|
+
}
|
|
90
|
+
if (positional[0] === "init" && positional.length <= 2)
|
|
91
|
+
return templateInitCommand(positional[1], cwd);
|
|
92
|
+
if (positional[0] === "adopt" && positional.length === 2)
|
|
93
|
+
return templateAdoptCommand(positional[1], cwd, terminalOutput, {
|
|
94
|
+
verbose,
|
|
95
|
+
cceInstall: flags.includes("--cce-install") || flags.includes("--install-cce"),
|
|
96
|
+
});
|
|
97
|
+
if (positional[0] === "list" && positional.length === 1)
|
|
98
|
+
return templateListCommand(cwd);
|
|
99
|
+
terminalOutput.error("Usage: mozole template init [folder]\n mozole template adopt <project-path> [--cce-install] [--verbose]\n mozole template list");
|
|
100
|
+
return 2;
|
|
101
|
+
}
|
|
75
102
|
if (command === "adopt") {
|
|
76
103
|
const { positional, unknown, verbose, flags } = parseCliArgs([value, ...rest], ["--cce-install", "--install-cce"]);
|
|
77
104
|
if (unknown.length || positional.length > 1) {
|
|
78
|
-
|
|
105
|
+
terminalOutput.error(`Unknown option: ${unknown[0] ?? positional[1]}`);
|
|
79
106
|
return 2;
|
|
80
107
|
}
|
|
81
|
-
return adoptCommand(positional[0], cwd,
|
|
108
|
+
return adoptCommand(positional[0], cwd, terminalOutput, {
|
|
82
109
|
verbose,
|
|
83
110
|
cceInstall: flags.includes("--cce-install") || flags.includes("--install-cce"),
|
|
84
111
|
});
|
|
@@ -88,26 +115,26 @@ export async function main(args = process.argv.slice(2), cwd = process.cwd()) {
|
|
|
88
115
|
if (positional[0] !== "install" ||
|
|
89
116
|
positional.length > 1 ||
|
|
90
117
|
unknown.length) {
|
|
91
|
-
|
|
118
|
+
terminalOutput.error("Usage: mozole cce install [--verbose]");
|
|
92
119
|
return 2;
|
|
93
120
|
}
|
|
94
|
-
return cceInstallCommand(cwd,
|
|
121
|
+
return cceInstallCommand(cwd, terminalOutput, { verbose });
|
|
95
122
|
}
|
|
96
123
|
if (command === "doctor") {
|
|
97
124
|
const { unknown, verbose } = parseCliArgs([value, ...rest]);
|
|
98
125
|
if (unknown.length) {
|
|
99
|
-
|
|
126
|
+
terminalOutput.error(`Unknown doctor option: ${unknown[0]}`);
|
|
100
127
|
return 2;
|
|
101
128
|
}
|
|
102
|
-
return doctorCommand(cwd,
|
|
129
|
+
return doctorCommand(cwd, terminalOutput, { verbose });
|
|
103
130
|
}
|
|
104
131
|
if (command === "verify") {
|
|
105
132
|
const { flags, unknown, verbose } = parseCliArgs([value, ...rest], ["--force"]);
|
|
106
133
|
if (unknown.length) {
|
|
107
|
-
|
|
134
|
+
terminalOutput.error(`Unknown verify option: ${unknown[0]}`);
|
|
108
135
|
return 2;
|
|
109
136
|
}
|
|
110
|
-
return verifyCommand(cwd,
|
|
137
|
+
return verifyCommand(cwd, terminalOutput, {
|
|
111
138
|
force: flags.includes("--force"),
|
|
112
139
|
verbose,
|
|
113
140
|
});
|
|
@@ -115,37 +142,37 @@ export async function main(args = process.argv.slice(2), cwd = process.cwd()) {
|
|
|
115
142
|
if (command === "stats") {
|
|
116
143
|
const { unknown, verbose } = parseCliArgs([value, ...rest]);
|
|
117
144
|
if (unknown.length) {
|
|
118
|
-
|
|
145
|
+
terminalOutput.error(`Unknown stats option: ${unknown[0]}`);
|
|
119
146
|
return 2;
|
|
120
147
|
}
|
|
121
|
-
return statsCommand(cwd,
|
|
148
|
+
return statsCommand(cwd, terminalOutput, { verbose });
|
|
122
149
|
}
|
|
123
150
|
if (command === "ui") {
|
|
124
151
|
if (value || rest.length) {
|
|
125
|
-
|
|
152
|
+
terminalOutput.error("Usage: mozole ui");
|
|
126
153
|
return 2;
|
|
127
154
|
}
|
|
128
|
-
return uiCommand(cwd);
|
|
155
|
+
return uiCommand(cwd, terminalOutput);
|
|
129
156
|
}
|
|
130
157
|
if (command === "logs") {
|
|
131
158
|
const { positional, flags, unknown } = parseCliArgs([value, ...rest], ["--raw"]);
|
|
132
159
|
if (unknown.length || positional.length > 1) {
|
|
133
|
-
|
|
160
|
+
terminalOutput.error(`Unknown logs option: ${unknown[0] ?? positional[1]}`);
|
|
134
161
|
return 2;
|
|
135
162
|
}
|
|
136
163
|
const name = positional[0];
|
|
137
|
-
return logsCommand(cwd, name, flags.includes("--raw"));
|
|
164
|
+
return logsCommand(cwd, name, flags.includes("--raw"), terminalOutput);
|
|
138
165
|
}
|
|
139
166
|
if (command === "governor" && value === "hook")
|
|
140
167
|
return governorHookCommand();
|
|
141
168
|
if (command === "qa") {
|
|
142
169
|
const { flags, unknown, verbose } = parseCliArgs([value, ...rest], ["--interactive", "--visual", "--diff", "--force"], (flag) => flag.startsWith("--reason="));
|
|
143
170
|
if (unknown.length) {
|
|
144
|
-
|
|
171
|
+
terminalOutput.error(`Unknown QA option: ${unknown[0]}`);
|
|
145
172
|
return 2;
|
|
146
173
|
}
|
|
147
174
|
if (flags.includes("--diff") && !flags.includes("--visual")) {
|
|
148
|
-
|
|
175
|
+
terminalOutput.error("QA --diff requires --visual.");
|
|
149
176
|
return 2;
|
|
150
177
|
}
|
|
151
178
|
const reasonFlag = flags.find((flag) => flag.startsWith("--reason="));
|
|
@@ -159,9 +186,9 @@ export async function main(args = process.argv.slice(2), cwd = process.cwd()) {
|
|
|
159
186
|
force: flags.includes("--force"),
|
|
160
187
|
verbose,
|
|
161
188
|
reason,
|
|
162
|
-
},
|
|
189
|
+
}, terminalOutput);
|
|
163
190
|
}
|
|
164
|
-
|
|
191
|
+
terminalOutput.error(`Unknown command: ${command}\n\n${help}`);
|
|
165
192
|
return 2;
|
|
166
193
|
}
|
|
167
194
|
if (isCliEntrypoint(import.meta.url, process.argv[1]))
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/adopt.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { type ProgressState } from "../progress.js";
|
|
|
3
3
|
export { detectRoutes } from "../scaffold/routes.js";
|
|
4
4
|
export declare function adoptCommand(input: string | undefined, cwd: string, output?: Output, options?: {
|
|
5
5
|
cceInstall?: boolean | undefined;
|
|
6
|
+
sharedDependencies?: boolean | undefined;
|
|
7
|
+
workspaceRoot?: string | undefined;
|
|
6
8
|
verbose?: boolean | undefined;
|
|
7
9
|
onProgress?: ((state: ProgressState) => void) | undefined;
|
|
8
10
|
}): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,gBAAgB,CAAC;AAkGlE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA+JrD,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAgB,EACxB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACtD,GACL,OAAO,CAAC,MAAM,CAAC,CA6ZjB"}
|
package/dist/commands/adopt.js
CHANGED
|
@@ -238,10 +238,18 @@ export async function adoptCommand(input, cwd, output = console, options = {}) {
|
|
|
238
238
|
const original = await readFile(packagePath, "utf8");
|
|
239
239
|
const packageJson = JSON.parse(original);
|
|
240
240
|
await assertAntigravityMcpMergeable(root);
|
|
241
|
-
const
|
|
241
|
+
const workspacePackage = options.sharedDependencies && options.workspaceRoot
|
|
242
|
+
? JSON.parse(await readFile(path.join(options.workspaceRoot, "package.json"), "utf8"))
|
|
243
|
+
: {};
|
|
244
|
+
const projectDependencies = {
|
|
242
245
|
...packageJson.dependencies,
|
|
243
246
|
...packageJson.devDependencies,
|
|
244
247
|
};
|
|
248
|
+
const allDependencies = {
|
|
249
|
+
...workspacePackage.dependencies,
|
|
250
|
+
...workspacePackage.devDependencies,
|
|
251
|
+
...projectDependencies,
|
|
252
|
+
};
|
|
245
253
|
if (!allDependencies.react ||
|
|
246
254
|
(!allDependencies.vite && !allDependencies["@react-router/dev"]))
|
|
247
255
|
throw new Error("Expected a React project using Vite or React Router Framework Mode.");
|
|
@@ -261,7 +269,10 @@ export async function adoptCommand(input, cwd, output = console, options = {}) {
|
|
|
261
269
|
throw new Error(`Existing .mozole/project.json is invalid: ${error instanceof Error ? error.message : String(error)}`);
|
|
262
270
|
}
|
|
263
271
|
})()
|
|
264
|
-
: projectConfig(name, {
|
|
272
|
+
: projectConfig(name, {
|
|
273
|
+
scaffold: false,
|
|
274
|
+
sharedDependencies: options.sharedDependencies,
|
|
275
|
+
});
|
|
265
276
|
const wasManaged = await exists(configPath);
|
|
266
277
|
if (!config.backend && (await exists(path.join(root, "api/index.php"))))
|
|
267
278
|
config.backend = projectConfig(name, { backend: true }).backend;
|
|
@@ -269,7 +280,7 @@ export async function adoptCommand(input, cwd, output = console, options = {}) {
|
|
|
269
280
|
scaffold: false,
|
|
270
281
|
backend: Boolean(config.backend),
|
|
271
282
|
});
|
|
272
|
-
adaptFrameworkGuide(templates, Boolean(
|
|
283
|
+
adaptFrameworkGuide(templates, Boolean(projectDependencies["@react-router/dev"]));
|
|
273
284
|
const migration = await canonicalPlan(root, templates, true, wasManaged, name, knownGuides(name));
|
|
274
285
|
config.name = name;
|
|
275
286
|
for (const key of Object.keys(config))
|
|
@@ -280,6 +291,7 @@ export async function adoptCommand(input, cwd, output = console, options = {}) {
|
|
|
280
291
|
"framework",
|
|
281
292
|
"routes",
|
|
282
293
|
"backend",
|
|
294
|
+
"workspace",
|
|
283
295
|
"qa",
|
|
284
296
|
"cce",
|
|
285
297
|
"governor",
|
|
@@ -297,6 +309,10 @@ export async function adoptCommand(input, cwd, output = console, options = {}) {
|
|
|
297
309
|
};
|
|
298
310
|
config.governor = optimized.governor;
|
|
299
311
|
config.telemetry = optimized.telemetry;
|
|
312
|
+
if (options.sharedDependencies)
|
|
313
|
+
config.workspace = { sharedDependencies: true };
|
|
314
|
+
else
|
|
315
|
+
delete config.workspace;
|
|
300
316
|
progress.step("Verifying CCE runtime availability");
|
|
301
317
|
const cceRequired = process.env.MOZOLE_SKIP_CCE !== "1" && config.cce?.enabled;
|
|
302
318
|
const cce = cceRequired
|
|
@@ -318,8 +334,8 @@ export async function adoptCommand(input, cwd, output = console, options = {}) {
|
|
|
318
334
|
lint: "biome check .",
|
|
319
335
|
format: "biome format --write .",
|
|
320
336
|
typecheck: !packageJson.scripts?.typecheck ||
|
|
321
|
-
|
|
322
|
-
?
|
|
337
|
+
["tsc --noEmit", "react-router typegen && tsc --noEmit"].includes(packageJson.scripts.typecheck)
|
|
338
|
+
? projectDependencies["@react-router/dev"]
|
|
323
339
|
? "react-router typegen && tsc --noEmit"
|
|
324
340
|
: "tsc --noEmit"
|
|
325
341
|
: packageJson.scripts.typecheck,
|
|
@@ -431,16 +447,19 @@ export async function adoptCommand(input, cwd, output = console, options = {}) {
|
|
|
431
447
|
movedDirectories = await applyCanonicalPlan(root, migration, snapshots);
|
|
432
448
|
progress.step("Installing missing dependencies & toolchain packages");
|
|
433
449
|
if (process.env.MOZOLE_SKIP_INSTALL !== "1") {
|
|
434
|
-
progress.logVerbose(
|
|
450
|
+
progress.logVerbose(options.sharedDependencies
|
|
451
|
+
? "Synchronizing shared template dependencies"
|
|
452
|
+
: "Running npm install for adopted project");
|
|
435
453
|
const installed = await run(npmExecutable(), ["install", "--no-fund", "--no-audit"], {
|
|
436
|
-
cwd: root,
|
|
454
|
+
cwd: options.workspaceRoot ?? root,
|
|
437
455
|
timeoutMs: 600_000,
|
|
438
456
|
signal: controller.signal,
|
|
439
|
-
logFile: path.join(root, ".mozole", "logs", "npm-install.log"),
|
|
457
|
+
logFile: path.join(options.workspaceRoot ?? root, ".mozole", "logs", "npm-install.log"),
|
|
440
458
|
});
|
|
441
459
|
if (installed.exitCode !== 0)
|
|
442
460
|
throw new Error("npm install failed; package.json backup is in .mozole/backups/.");
|
|
443
|
-
if (
|
|
461
|
+
if (!options.sharedDependencies &&
|
|
462
|
+
process.env.MOZOLE_SKIP_BROWSER !== "1") {
|
|
444
463
|
progress.logVerbose("Installing Playwright browser");
|
|
445
464
|
const browser = await run(npmExecutable(), ["exec", "--", "playwright", "install", "chromium"], {
|
|
446
465
|
cwd: root,
|
|
@@ -517,7 +536,18 @@ async function adoptPlain(root, output, options) {
|
|
|
517
536
|
await validateManagedPaths(root);
|
|
518
537
|
const packagePath = path.join(root, "package.json");
|
|
519
538
|
const pkg = JSON.parse(await readFile(packagePath, "utf8"));
|
|
520
|
-
const
|
|
539
|
+
const projectDependencies = {
|
|
540
|
+
...pkg.dependencies,
|
|
541
|
+
...pkg.devDependencies,
|
|
542
|
+
};
|
|
543
|
+
const workspacePackage = options.sharedDependencies && options.workspaceRoot
|
|
544
|
+
? JSON.parse(await readFile(path.join(options.workspaceRoot, "package.json"), "utf8"))
|
|
545
|
+
: {};
|
|
546
|
+
const deps = {
|
|
547
|
+
...workspacePackage.dependencies,
|
|
548
|
+
...workspacePackage.devDependencies,
|
|
549
|
+
...projectDependencies,
|
|
550
|
+
};
|
|
521
551
|
if (!deps.react || (!deps.vite && !deps["@react-router/dev"]))
|
|
522
552
|
throw new Error("Expected a React project using Vite or React Router Framework Mode.");
|
|
523
553
|
const name = pkg.name ?? path.basename(root);
|
|
@@ -541,6 +571,7 @@ async function adoptPlain(root, output, options) {
|
|
|
541
571
|
"framework",
|
|
542
572
|
"routes",
|
|
543
573
|
"backend",
|
|
574
|
+
"workspace",
|
|
544
575
|
"qa",
|
|
545
576
|
"cce",
|
|
546
577
|
"governor",
|
|
@@ -551,7 +582,11 @@ async function adoptPlain(root, output, options) {
|
|
|
551
582
|
const templates = projectTemplates(name, {
|
|
552
583
|
backend: Boolean(config.backend?.enabled),
|
|
553
584
|
});
|
|
554
|
-
|
|
585
|
+
if (options.sharedDependencies)
|
|
586
|
+
config.workspace = { sharedDependencies: true };
|
|
587
|
+
else
|
|
588
|
+
delete config.workspace;
|
|
589
|
+
adaptFrameworkGuide(templates, Boolean(projectDependencies["@react-router/dev"]));
|
|
555
590
|
const migration = await canonicalPlan(root, templates, false, wasManaged, name, knownGuides(name));
|
|
556
591
|
const generated = JSON.parse(templates["package.json"] ?? "{}");
|
|
557
592
|
const routeFile = path.join(root, "app", "routes.ts");
|
|
@@ -590,8 +625,9 @@ async function adoptPlain(root, output, options) {
|
|
|
590
625
|
"test:run": "vitest run",
|
|
591
626
|
...pkg.scripts,
|
|
592
627
|
};
|
|
593
|
-
if (!pkg.scripts?.typecheck ||
|
|
594
|
-
|
|
628
|
+
if (!pkg.scripts?.typecheck ||
|
|
629
|
+
["tsc --noEmit", "react-router typegen && tsc --noEmit"].includes(pkg.scripts.typecheck))
|
|
630
|
+
next.scripts.typecheck = projectDependencies["@react-router/dev"]
|
|
595
631
|
? "react-router typegen && tsc --noEmit"
|
|
596
632
|
: "tsc --noEmit";
|
|
597
633
|
for (const key of [
|
|
@@ -641,15 +677,16 @@ async function adoptPlain(root, output, options) {
|
|
|
641
677
|
if (process.env.MOZOLE_SKIP_INSTALL !== "1") {
|
|
642
678
|
for (const args of [
|
|
643
679
|
["install", "--no-fund", "--no-audit"],
|
|
644
|
-
...(process.env.MOZOLE_SKIP_BROWSER === "1"
|
|
680
|
+
...(process.env.MOZOLE_SKIP_BROWSER === "1" ||
|
|
681
|
+
options.sharedDependencies
|
|
645
682
|
? []
|
|
646
683
|
: [["exec", "--", "playwright", "install", "chromium"]]),
|
|
647
684
|
]) {
|
|
648
685
|
const result = await run(npmExecutable(), args, {
|
|
649
|
-
cwd: root,
|
|
686
|
+
cwd: options.workspaceRoot ?? root,
|
|
650
687
|
timeoutMs: 600_000,
|
|
651
688
|
signal: controller.signal,
|
|
652
|
-
logFile: path.join(root, ".mozole", "logs", "adopt-install.log"),
|
|
689
|
+
logFile: path.join(options.workspaceRoot ?? root, ".mozole", "logs", "adopt-install.log"),
|
|
653
690
|
});
|
|
654
691
|
if (result.exitCode !== 0)
|
|
655
692
|
throw new Error("Dependency setup failed. See .mozole/logs/adopt-install.log");
|