@mozole/cli 1.3.1 → 1.4.0
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 +13 -0
- package/README.md +52 -168
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +31 -45
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +1 -0
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +192 -23
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +312 -271
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +10 -3
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/new.d.ts +7 -4
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +39 -26
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/qa.d.ts.map +1 -1
- package/dist/commands/qa.js +18 -12
- package/dist/commands/qa.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +6 -1
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +12 -8
- package/dist/commands/verify.js.map +1 -1
- package/dist/config/project.d.ts +8 -7
- package/dist/config/project.d.ts.map +1 -1
- package/dist/config/project.js +39 -26
- package/dist/config/project.js.map +1 -1
- package/dist/context/cce.d.ts +0 -7
- package/dist/context/cce.d.ts.map +1 -1
- package/dist/context/cce.js +12 -43
- package/dist/context/cce.js.map +1 -1
- package/dist/governor/fingerprint.d.ts.map +1 -1
- package/dist/governor/fingerprint.js +38 -20
- package/dist/governor/fingerprint.js.map +1 -1
- package/dist/governor/hook.d.ts +2 -1
- package/dist/governor/hook.d.ts.map +1 -1
- package/dist/governor/hook.js +20 -11
- package/dist/governor/hook.js.map +1 -1
- package/dist/platform/executable.d.ts.map +1 -1
- package/dist/platform/executable.js +12 -4
- package/dist/platform/executable.js.map +1 -1
- package/dist/platform/process.d.ts.map +1 -1
- package/dist/platform/process.js +46 -66
- package/dist/platform/process.js.map +1 -1
- package/dist/qa/diff.d.ts +3 -3
- package/dist/qa/diff.d.ts.map +1 -1
- package/dist/qa/diff.js +13 -1
- package/dist/qa/diff.js.map +1 -1
- package/dist/qa/runner.d.ts +9 -9
- package/dist/qa/runner.d.ts.map +1 -1
- package/dist/qa/runner.js +46 -23
- package/dist/qa/runner.js.map +1 -1
- package/dist/qa/server.d.ts.map +1 -1
- package/dist/qa/server.js +6 -1
- package/dist/qa/server.js.map +1 -1
- package/dist/scaffold/backend.d.ts +9 -0
- package/dist/scaffold/backend.d.ts.map +1 -0
- package/dist/scaffold/backend.js +224 -0
- package/dist/scaffold/backend.js.map +1 -0
- package/dist/scaffold/standalone.d.ts +6 -0
- package/dist/scaffold/standalone.d.ts.map +1 -0
- package/dist/scaffold/standalone.js +270 -0
- package/dist/scaffold/standalone.js.map +1 -0
- package/dist/scaffold/templates.d.ts +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +122 -81
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/scaffold/write.d.ts.map +1 -1
- package/dist/scaffold/write.js +19 -5
- package/dist/scaffold/write.js.map +1 -1
- package/dist/telemetry/store.js +7 -3
- package/dist/telemetry/store.js.map +1 -1
- package/dist/verify/runner.d.ts.map +1 -1
- package/dist/verify/runner.js +15 -17
- package/dist/verify/runner.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +1 -1
- package/docs/agent-audit.md +24 -0
- package/package.json +7 -2
- package/dist/scaffold/admin.d.ts +0 -8
- package/dist/scaffold/admin.d.ts.map +0 -1
- package/dist/scaffold/admin.js +0 -45
- package/dist/scaffold/admin.js.map +0 -1
package/dist/qa/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/qa/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/qa/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/qa/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/qa/server.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AACD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/qa/server.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AACD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW5D;AACD,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBtE;AAcD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,QAAQ,CAAC,CAqFnB"}
|
package/dist/qa/server.js
CHANGED
|
@@ -7,7 +7,12 @@ import { prepareSpawn, terminateProcess } from "../platform/process.js";
|
|
|
7
7
|
export async function responds(url) {
|
|
8
8
|
try {
|
|
9
9
|
const response = await fetch(url, { signal: AbortSignal.timeout(1_000) });
|
|
10
|
-
|
|
10
|
+
const ok = response.status < 400;
|
|
11
|
+
try {
|
|
12
|
+
await response.body?.cancel();
|
|
13
|
+
}
|
|
14
|
+
catch { }
|
|
15
|
+
return ok;
|
|
11
16
|
}
|
|
12
17
|
catch {
|
|
13
18
|
return false;
|
package/dist/qa/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/qa/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAOxE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1E,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/qa/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MozoleConfig } from "../config/project.js";
|
|
2
|
+
export interface BackendInspection {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
healthy: boolean;
|
|
5
|
+
detail: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function inspectBackendScaffold(root: string, config: MozoleConfig): Promise<BackendInspection>;
|
|
8
|
+
export declare function backendTemplates(name: string): Record<string, string>;
|
|
9
|
+
//# sourceMappingURL=backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/scaffold/backend.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAqF5B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+IrE"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { resolveExecutable } from "../platform/executable.js";
|
|
4
|
+
import { run } from "../platform/process.js";
|
|
5
|
+
export async function inspectBackendScaffold(root, config) {
|
|
6
|
+
if (!config.backend?.enabled) {
|
|
7
|
+
return { enabled: false, healthy: true, detail: "frontend-only project" };
|
|
8
|
+
}
|
|
9
|
+
const requiredFiles = [
|
|
10
|
+
"api/index.php",
|
|
11
|
+
"api/config.php",
|
|
12
|
+
".htaccess",
|
|
13
|
+
"docs/backend-php.md",
|
|
14
|
+
];
|
|
15
|
+
try {
|
|
16
|
+
const contents = await Promise.all(requiredFiles.map((file) => readFile(path.join(root, ...file.split("/")), "utf8")));
|
|
17
|
+
const allPresent = contents.every((content) => content.trim().length > 0);
|
|
18
|
+
if (!allPresent) {
|
|
19
|
+
return {
|
|
20
|
+
enabled: true,
|
|
21
|
+
healthy: false,
|
|
22
|
+
detail: "PHP backend files are incomplete or empty",
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const phpExecutable = await resolveExecutable("php");
|
|
26
|
+
if (!phpExecutable) {
|
|
27
|
+
return {
|
|
28
|
+
enabled: true,
|
|
29
|
+
healthy: false,
|
|
30
|
+
detail: "PHP executable not found in PATH (required for local dev server)",
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const version = await run(phpExecutable, ["-r", "echo PHP_VERSION_ID;"], {
|
|
34
|
+
cwd: root,
|
|
35
|
+
timeoutMs: 10_000,
|
|
36
|
+
});
|
|
37
|
+
if (version.exitCode !== 0 ||
|
|
38
|
+
!/^\d+$/.test(version.stdout.trim()) ||
|
|
39
|
+
Number(version.stdout.trim()) < 80000) {
|
|
40
|
+
return {
|
|
41
|
+
enabled: true,
|
|
42
|
+
healthy: false,
|
|
43
|
+
detail: "PHP 8.0 or newer is required; runtime probe failed.",
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const php = phpExecutable;
|
|
47
|
+
async function lint(directory) {
|
|
48
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
49
|
+
const file = path.join(directory, entry.name);
|
|
50
|
+
if (entry.isDirectory()) {
|
|
51
|
+
const failure = await lint(file);
|
|
52
|
+
if (failure)
|
|
53
|
+
return failure;
|
|
54
|
+
}
|
|
55
|
+
else if (entry.isFile() && entry.name.endsWith(".php")) {
|
|
56
|
+
const result = await run(php, ["-l", file], {
|
|
57
|
+
cwd: root,
|
|
58
|
+
timeoutMs: 10_000,
|
|
59
|
+
});
|
|
60
|
+
if (result.exitCode !== 0)
|
|
61
|
+
return `${path.relative(root, file)}: ${(result.stderr || result.stdout).trim().slice(0, 2000)}`;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const failure = await lint(path.join(root, "api"));
|
|
67
|
+
if (failure)
|
|
68
|
+
return { enabled: true, healthy: false, detail: failure };
|
|
69
|
+
return {
|
|
70
|
+
enabled: true,
|
|
71
|
+
healthy: true,
|
|
72
|
+
detail: `PHP runtime detected (${path.basename(phpExecutable)}); API routes ready at ${config.backend.apiPrefix}`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return {
|
|
77
|
+
enabled: true,
|
|
78
|
+
healthy: false,
|
|
79
|
+
detail: `Backend inspection failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export function backendTemplates(name) {
|
|
84
|
+
return {
|
|
85
|
+
"api/index.php": `<?php
|
|
86
|
+
declare(strict_types=1);
|
|
87
|
+
|
|
88
|
+
require_once __DIR__ . '/config.php';
|
|
89
|
+
|
|
90
|
+
header('Content-Type: application/json; charset=utf-8');
|
|
91
|
+
header('X-Content-Type-Options: nosniff');
|
|
92
|
+
header('X-Frame-Options: DENY');
|
|
93
|
+
|
|
94
|
+
$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
|
|
95
|
+
$uri = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH) ?? '/';
|
|
96
|
+
|
|
97
|
+
// Normalize URI to match route path (handles both /api/path and direct /path on dev server)
|
|
98
|
+
$basePrefix = '/api';
|
|
99
|
+
if ($uri === $basePrefix || str_starts_with($uri, $basePrefix . '/')) {
|
|
100
|
+
$route = '/' . ltrim(substr($uri, strlen($basePrefix)), '/');
|
|
101
|
+
} else {
|
|
102
|
+
$route = '/__not_found__';
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (in_array($route, ['/', '/health', '/info'], true) && !in_array($method, ['GET', 'HEAD'], true)) {
|
|
106
|
+
header('Allow: GET, HEAD');
|
|
107
|
+
http_response_code(405);
|
|
108
|
+
echo json_encode(['error' => 'Method not allowed']);
|
|
109
|
+
exit;
|
|
110
|
+
}
|
|
111
|
+
if ($method === 'HEAD' && in_array($route, ['/', '/health', '/info'], true)) {
|
|
112
|
+
exit;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
switch ($route) {
|
|
116
|
+
case '/':
|
|
117
|
+
case '/health':
|
|
118
|
+
echo json_encode([
|
|
119
|
+
'status' => 'ok',
|
|
120
|
+
'app' => '${name}',
|
|
121
|
+
'timestamp' => time(),
|
|
122
|
+
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
|
|
123
|
+
break;
|
|
124
|
+
|
|
125
|
+
case '/info':
|
|
126
|
+
echo json_encode([
|
|
127
|
+
'name' => '${name}',
|
|
128
|
+
'backend' => 'PHP native API',
|
|
129
|
+
'endpoints' => [
|
|
130
|
+
'GET /api/health' => 'Service status check',
|
|
131
|
+
'GET /api/info' => 'Backend metadata',
|
|
132
|
+
],
|
|
133
|
+
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
|
|
134
|
+
break;
|
|
135
|
+
|
|
136
|
+
default:
|
|
137
|
+
http_response_code(404);
|
|
138
|
+
echo json_encode([
|
|
139
|
+
'error' => 'Endpoint not found',
|
|
140
|
+
'path' => $uri,
|
|
141
|
+
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
`,
|
|
145
|
+
"api/config.php": `<?php
|
|
146
|
+
declare(strict_types=1);
|
|
147
|
+
|
|
148
|
+
function env(string $key, ?string $default = null): ?string {
|
|
149
|
+
$value = getenv($key);
|
|
150
|
+
return $value !== false ? $value : $default;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Environment configuration
|
|
154
|
+
define('APP_ENV', env('APP_ENV', 'production'));
|
|
155
|
+
define('APP_DEBUG', env('APP_DEBUG', 'false') === 'true');
|
|
156
|
+
|
|
157
|
+
// Optional database connection helper
|
|
158
|
+
function get_db_connection(): ?PDO {
|
|
159
|
+
static $pdo = null;
|
|
160
|
+
if ($pdo !== null) {
|
|
161
|
+
return $pdo;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
$dsn = env('DB_DSN');
|
|
165
|
+
if (!$dsn) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
$user = env('DB_USER', '');
|
|
170
|
+
$pass = env('DB_PASS', '');
|
|
171
|
+
|
|
172
|
+
try {
|
|
173
|
+
$pdo = new PDO($dsn, $user, $pass, [
|
|
174
|
+
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
175
|
+
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
176
|
+
PDO::ATTR_EMULATE_PREPARES => false,
|
|
177
|
+
]);
|
|
178
|
+
return $pdo;
|
|
179
|
+
} catch (PDOException $e) {
|
|
180
|
+
if (APP_DEBUG) {
|
|
181
|
+
throw $e;
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
`,
|
|
187
|
+
".htaccess": `<IfModule mod_rewrite.c>
|
|
188
|
+
RewriteEngine On
|
|
189
|
+
RewriteBase /
|
|
190
|
+
|
|
191
|
+
# Route API requests to PHP front-controller
|
|
192
|
+
RewriteRule ^api(/.*)?$ api/index.php [QSA,L]
|
|
193
|
+
|
|
194
|
+
# Serve static assets directly if they exist
|
|
195
|
+
RewriteCond %{REQUEST_FILENAME} -f [OR]
|
|
196
|
+
RewriteCond %{REQUEST_FILENAME} -d
|
|
197
|
+
RewriteRule ^ - [L]
|
|
198
|
+
|
|
199
|
+
# Fallback to prerendered / client index for SPA routes
|
|
200
|
+
RewriteRule ^index\\.html$ - [L]
|
|
201
|
+
RewriteRule . /__spa-fallback.html [L]
|
|
202
|
+
</IfModule>
|
|
203
|
+
`,
|
|
204
|
+
"docs/backend-php.md": `# PHP Backend Architecture
|
|
205
|
+
|
|
206
|
+
This project combines a **static-first React + Vite frontend** with a lightweight, native **PHP backend API**.
|
|
207
|
+
|
|
208
|
+
## How It Works
|
|
209
|
+
|
|
210
|
+
### Local Development
|
|
211
|
+
- **Frontend (React + Vite)**: Runs via \`npm run dev\` (typically at \`http://127.0.0.1:5173\`).
|
|
212
|
+
- **Backend (PHP API)**: Runs via \`npm run dev:api\` (\`php -S 127.0.0.1:8000 -t api api/index.php\`).
|
|
213
|
+
- **Proxy**: Vite's \`server.proxy\` automatically forwards all \`/api/*\` requests from the browser directly to the PHP dev server. Your React code calls \`fetch("/api/health")\` without dealing with CORS or port mismatches.
|
|
214
|
+
|
|
215
|
+
### Production Deployment (Apache / LiteSpeed / Nginx)
|
|
216
|
+
- Requires PHP 8.0 or newer. Run \`npm run build:deploy\`, then upload the **contents** of \`deploy/\`, including the hidden \`.htaccess\` file. The deployment contains static HTML, assets, and \`api/\` together; no Node.js runtime is required.
|
|
217
|
+
- **Apache / LiteSpeed**: The provided \`.htaccess\` handles routing:
|
|
218
|
+
- All \`/api/*\` calls are routed directly to \`api/index.php\`.
|
|
219
|
+
- All static HTML, CSS, JS, and image assets are served directly by the web server at maximum speed.
|
|
220
|
+
- **Nginx**: Configure your PHP-FPM socket and route \`/api/\` to \`api/index.php\` with \`SCRIPT_FILENAME\` set explicitly. Use \`try_files $uri $uri/ /__spa-fallback.html\` for the frontend. Nginx ignores \`.htaccess\`; server configuration is required.\n- The supplied rewrite rules assume deployment at the domain root. Subdirectory hosting needs matching frontend basename and server rewrite configuration.\n- Environment values use actual process environment variables (\`getenv\`); no .env loader is installed. Production and debug-off are the defaults.
|
|
221
|
+
`,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/scaffold/backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Standalone project tooling: no dependency on the generator at runtime. */
|
|
2
|
+
export declare const backendCheckScript = "import { spawnSync } from \"node:child_process\";\nimport { readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nfunction php(args) {\n const result = spawnSync(\"php\", args, {\n encoding: \"utf8\",\n shell: false,\n timeout: 10000,\n });\n if (result.error || result.status !== 0)\n throw new Error(result.error?.message || result.stderr || result.stdout);\n return result.stdout.trim();\n}\nasync function lint(directory) {\n for (const entry of await readdir(directory, { withFileTypes: true })) {\n const file = path.join(directory, entry.name);\n if (entry.isDirectory()) await lint(file);\n else if (entry.isFile() && entry.name.endsWith(\".php\")) php([\"-l\", file]);\n }\n}\ntry {\n const version = Number(php([\"-r\", \"echo PHP_VERSION_ID;\"]));\n if (!Number.isInteger(version) || version < 80000)\n throw new Error(\"PHP 8.0 or newer is required.\");\n await lint(\"api\");\n console.log(\"PHP PASS\");\n} catch (error) {\n console.error(`PHP FAIL\\n${error.message}`);\n process.exitCode = 1;\n}\n";
|
|
3
|
+
export declare const deployScript = "import { cp, lstat, mkdir, rename, rm } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nconst target = path.resolve(\"deploy\");\nconst staging = `${target}.${process.pid}.tmp`;\nconst backup = `${target}.${process.pid}.backup`;\nlet backedUp = false;\ntry {\n await mkdir(staging);\n await cp(\"build/client\", staging, { recursive: true, errorOnExist: true });\n await cp(\"api\", path.join(staging, \"api\"), { recursive: true });\n await cp(\".htaccess\", path.join(staging, \".htaccess\"));\n try {\n await lstat(target);\n await rename(target, backup);\n backedUp = true;\n } catch (error) {\n if (error.code !== \"ENOENT\") throw error;\n }\n try {\n await rename(staging, target);\n } catch (error) {\n if (backedUp) await rename(backup, target);\n throw error;\n }\n if (backedUp) await rm(backup, { recursive: true });\n console.log(\"DEPLOY READY: deploy/\");\n} finally {\n await rm(staging, { recursive: true, force: true });\n}\n";
|
|
4
|
+
export declare const qaScript = "import { spawn, spawnSync } from \"node:child_process\";\nimport { mkdir, readFile } from \"node:fs/promises\";\nimport net from \"node:net\";\nimport path from \"node:path\";\nimport { chromium } from \"playwright\";\n\nconst flags = process.argv.slice(2);\nif (\n flags.some((flag) => ![\"--visual\", \"--interactive\", \"--force\"].includes(flag))\n)\n throw new Error(\"Unknown QA option\");\nconst config = JSON.parse(await readFile(\".mozole/project.json\", \"utf8\"));\nconst socket = net.createServer();\nawait new Promise((resolve, reject) => {\n socket.once(\"error\", reject);\n socket.listen(0, \"127.0.0.1\", resolve);\n});\nconst port = socket.address().port;\nawait new Promise((resolve) => socket.close(resolve));\nconst pkg = JSON.parse(await readFile(\"package.json\", \"utf8\"));\nconst framework = pkg.devDependencies?.[\"@react-router/dev\"]\n ? \"@react-router/dev\"\n : \"vite\";\nconst frameworkRoot = path.resolve(\"node_modules\", framework);\nconst metadata = JSON.parse(\n await readFile(path.join(frameworkRoot, \"package.json\"), \"utf8\"),\n);\nconst bin =\n typeof metadata.bin === \"string\"\n ? metadata.bin\n : Object.values(metadata.bin)[0];\nconst args = [\n path.join(frameworkRoot, bin),\n ...(framework === \"vite\" ? [] : [\"dev\"]),\n \"--host\",\n \"127.0.0.1\",\n \"--port\",\n String(port),\n \"--strictPort\",\n];\nconst child = spawn(process.execPath, args, {\n shell: false,\n detached: process.platform !== \"win32\",\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n});\nlet serverLog = \"\";\nfor (const stream of [child.stdout, child.stderr])\n stream.on(\"data\", (data) => {\n serverLog = (serverLog + data).slice(-4000);\n });\nlet serverError;\nchild.on(\"error\", (error) => {\n serverError = error;\n});\nlet browser;\nlet stopping = false;\nasync function cleanup() {\n if (stopping) return;\n stopping = true;\n await browser?.close().catch(() => {});\n if (child.pid) {\n if (process.platform === \"win32\")\n spawnSync(\"taskkill\", [\"/pid\", String(child.pid), \"/T\", \"/F\"], {\n shell: false,\n stdio: \"ignore\",\n });\n else {\n try {\n process.kill(-child.pid, \"SIGTERM\");\n } catch {}\n }\n }\n}\nconst interrupted = () => {\n void cleanup().finally(() => process.exit(130));\n};\nprocess.once(\"SIGINT\", interrupted);\nprocess.once(\"SIGTERM\", interrupted);\nconst deadline = setTimeout(() => {\n console.error(\"QA timed out\");\n void cleanup().finally(() => process.exit(1));\n}, 120000);\nconst base = `http://127.0.0.1:${port}`;\ntry {\n let ready = false;\n for (let attempt = 0; attempt < 300; attempt++) {\n if (serverError || child.exitCode !== null)\n throw new Error(serverError?.message || serverLog);\n try {\n ready = (\n await fetch(base + config.qa.server.readinessPath, {\n signal: AbortSignal.timeout(1000),\n })\n ).ok;\n } catch {}\n if (ready) break;\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n if (!ready)\n throw new Error(`Development server did not become ready.\\n${serverLog}`);\n browser = await chromium.launch();\n const failures = [];\n for (const viewport of config.qa.viewports) {\n const page = await browser.newPage({ viewport });\n page.on(\"pageerror\", (error) => failures.push(error.message));\n page.on(\"console\", (message) => {\n if (message.type() === \"error\") failures.push(message.text());\n });\n page.on(\"requestfailed\", (request) => {\n if (request.failure()?.errorText !== \"net::ERR_ABORTED\")\n failures.push(request.url());\n });\n page.on(\"response\", (response) => {\n if (response.status() >= 400)\n failures.push(`${response.status()} ${response.url()}`);\n });\n for (const route of config.routes) {\n const response = await page.goto(base + route, {\n waitUntil: \"networkidle\",\n });\n if (!response?.ok()) failures.push(`${route}: HTTP failure`);\n const issues = await page.evaluate(() => {\n const found = [];\n if (!document.documentElement.lang) found.push(\"missing lang\");\n if (!document.title.trim()) found.push(\"missing title\");\n if (!document.querySelector(\"h1\")) found.push(\"missing h1\");\n if (document.documentElement.scrollWidth > innerWidth + 1)\n found.push(\"horizontal overflow\");\n for (const element of document.querySelectorAll(\n \"a, button, input:not([type=hidden]), select, textarea\",\n )) {\n if (!element.getClientRects().length) continue;\n const labelled = (element.getAttribute(\"aria-labelledby\") || \"\")\n .split(/\\s+/)\n .some((id) => document.getElementById(id)?.textContent?.trim());\n if (\n !element.textContent?.trim() &&\n !element.getAttribute(\"aria-label\") &&\n !labelled &&\n !element.labels?.length &&\n !element.getAttribute(\"title\") &&\n !element.getAttribute(\"alt\") &&\n !element.querySelector(\"img[alt]\")\n )\n found.push(\"unnamed control\");\n }\n return found;\n });\n failures.push(...issues.map((issue) => `${route}: ${issue}`));\n const links = await page\n .locator(\"a[href]\")\n .evaluateAll((anchors) => anchors.map((anchor) => anchor.href));\n for (const href of new Set(links)) {\n if (\n new URL(href).origin === base &&\n !(await page.request.get(href)).ok()\n )\n failures.push(`broken link: ${href}`);\n }\n if (flags.includes(\"--interactive\")) {\n await page.keyboard.press(\"Tab\");\n if (\n !(await page.evaluate(() => document.activeElement !== document.body))\n )\n failures.push(`${route}: keyboard focus missing`);\n }\n if (flags.includes(\"--visual\")) {\n await mkdir(\".mozole/qa\", { recursive: true });\n const name = route.replace(/[^a-z0-9_-]/gi, \"-\") || \"index\";\n await page.screenshot({\n path:\n \".mozole/qa/\" +\n viewport.width +\n \"x\" +\n viewport.height +\n \"-\" +\n name +\n \".png\",\n fullPage: true,\n });\n }\n }\n await page.close();\n }\n if (failures.length) throw new Error([...new Set(failures)].join(\"\\n\"));\n console.log(\n \"QA PASS: \" +\n config.routes.length +\n \" routes, \" +\n config.qa.viewports.length +\n \" viewports\",\n );\n} catch (error) {\n console.error(`QA FAIL\\n${error.message}`);\n process.exitCode = 1;\n} finally {\n clearTimeout(deadline);\n process.removeListener(\"SIGINT\", interrupted);\n process.removeListener(\"SIGTERM\", interrupted);\n await cleanup();\n}\n";
|
|
5
|
+
export declare function basicAgentGuide(backend: boolean): string;
|
|
6
|
+
//# sourceMappingURL=standalone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/scaffold/standalone.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,ijCA+B9B,CAAC;AAEF,eAAO,MAAM,YAAY,q+BA8BxB,CAAC;AAEF,eAAO,MAAM,QAAQ,uyNAyMpB,CAAC;AAEF,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAExD"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/** Standalone project tooling: no dependency on the generator at runtime. */
|
|
2
|
+
export const backendCheckScript = `import { spawnSync } from "node:child_process";
|
|
3
|
+
import { readdir } from "node:fs/promises";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
|
|
6
|
+
function php(args) {
|
|
7
|
+
const result = spawnSync("php", args, {
|
|
8
|
+
encoding: "utf8",
|
|
9
|
+
shell: false,
|
|
10
|
+
timeout: 10000,
|
|
11
|
+
});
|
|
12
|
+
if (result.error || result.status !== 0)
|
|
13
|
+
throw new Error(result.error?.message || result.stderr || result.stdout);
|
|
14
|
+
return result.stdout.trim();
|
|
15
|
+
}
|
|
16
|
+
async function lint(directory) {
|
|
17
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
18
|
+
const file = path.join(directory, entry.name);
|
|
19
|
+
if (entry.isDirectory()) await lint(file);
|
|
20
|
+
else if (entry.isFile() && entry.name.endsWith(".php")) php(["-l", file]);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const version = Number(php(["-r", "echo PHP_VERSION_ID;"]));
|
|
25
|
+
if (!Number.isInteger(version) || version < 80000)
|
|
26
|
+
throw new Error("PHP 8.0 or newer is required.");
|
|
27
|
+
await lint("api");
|
|
28
|
+
console.log("PHP PASS");
|
|
29
|
+
} catch (error) {
|
|
30
|
+
console.error(\`PHP FAIL\\n\${error.message}\`);
|
|
31
|
+
process.exitCode = 1;
|
|
32
|
+
}
|
|
33
|
+
`;
|
|
34
|
+
export const deployScript = `import { cp, lstat, mkdir, rename, rm } from "node:fs/promises";
|
|
35
|
+
import path from "node:path";
|
|
36
|
+
|
|
37
|
+
const target = path.resolve("deploy");
|
|
38
|
+
const staging = \`\${target}.\${process.pid}.tmp\`;
|
|
39
|
+
const backup = \`\${target}.\${process.pid}.backup\`;
|
|
40
|
+
let backedUp = false;
|
|
41
|
+
try {
|
|
42
|
+
await mkdir(staging);
|
|
43
|
+
await cp("build/client", staging, { recursive: true, errorOnExist: true });
|
|
44
|
+
await cp("api", path.join(staging, "api"), { recursive: true });
|
|
45
|
+
await cp(".htaccess", path.join(staging, ".htaccess"));
|
|
46
|
+
try {
|
|
47
|
+
await lstat(target);
|
|
48
|
+
await rename(target, backup);
|
|
49
|
+
backedUp = true;
|
|
50
|
+
} catch (error) {
|
|
51
|
+
if (error.code !== "ENOENT") throw error;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
await rename(staging, target);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
if (backedUp) await rename(backup, target);
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
if (backedUp) await rm(backup, { recursive: true });
|
|
60
|
+
console.log("DEPLOY READY: deploy/");
|
|
61
|
+
} finally {
|
|
62
|
+
await rm(staging, { recursive: true, force: true });
|
|
63
|
+
}
|
|
64
|
+
`;
|
|
65
|
+
export const qaScript = `import { spawn, spawnSync } from "node:child_process";
|
|
66
|
+
import { mkdir, readFile } from "node:fs/promises";
|
|
67
|
+
import net from "node:net";
|
|
68
|
+
import path from "node:path";
|
|
69
|
+
import { chromium } from "playwright";
|
|
70
|
+
|
|
71
|
+
const flags = process.argv.slice(2);
|
|
72
|
+
if (
|
|
73
|
+
flags.some((flag) => !["--visual", "--interactive", "--force"].includes(flag))
|
|
74
|
+
)
|
|
75
|
+
throw new Error("Unknown QA option");
|
|
76
|
+
const config = JSON.parse(await readFile(".mozole/project.json", "utf8"));
|
|
77
|
+
const socket = net.createServer();
|
|
78
|
+
await new Promise((resolve, reject) => {
|
|
79
|
+
socket.once("error", reject);
|
|
80
|
+
socket.listen(0, "127.0.0.1", resolve);
|
|
81
|
+
});
|
|
82
|
+
const port = socket.address().port;
|
|
83
|
+
await new Promise((resolve) => socket.close(resolve));
|
|
84
|
+
const pkg = JSON.parse(await readFile("package.json", "utf8"));
|
|
85
|
+
const framework = pkg.devDependencies?.["@react-router/dev"]
|
|
86
|
+
? "@react-router/dev"
|
|
87
|
+
: "vite";
|
|
88
|
+
const frameworkRoot = path.resolve("node_modules", framework);
|
|
89
|
+
const metadata = JSON.parse(
|
|
90
|
+
await readFile(path.join(frameworkRoot, "package.json"), "utf8"),
|
|
91
|
+
);
|
|
92
|
+
const bin =
|
|
93
|
+
typeof metadata.bin === "string"
|
|
94
|
+
? metadata.bin
|
|
95
|
+
: Object.values(metadata.bin)[0];
|
|
96
|
+
const args = [
|
|
97
|
+
path.join(frameworkRoot, bin),
|
|
98
|
+
...(framework === "vite" ? [] : ["dev"]),
|
|
99
|
+
"--host",
|
|
100
|
+
"127.0.0.1",
|
|
101
|
+
"--port",
|
|
102
|
+
String(port),
|
|
103
|
+
"--strictPort",
|
|
104
|
+
];
|
|
105
|
+
const child = spawn(process.execPath, args, {
|
|
106
|
+
shell: false,
|
|
107
|
+
detached: process.platform !== "win32",
|
|
108
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
109
|
+
});
|
|
110
|
+
let serverLog = "";
|
|
111
|
+
for (const stream of [child.stdout, child.stderr])
|
|
112
|
+
stream.on("data", (data) => {
|
|
113
|
+
serverLog = (serverLog + data).slice(-4000);
|
|
114
|
+
});
|
|
115
|
+
let serverError;
|
|
116
|
+
child.on("error", (error) => {
|
|
117
|
+
serverError = error;
|
|
118
|
+
});
|
|
119
|
+
let browser;
|
|
120
|
+
let stopping = false;
|
|
121
|
+
async function cleanup() {
|
|
122
|
+
if (stopping) return;
|
|
123
|
+
stopping = true;
|
|
124
|
+
await browser?.close().catch(() => {});
|
|
125
|
+
if (child.pid) {
|
|
126
|
+
if (process.platform === "win32")
|
|
127
|
+
spawnSync("taskkill", ["/pid", String(child.pid), "/T", "/F"], {
|
|
128
|
+
shell: false,
|
|
129
|
+
stdio: "ignore",
|
|
130
|
+
});
|
|
131
|
+
else {
|
|
132
|
+
try {
|
|
133
|
+
process.kill(-child.pid, "SIGTERM");
|
|
134
|
+
} catch {}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const interrupted = () => {
|
|
139
|
+
void cleanup().finally(() => process.exit(130));
|
|
140
|
+
};
|
|
141
|
+
process.once("SIGINT", interrupted);
|
|
142
|
+
process.once("SIGTERM", interrupted);
|
|
143
|
+
const deadline = setTimeout(() => {
|
|
144
|
+
console.error("QA timed out");
|
|
145
|
+
void cleanup().finally(() => process.exit(1));
|
|
146
|
+
}, 120000);
|
|
147
|
+
const base = \`http://127.0.0.1:\${port}\`;
|
|
148
|
+
try {
|
|
149
|
+
let ready = false;
|
|
150
|
+
for (let attempt = 0; attempt < 300; attempt++) {
|
|
151
|
+
if (serverError || child.exitCode !== null)
|
|
152
|
+
throw new Error(serverError?.message || serverLog);
|
|
153
|
+
try {
|
|
154
|
+
ready = (
|
|
155
|
+
await fetch(base + config.qa.server.readinessPath, {
|
|
156
|
+
signal: AbortSignal.timeout(1000),
|
|
157
|
+
})
|
|
158
|
+
).ok;
|
|
159
|
+
} catch {}
|
|
160
|
+
if (ready) break;
|
|
161
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
162
|
+
}
|
|
163
|
+
if (!ready)
|
|
164
|
+
throw new Error(\`Development server did not become ready.\\n\${serverLog}\`);
|
|
165
|
+
browser = await chromium.launch();
|
|
166
|
+
const failures = [];
|
|
167
|
+
for (const viewport of config.qa.viewports) {
|
|
168
|
+
const page = await browser.newPage({ viewport });
|
|
169
|
+
page.on("pageerror", (error) => failures.push(error.message));
|
|
170
|
+
page.on("console", (message) => {
|
|
171
|
+
if (message.type() === "error") failures.push(message.text());
|
|
172
|
+
});
|
|
173
|
+
page.on("requestfailed", (request) => {
|
|
174
|
+
if (request.failure()?.errorText !== "net::ERR_ABORTED")
|
|
175
|
+
failures.push(request.url());
|
|
176
|
+
});
|
|
177
|
+
page.on("response", (response) => {
|
|
178
|
+
if (response.status() >= 400)
|
|
179
|
+
failures.push(\`\${response.status()} \${response.url()}\`);
|
|
180
|
+
});
|
|
181
|
+
for (const route of config.routes) {
|
|
182
|
+
const response = await page.goto(base + route, {
|
|
183
|
+
waitUntil: "networkidle",
|
|
184
|
+
});
|
|
185
|
+
if (!response?.ok()) failures.push(\`\${route}: HTTP failure\`);
|
|
186
|
+
const issues = await page.evaluate(() => {
|
|
187
|
+
const found = [];
|
|
188
|
+
if (!document.documentElement.lang) found.push("missing lang");
|
|
189
|
+
if (!document.title.trim()) found.push("missing title");
|
|
190
|
+
if (!document.querySelector("h1")) found.push("missing h1");
|
|
191
|
+
if (document.documentElement.scrollWidth > innerWidth + 1)
|
|
192
|
+
found.push("horizontal overflow");
|
|
193
|
+
for (const element of document.querySelectorAll(
|
|
194
|
+
"a, button, input:not([type=hidden]), select, textarea",
|
|
195
|
+
)) {
|
|
196
|
+
if (!element.getClientRects().length) continue;
|
|
197
|
+
const labelled = (element.getAttribute("aria-labelledby") || "")
|
|
198
|
+
.split(/\\s+/)
|
|
199
|
+
.some((id) => document.getElementById(id)?.textContent?.trim());
|
|
200
|
+
if (
|
|
201
|
+
!element.textContent?.trim() &&
|
|
202
|
+
!element.getAttribute("aria-label") &&
|
|
203
|
+
!labelled &&
|
|
204
|
+
!element.labels?.length &&
|
|
205
|
+
!element.getAttribute("title") &&
|
|
206
|
+
!element.getAttribute("alt") &&
|
|
207
|
+
!element.querySelector("img[alt]")
|
|
208
|
+
)
|
|
209
|
+
found.push("unnamed control");
|
|
210
|
+
}
|
|
211
|
+
return found;
|
|
212
|
+
});
|
|
213
|
+
failures.push(...issues.map((issue) => \`\${route}: \${issue}\`));
|
|
214
|
+
const links = await page
|
|
215
|
+
.locator("a[href]")
|
|
216
|
+
.evaluateAll((anchors) => anchors.map((anchor) => anchor.href));
|
|
217
|
+
for (const href of new Set(links)) {
|
|
218
|
+
if (
|
|
219
|
+
new URL(href).origin === base &&
|
|
220
|
+
!(await page.request.get(href)).ok()
|
|
221
|
+
)
|
|
222
|
+
failures.push(\`broken link: \${href}\`);
|
|
223
|
+
}
|
|
224
|
+
if (flags.includes("--interactive")) {
|
|
225
|
+
await page.keyboard.press("Tab");
|
|
226
|
+
if (
|
|
227
|
+
!(await page.evaluate(() => document.activeElement !== document.body))
|
|
228
|
+
)
|
|
229
|
+
failures.push(\`\${route}: keyboard focus missing\`);
|
|
230
|
+
}
|
|
231
|
+
if (flags.includes("--visual")) {
|
|
232
|
+
await mkdir(".mozole/qa", { recursive: true });
|
|
233
|
+
const name = route.replace(/[^a-z0-9_-]/gi, "-") || "index";
|
|
234
|
+
await page.screenshot({
|
|
235
|
+
path:
|
|
236
|
+
".mozole/qa/" +
|
|
237
|
+
viewport.width +
|
|
238
|
+
"x" +
|
|
239
|
+
viewport.height +
|
|
240
|
+
"-" +
|
|
241
|
+
name +
|
|
242
|
+
".png",
|
|
243
|
+
fullPage: true,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
await page.close();
|
|
248
|
+
}
|
|
249
|
+
if (failures.length) throw new Error([...new Set(failures)].join("\\n"));
|
|
250
|
+
console.log(
|
|
251
|
+
"QA PASS: " +
|
|
252
|
+
config.routes.length +
|
|
253
|
+
" routes, " +
|
|
254
|
+
config.qa.viewports.length +
|
|
255
|
+
" viewports",
|
|
256
|
+
);
|
|
257
|
+
} catch (error) {
|
|
258
|
+
console.error(\`QA FAIL\\n\${error.message}\`);
|
|
259
|
+
process.exitCode = 1;
|
|
260
|
+
} finally {
|
|
261
|
+
clearTimeout(deadline);
|
|
262
|
+
process.removeListener("SIGINT", interrupted);
|
|
263
|
+
process.removeListener("SIGTERM", interrupted);
|
|
264
|
+
await cleanup();
|
|
265
|
+
}
|
|
266
|
+
`;
|
|
267
|
+
export function basicAgentGuide(backend) {
|
|
268
|
+
return `# Project guide\n\n## Commands\n\n- \`npm run dev\` — frontend development server\n- \`npm run verify\` — lint, typecheck, tests, production build\n- \`npm run qa\` — browser checks without screenshots\n- \`npm run qa:interactive\` — keyboard checks\n- \`npm run qa:visual\` — explicitly requested screenshots\n${backend ? "- `npm run dev:api` — PHP API in a separate terminal (PHP 8.0+)\n- `npm run check:php` — PHP version and syntax checks\n- `npm run build:deploy` — assemble deploy/ for Apache or LiteSpeed\n" : ""}\n## Architecture\n\nReact Router and Vite source is in \`app/\`; routes are declared in \`app/routes.ts\`. Production HTML and assets are in \`build/client/\`.${backend ? " PHP endpoints are in `api/`; the frontend uses relative `/api/` URLs through Vite's proxy. See `docs/backend-php.md`." : ""}\n\n## Working rules\n\nPreserve user changes. Inspect relevant code before editing. Run verification and relevant browser checks before handoff. Routine QA never captures screenshots; use visual QA only when requested. Report failed checks and remaining limitations.\n`;
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=standalone.js.map
|