@mozole/cli 1.4.3 → 2.0.0-b
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/LICENSE +16 -4
- package/README.md +85 -112
- package/dist/cli.d.ts +2 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +204 -184
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +5 -10
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +49 -849
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -7
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +69 -377
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/new.d.ts +8 -10
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +32 -197
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/phase.d.ts +11 -0
- package/dist/commands/phase.d.ts.map +1 -0
- package/dist/commands/phase.js +106 -0
- package/dist/commands/phase.js.map +1 -0
- package/dist/commands/prototype.d.ts +6 -0
- package/dist/commands/prototype.d.ts.map +1 -0
- package/dist/commands/prototype.js +28 -0
- package/dist/commands/prototype.js.map +1 -0
- package/dist/commands/repomap.d.ts +6 -0
- package/dist/commands/repomap.d.ts.map +1 -0
- package/dist/commands/repomap.js +71 -0
- package/dist/commands/repomap.js.map +1 -0
- package/dist/commands/test.d.ts +6 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +115 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/ui.d.ts +1 -42
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +74 -466
- package/dist/commands/ui.js.map +1 -1
- package/dist/commands/verify.d.ts +12 -7
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +148 -65
- package/dist/commands/verify.js.map +1 -1
- package/dist/qa/a11y.d.ts +24 -0
- package/dist/qa/a11y.d.ts.map +1 -0
- package/dist/qa/a11y.js +124 -0
- package/dist/qa/a11y.js.map +1 -0
- package/dist/qa/breakpoints.d.ts +16 -0
- package/dist/qa/breakpoints.d.ts.map +1 -0
- package/dist/qa/breakpoints.js +45 -0
- package/dist/qa/breakpoints.js.map +1 -0
- package/dist/qa/contract.d.ts +21 -0
- package/dist/qa/contract.d.ts.map +1 -0
- package/dist/qa/contract.js +116 -0
- package/dist/qa/contract.js.map +1 -0
- package/dist/qa/index.d.ts +6 -0
- package/dist/qa/index.d.ts.map +1 -0
- package/dist/qa/index.js +6 -0
- package/dist/qa/index.js.map +1 -0
- package/dist/qa/probe.d.ts +48 -0
- package/dist/qa/probe.d.ts.map +1 -0
- package/dist/qa/probe.js +206 -0
- package/dist/qa/probe.js.map +1 -0
- package/dist/qa/runner.d.ts +27 -33
- package/dist/qa/runner.d.ts.map +1 -1
- package/dist/qa/runner.js +286 -332
- package/dist/qa/runner.js.map +1 -1
- package/dist/scaffold/agents.d.ts +5 -0
- package/dist/scaffold/agents.d.ts.map +1 -0
- package/dist/scaffold/agents.js +84 -0
- package/dist/scaffold/agents.js.map +1 -0
- package/dist/scaffold/backend.d.ts +6 -8
- package/dist/scaffold/backend.d.ts.map +1 -1
- package/dist/scaffold/backend.js +318 -199
- package/dist/scaffold/backend.js.map +1 -1
- package/dist/scaffold/design.d.ts +4 -3
- package/dist/scaffold/design.d.ts.map +1 -1
- package/dist/scaffold/design.js +38 -47
- package/dist/scaffold/design.js.map +1 -1
- package/dist/scaffold/flagship.d.ts +8 -0
- package/dist/scaffold/flagship.d.ts.map +1 -0
- package/dist/scaffold/flagship.js +337 -0
- package/dist/scaffold/flagship.js.map +1 -0
- package/dist/scaffold/index.d.ts +9 -0
- package/dist/scaffold/index.d.ts.map +1 -0
- package/dist/scaffold/index.js +48 -0
- package/dist/scaffold/index.js.map +1 -0
- package/dist/scaffold/phases.d.ts +10 -0
- package/dist/scaffold/phases.d.ts.map +1 -0
- package/dist/scaffold/phases.js +165 -0
- package/dist/scaffold/phases.js.map +1 -0
- package/dist/scaffold/repomap.d.ts +6 -0
- package/dist/scaffold/repomap.d.ts.map +1 -0
- package/dist/scaffold/repomap.js +89 -0
- package/dist/scaffold/repomap.js.map +1 -0
- package/dist/scaffold/standard.d.ts +13 -0
- package/dist/scaffold/standard.d.ts.map +1 -0
- package/dist/scaffold/standard.js +371 -0
- package/dist/scaffold/standard.js.map +1 -0
- package/dist/scaffold/tokens.d.ts +3 -0
- package/dist/scaffold/tokens.d.ts.map +1 -0
- package/dist/scaffold/tokens.js +126 -0
- package/dist/scaffold/tokens.js.map +1 -0
- package/dist/server/manager.d.ts +23 -0
- package/dist/server/manager.d.ts.map +1 -0
- package/dist/server/manager.js +96 -0
- package/dist/server/manager.js.map +1 -0
- package/dist/utils/ai-trace.d.ts +8 -0
- package/dist/utils/ai-trace.d.ts.map +1 -0
- package/dist/utils/ai-trace.js +69 -0
- package/dist/utils/ai-trace.js.map +1 -0
- package/dist/utils/browser.d.ts +10 -0
- package/dist/utils/browser.d.ts.map +1 -0
- package/dist/utils/browser.js +127 -0
- package/dist/utils/browser.js.map +1 -0
- package/dist/utils/fs.d.ts +11 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +166 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/git.d.ts +9 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +69 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/process.d.ts +21 -0
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +120 -0
- package/dist/utils/process.js.map +1 -0
- package/dist/version.d.ts +21 -36
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +21 -44
- package/dist/version.js.map +1 -1
- package/package.json +19 -38
- package/CHANGELOG.md +0 -38
- package/dist/commands/cce.d.ts +0 -7
- package/dist/commands/cce.d.ts.map +0 -1
- package/dist/commands/cce.js +0 -37
- package/dist/commands/cce.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -3
- package/dist/commands/logs.d.ts.map +0 -1
- package/dist/commands/logs.js +0 -40
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/qa.d.ts +0 -12
- package/dist/commands/qa.d.ts.map +0 -1
- package/dist/commands/qa.js +0 -143
- package/dist/commands/qa.js.map +0 -1
- package/dist/commands/stats.d.ts +0 -37
- package/dist/commands/stats.d.ts.map +0 -1
- package/dist/commands/stats.js +0 -169
- package/dist/commands/stats.js.map +0 -1
- package/dist/commands/template.d.ts +0 -8
- package/dist/commands/template.d.ts.map +0 -1
- package/dist/commands/template.js +0 -392
- package/dist/commands/template.js.map +0 -1
- package/dist/config/project.d.ts +0 -54
- package/dist/config/project.d.ts.map +0 -1
- package/dist/config/project.js +0 -100
- package/dist/config/project.js.map +0 -1
- package/dist/context/cce.d.ts +0 -39
- package/dist/context/cce.d.ts.map +0 -1
- package/dist/context/cce.js +0 -455
- package/dist/context/cce.js.map +0 -1
- package/dist/governor/fingerprint.d.ts +0 -7
- package/dist/governor/fingerprint.d.ts.map +0 -1
- package/dist/governor/fingerprint.js +0 -120
- package/dist/governor/fingerprint.js.map +0 -1
- package/dist/governor/hook.d.ts +0 -13
- package/dist/governor/hook.d.ts.map +0 -1
- package/dist/governor/hook.js +0 -389
- package/dist/governor/hook.js.map +0 -1
- package/dist/governor/state.d.ts +0 -45
- package/dist/governor/state.d.ts.map +0 -1
- package/dist/governor/state.js +0 -60
- package/dist/governor/state.js.map +0 -1
- package/dist/integrations/antigravity.d.ts +0 -20
- package/dist/integrations/antigravity.d.ts.map +0 -1
- package/dist/integrations/antigravity.js +0 -153
- package/dist/integrations/antigravity.js.map +0 -1
- package/dist/output-safety.d.ts +0 -3
- package/dist/output-safety.d.ts.map +0 -1
- package/dist/output-safety.js +0 -44
- package/dist/output-safety.js.map +0 -1
- package/dist/output.d.ts +0 -5
- package/dist/output.d.ts.map +0 -1
- package/dist/output.js +0 -2
- package/dist/output.js.map +0 -1
- package/dist/platform/executable.d.ts +0 -11
- package/dist/platform/executable.d.ts.map +0 -1
- package/dist/platform/executable.js +0 -69
- package/dist/platform/executable.js.map +0 -1
- package/dist/platform/process.d.ts +0 -27
- package/dist/platform/process.d.ts.map +0 -1
- package/dist/platform/process.js +0 -189
- package/dist/platform/process.js.map +0 -1
- package/dist/progress.d.ts +0 -44
- package/dist/progress.d.ts.map +0 -1
- package/dist/progress.js +0 -123
- package/dist/progress.js.map +0 -1
- package/dist/qa/artifacts.d.ts +0 -3
- package/dist/qa/artifacts.d.ts.map +0 -1
- package/dist/qa/artifacts.js +0 -15
- package/dist/qa/artifacts.js.map +0 -1
- package/dist/qa/diff.d.ts +0 -10
- package/dist/qa/diff.d.ts.map +0 -1
- package/dist/qa/diff.js +0 -90
- package/dist/qa/diff.js.map +0 -1
- package/dist/qa/server.d.ts +0 -10
- package/dist/qa/server.d.ts.map +0 -1
- package/dist/qa/server.js +0 -127
- package/dist/qa/server.js.map +0 -1
- package/dist/scaffold/adoption.d.ts +0 -17
- package/dist/scaffold/adoption.d.ts.map +0 -1
- package/dist/scaffold/adoption.js +0 -279
- package/dist/scaffold/adoption.js.map +0 -1
- package/dist/scaffold/legacy.d.ts +0 -4
- package/dist/scaffold/legacy.d.ts.map +0 -1
- package/dist/scaffold/legacy.js +0 -139
- package/dist/scaffold/legacy.js.map +0 -1
- package/dist/scaffold/routes.d.ts +0 -3
- package/dist/scaffold/routes.d.ts.map +0 -1
- package/dist/scaffold/routes.js +0 -37
- package/dist/scaffold/routes.js.map +0 -1
- package/dist/scaffold/standalone.d.ts +0 -7
- package/dist/scaffold/standalone.d.ts.map +0 -1
- package/dist/scaffold/standalone.js +0 -374
- package/dist/scaffold/standalone.js.map +0 -1
- package/dist/scaffold/templates.d.ts +0 -9
- package/dist/scaffold/templates.d.ts.map +0 -1
- package/dist/scaffold/templates.js +0 -317
- package/dist/scaffold/templates.js.map +0 -1
- package/dist/scaffold/write.d.ts +0 -2
- package/dist/scaffold/write.d.ts.map +0 -1
- package/dist/scaffold/write.js +0 -38
- package/dist/scaffold/write.js.map +0 -1
- package/dist/telemetry/store.d.ts +0 -33
- package/dist/telemetry/store.d.ts.map +0 -1
- package/dist/telemetry/store.js +0 -75
- package/dist/telemetry/store.js.map +0 -1
- package/dist/template/servers.d.ts +0 -21
- package/dist/template/servers.d.ts.map +0 -1
- package/dist/template/servers.js +0 -193
- package/dist/template/servers.js.map +0 -1
- package/dist/template/workspace.d.ts +0 -23
- package/dist/template/workspace.d.ts.map +0 -1
- package/dist/template/workspace.js +0 -152
- package/dist/template/workspace.js.map +0 -1
- package/dist/verify/runner.d.ts +0 -16
- package/dist/verify/runner.d.ts.map +0 -1
- package/dist/verify/runner.js +0 -112
- package/dist/verify/runner.js.map +0 -1
- package/docs/agent-audit.md +0 -24
package/dist/template/servers.js
DELETED
|
@@ -1,193 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"servers.js","sourceRoot":"","sources":["../../src/template/servers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,152 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/template/workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/verify/runner.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { MozoleConfig } from "../config/project.js";
|
|
2
|
-
import { sanitizeTerminalText } from "../output-safety.js";
|
|
3
|
-
export interface CheckResult {
|
|
4
|
-
name: string;
|
|
5
|
-
passed: boolean;
|
|
6
|
-
detail?: string | undefined;
|
|
7
|
-
rawChars: number;
|
|
8
|
-
}
|
|
9
|
-
export declare const stripAnsi: typeof sanitizeTerminalText;
|
|
10
|
-
export declare function actionableFailure(output: string, limit?: number): string;
|
|
11
|
-
export declare function runVerification(root: string, config: MozoleConfig, signal?: AbortSignal, onStep?: (checkName: string, index: number, total: number) => void): Promise<{
|
|
12
|
-
results: CheckResult[];
|
|
13
|
-
output: string;
|
|
14
|
-
passed: boolean;
|
|
15
|
-
}>;
|
|
16
|
-
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/verify/runner.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { access } from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { sanitizeTerminalText } from "../output-safety.js";
|
|
4
|
-
import { npmExecutable, resolveExecutable } from "../platform/executable.js";
|
|
5
|
-
import { run } from "../platform/process.js";
|
|
6
|
-
import { inspectBackendScaffold } from "../scaffold/backend.js";
|
|
7
|
-
import { updateTelemetry } from "../telemetry/store.js";
|
|
8
|
-
export const stripAnsi = sanitizeTerminalText;
|
|
9
|
-
export function actionableFailure(output, limit = 18) {
|
|
10
|
-
const clean = stripAnsi(output)
|
|
11
|
-
.split(/\r?\n/)
|
|
12
|
-
.map((line) => line.trimEnd());
|
|
13
|
-
const meaningful = clean.filter((line) => line.trim() &&
|
|
14
|
-
!/^\s*(npm (warn|notice)|at async |at process\.)/i.test(line));
|
|
15
|
-
const failureIndex = meaningful.findIndex((line) => /error|failed|expected|received|×|✗/i.test(line));
|
|
16
|
-
const start = failureIndex < 0
|
|
17
|
-
? Math.max(0, meaningful.length - limit)
|
|
18
|
-
: Math.max(0, failureIndex - 3);
|
|
19
|
-
return meaningful
|
|
20
|
-
.slice(start, start + limit)
|
|
21
|
-
.join("\n")
|
|
22
|
-
.slice(0, 4000);
|
|
23
|
-
}
|
|
24
|
-
export async function runVerification(root, config, signal, onStep) {
|
|
25
|
-
const optionalChecks = [];
|
|
26
|
-
try {
|
|
27
|
-
await access(path.join(root, "composer.json"));
|
|
28
|
-
const composer = await resolveExecutable("composer");
|
|
29
|
-
optionalChecks.push({
|
|
30
|
-
name: "composer",
|
|
31
|
-
command: composer ?? "composer",
|
|
32
|
-
args: ["validate", "--no-check-publish"],
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
catch { }
|
|
36
|
-
const checks = [
|
|
37
|
-
{ name: "lint", command: npmExecutable(), args: ["run", "lint"] },
|
|
38
|
-
{ name: "typecheck", command: npmExecutable(), args: ["run", "typecheck"] },
|
|
39
|
-
{ name: "tests", command: npmExecutable(), args: ["run", "test:run"] },
|
|
40
|
-
{ name: "build", command: npmExecutable(), args: ["run", "build"] },
|
|
41
|
-
...optionalChecks,
|
|
42
|
-
...config.verifiers,
|
|
43
|
-
];
|
|
44
|
-
const results = [];
|
|
45
|
-
const backendOffset = config.backend?.enabled ? 1 : 0;
|
|
46
|
-
const total = checks.length + backendOffset;
|
|
47
|
-
if (config.backend?.enabled) {
|
|
48
|
-
onStep?.("backend", 1, total);
|
|
49
|
-
const backend = await inspectBackendScaffold(root, config);
|
|
50
|
-
results.push({
|
|
51
|
-
name: "backend",
|
|
52
|
-
passed: backend.healthy,
|
|
53
|
-
detail: backend.healthy ? undefined : backend.detail,
|
|
54
|
-
rawChars: backend.detail.length,
|
|
55
|
-
});
|
|
56
|
-
if (!backend.healthy) {
|
|
57
|
-
const body = `VERIFY FAIL\n\nbackend ✗\n\n${backend.detail}`;
|
|
58
|
-
return { results, output: body, passed: false };
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
for (let i = 0; i < checks.length; i++) {
|
|
62
|
-
const check = checks[i];
|
|
63
|
-
if (!check)
|
|
64
|
-
continue;
|
|
65
|
-
onStep?.(check.name, i + 1 + backendOffset, total);
|
|
66
|
-
let result;
|
|
67
|
-
try {
|
|
68
|
-
result = await run(check.command, check.args, {
|
|
69
|
-
cwd: root,
|
|
70
|
-
timeoutMs: 600_000,
|
|
71
|
-
signal,
|
|
72
|
-
logFile: path.join(root, ".mozole", "logs", `verify-${check.name}.log`),
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
if (signal?.aborted)
|
|
77
|
-
throw error;
|
|
78
|
-
const detail = `Unable to execute ${check.command}: ${error instanceof Error ? error.message : String(error)}`;
|
|
79
|
-
results.push({
|
|
80
|
-
name: check.name,
|
|
81
|
-
passed: false,
|
|
82
|
-
detail,
|
|
83
|
-
rawChars: detail.length,
|
|
84
|
-
});
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
signal?.throwIfAborted();
|
|
88
|
-
const combined = `${result.stdout}\n${result.stderr}`;
|
|
89
|
-
results.push({
|
|
90
|
-
name: check.name,
|
|
91
|
-
passed: result.exitCode === 0,
|
|
92
|
-
detail: result.exitCode === 0 ? undefined : actionableFailure(combined),
|
|
93
|
-
rawChars: combined.length,
|
|
94
|
-
});
|
|
95
|
-
if (result.exitCode !== 0)
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
const passed = results.length === total && results.every((result) => result.passed);
|
|
99
|
-
const resultBody = passed
|
|
100
|
-
? `VERIFY PASS\n\n${results.map((result) => `${result.name.padEnd(10)} ✓`).join("\n")}`
|
|
101
|
-
: `VERIFY FAIL\n\n${results.map((result) => `${result.name.padEnd(10)} ${result.passed ? "✓" : "✗"}`).join("\n")}\n\n${results.find((result) => !result.passed)?.detail ?? "Unknown failure"}`;
|
|
102
|
-
const body = resultBody;
|
|
103
|
-
if (config.telemetry?.enabled)
|
|
104
|
-
await updateTelemetry(root, (telemetry) => {
|
|
105
|
-
telemetry.verification.runs++;
|
|
106
|
-
telemetry.verification.rawChars += results.reduce((sum, result) => sum + result.rawChars, 0);
|
|
107
|
-
telemetry.verification.deliveredChars += body.length;
|
|
108
|
-
telemetry.governor.modelFacingDiagnosticChars += body.length;
|
|
109
|
-
});
|
|
110
|
-
return { results, output: body, passed };
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/verify/runner.ts"],"names":[],"mappings":"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"}
|
package/docs/agent-audit.md
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Agent integration audit — 1.4.2
|
|
2
|
-
|
|
3
|
-
## Findings and changes
|
|
4
|
-
|
|
5
|
-
1. Default scaffold removed agent files but still serialized CCE/governor/telemetry settings and CCE toolchain metadata. Its CLI dependency also installed optimization code. Plain output now contains neither that metadata nor the CLI dependency; project scripts run independently. Regression tests scan generated files and installed dependency locks.
|
|
6
|
-
2. Verification and QA loaded fingerprints and wrote governor state even when the governor was disabled. Both paths now bypass that work unless explicitly enabled. Repeated-run tests assert no state or telemetry files are created.
|
|
7
|
-
3. Default adoption installed CCE integrations without flags. Plain adoption now uses standalone scripts and basic guidance. Explicit `--cce-install` selects managed integration adoption. Without that flag, previously optimized projects migrate to standalone mode: Mozole-owned integrations and state are archived/removed from the active system, while unrelated user integrations are preserved.
|
|
8
|
-
4. AGENTS.md was absent by default, depriving agents of useful commands and architecture. Plain projects now include concise, integration-free guidance. CLAUDE.md imports it with `@AGENTS.md`. Tests check that every documented npm command actually exists, including PHP commands.
|
|
9
|
-
5. PreToolUse matchers did not observe CCE MCP retrieval. Optional hooks now register matching PostToolUse handlers. Retrieval is recorded after execution; explicit tool-error responses are ignored. PreToolUse retains read/command enforcement.
|
|
10
|
-
6. Existing managed instruction blocks and hook groups were skipped during adoption, preserving obsolete policies. They now update idempotently while preserving unowned content and handlers. An unclosed managed block fails instead of truncating user text.
|
|
11
|
-
7. The visual workflow called a command that could be rejected after successful normal QA. It now supplies `--reason=explicit-workflow`.
|
|
12
|
-
8. README described enforcing hooks as advisory-only. Documentation now reflects denial behavior and host trust requirements.
|
|
13
|
-
|
|
14
|
-
## Scope and evidence
|
|
15
|
-
|
|
16
|
-
- Tested generated guidance, hook event wiring, successful/error retrieval handling, default/adopt isolation, repeated verification/QA without state, and preservation/idempotency.
|
|
17
|
-
- Plain frontend and PHP projects are built and browser-tested using their own npm scripts. Optimized smoke covers managed workspace files and CLI QA; it deliberately skips live CCE indexing.
|
|
18
|
-
- AGENTS.md is instruction input, not proof that an agent has followed it. Nested `AGENTS.override.md`, host settings, and hook trust can change behavior. Codex/Claude/Antigravity interactive host sessions were not launched as part of this audit. The tests validate generated contracts and executable hook handlers, not every host's activation state.
|
|
19
|
-
- An unavailable optional CCE runtime is reported during creation; enabling the integration is not a claim that indexing succeeded. Repair commands are printed.
|
|
20
|
-
|
|
21
|
-
## Primary references checked
|
|
22
|
-
|
|
23
|
-
- [Codex AGENTS.md discovery and scope](https://learn.chatgpt.com/docs/agent-configuration/agents-md): root-to-current-directory discovery; overrides and size limits.
|
|
24
|
-
- [Codex hooks](https://learn.chatgpt.com/docs/hooks): PreToolUse/PostToolUse matchers, MCP coverage, permission decisions, and project hook trust.
|