@dreamboard-games/cli 0.1.30-alpha.2 → 0.1.30-alpha.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/dist/agent-verifier/agent-workspace-verifier.mjs +227 -0
- package/dist/agent-verifier/agent-workspace-verifier.mjs.map +1 -0
- package/dist/agent-verifier/chunk-3UKQVWLV.mjs +1744 -0
- package/dist/agent-verifier/chunk-3UKQVWLV.mjs.map +1 -0
- package/dist/agent-verifier/chunk-776W3UGV.mjs +167 -0
- package/dist/agent-verifier/chunk-776W3UGV.mjs.map +1 -0
- package/dist/agent-verifier/chunk-7WWGFAAU.mjs +729 -0
- package/dist/agent-verifier/chunk-7WWGFAAU.mjs.map +1 -0
- package/dist/agent-verifier/chunk-A64ZZUZV.mjs +261 -0
- package/dist/agent-verifier/chunk-A64ZZUZV.mjs.map +1 -0
- package/dist/agent-verifier/chunk-E7SSWJXJ.mjs +3137 -0
- package/dist/agent-verifier/chunk-E7SSWJXJ.mjs.map +1 -0
- package/dist/agent-verifier/chunk-F2DIOJJZ.mjs +302 -0
- package/dist/agent-verifier/chunk-F2DIOJJZ.mjs.map +1 -0
- package/dist/agent-verifier/chunk-G42BGGG2.mjs +70 -0
- package/dist/agent-verifier/chunk-G42BGGG2.mjs.map +1 -0
- package/dist/agent-verifier/chunk-H76MT5UR.mjs +57 -0
- package/dist/agent-verifier/chunk-H76MT5UR.mjs.map +1 -0
- package/dist/agent-verifier/chunk-HGMUAL33.mjs +39 -0
- package/dist/agent-verifier/chunk-HGMUAL33.mjs.map +1 -0
- package/dist/agent-verifier/chunk-IAYRNVUC.mjs +49 -0
- package/dist/agent-verifier/chunk-IAYRNVUC.mjs.map +1 -0
- package/dist/agent-verifier/chunk-JGT4P4UD.mjs +45 -0
- package/dist/agent-verifier/chunk-JGT4P4UD.mjs.map +1 -0
- package/dist/agent-verifier/chunk-LUZ7KE6H.mjs +79 -0
- package/dist/agent-verifier/chunk-LUZ7KE6H.mjs.map +1 -0
- package/dist/agent-verifier/chunk-NAK77WXW.mjs +767 -0
- package/dist/agent-verifier/chunk-NAK77WXW.mjs.map +1 -0
- package/dist/agent-verifier/chunk-O4YCPU7C.mjs +2913 -0
- package/dist/agent-verifier/chunk-O4YCPU7C.mjs.map +1 -0
- package/dist/agent-verifier/chunk-S34FRJHS.mjs +222 -0
- package/dist/agent-verifier/chunk-S34FRJHS.mjs.map +1 -0
- package/dist/agent-verifier/chunk-SH5JKYOB.mjs +226 -0
- package/dist/agent-verifier/chunk-SH5JKYOB.mjs.map +1 -0
- package/dist/agent-verifier/chunk-SKI2ESE5.mjs +44 -0
- package/dist/agent-verifier/chunk-SKI2ESE5.mjs.map +1 -0
- package/dist/agent-verifier/chunk-TAEQKBJB.mjs +107 -0
- package/dist/agent-verifier/chunk-TAEQKBJB.mjs.map +1 -0
- package/dist/agent-verifier/chunk-UIOLGH4A.mjs +150 -0
- package/dist/agent-verifier/chunk-UIOLGH4A.mjs.map +1 -0
- package/dist/agent-verifier/chunk-UIZNWRM6.mjs +2432 -0
- package/dist/agent-verifier/chunk-UIZNWRM6.mjs.map +1 -0
- package/dist/agent-verifier/chunk-VS573ERH.mjs +14523 -0
- package/dist/agent-verifier/chunk-VS573ERH.mjs.map +1 -0
- package/dist/agent-verifier/chunk-W3N3QJ4V.mjs +624 -0
- package/dist/agent-verifier/chunk-W3N3QJ4V.mjs.map +1 -0
- package/dist/agent-verifier/chunk-XGWCY624.mjs +185 -0
- package/dist/agent-verifier/chunk-XGWCY624.mjs.map +1 -0
- package/dist/agent-verifier/chunk-XQXDOBYB.mjs +382 -0
- package/dist/agent-verifier/chunk-XQXDOBYB.mjs.map +1 -0
- package/dist/agent-verifier/chunk-YE7UAO3T.mjs +129 -0
- package/dist/agent-verifier/chunk-YE7UAO3T.mjs.map +1 -0
- package/dist/agent-verifier/chunk-ZEELHSY3.mjs +20 -0
- package/dist/agent-verifier/chunk-ZEELHSY3.mjs.map +1 -0
- package/dist/agent-verifier/compile-TEQVA46V.mjs +312 -0
- package/dist/agent-verifier/compile-TEQVA46V.mjs.map +1 -0
- package/dist/agent-verifier/global-config-Y2NTSK4R.mjs +18 -0
- package/dist/agent-verifier/global-config-Y2NTSK4R.mjs.map +1 -0
- package/dist/agent-verifier/keychain-backend-SPQWGKZN.mjs +135 -0
- package/dist/agent-verifier/keychain-backend-SPQWGKZN.mjs.map +1 -0
- package/dist/agent-verifier/local-files-JFOQQZDL.mjs +45 -0
- package/dist/agent-verifier/local-files-JFOQQZDL.mjs.map +1 -0
- package/dist/agent-verifier/local-typecheck-XVGWI75X.mjs +10 -0
- package/dist/agent-verifier/local-typecheck-XVGWI75X.mjs.map +1 -0
- package/dist/agent-verifier/materialize-workspace-ZAVGQQSF.mjs +89 -0
- package/dist/agent-verifier/materialize-workspace-ZAVGQQSF.mjs.map +1 -0
- package/dist/agent-verifier/project-state-K576C2TE.mjs +33 -0
- package/dist/agent-verifier/project-state-K576C2TE.mjs.map +1 -0
- package/dist/agent-verifier/prompt-MJRJMOGQ.mjs +756 -0
- package/dist/agent-verifier/prompt-MJRJMOGQ.mjs.map +1 -0
- package/dist/agent-verifier/reducer-bundle-preflight-LXNJUBKL.mjs +20 -0
- package/dist/agent-verifier/reducer-bundle-preflight-LXNJUBKL.mjs.map +1 -0
- package/dist/agent-verifier/reducer-contract-preflight-TUMQ43JV.mjs +11 -0
- package/dist/agent-verifier/reducer-contract-preflight-TUMQ43JV.mjs.map +1 -0
- package/dist/agent-verifier/reducer-native-test-harness-CHX5MBL5.mjs +50 -0
- package/dist/agent-verifier/reducer-native-test-harness-CHX5MBL5.mjs.map +1 -0
- package/dist/agent-verifier/static-scaffold-R7SVDRQI.mjs +27 -0
- package/dist/agent-verifier/static-scaffold-R7SVDRQI.mjs.map +1 -0
- package/dist/agent-verifier/sync-THAI546U.mjs +588 -0
- package/dist/agent-verifier/sync-THAI546U.mjs.map +1 -0
- package/dist/agent-verifier/test-AFAQFKOB.mjs +353 -0
- package/dist/agent-verifier/test-AFAQFKOB.mjs.map +1 -0
- package/dist/agent-verifier/workspace-codegen-2ZMQRIKJ.mjs +10 -0
- package/dist/agent-verifier/workspace-codegen-2ZMQRIKJ.mjs.map +1 -0
- package/dist/agent-verifier/workspace-dependencies-NOOQBK6I.mjs +15 -0
- package/dist/agent-verifier/workspace-dependencies-NOOQBK6I.mjs.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
assertCompilerPortableDependencies,
|
|
4
|
+
consola,
|
|
5
|
+
resolveProjectContext
|
|
6
|
+
} from "./chunk-3UKQVWLV.mjs";
|
|
7
|
+
import "./chunk-SH5JKYOB.mjs";
|
|
8
|
+
import "./chunk-776W3UGV.mjs";
|
|
9
|
+
import "./chunk-NAK77WXW.mjs";
|
|
10
|
+
import "./chunk-TAEQKBJB.mjs";
|
|
11
|
+
import "./chunk-IAYRNVUC.mjs";
|
|
12
|
+
import "./chunk-H76MT5UR.mjs";
|
|
13
|
+
import "./chunk-SKI2ESE5.mjs";
|
|
14
|
+
|
|
15
|
+
// src/agent-verifier/agent-workspace-verifier.ts
|
|
16
|
+
import { readFile } from "fs/promises";
|
|
17
|
+
main().catch((error) => {
|
|
18
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
19
|
+
process.exit(1);
|
|
20
|
+
});
|
|
21
|
+
async function main() {
|
|
22
|
+
const [command, ...args] = process.argv.slice(2);
|
|
23
|
+
if (command === "--help" || command === "help") {
|
|
24
|
+
printHelp();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (command === "materialize-prepared-workspace") {
|
|
28
|
+
if (args.includes("--help")) {
|
|
29
|
+
printHelp();
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
await materializePreparedWorkspace(args);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
await verifyAgentWorkspace(command ?? "verify", args);
|
|
36
|
+
}
|
|
37
|
+
function printHelp() {
|
|
38
|
+
console.log(`Dreamboard agent workspace verifier
|
|
39
|
+
|
|
40
|
+
Usage:
|
|
41
|
+
agent-workspace-verifier materialize-prepared-workspace --input <path>
|
|
42
|
+
agent-workspace-verifier preflight [--env local|staging|prod]
|
|
43
|
+
agent-workspace-verifier verify [--env local|staging|prod]
|
|
44
|
+
agent-workspace-verifier fin [--env local|staging|prod]
|
|
45
|
+
`);
|
|
46
|
+
}
|
|
47
|
+
async function materializePreparedWorkspace(args) {
|
|
48
|
+
const inputPath = readRequiredOption(args, "--input");
|
|
49
|
+
const { materializeWorkspaceProject } = await import("./materialize-workspace-ZAVGQQSF.mjs");
|
|
50
|
+
const input = JSON.parse(
|
|
51
|
+
await readFile(inputPath, "utf8")
|
|
52
|
+
);
|
|
53
|
+
await materializeWorkspaceProject({
|
|
54
|
+
...input,
|
|
55
|
+
agentManaged: true,
|
|
56
|
+
workspacePrepared: true,
|
|
57
|
+
allowCreateGame: false,
|
|
58
|
+
installDependencies: false
|
|
59
|
+
});
|
|
60
|
+
consola.success(`Prepared workspace in ${input.targetDir}`);
|
|
61
|
+
}
|
|
62
|
+
async function verifyAgentWorkspace(rawMode, args) {
|
|
63
|
+
const requestedMode = parseVerificationMode(rawMode);
|
|
64
|
+
const parsedFlags = parseConfigArgs(args);
|
|
65
|
+
const { projectRoot, projectConfig, config } = await resolveProjectContext(parsedFlags);
|
|
66
|
+
await assertCompilerPortableDependencies({ projectRoot, projectConfig });
|
|
67
|
+
if (requestedMode === "preflight") {
|
|
68
|
+
consola.success("Agent workspace preflight passed.");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (process.env.DREAMBOARD_AGENT_FINAL_SYNC_VERIFY === "1") {
|
|
72
|
+
await runFullBackendConnectedVerification(parsedFlags);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (requestedMode === "cloud-local" || requestedMode === "verify" || requestedMode === "fin") {
|
|
76
|
+
await runCloudLocalVerification(projectRoot, projectConfig, config);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
throw new Error(
|
|
80
|
+
"Agent workspaces now run cloud-local verification directly. Use `fin` only through the generated wrapper."
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
async function runFullBackendConnectedVerification(parsedFlags) {
|
|
84
|
+
const [{ default: cmdSync }, { default: cmdCompile }, { default: cmdTest }] = await Promise.all([
|
|
85
|
+
import("./sync-THAI546U.mjs"),
|
|
86
|
+
import("./compile-TEQVA46V.mjs"),
|
|
87
|
+
import("./test-AFAQFKOB.mjs")
|
|
88
|
+
]);
|
|
89
|
+
await runCommandDefinition(cmdSync, { ...parsedFlags, force: true });
|
|
90
|
+
await runCommandDefinition(cmdCompile, parsedFlags);
|
|
91
|
+
await runCommandDefinition(
|
|
92
|
+
resolveTestSubCommand(cmdTest, "generate"),
|
|
93
|
+
parsedFlags
|
|
94
|
+
);
|
|
95
|
+
await runCommandDefinition(resolveTestSubCommand(cmdTest, "run"), parsedFlags);
|
|
96
|
+
}
|
|
97
|
+
async function runCommandDefinition(command, args) {
|
|
98
|
+
if (!command.run) {
|
|
99
|
+
throw new Error("Verifier command is missing a runnable step.");
|
|
100
|
+
}
|
|
101
|
+
await command.run({ args, rawArgs: [], cmd: command });
|
|
102
|
+
}
|
|
103
|
+
function resolveTestSubCommand(cmdTest, name) {
|
|
104
|
+
const subCommands = cmdTest.subCommands;
|
|
105
|
+
const command = subCommands?.[name];
|
|
106
|
+
if (!command) {
|
|
107
|
+
throw new Error(`Verifier command is missing test ${name}.`);
|
|
108
|
+
}
|
|
109
|
+
return command;
|
|
110
|
+
}
|
|
111
|
+
function parseVerificationMode(value) {
|
|
112
|
+
if (value === "preflight" || value === "verify" || value === "fin" || value === "cloud-local") {
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
115
|
+
throw new Error(
|
|
116
|
+
`Expected mode to be one of preflight, verify, fin, or cloud-local. Received: ${String(value)}`
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
function parseConfigArgs(args) {
|
|
120
|
+
const flags = {};
|
|
121
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
122
|
+
const arg = args[index];
|
|
123
|
+
if (arg === "--env") {
|
|
124
|
+
const value = args[++index];
|
|
125
|
+
if (value === "local" || value === "staging" || value === "prod") {
|
|
126
|
+
flags.env = value;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
throw new Error(`Invalid --env value: ${String(value)}`);
|
|
130
|
+
}
|
|
131
|
+
if (arg === "--token") {
|
|
132
|
+
flags.token = args[++index];
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (arg === "--skip-install") {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
throw new Error(`Unknown verifier argument: ${arg}`);
|
|
139
|
+
}
|
|
140
|
+
return flags;
|
|
141
|
+
}
|
|
142
|
+
async function runCloudLocalVerification(projectRoot, projectConfig, config) {
|
|
143
|
+
const [
|
|
144
|
+
{ scaffoldStaticWorkspace },
|
|
145
|
+
{ loadManifest },
|
|
146
|
+
{ applyWorkspaceCodegen },
|
|
147
|
+
{ reconcileWorkspaceDependencies },
|
|
148
|
+
{ assertReducerContractPreflight },
|
|
149
|
+
{ getProjectLocalMaintainerRegistry }
|
|
150
|
+
] = await Promise.all([
|
|
151
|
+
import("./static-scaffold-R7SVDRQI.mjs"),
|
|
152
|
+
import("./local-files-JFOQQZDL.mjs"),
|
|
153
|
+
import("./workspace-codegen-2ZMQRIKJ.mjs"),
|
|
154
|
+
import("./workspace-dependencies-NOOQBK6I.mjs"),
|
|
155
|
+
import("./reducer-contract-preflight-TUMQ43JV.mjs"),
|
|
156
|
+
import("./project-state-K576C2TE.mjs")
|
|
157
|
+
]);
|
|
158
|
+
consola.start("Refreshing static scaffold...");
|
|
159
|
+
await scaffoldStaticWorkspace(projectRoot, "update", {
|
|
160
|
+
localMaintainerRegistry: getProjectLocalMaintainerRegistry(projectConfig)
|
|
161
|
+
});
|
|
162
|
+
consola.start("Applying workspace codegen...");
|
|
163
|
+
const manifest = await loadManifest(projectRoot);
|
|
164
|
+
await applyWorkspaceCodegen({ projectRoot, manifest });
|
|
165
|
+
consola.start("Reconciling workspace dependencies...");
|
|
166
|
+
await reconcileWorkspaceDependencies(projectRoot);
|
|
167
|
+
consola.start("Validating reducer contract...");
|
|
168
|
+
await assertReducerContractPreflight(projectRoot);
|
|
169
|
+
const [{ runLocalTypecheck }, { assertReducerBundleSmoke }] = await Promise.all([
|
|
170
|
+
import("./local-typecheck-XVGWI75X.mjs"),
|
|
171
|
+
import("./reducer-bundle-preflight-LXNJUBKL.mjs")
|
|
172
|
+
]);
|
|
173
|
+
consola.start("Running local typecheck...");
|
|
174
|
+
const typecheckResult = await runLocalTypecheck(projectRoot);
|
|
175
|
+
if (typecheckResult.skipped) {
|
|
176
|
+
if (typecheckResult.output) consola.warn(typecheckResult.output);
|
|
177
|
+
} else if (!typecheckResult.success) {
|
|
178
|
+
if (typecheckResult.output) consola.error(typecheckResult.output);
|
|
179
|
+
throw new Error(
|
|
180
|
+
"Local typecheck failed. Fix the diagnostics before syncing."
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
consola.start("Smoke-testing reducer bundle...");
|
|
184
|
+
await assertReducerBundleSmoke({ projectRoot, manifest });
|
|
185
|
+
const {
|
|
186
|
+
generateReducerNativeArtifacts,
|
|
187
|
+
isReducerNativeTestingWorkspace,
|
|
188
|
+
runReducerNativeScenarios
|
|
189
|
+
} = await import("./reducer-native-test-harness-CHX5MBL5.mjs");
|
|
190
|
+
if (await isReducerNativeTestingWorkspace(projectRoot)) {
|
|
191
|
+
const { bases } = await generateReducerNativeArtifacts({
|
|
192
|
+
projectRoot,
|
|
193
|
+
gameId: projectConfig.gameId,
|
|
194
|
+
compiledResultId: projectConfig.compile?.latestSuccessful?.resultId
|
|
195
|
+
});
|
|
196
|
+
const summary = await runReducerNativeScenarios({
|
|
197
|
+
projectRoot,
|
|
198
|
+
projectConfig,
|
|
199
|
+
resolvedConfig: config,
|
|
200
|
+
runner: "reducer",
|
|
201
|
+
gameId: projectConfig.gameId,
|
|
202
|
+
compiledResultId: projectConfig.compile?.latestSuccessful?.resultId
|
|
203
|
+
});
|
|
204
|
+
if (summary.failed > 0) {
|
|
205
|
+
const failures = summary.results.filter((result) => !result.success).map(
|
|
206
|
+
(result) => result.error ? `FAIL ${result.id}: ${result.error}` : `FAIL ${result.id}`
|
|
207
|
+
);
|
|
208
|
+
throw new Error(
|
|
209
|
+
[
|
|
210
|
+
`Reducer-native verification failed: ${summary.failed} failed, ${summary.passed} passed.`,
|
|
211
|
+
...failures
|
|
212
|
+
].join("\n")
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
consola.success(`Generated ${bases.length} reducer-native base state(s).`);
|
|
216
|
+
}
|
|
217
|
+
consola.success("Agent workspace cloud-local verification passed.");
|
|
218
|
+
}
|
|
219
|
+
function readRequiredOption(args, name) {
|
|
220
|
+
const index = args.indexOf(name);
|
|
221
|
+
const value = index >= 0 ? args[index + 1] : void 0;
|
|
222
|
+
if (!value) {
|
|
223
|
+
throw new Error(`${name} is required.`);
|
|
224
|
+
}
|
|
225
|
+
return value;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=agent-workspace-verifier.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/agent-verifier/agent-workspace-verifier.ts"],"sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport consola from \"consola\";\nimport type { CommandDef } from \"citty\";\nimport type { ConfigFlags } from \"../flags.js\";\nimport type { ProjectConfig, ResolvedConfig } from \"../types.js\";\nimport { resolveProjectContext } from \"../config/resolve.js\";\nimport { assertCompilerPortableDependencies } from \"../services/project/dependency-portability.js\";\n\ntype VerificationMode = \"preflight\" | \"verify\" | \"fin\" | \"cloud-local\";\n\nmain().catch((error) => {\n console.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n});\n\nasync function main() {\n const [command, ...args] = process.argv.slice(2);\n if (command === \"--help\" || command === \"help\") {\n printHelp();\n return;\n }\n if (command === \"materialize-prepared-workspace\") {\n if (args.includes(\"--help\")) {\n printHelp();\n return;\n }\n await materializePreparedWorkspace(args);\n return;\n }\n await verifyAgentWorkspace(command ?? \"verify\", args);\n}\n\nfunction printHelp() {\n console.log(`Dreamboard agent workspace verifier\n\nUsage:\n agent-workspace-verifier materialize-prepared-workspace --input <path>\n agent-workspace-verifier preflight [--env local|staging|prod]\n agent-workspace-verifier verify [--env local|staging|prod]\n agent-workspace-verifier fin [--env local|staging|prod]\n`);\n}\n\nasync function materializePreparedWorkspace(args: string[]) {\n const inputPath = readRequiredOption(args, \"--input\");\n const { materializeWorkspaceProject } = await import(\n \"../services/project/materialize-workspace.js\"\n );\n const input = JSON.parse(\n await readFile(inputPath, \"utf8\"),\n ) as Parameters<typeof materializeWorkspaceProject>[0];\n await materializeWorkspaceProject({\n ...input,\n agentManaged: true,\n workspacePrepared: true,\n allowCreateGame: false,\n installDependencies: false,\n });\n consola.success(`Prepared workspace in ${input.targetDir}`);\n}\n\nasync function verifyAgentWorkspace(rawMode: string, args: string[]) {\n const requestedMode = parseVerificationMode(rawMode);\n const parsedFlags = parseConfigArgs(args);\n const { projectRoot, projectConfig, config } =\n await resolveProjectContext(parsedFlags);\n await assertCompilerPortableDependencies({ projectRoot, projectConfig });\n\n if (requestedMode === \"preflight\") {\n consola.success(\"Agent workspace preflight passed.\");\n return;\n }\n\n if (process.env.DREAMBOARD_AGENT_FINAL_SYNC_VERIFY === \"1\") {\n await runFullBackendConnectedVerification(parsedFlags);\n return;\n }\n\n if (\n requestedMode === \"cloud-local\" ||\n requestedMode === \"verify\" ||\n requestedMode === \"fin\"\n ) {\n await runCloudLocalVerification(projectRoot, projectConfig, config);\n return;\n }\n\n throw new Error(\n \"Agent workspaces now run cloud-local verification directly. Use `fin` only through the generated wrapper.\",\n );\n}\n\nasync function runFullBackendConnectedVerification(\n parsedFlags: ConfigFlags,\n): Promise<void> {\n const [{ default: cmdSync }, { default: cmdCompile }, { default: cmdTest }] =\n await Promise.all([\n import(\"../commands/sync.js\"),\n import(\"../commands/compile.js\"),\n import(\"../commands/test.js\"),\n ]);\n await runCommandDefinition(cmdSync, { ...parsedFlags, force: true });\n await runCommandDefinition(cmdCompile, parsedFlags);\n await runCommandDefinition(\n resolveTestSubCommand(cmdTest, \"generate\"),\n parsedFlags,\n );\n await runCommandDefinition(resolveTestSubCommand(cmdTest, \"run\"), parsedFlags);\n}\n\nasync function runCommandDefinition(\n command: CommandDef<any>,\n args: Record<string, unknown>,\n) {\n if (!command.run) {\n throw new Error(\"Verifier command is missing a runnable step.\");\n }\n await command.run({ args, rawArgs: [], cmd: command } as any);\n}\n\nfunction resolveTestSubCommand(\n cmdTest: CommandDef<any>,\n name: \"generate\" | \"run\",\n): CommandDef<any> {\n const subCommands = cmdTest.subCommands as\n | Record<string, CommandDef<any>>\n | undefined;\n const command = subCommands?.[name];\n if (!command) {\n throw new Error(`Verifier command is missing test ${name}.`);\n }\n return command;\n}\n\nfunction parseVerificationMode(value: unknown): VerificationMode {\n if (\n value === \"preflight\" ||\n value === \"verify\" ||\n value === \"fin\" ||\n value === \"cloud-local\"\n ) {\n return value;\n }\n throw new Error(\n `Expected mode to be one of preflight, verify, fin, or cloud-local. Received: ${String(value)}`,\n );\n}\n\nfunction parseConfigArgs(args: string[]): ConfigFlags {\n const flags: ConfigFlags = {};\n for (let index = 0; index < args.length; index += 1) {\n const arg = args[index];\n if (arg === \"--env\") {\n const value = args[++index];\n if (value === \"local\" || value === \"staging\" || value === \"prod\") {\n flags.env = value;\n continue;\n }\n throw new Error(`Invalid --env value: ${String(value)}`);\n }\n if (arg === \"--token\") {\n flags.token = args[++index];\n continue;\n }\n if (arg === \"--skip-install\") {\n continue;\n }\n throw new Error(`Unknown verifier argument: ${arg}`);\n }\n return flags;\n}\n\nasync function runCloudLocalVerification(\n projectRoot: string,\n projectConfig: ProjectConfig,\n config: ResolvedConfig,\n): Promise<void> {\n const [\n { scaffoldStaticWorkspace },\n { loadManifest },\n { applyWorkspaceCodegen },\n { reconcileWorkspaceDependencies },\n { assertReducerContractPreflight },\n { getProjectLocalMaintainerRegistry },\n ] = await Promise.all([\n import(\"../services/project/static-scaffold.js\"),\n import(\"../services/project/local-files.js\"),\n import(\"../services/project/workspace-codegen.js\"),\n import(\"../services/project/workspace-dependencies.js\"),\n import(\"../services/project/reducer-contract-preflight.js\"),\n import(\"../services/project/project-state.js\"),\n ]);\n\n consola.start(\"Refreshing static scaffold...\");\n await scaffoldStaticWorkspace(projectRoot, \"update\", {\n localMaintainerRegistry: getProjectLocalMaintainerRegistry(projectConfig),\n });\n\n consola.start(\"Applying workspace codegen...\");\n const manifest = await loadManifest(projectRoot);\n await applyWorkspaceCodegen({ projectRoot, manifest });\n\n consola.start(\"Reconciling workspace dependencies...\");\n await reconcileWorkspaceDependencies(projectRoot);\n\n consola.start(\"Validating reducer contract...\");\n await assertReducerContractPreflight(projectRoot);\n\n const [{ runLocalTypecheck }, { assertReducerBundleSmoke }] =\n await Promise.all([\n import(\"../services/project/local-typecheck.js\"),\n import(\"../services/project/reducer-bundle-preflight.js\"),\n ]);\n\n consola.start(\"Running local typecheck...\");\n const typecheckResult = await runLocalTypecheck(projectRoot);\n if (typecheckResult.skipped) {\n if (typecheckResult.output) consola.warn(typecheckResult.output);\n } else if (!typecheckResult.success) {\n if (typecheckResult.output) consola.error(typecheckResult.output);\n throw new Error(\n \"Local typecheck failed. Fix the diagnostics before syncing.\",\n );\n }\n\n consola.start(\"Smoke-testing reducer bundle...\");\n await assertReducerBundleSmoke({ projectRoot, manifest });\n\n const {\n generateReducerNativeArtifacts,\n isReducerNativeTestingWorkspace,\n runReducerNativeScenarios,\n } = await import(\n \"../services/testing/reducer-native-test-harness.js\"\n );\n\n if (await isReducerNativeTestingWorkspace(projectRoot)) {\n const { bases } = await generateReducerNativeArtifacts({\n projectRoot,\n gameId: projectConfig.gameId,\n compiledResultId: projectConfig.compile?.latestSuccessful?.resultId,\n });\n const summary = await runReducerNativeScenarios({\n projectRoot,\n projectConfig,\n resolvedConfig: config,\n runner: \"reducer\",\n gameId: projectConfig.gameId,\n compiledResultId: projectConfig.compile?.latestSuccessful?.resultId,\n });\n if (summary.failed > 0) {\n const failures = summary.results\n .filter((result) => !result.success)\n .map((result) =>\n result.error\n ? `FAIL ${result.id}: ${result.error}`\n : `FAIL ${result.id}`,\n );\n throw new Error(\n [\n `Reducer-native verification failed: ${summary.failed} failed, ${summary.passed} passed.`,\n ...failures,\n ].join(\"\\n\"),\n );\n }\n consola.success(`Generated ${bases.length} reducer-native base state(s).`);\n }\n\n consola.success(\"Agent workspace cloud-local verification passed.\");\n}\n\nfunction readRequiredOption(args: string[], name: string): string {\n const index = args.indexOf(name);\n const value = index >= 0 ? args[index + 1] : undefined;\n if (!value) {\n throw new Error(`${name} is required.`);\n }\n return value;\n}\n"],"mappings":"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","names":[]}
|