frontend-harness 0.1.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/AGENTS.md +48 -0
- package/CLAUDE.md +48 -0
- package/README.md +262 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +380 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/runtime/builtin-skills.d.ts +6 -0
- package/dist/runtime/builtin-skills.js +269 -0
- package/dist/runtime/builtin-skills.js.map +1 -0
- package/dist/runtime/clean.d.ts +11 -0
- package/dist/runtime/clean.js +85 -0
- package/dist/runtime/clean.js.map +1 -0
- package/dist/runtime/command-taxonomy.d.ts +12 -0
- package/dist/runtime/command-taxonomy.js +72 -0
- package/dist/runtime/command-taxonomy.js.map +1 -0
- package/dist/runtime/context.d.ts +71 -0
- package/dist/runtime/context.js +153 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/graph.d.ts +12 -0
- package/dist/runtime/graph.js +211 -0
- package/dist/runtime/graph.js.map +1 -0
- package/dist/runtime/knowledge.d.ts +48 -0
- package/dist/runtime/knowledge.js +383 -0
- package/dist/runtime/knowledge.js.map +1 -0
- package/dist/runtime/plan.d.ts +18 -0
- package/dist/runtime/plan.js +571 -0
- package/dist/runtime/plan.js.map +1 -0
- package/dist/runtime/policy-provenance.d.ts +17 -0
- package/dist/runtime/policy-provenance.js +195 -0
- package/dist/runtime/policy-provenance.js.map +1 -0
- package/dist/runtime/project-discovery.d.ts +17 -0
- package/dist/runtime/project-discovery.js +166 -0
- package/dist/runtime/project-discovery.js.map +1 -0
- package/dist/runtime/project-paths.d.ts +6 -0
- package/dist/runtime/project-paths.js +47 -0
- package/dist/runtime/project-paths.js.map +1 -0
- package/dist/runtime/protocol-init.d.ts +50 -0
- package/dist/runtime/protocol-init.js +256 -0
- package/dist/runtime/protocol-init.js.map +1 -0
- package/dist/runtime/repair-decision.d.ts +3 -0
- package/dist/runtime/repair-decision.js +195 -0
- package/dist/runtime/repair-decision.js.map +1 -0
- package/dist/runtime/repair-packet.d.ts +7 -0
- package/dist/runtime/repair-packet.js +159 -0
- package/dist/runtime/repair-packet.js.map +1 -0
- package/dist/runtime/skills.d.ts +19 -0
- package/dist/runtime/skills.js +230 -0
- package/dist/runtime/skills.js.map +1 -0
- package/dist/runtime/state-explain.d.ts +2 -0
- package/dist/runtime/state-explain.js +106 -0
- package/dist/runtime/state-explain.js.map +1 -0
- package/dist/runtime/state.d.ts +10 -0
- package/dist/runtime/state.js +237 -0
- package/dist/runtime/state.js.map +1 -0
- package/dist/runtime/units.d.ts +10 -0
- package/dist/runtime/units.js +181 -0
- package/dist/runtime/units.js.map +1 -0
- package/dist/runtime/verification-commands.d.ts +11 -0
- package/dist/runtime/verification-commands.js +89 -0
- package/dist/runtime/verification-commands.js.map +1 -0
- package/dist/runtime/verify.d.ts +7 -0
- package/dist/runtime/verify.js +192 -0
- package/dist/runtime/verify.js.map +1 -0
- package/dist/schemas/types.d.ts +244 -0
- package/dist/schemas/types.js +2 -0
- package/dist/schemas/types.js.map +1 -0
- package/dist/schemas/validation.d.ts +2 -0
- package/dist/schemas/validation.js +21 -0
- package/dist/schemas/validation.js.map +1 -0
- package/dist/storage/json.d.ts +5 -0
- package/dist/storage/json.js +24 -0
- package/dist/storage/json.js.map +1 -0
- package/dist/storage/paths.d.ts +3 -0
- package/dist/storage/paths.js +9 -0
- package/dist/storage/paths.js.map +1 -0
- package/docs/DIRECTION.md +67 -0
- package/package.json +35 -0
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { buildContext } from "../runtime/context.js";
|
|
3
|
+
import { checkComponentGraph } from "../runtime/graph.js";
|
|
4
|
+
import { checkKnowledge, promoteKnowledge } from "../runtime/knowledge.js";
|
|
5
|
+
import { checkAgentPlanningDecision, createPlan } from "../runtime/plan.js";
|
|
6
|
+
import { publicHelpLines } from "../runtime/command-taxonomy.js";
|
|
7
|
+
import { cleanRuntimeArtifacts } from "../runtime/clean.js";
|
|
8
|
+
import { checkRepairDecision } from "../runtime/repair-decision.js";
|
|
9
|
+
import { createRepairPacket } from "../runtime/repair-packet.js";
|
|
10
|
+
import { explainState } from "../runtime/state-explain.js";
|
|
11
|
+
import { checkProtocol, initializeProtocol } from "../runtime/protocol-init.js";
|
|
12
|
+
import { checkSkills, discoverSkills } from "../runtime/skills.js";
|
|
13
|
+
import { changedFilesFromGit, getNextAction, loadState, recordChangedFiles } from "../runtime/state.js";
|
|
14
|
+
import { checkExecutionUnits } from "../runtime/units.js";
|
|
15
|
+
import { runVerification } from "../runtime/verify.js";
|
|
16
|
+
async function main() {
|
|
17
|
+
const parsed = parseArgs(process.argv.slice(2));
|
|
18
|
+
const projectRoot = process.cwd();
|
|
19
|
+
try {
|
|
20
|
+
switch (parsed.command) {
|
|
21
|
+
case "init":
|
|
22
|
+
{
|
|
23
|
+
const result = initializeProtocol(projectRoot, { dryRun: Boolean(parsed.flags["dry-run"] || parsed.flags["check"]) });
|
|
24
|
+
output(result, parsed.json);
|
|
25
|
+
process.exitCode = parsed.flags["check"] && result.needsUpdate ? 1 : 0;
|
|
26
|
+
}
|
|
27
|
+
return;
|
|
28
|
+
case "context":
|
|
29
|
+
output(buildContext(projectRoot), parsed.json);
|
|
30
|
+
return;
|
|
31
|
+
case "clean":
|
|
32
|
+
output(cleanRuntimeArtifacts(projectRoot, {
|
|
33
|
+
dryRun: Boolean(parsed.flags["dry-run"]),
|
|
34
|
+
...optionalNumber("keepLogs", parsed.flags["keep-logs"])
|
|
35
|
+
}), parsed.json);
|
|
36
|
+
return;
|
|
37
|
+
case "plan":
|
|
38
|
+
output(createPlan(projectRoot, {
|
|
39
|
+
taskText: parsed.taskText,
|
|
40
|
+
...optionalString("prd", parsed.flags["prd"]),
|
|
41
|
+
...optionalString("ui", parsed.flags["ui"]),
|
|
42
|
+
...optionalString("agentDecision", parsed.flags["agent-decision"])
|
|
43
|
+
}), parsed.json);
|
|
44
|
+
return;
|
|
45
|
+
case "verify": {
|
|
46
|
+
const result = runVerification(projectRoot, {
|
|
47
|
+
...optionalString("typecheck", parsed.flags["typecheck"]),
|
|
48
|
+
...optionalString("test", parsed.flags["test"]),
|
|
49
|
+
...optionalString("build", parsed.flags["build"])
|
|
50
|
+
});
|
|
51
|
+
output(result, parsed.json);
|
|
52
|
+
process.exitCode = result.results.some((item) => item.status === "error")
|
|
53
|
+
? 2
|
|
54
|
+
: result.status === "failed"
|
|
55
|
+
? 1
|
|
56
|
+
: 0;
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
case "state":
|
|
60
|
+
handleState(projectRoot, parsed);
|
|
61
|
+
return;
|
|
62
|
+
case "knowledge":
|
|
63
|
+
handleKnowledge(projectRoot, parsed);
|
|
64
|
+
return;
|
|
65
|
+
case "protocol": {
|
|
66
|
+
requireSubcommand(parsed, "check", "protocol requires subcommand: check");
|
|
67
|
+
const result = checkProtocol(projectRoot);
|
|
68
|
+
output(result, parsed.json);
|
|
69
|
+
process.exitCode = result.status === "failed" ? 1 : 0;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
case "decision": {
|
|
73
|
+
requireSubcommand(parsed, "check", "decision requires subcommand: check");
|
|
74
|
+
const result = checkAgentPlanningDecision(projectRoot, stringFlag(parsed.flags["file"]));
|
|
75
|
+
output(result, parsed.json);
|
|
76
|
+
process.exitCode = result.status === "failed" ? 1 : 0;
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
case "repair":
|
|
80
|
+
handleRepair(projectRoot, parsed);
|
|
81
|
+
return;
|
|
82
|
+
case "skills":
|
|
83
|
+
handleSkills(projectRoot, parsed);
|
|
84
|
+
return;
|
|
85
|
+
case "units": {
|
|
86
|
+
requireSubcommand(parsed, "check", "units requires subcommand: check");
|
|
87
|
+
const result = checkExecutionUnits(projectRoot);
|
|
88
|
+
output(result, parsed.json);
|
|
89
|
+
process.exitCode = result.status === "failed" ? 1 : 0;
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
case "graph": {
|
|
93
|
+
requireSubcommand(parsed, "check", "graph requires subcommand: check");
|
|
94
|
+
const result = checkComponentGraph(projectRoot);
|
|
95
|
+
output(result, parsed.json);
|
|
96
|
+
process.exitCode = result.status === "failed" ? 1 : 0;
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
case "agent":
|
|
100
|
+
case "run":
|
|
101
|
+
throw new Error("Agent runtime commands have been removed. Use context, plan, state, verify, repair, skills, knowledge, and protocol policy commands.");
|
|
102
|
+
case undefined:
|
|
103
|
+
case "help":
|
|
104
|
+
case "--help":
|
|
105
|
+
case "-h":
|
|
106
|
+
printHelp();
|
|
107
|
+
return;
|
|
108
|
+
default:
|
|
109
|
+
throw new Error(`Unknown command: ${parsed.command}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
114
|
+
if (parsed.json) {
|
|
115
|
+
console.log(JSON.stringify({ error: message }, null, 2));
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
console.error(message);
|
|
119
|
+
}
|
|
120
|
+
process.exitCode = 1;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function handleState(projectRoot, parsed) {
|
|
124
|
+
if (parsed.subcommand === "explain") {
|
|
125
|
+
output(explainState(projectRoot), parsed.json);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (parsed.subcommand === "next") {
|
|
129
|
+
output(getNextAction(projectRoot), parsed.json);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (parsed.subcommand === "record-change") {
|
|
133
|
+
const files = parsed.flags["from-git"] ? changedFilesFromGit(projectRoot) : parsed.positionals.slice(2);
|
|
134
|
+
if (files.length === 0) {
|
|
135
|
+
throw new Error("state record-change requires <file> or --from-git");
|
|
136
|
+
}
|
|
137
|
+
output(recordChangedFiles(projectRoot, files), parsed.json);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (parsed.subcommand) {
|
|
141
|
+
throw new Error("state requires subcommand: next, explain, or record-change");
|
|
142
|
+
}
|
|
143
|
+
output(loadState(projectRoot), parsed.json);
|
|
144
|
+
}
|
|
145
|
+
function handleRepair(projectRoot, parsed) {
|
|
146
|
+
if (parsed.subcommand === "packet") {
|
|
147
|
+
output(createRepairPacket(projectRoot), parsed.json);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (parsed.subcommand === "decision" && parsed.positionals[2] === "check") {
|
|
151
|
+
const result = checkRepairDecision(projectRoot, stringFlag(parsed.flags["file"]));
|
|
152
|
+
output(result, parsed.json);
|
|
153
|
+
process.exitCode = result.status === "failed" ? 1 : 0;
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
throw new Error("repair requires subcommand: packet or decision check");
|
|
157
|
+
}
|
|
158
|
+
function handleSkills(projectRoot, parsed) {
|
|
159
|
+
if (parsed.subcommand === "list") {
|
|
160
|
+
output({ skills: discoverSkills(projectRoot) }, parsed.json);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (parsed.subcommand === "check") {
|
|
164
|
+
const result = checkSkills(projectRoot);
|
|
165
|
+
output(result, parsed.json);
|
|
166
|
+
process.exitCode = result.status === "failed" ? 1 : 0;
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
throw new Error("skills requires subcommand: list or check");
|
|
170
|
+
}
|
|
171
|
+
function handleKnowledge(projectRoot, parsed) {
|
|
172
|
+
if (parsed.subcommand === "promote") {
|
|
173
|
+
output(promoteKnowledge(projectRoot, {
|
|
174
|
+
...optionalString("title", parsed.flags["title"]),
|
|
175
|
+
...optionalString("body", parsed.flags["body"]),
|
|
176
|
+
...optionalString("type", parsed.flags["type"]),
|
|
177
|
+
...optionalString("scope", parsed.flags["scope"]),
|
|
178
|
+
...optionalString("status", parsed.flags["status"]),
|
|
179
|
+
...optionalString("stability", parsed.flags["stability"]),
|
|
180
|
+
...optionalString("source", parsed.flags["source"])
|
|
181
|
+
}), parsed.json);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (parsed.subcommand === "check") {
|
|
185
|
+
const result = checkKnowledge(projectRoot);
|
|
186
|
+
output(result, parsed.json);
|
|
187
|
+
process.exitCode = result.status === "failed" ? 1 : 0;
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
throw new Error("knowledge requires subcommand: promote or check");
|
|
191
|
+
}
|
|
192
|
+
function requireSubcommand(parsed, subcommand, message) {
|
|
193
|
+
if (parsed.subcommand !== subcommand) {
|
|
194
|
+
throw new Error(message);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function parseArgs(args) {
|
|
198
|
+
const flags = {};
|
|
199
|
+
const positionals = [];
|
|
200
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
201
|
+
const arg = args[index];
|
|
202
|
+
if (arg === undefined) {
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if (arg.startsWith("--")) {
|
|
206
|
+
const key = arg.slice(2);
|
|
207
|
+
if (["json", "from-git", "dry-run", "check", "help"].includes(key)) {
|
|
208
|
+
flags[key] = true;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
const value = args[index + 1];
|
|
212
|
+
if (value === undefined || value.startsWith("--")) {
|
|
213
|
+
throw new Error(`Missing value for --${key}`);
|
|
214
|
+
}
|
|
215
|
+
flags[key] = value;
|
|
216
|
+
index += 1;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
positionals.push(arg);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
const command = flags["help"] ? "--help" : positionals[0];
|
|
224
|
+
return {
|
|
225
|
+
command,
|
|
226
|
+
subcommand: positionals[1],
|
|
227
|
+
json: Boolean(flags["json"]),
|
|
228
|
+
taskText: command === "plan" ? positionals.slice(1).join(" ") : "",
|
|
229
|
+
flags,
|
|
230
|
+
positionals
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function output(value, json) {
|
|
234
|
+
if (json) {
|
|
235
|
+
console.log(JSON.stringify(value, null, 2));
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
console.log(renderHuman(value));
|
|
239
|
+
}
|
|
240
|
+
function renderHuman(value) {
|
|
241
|
+
if (!isRecord(value)) {
|
|
242
|
+
return String(value);
|
|
243
|
+
}
|
|
244
|
+
if ("projectRoot" in value && "detectedStack" in value) {
|
|
245
|
+
const context = value;
|
|
246
|
+
return [
|
|
247
|
+
`projectRoot: ${String(context.projectRoot ?? "unknown")}`,
|
|
248
|
+
`packageManager: ${String(context.detectedStack?.packageManager ?? "unknown")}`,
|
|
249
|
+
`framework: ${String(context.detectedStack?.framework ?? "unknown")}`,
|
|
250
|
+
`language: ${String(context.detectedStack?.language ?? "unknown")}`
|
|
251
|
+
].join("\n");
|
|
252
|
+
}
|
|
253
|
+
if ("task" in value && "units" in value && Array.isArray(value["units"])) {
|
|
254
|
+
const plan = value;
|
|
255
|
+
return [
|
|
256
|
+
`intent: ${String(plan.task?.intent ?? "unknown")}`,
|
|
257
|
+
`scope: ${String(plan.task?.scope ?? "unknown")}`,
|
|
258
|
+
`units: ${plan.units.length}`
|
|
259
|
+
].join("\n");
|
|
260
|
+
}
|
|
261
|
+
if ("results" in value && Array.isArray(value["results"])) {
|
|
262
|
+
const verification = value;
|
|
263
|
+
return [
|
|
264
|
+
`status: ${String(verification.status ?? "unknown")}`,
|
|
265
|
+
`results: ${verification.results.length}`,
|
|
266
|
+
...verification.results.map((item) => `- ${String(item.name ?? "verification")}: ${String(item.status ?? "unknown")} (${String(item.exitCode ?? "n/a")})`)
|
|
267
|
+
].join("\n");
|
|
268
|
+
}
|
|
269
|
+
if ("action" in value && "stateStatus" in value) {
|
|
270
|
+
const next = value;
|
|
271
|
+
return [
|
|
272
|
+
`action: ${String(next.action ?? "unknown")}`,
|
|
273
|
+
`reason: ${String(next.reason ?? "unknown")}`,
|
|
274
|
+
`command: ${String(next.command ?? "none")}`
|
|
275
|
+
].join("\n");
|
|
276
|
+
}
|
|
277
|
+
if ("changedFiles" in value && "verification" in value) {
|
|
278
|
+
const state = value;
|
|
279
|
+
return [
|
|
280
|
+
`status: ${String(state.status ?? "unknown")}`,
|
|
281
|
+
`changedFiles: ${Array.isArray(state.changedFiles) ? state.changedFiles.length : 0}`,
|
|
282
|
+
`verification: ${String(state.verification?.status ?? "unknown")}`,
|
|
283
|
+
`retryCount: ${String(state.retryCount ?? 0)}`
|
|
284
|
+
].join("\n");
|
|
285
|
+
}
|
|
286
|
+
if ("skills" in value && Array.isArray(value["skills"])) {
|
|
287
|
+
const skills = value["skills"];
|
|
288
|
+
return [`skills: ${skills.length}`, ...skills.map((skill) => `- ${String(skill.name ?? "unknown")}: ${String(skill.title ?? "unknown")} (${String(skill.path ?? "unknown")})`)].join("\n");
|
|
289
|
+
}
|
|
290
|
+
if ("path" in value && "title" in value) {
|
|
291
|
+
const knowledge = value;
|
|
292
|
+
return [`path: ${String(knowledge.path ?? "unknown")}`, `title: ${String(knowledge.title ?? "unknown")}`, `createdAt: ${String(knowledge.createdAt ?? "unknown")}`].join("\n");
|
|
293
|
+
}
|
|
294
|
+
if ("artifactPath" in value && "unitCount" in value) {
|
|
295
|
+
return renderCheck(value, "unitCount");
|
|
296
|
+
}
|
|
297
|
+
if ("artifactPath" in value && "nodeCount" in value) {
|
|
298
|
+
return renderCheck(value, "nodeCount");
|
|
299
|
+
}
|
|
300
|
+
if ("skillsRoot" in value && "skillCount" in value) {
|
|
301
|
+
return renderCheck(value, "skillCount");
|
|
302
|
+
}
|
|
303
|
+
if ("knowledgeRoot" in value && "cardCount" in value) {
|
|
304
|
+
return renderCheck(value, "cardCount");
|
|
305
|
+
}
|
|
306
|
+
if ("artifactPath" in value && "decision" in value) {
|
|
307
|
+
return renderCheck(value, null);
|
|
308
|
+
}
|
|
309
|
+
if ("contractVersion" in value && "failedCommands" in value) {
|
|
310
|
+
const packet = value;
|
|
311
|
+
return [
|
|
312
|
+
`status: ${String(packet.status ?? "unknown")}`,
|
|
313
|
+
`verificationStatus: ${String(packet.verificationStatus ?? "unknown")}`,
|
|
314
|
+
`failedCommands: ${Array.isArray(packet.failedCommands) ? packet.failedCommands.length : 0}`
|
|
315
|
+
].join("\n");
|
|
316
|
+
}
|
|
317
|
+
if ("contractVersion" in value && "files" in value) {
|
|
318
|
+
const init = value;
|
|
319
|
+
return [
|
|
320
|
+
`dryRun: ${String(init.dryRun ?? false)}`,
|
|
321
|
+
`needsUpdate: ${String(init.needsUpdate ?? "unknown")}`,
|
|
322
|
+
...(Array.isArray(init.files) ? init.files.map((file) => `${String(file.path ?? "unknown")}: ${String(file.action ?? "unknown")}`) : []),
|
|
323
|
+
...(Array.isArray(init.skills) ? init.skills.map((skill) => `${String(skill.path ?? "unknown")}: ${String(skill.action ?? "unknown")}`) : [])
|
|
324
|
+
].join("\n");
|
|
325
|
+
}
|
|
326
|
+
if ("removed" in value && "kept" in value) {
|
|
327
|
+
const clean = value;
|
|
328
|
+
return [
|
|
329
|
+
`dryRun: ${String(clean.dryRun ?? false)}`,
|
|
330
|
+
`removed: ${Array.isArray(clean.removed) ? clean.removed.length : 0}`,
|
|
331
|
+
`kept: ${Array.isArray(clean.kept) ? clean.kept.length : 0}`
|
|
332
|
+
].join("\n");
|
|
333
|
+
}
|
|
334
|
+
if ("status" in value) {
|
|
335
|
+
return `status: ${String(value["status"])}`;
|
|
336
|
+
}
|
|
337
|
+
return JSON.stringify(value, null, 2);
|
|
338
|
+
}
|
|
339
|
+
function renderCheck(value, countKey) {
|
|
340
|
+
const lines = [
|
|
341
|
+
`status: ${String(value["status"] ?? "unknown")}`,
|
|
342
|
+
...(value["artifactPath"] ? [`artifactPath: ${String(value["artifactPath"])}`] : []),
|
|
343
|
+
...(value["skillsRoot"] ? [`skillsRoot: ${String(value["skillsRoot"])}`] : []),
|
|
344
|
+
...(countKey ? [`${countKey}: ${String(value[countKey] ?? 0)}`] : [])
|
|
345
|
+
];
|
|
346
|
+
for (const error of (Array.isArray(value["errors"]) ? value["errors"] : []).slice(0, 5)) {
|
|
347
|
+
lines.push(`error: ${String(error)}`);
|
|
348
|
+
}
|
|
349
|
+
for (const warning of (Array.isArray(value["warnings"]) ? value["warnings"] : []).slice(0, 5)) {
|
|
350
|
+
lines.push(`warning: ${String(warning)}`);
|
|
351
|
+
}
|
|
352
|
+
return lines.join("\n");
|
|
353
|
+
}
|
|
354
|
+
function printHelp() {
|
|
355
|
+
console.log(["frontend-harness", "", ...publicHelpLines()].join("\n"));
|
|
356
|
+
}
|
|
357
|
+
function stringFlag(value) {
|
|
358
|
+
return typeof value === "string" ? value : undefined;
|
|
359
|
+
}
|
|
360
|
+
function optionalString(key, value) {
|
|
361
|
+
return typeof value === "string" ? { [key]: value } : {};
|
|
362
|
+
}
|
|
363
|
+
function optionalNumber(key, value) {
|
|
364
|
+
if (value === undefined) {
|
|
365
|
+
return {};
|
|
366
|
+
}
|
|
367
|
+
if (typeof value !== "string") {
|
|
368
|
+
throw new Error("numeric flag requires a value");
|
|
369
|
+
}
|
|
370
|
+
const parsed = Number(value);
|
|
371
|
+
if (!Number.isInteger(parsed)) {
|
|
372
|
+
throw new Error(`Invalid integer value: ${value}`);
|
|
373
|
+
}
|
|
374
|
+
return { [key]: parsed };
|
|
375
|
+
}
|
|
376
|
+
function isRecord(value) {
|
|
377
|
+
return typeof value === "object" && value !== null;
|
|
378
|
+
}
|
|
379
|
+
main();
|
|
380
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAWvD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,KAAK,MAAM;gBACT,CAAC;oBACC,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,CAAC;gBACD,OAAO;YACT,KAAK,SAAS;gBACZ,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO;YACT,KAAK,OAAO;gBACV,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE;oBACxC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACxC,GAAG,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;iBACzD,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO;YACT,KAAK,MAAM;gBACT,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;oBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC7C,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3C,GAAG,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;iBACnE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO;YACT,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE;oBAC1C,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACzD,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/C,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClD,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC;oBACvE,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;wBAC1B,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,CAAC,CAAC;gBACR,OAAO;YACT,CAAC;YACD,KAAK,OAAO;gBACV,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBACjC,OAAO;YACT,KAAK,WAAW;gBACd,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBACrC,OAAO;YACT,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,qCAAqC,CAAC,CAAC;gBAC1E,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,qCAAqC,CAAC,CAAC;gBAC1E,MAAM,MAAM,GAAG,0BAA0B,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzF,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,KAAK,QAAQ;gBACX,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAClC,OAAO;YACT,KAAK,QAAQ;gBACX,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAClC,OAAO;YACT,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,kCAAkC,CAAC,CAAC;gBACvE,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBAChD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,kCAAkC,CAAC,CAAC;gBACvE,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBAChD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC;YACb,KAAK,KAAK;gBACR,MAAM,IAAI,KAAK,CAAC,sIAAsI,CAAC,CAAC;YAC1J,KAAK,SAAS,CAAC;YACf,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,SAAS,EAAE,CAAC;gBACZ,OAAO;YACT;gBACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB,EAAE,MAAkB;IAC1D,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,YAAY,CAAC,WAAmB,EAAE,MAAkB;IAC3D,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,WAAmB,EAAE,MAAkB;IAC3D,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,MAAkB;IAC9D,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE;YACnC,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjD,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/C,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/C,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjD,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACzD,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACpD,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAkB,EAAE,UAAkB,EAAE,OAAe;IAChF,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClD,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;gBAChD,CAAC;gBACD,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACnB,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO;QACL,OAAO;QACP,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QAC1B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAClE,KAAK;QACL,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,KAAc,EAAE,IAAa;IAC3C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,aAAa,IAAI,KAAK,IAAI,eAAe,IAAI,KAAK,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,KAAyH,CAAC;QAC1I,OAAO;YACL,gBAAgB,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE;YAC1D,mBAAmB,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,IAAI,SAAS,CAAC,EAAE;YAC/E,cAAc,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,IAAI,SAAS,CAAC,EAAE;YACrE,aAAa,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,IAAI,SAAS,CAAC,EAAE;SACpE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,GAAG,KAA2E,CAAC;QACzF,OAAO;YACL,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC,EAAE;YACnD,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS,CAAC,EAAE;YACjD,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;SAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAG,KAAuG,CAAC;QAC7H,OAAO;YACL,WAAW,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;YACrD,YAAY,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE;YACzC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC;SAC3J,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,IAAI,KAAK,IAAI,aAAa,IAAI,KAAK,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,KAAkE,CAAC;QAChF,OAAO;YACL,WAAW,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;YAC7C,WAAW,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;YAC7C,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,EAAE;SAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,cAAc,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,KAAkH,CAAC;QACjI,OAAO;YACL,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;YAC9C,iBAAiB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YACpF,iBAAiB,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,IAAI,SAAS,CAAC,EAAE;YAClE,eAAe,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE;SAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAA+D,CAAC;QAC7F,OAAO,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7L,CAAC;IACD,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,KAAiE,CAAC;QACpF,OAAO,CAAC,SAAS,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,EAAE,UAAU,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,EAAE,cAAc,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjL,CAAC;IACD,IAAI,cAAc,IAAI,KAAK,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QACpD,OAAO,WAAW,CAAC,KAAoH,EAAE,WAAW,CAAC,CAAC;IACxJ,CAAC;IACD,IAAI,cAAc,IAAI,KAAK,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QACpD,OAAO,WAAW,CAAC,KAAoH,EAAE,WAAW,CAAC,CAAC;IACxJ,CAAC;IACD,IAAI,YAAY,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;QACnD,OAAO,WAAW,CAAC,KAAmH,EAAE,YAAY,CAAC,CAAC;IACxJ,CAAC;IACD,IAAI,eAAe,IAAI,KAAK,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QACrD,OAAO,WAAW,CAAC,KAAqH,EAAE,WAAW,CAAC,CAAC;IACzJ,CAAC;IACD,IAAI,cAAc,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QACnD,OAAO,WAAW,CAAC,KAAyE,EAAE,IAAI,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,iBAAiB,IAAI,KAAK,IAAI,gBAAgB,IAAI,KAAK,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,KAAuF,CAAC;QACvG,OAAO;YACL,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;YAC/C,uBAAuB,MAAM,CAAC,MAAM,CAAC,kBAAkB,IAAI,SAAS,CAAC,EAAE;YACvE,mBAAmB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;SAC7F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,iBAAiB,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAKZ,CAAC;QACF,OAAO;YACL,WAAW,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE;YACzC,gBAAgB,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE;YACvD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9I,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,SAAS,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAoE,CAAC;QACnF,OAAO;YACL,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE;YAC1C,YAAY,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YACrE,SAAS,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;SAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QACtB,OAAO,WAAW,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,WAAW,CAAC,KAA8B,EAAE,QAAuB;IAC1E,MAAM,KAAK,GAAG;QACZ,WAAW,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,EAAE;QACjD,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACtE,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9F,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,UAAU,CAAC,KAAmC;IACrD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CAAqB,GAAQ,EAAE,KAAmC;IACvF,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,cAAc,CAAqB,GAAQ,EAAE,KAAmC;IACvF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAyB,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,IAAI,EAAE,CAAC"}
|