@dev-guard/cli 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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +79 -0
  3. package/dist/agent-strategies.d.ts +23 -0
  4. package/dist/agent-strategies.js +130 -0
  5. package/dist/agent-strategies.js.map +1 -0
  6. package/dist/ai-context.d.ts +10 -0
  7. package/dist/ai-context.js +143 -0
  8. package/dist/ai-context.js.map +1 -0
  9. package/dist/check.d.ts +6 -0
  10. package/dist/check.js +89 -0
  11. package/dist/check.js.map +1 -0
  12. package/dist/clipboard.d.ts +6 -0
  13. package/dist/clipboard.js +43 -0
  14. package/dist/clipboard.js.map +1 -0
  15. package/dist/codex-notify.d.ts +23 -0
  16. package/dist/codex-notify.js +146 -0
  17. package/dist/codex-notify.js.map +1 -0
  18. package/dist/command-targets.d.ts +10 -0
  19. package/dist/command-targets.js +124 -0
  20. package/dist/command-targets.js.map +1 -0
  21. package/dist/config.d.ts +22 -0
  22. package/dist/config.js +180 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/configure.d.ts +1 -0
  25. package/dist/configure.js +79 -0
  26. package/dist/configure.js.map +1 -0
  27. package/dist/doctor.d.ts +1 -0
  28. package/dist/doctor.js +326 -0
  29. package/dist/doctor.js.map +1 -0
  30. package/dist/drift-telemetry.d.ts +13 -0
  31. package/dist/drift-telemetry.js +64 -0
  32. package/dist/drift-telemetry.js.map +1 -0
  33. package/dist/effective-task.d.ts +44 -0
  34. package/dist/effective-task.js +355 -0
  35. package/dist/effective-task.js.map +1 -0
  36. package/dist/fs.d.ts +10 -0
  37. package/dist/fs.js +58 -0
  38. package/dist/fs.js.map +1 -0
  39. package/dist/git.d.ts +24 -0
  40. package/dist/git.js +235 -0
  41. package/dist/git.js.map +1 -0
  42. package/dist/hooks.d.ts +39 -0
  43. package/dist/hooks.js +513 -0
  44. package/dist/hooks.js.map +1 -0
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.js +555 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/infer-task.d.ts +1 -0
  49. package/dist/infer-task.js +120 -0
  50. package/dist/infer-task.js.map +1 -0
  51. package/dist/init.d.ts +1 -0
  52. package/dist/init.js +50 -0
  53. package/dist/init.js.map +1 -0
  54. package/dist/install-agent-instructions.d.ts +1 -0
  55. package/dist/install-agent-instructions.js +113 -0
  56. package/dist/install-agent-instructions.js.map +1 -0
  57. package/dist/migration.d.ts +8 -0
  58. package/dist/migration.js +43 -0
  59. package/dist/migration.js.map +1 -0
  60. package/dist/paths.d.ts +38 -0
  61. package/dist/paths.js +41 -0
  62. package/dist/paths.js.map +1 -0
  63. package/dist/project-detection.d.ts +10 -0
  64. package/dist/project-detection.js +144 -0
  65. package/dist/project-detection.js.map +1 -0
  66. package/dist/project-identity.d.ts +7 -0
  67. package/dist/project-identity.js +93 -0
  68. package/dist/project-identity.js.map +1 -0
  69. package/dist/project-memory.d.ts +4 -0
  70. package/dist/project-memory.js +32 -0
  71. package/dist/project-memory.js.map +1 -0
  72. package/dist/prompt.d.ts +13 -0
  73. package/dist/prompt.js +125 -0
  74. package/dist/prompt.js.map +1 -0
  75. package/dist/refresh.d.ts +15 -0
  76. package/dist/refresh.js +146 -0
  77. package/dist/refresh.js.map +1 -0
  78. package/dist/report.d.ts +1 -0
  79. package/dist/report.js +109 -0
  80. package/dist/report.js.map +1 -0
  81. package/dist/review.d.ts +2 -0
  82. package/dist/review.js +653 -0
  83. package/dist/review.js.map +1 -0
  84. package/dist/rule-filter.d.ts +8 -0
  85. package/dist/rule-filter.js +79 -0
  86. package/dist/rule-filter.js.map +1 -0
  87. package/dist/runs.d.ts +21 -0
  88. package/dist/runs.js +142 -0
  89. package/dist/runs.js.map +1 -0
  90. package/dist/runtime-state.d.ts +69 -0
  91. package/dist/runtime-state.js +1383 -0
  92. package/dist/runtime-state.js.map +1 -0
  93. package/dist/scan.d.ts +1 -0
  94. package/dist/scan.js +55 -0
  95. package/dist/scan.js.map +1 -0
  96. package/dist/self.d.ts +3 -0
  97. package/dist/self.js +235 -0
  98. package/dist/self.js.map +1 -0
  99. package/dist/task-ai.d.ts +1 -0
  100. package/dist/task-ai.js +643 -0
  101. package/dist/task-ai.js.map +1 -0
  102. package/dist/telemetry.d.ts +1 -0
  103. package/dist/telemetry.js +11 -0
  104. package/dist/telemetry.js.map +1 -0
  105. package/dist/update.d.ts +6 -0
  106. package/dist/update.js +154 -0
  107. package/dist/update.js.map +1 -0
  108. package/dist/watch.d.ts +1 -0
  109. package/dist/watch.js +303 -0
  110. package/dist/watch.js.map +1 -0
  111. package/package.json +31 -0
package/dist/index.js ADDED
@@ -0,0 +1,555 @@
1
+ #!/usr/bin/env node
2
+ import { runCheck } from "./check.js";
3
+ import { runConfigure } from "./configure.js";
4
+ import { runDoctor } from "./doctor.js";
5
+ import { runInferTask } from "./infer-task.js";
6
+ import { getHookStatus, runInstallHooks, writeHookStatusReport } from "./hooks.js";
7
+ import { runInit } from "./init.js";
8
+ import { legacyDevguardWarning } from "./migration.js";
9
+ import { devguardPaths } from "./paths.js";
10
+ import { parsePromptOptions, runPrompt } from "./prompt.js";
11
+ import { runRefresh } from "./refresh.js";
12
+ import { runReport } from "./report.js";
13
+ import { runFixPrompt, runReview } from "./review.js";
14
+ import { runScan } from "./scan.js";
15
+ import { runSelf, runSelfCheck } from "./self.js";
16
+ import { runTaskAI } from "./task-ai.js";
17
+ import { runTelemetry } from "./telemetry.js";
18
+ import { runUpdate } from "./update.js";
19
+ import { runWatch } from "./watch.js";
20
+ import { generateAgentContext, generateNextClaudePrompt, generateProjectHandoff, processDoneEvent, readHistoryRecords, readProjectState, readRuntimeState, resetRuntimeState } from "./runtime-state.js";
21
+ import { runInstallAgentInstructions } from "./install-agent-instructions.js";
22
+ import { formatStrategyFlag, getAgentStrategyReport } from "./agent-strategies.js";
23
+ async function main() {
24
+ const command = process.argv[2];
25
+ const root = process.env.INIT_CWD || process.cwd();
26
+ if (!command || command === "--help" || command === "-h") {
27
+ printHelp();
28
+ return;
29
+ }
30
+ if (command === "help") {
31
+ if (process.argv[3] === "advanced") {
32
+ printAdvancedHelp();
33
+ }
34
+ else {
35
+ printHelp();
36
+ }
37
+ return;
38
+ }
39
+ if (command === "init") {
40
+ await runInit(root);
41
+ return;
42
+ }
43
+ if (command === "done") {
44
+ await runDone(root);
45
+ return;
46
+ }
47
+ if (command === "handoff") {
48
+ await runHandoff(root);
49
+ return;
50
+ }
51
+ if (command === "install-hooks") {
52
+ await runInstallHooks(root, process.argv.slice(3));
53
+ return;
54
+ }
55
+ if (command === "install-agent-instructions") {
56
+ await runInstallAgentInstructions(root, process.argv.slice(3));
57
+ return;
58
+ }
59
+ if (command === "infer-task") {
60
+ await runInferTask(root, process.argv.slice(3));
61
+ return;
62
+ }
63
+ if (command === "status") {
64
+ await runStatus(root);
65
+ return;
66
+ }
67
+ if (command === "reset") {
68
+ await runReset(root);
69
+ return;
70
+ }
71
+ if (command === "check") {
72
+ await runCheck(root, {
73
+ includeContextFiles: process.argv.includes("--include-context-files"),
74
+ local: process.argv.includes("--local")
75
+ });
76
+ return;
77
+ }
78
+ if (command === "configure" || command === "config") {
79
+ await runConfigure(root, process.argv.slice(3));
80
+ return;
81
+ }
82
+ if (command === "scan") {
83
+ await runScan(root, process.argv.slice(3));
84
+ return;
85
+ }
86
+ if (command === "refresh") {
87
+ await runRefresh(root, process.argv.slice(3));
88
+ return;
89
+ }
90
+ if (command === "watch") {
91
+ await runWatch(root, process.argv.slice(3));
92
+ return;
93
+ }
94
+ if (command === "doctor") {
95
+ await runDoctor(root, process.argv.slice(3));
96
+ return;
97
+ }
98
+ if (command === "telemetry") {
99
+ await runTelemetry(root);
100
+ return;
101
+ }
102
+ if (command === "report") {
103
+ await runReport(root, process.argv.slice(3));
104
+ return;
105
+ }
106
+ if (command === "review") {
107
+ await runReview(root, process.argv.slice(3));
108
+ return;
109
+ }
110
+ if (command === "fix-prompt") {
111
+ await runFixPrompt(root, process.argv.slice(3));
112
+ return;
113
+ }
114
+ if (command === "update") {
115
+ await runUpdate(root, {
116
+ write: process.argv.includes("--write"),
117
+ includeContextFiles: process.argv.includes("--include-context-files")
118
+ });
119
+ return;
120
+ }
121
+ if (command === "prompt") {
122
+ await runPrompt(root, parsePromptOptions(process.argv.slice(3)));
123
+ return;
124
+ }
125
+ if (command === "task-ai") {
126
+ await runTaskAI(root, process.argv.slice(3));
127
+ return;
128
+ }
129
+ if (command === "self") {
130
+ await runSelf(root, process.argv.slice(3));
131
+ return;
132
+ }
133
+ if (command === "self-check") {
134
+ await runSelfCheck(root);
135
+ return;
136
+ }
137
+ if (!command.startsWith("-")) {
138
+ await runSelf(root, process.argv.slice(2));
139
+ return;
140
+ }
141
+ printHelp();
142
+ process.exitCode = 1;
143
+ }
144
+ function printHelp() {
145
+ console.log(`dev-guard
146
+
147
+ Quick commands:
148
+ dev-guard init
149
+ dev-guard install-hooks [--agent <claude|codex|codex-notify|all>] [--install-dispatcher]
150
+ dev-guard install-agent-instructions [--force]
151
+ dev-guard watch
152
+ dev-guard done
153
+ dev-guard handoff
154
+ dev-guard status
155
+ dev-guard reset
156
+
157
+ Recommended Auto Mode:
158
+ 1. dev-guard init
159
+ 2. dev-guard install-hooks
160
+ 3. dev-guard install-agent-instructions
161
+ 4. dev-guard watch
162
+ 5. Run Claude/Codex; verified completion strategy runs done automatically
163
+ 6. dev-guard status
164
+
165
+ New session resume:
166
+ Read .devguard/context/agent-context.md and continue.
167
+
168
+ Manual fallback:
169
+ dev-guard watch --manual
170
+ dev-guard done
171
+
172
+ More:
173
+ dev-guard help advanced
174
+ `);
175
+ }
176
+ function printAdvancedHelp() {
177
+ console.log(`dev-guard advanced
178
+
179
+ Usage:
180
+ dev-guard init
181
+ dev-guard "requirement"
182
+ dev-guard done
183
+ dev-guard handoff
184
+ dev-guard install-hooks [--force] [--agent <claude|codex|codex-notify|all>] [--install-dispatcher]
185
+ dev-guard status
186
+ dev-guard reset
187
+ dev-guard check [--local] [--include-context-files]
188
+ dev-guard configure ai --provider openai --model gpt-4o-mini
189
+ dev-guard config set <provider|model|temperature|maxTokens|reasoningEffort|baseURL> <value>
190
+ dev-guard config show
191
+ dev-guard scan [--full] [--ai]
192
+ dev-guard refresh [--full] [--ai] [--dry-run]
193
+ dev-guard watch [--manual|--no-auto] [--stable-after <sec>] [--depth <n>] [--poll] [--include-lockfiles] [--compact|--ultra]
194
+ dev-guard doctor [--hooks] [--agents] [--dry-run]
195
+ dev-guard telemetry
196
+ dev-guard report [--compact] [--copy] [--json] [--since <ref>]
197
+ dev-guard review [--heuristic] [--fix-prompt] [--copy] [--output <file>] [--copy-fix] [--include-context-files] [--staged] [--commit <ref>] [--run <id|latest>] [--no-run] [--task] [--from-diff]
198
+ dev-guard fix-prompt [--copy] [--output <file>] [--include-context-files] [--staged] [--commit <ref>] [--run <id|latest>] [--no-run]
199
+ dev-guard update [--write] [--include-context-files]
200
+ dev-guard prompt [--compact] [--ultra-compact] [--density <ultra|compact|verbose>] [--max-prompt-tokens <n>] [--copy] [--output <file>] [--include-context-files] [--save-run]
201
+ dev-guard infer-task [--write]
202
+ dev-guard task-ai "<requirement>" [--write] [--prompt] [--copy] [--save-run] [--context-files <n>] [--no-code-context] [--no-cache|--fresh] [--debug-context]
203
+ dev-guard self "<requirement>" [--copy] [--check]
204
+ dev-guard self-check
205
+
206
+ Commands:
207
+ init Create .devguard and docs guard files
208
+ "requirement" Generate task.md and a compact Codex prompt
209
+ done Manually process pending changes and generate report/next prompt/handoff/agent-context
210
+ handoff Regenerate project-handoff.md and agent-context.md from current .devguard/ artifacts
211
+ install-hooks Install agent completion strategy scripts/config
212
+ install-agent-instructions Create or update AGENTS.md / CLAUDE.md with dev-guard context guidance
213
+ status Show pending watch state, recommended mode, and last processed task
214
+ reset Clear watch runtime state without deleting project state
215
+ check Analyze current git diff with rule-based checks
216
+ configure Configure dev-guard settings
217
+ scan Cache project structure and file summaries into .devguard
218
+ refresh Incrementally update project memory cache
219
+ watch Recommended watcher; waits for a runtime-verified completion strategy, or manual done fallback
220
+ doctor Print config/provider/git diagnostics, hook diagnostics with --hooks, and agent strategy diagnostics with --agents
221
+ telemetry Print privacy-safe drift telemetry summary
222
+ report Print a compact current-work summary for ChatGPT/Codex handoff
223
+ review AI-review current changes against task/rules/mistakes
224
+ fix-prompt Generate a Codex-ready fix prompt from AI review
225
+ update Generate project docs update candidates from current git diff
226
+ prompt Generate a Codex-ready task prompt from project context
227
+ infer-task Preview (or write) a task.md inferred from the current git diff
228
+ task-ai Generate .devguard/task.md from natural language with an AI provider
229
+ self Dogfood dev-guard on this repo and print an ultra-compact Codex prompt
230
+ self-check Run build, local check, heuristic review, and doctor sequentially
231
+ `);
232
+ }
233
+ async function runDone(root) {
234
+ try {
235
+ const result = await processDoneEvent(root);
236
+ console.log("작업 완료 처리됨");
237
+ console.log("");
238
+ console.log("변경 파일:");
239
+ for (const file of result.changedFiles.slice(0, 20)) {
240
+ console.log(`- ${file}`);
241
+ }
242
+ if (result.changedFiles.length > 20) {
243
+ console.log(`- ... +${result.changedFiles.length - 20} files`);
244
+ }
245
+ console.log("");
246
+ console.log("감지된 영역:");
247
+ for (const area of result.areas) {
248
+ console.log(`- ${area}`);
249
+ }
250
+ console.log("");
251
+ console.log("판단:");
252
+ for (const judgment of result.judgments) {
253
+ console.log(`- ${judgment}`);
254
+ }
255
+ console.log("");
256
+ console.log("생성됨:");
257
+ console.log(`- ${result.reportPath}`);
258
+ console.log(`- ${result.promptPath}`);
259
+ console.log(`- ${result.historySummaryPath}`);
260
+ console.log(`- ${result.decisionCandidatesPath}`);
261
+ console.log(`- ${result.qualityReportPath}`);
262
+ console.log(`- ${result.projectHandoffPath}`);
263
+ console.log(`- ${result.agentContextPath}`);
264
+ console.log(`- ${result.nextClaudePromptPath}`);
265
+ console.log("");
266
+ console.log(`Quality: ${result.qualityVerdict}`);
267
+ console.log("");
268
+ console.log("새 세션 시작 시:");
269
+ console.log(` Read ${result.agentContextPath} and continue.`);
270
+ console.log("");
271
+ console.log("다음 작업:");
272
+ console.log(`${result.promptPath} 확인 후 필요한 수정 진행`);
273
+ }
274
+ catch (error) {
275
+ console.error(`dev-guard done failed: ${errorMessage(error)}`);
276
+ console.error("recovery: run dev-guard status, then dev-guard reset if the pending buffer is wrong");
277
+ process.exitCode = 1;
278
+ }
279
+ }
280
+ async function runHandoff(root) {
281
+ try {
282
+ const [handoffPath, agentContextPath, nextClaudePromptPath] = await Promise.all([
283
+ generateProjectHandoff(root),
284
+ generateAgentContext(root),
285
+ generateNextClaudePrompt(root)
286
+ ]);
287
+ console.log("dev-guard handoff");
288
+ console.log("generated:");
289
+ console.log(`- ${handoffPath}`);
290
+ console.log(`- ${agentContextPath}`);
291
+ console.log(`- ${nextClaudePromptPath}`);
292
+ console.log("");
293
+ console.log("Resume prompt for new session:");
294
+ console.log(` Read ${devguardPaths.agentContext} and continue.`);
295
+ }
296
+ catch (error) {
297
+ console.error(`dev-guard handoff failed: ${errorMessage(error)}`);
298
+ process.exitCode = 1;
299
+ }
300
+ }
301
+ async function runStatus(root) {
302
+ console.log("dev-guard status");
303
+ const [runtime, state, history, hookStatus] = await Promise.all([
304
+ readRuntimeState(root),
305
+ readProjectState(root),
306
+ readHistoryRecords(root, 3),
307
+ getHookStatus(root)
308
+ ]);
309
+ const strategyReport = await getAgentStrategyReport(root);
310
+ await writeHookStatusReport(root);
311
+ console.log(`Pending files: ${runtime.pendingChangedFiles.length}`);
312
+ for (const file of runtime.pendingChangedFiles.slice(0, 12)) {
313
+ console.log(`- ${file}`);
314
+ }
315
+ if (runtime.pendingChangedFiles.length > 12) {
316
+ console.log(`- ... +${runtime.pendingChangedFiles.length - 12} files`);
317
+ }
318
+ console.log(`Runtime status: ${runtime.lastStatus ?? "idle"}`);
319
+ if (runtime.pendingChangedFiles.length === 0) {
320
+ console.log("State: 대기 중");
321
+ }
322
+ console.log(`Last changed: ${runtime.lastChangedAt ?? "none"}`);
323
+ console.log(`Last processed: ${state.lastProcessedAt ?? "none"}`);
324
+ console.log(`Last summary: ${state.lastSummary ?? "none"}`);
325
+ console.log(`Drift: ${state.lastDrift ?? "unknown"}`);
326
+ console.log(`Quality: ${state.lastQualityVerdict ?? "unknown"}`);
327
+ console.log("");
328
+ const claudeHook = hookStatus.claudeInstalled && hookStatus.claudeHookFile ? "INSTALLED" : "NOT_INSTALLED";
329
+ const codexHook = hookStatus.codexInstalled && hookStatus.codexHookFile ? "INSTALLED" : "NOT_INSTALLED";
330
+ const claudeVerified = claudeHook === "INSTALLED" && hookStatus.claudeLastSuccess === true;
331
+ const codexVerified = codexHook === "INSTALLED" && hookStatus.codexLastSuccess === true;
332
+ const hooksInstalled = claudeHook === "INSTALLED" || codexHook === "INSTALLED";
333
+ const hooksVerified = claudeVerified || codexVerified;
334
+ const runtimeVerified = strategyReport.strategies.some((strategy) => strategy.name !== "manual" && strategy.runtimeVerified);
335
+ console.log(`Mode: ${runtimeVerified ? "Auto completion runtime verified" : hooksInstalled ? "Auto completion installed, runtime not verified" : "Manual Mode fallback"}`);
336
+ console.log(`Hooks: Claude ${claudeHook} / ${claudeVerified ? "SCRIPT_VERIFIED" : "NOT_SCRIPT_VERIFIED"}; Codex ${codexHook} / ${codexVerified ? "SCRIPT_VERIFIED" : "NOT_SCRIPT_VERIFIED"}`);
337
+ console.log("");
338
+ console.log("Agent Strategies");
339
+ console.log("Claude Code");
340
+ console.log(`- strategy: ${strategyReport.claude.name}`);
341
+ console.log(`- installed: ${formatStrategyFlag(strategyReport.claude.installed)}`);
342
+ console.log(`- script verified: ${formatStrategyFlag(strategyReport.claude.scriptVerified)}`);
343
+ console.log(`- runtime verified: ${formatStrategyFlag(strategyReport.claude.runtimeVerified)}`);
344
+ console.log(`- next: ${strategyReport.claude.next}`);
345
+ console.log("");
346
+ console.log("Codex");
347
+ console.log(`- recommended strategy: ${strategyReport.codexNotify.name}`);
348
+ console.log(`- notify installed: ${formatStrategyFlag(strategyReport.codexNotify.installed)}`);
349
+ console.log(`- notify runtime verified: ${formatStrategyFlag(strategyReport.codexNotify.runtimeVerified)}`);
350
+ console.log(`- stop hook installed: ${formatStrategyFlag(strategyReport.codexStopHook.installed)}`);
351
+ console.log(`- stop hook requires trust: ${formatStrategyFlag(strategyReport.codexStopHook.requiresUserTrust)}`);
352
+ console.log(`- stop hook runtime verified: ${formatStrategyFlag(strategyReport.codexStopHook.runtimeVerified)}`);
353
+ console.log(`- jsonl listener installed: ${formatStrategyFlag(strategyReport.codexJsonlListener.installed)}`);
354
+ console.log(`- next: ${strategyReport.codexNotify.runtimeVerified ? "Codex notify runtime verified." : strategyReport.codexNotify.next}`);
355
+ console.log("");
356
+ console.log("Hooks");
357
+ console.log(`Claude Code: ${claudeHook} / ${claudeVerified ? "SCRIPT_VERIFIED" : "NOT_SCRIPT_VERIFIED"}`);
358
+ console.log(`Codex CLI: ${codexHook} / ${codexVerified ? "SCRIPT_VERIFIED" : "NOT_SCRIPT_VERIFIED"}`);
359
+ console.log(`Last Hook Trigger: ${hookStatus.lastTrigger ?? "none"}`);
360
+ console.log(`Last Hook Success: ${hookStatus.lastSuccess === undefined ? "unknown" : hookStatus.lastSuccess ? "yes" : "no"}`);
361
+ console.log("");
362
+ console.log("Auto Mode:");
363
+ console.log(hooksInstalled ? (runtimeVerified ? "Installed and runtime verified" : "Installed but runtime not verified") : "Not installed");
364
+ if (hooksInstalled && !runtimeVerified) {
365
+ console.log("");
366
+ console.log("Next:");
367
+ console.log("Run dev-guard doctor --agents");
368
+ console.log("If Codex is used, open Codex TUI and run /hooks to trust the dev-guard Stop hook.");
369
+ console.log("Fallback:");
370
+ console.log("dev-guard done");
371
+ }
372
+ console.log("");
373
+ console.log("Handoff:");
374
+ console.log(devguardPaths.projectHandoff);
375
+ console.log("");
376
+ console.log("Agent Context:");
377
+ console.log(devguardPaths.agentContext);
378
+ console.log("");
379
+ console.log("Resume prompt for new session:");
380
+ console.log(` Read ${devguardPaths.agentContext} and continue.`);
381
+ const legacyWarning = legacyDevguardWarning(root);
382
+ if (legacyWarning) {
383
+ console.log("");
384
+ console.log("Warning:");
385
+ console.log(legacyWarning);
386
+ }
387
+ if (history.length > 0) {
388
+ console.log("");
389
+ console.log("Recent history:");
390
+ for (const record of history.slice().reverse()) {
391
+ console.log(`- ${record.timestamp}: ${record.inferredSummary}`);
392
+ if (record.driftCandidates.length > 0) {
393
+ console.log(` drift: ${record.driftCandidates.slice(0, 2).join("; ")}`);
394
+ }
395
+ }
396
+ }
397
+ console.log("");
398
+ console.log(`Next recommended action: ${nextRecommendedAction(runtime.pendingChangedFiles.length, state.lastDrift, state.lastQualityVerdict, state.lastQualityNextAction)}`);
399
+ console.log("Next:");
400
+ console.log(runtime.pendingChangedFiles.length > 0 ? " dev-guard done" : " dev-guard watch");
401
+ }
402
+ async function runReset(root) {
403
+ await resetRuntimeState(root);
404
+ console.log("dev-guard reset");
405
+ console.log("- runtime pending changes cleared");
406
+ console.log(`- ${devguardPaths.state} preserved`);
407
+ }
408
+ function errorMessage(error) {
409
+ return error instanceof Error ? error.message : String(error);
410
+ }
411
+ function nextRecommendedAction(pendingCount, drift, quality, qualityAction) {
412
+ if (pendingCount > 0) {
413
+ return "run dev-guard done";
414
+ }
415
+ if (quality === "BLOCKED") {
416
+ return "fix blocked quality items before commit";
417
+ }
418
+ if (quality === "NEEDS_REVIEW") {
419
+ return qualityAction ?? `run verification, then review ${devguardPaths.qualityReport}`;
420
+ }
421
+ if (quality === "PASS") {
422
+ return "ready for final review or commit";
423
+ }
424
+ if (drift && drift !== "low") {
425
+ return `review ${devguardPaths.nextCodexPrompt}`;
426
+ }
427
+ return "대기 중";
428
+ }
429
+ async function captureConsole(run) {
430
+ const originalLog = console.log;
431
+ const originalError = console.error;
432
+ const lines = [];
433
+ console.log = (...args) => {
434
+ lines.push(...args.map(String).join(" ").split(/\r?\n/));
435
+ };
436
+ console.error = (...args) => {
437
+ lines.push(...args.map(String).join(" ").split(/\r?\n/));
438
+ };
439
+ try {
440
+ await run();
441
+ }
442
+ finally {
443
+ console.log = originalLog;
444
+ console.error = originalError;
445
+ }
446
+ return lines;
447
+ }
448
+ function summarizeStepOutput(name, lines) {
449
+ if (name === "refresh") {
450
+ return pickLines(lines, ["updated summaries:", "removed summaries:", "unchanged files skipped:", "writes:", "next:"]);
451
+ }
452
+ if (name === "check --local") {
453
+ const warnings = countMatching(lines, "[warning]");
454
+ const info = countMatching(lines, "[info]");
455
+ const docs = lines.find((line) => line.startsWith("Docs update needed:"));
456
+ return [`findings: ${warnings} warning(s), ${info} info`, docs].filter(Boolean);
457
+ }
458
+ if (name === "review --heuristic") {
459
+ return summarizeReviewOutput(lines);
460
+ }
461
+ if (name === "report --compact") {
462
+ return lines.filter((line) => /^(Task|Changed|Check|Review|Next):/.test(line));
463
+ }
464
+ if (name === "update preview") {
465
+ return summarizeUpdatePreviewOutput(lines);
466
+ }
467
+ return lines.slice(0, 5);
468
+ }
469
+ function pickLines(lines, patterns) {
470
+ const selected = [];
471
+ for (const pattern of patterns) {
472
+ const line = lines.find((candidate) => candidate.includes(pattern));
473
+ if (line) {
474
+ selected.push(line);
475
+ }
476
+ }
477
+ return selected.length > 0 ? selected : ["completed"];
478
+ }
479
+ function countMatching(lines, pattern) {
480
+ return lines.filter((line) => line.includes(pattern)).length;
481
+ }
482
+ function summarizeStatusOutput(doctorOutput, reportOutput) {
483
+ const provider = valueAfter(doctorOutput, "Provider:") ?? "unknown";
484
+ const model = valueAfter(doctorOutput, "Model:") ?? "unknown";
485
+ const apiKey = valueAfter(doctorOutput, "API Key:") ?? "unknown";
486
+ const baseline = valueAfter(doctorOutput, "Git Baseline:") ?? "unknown";
487
+ const framework = valueAfter(doctorOutput, "Framework:") ?? "(unknown)";
488
+ const runtime = valueAfter(doctorOutput, "Runtime:") ?? "(unknown)";
489
+ const packageManager = valueAfter(doctorOutput, "Package Manager:") ?? "(unknown)";
490
+ const memory = valueAfter(doctorOutput, "Project Memory:") ?? "unknown";
491
+ const task = valueAfter(reportOutput, "Task:") ?? "현재 task 없음";
492
+ const changed = valueAfter(reportOutput, "Changed:") ?? "none";
493
+ const check = valueAfter(reportOutput, "Check:") ?? "none";
494
+ const review = valueAfter(reportOutput, "Review:") ?? "none";
495
+ const next = valueAfter(reportOutput, "Next:") ?? valueAfter(doctorOutput, "Next:") ?? "dev-guard \"describe the next change\"";
496
+ const lines = [
497
+ `Project: ${framework}; runtime=${runtime}; package_manager=${packageManager}`,
498
+ `Provider: ${provider}; model=${model}; api_key=${apiKey}`,
499
+ `Git baseline: ${baseline}`,
500
+ `Memory: ${memory}`,
501
+ `Task: ${task}`,
502
+ `Changed: ${changed}`,
503
+ `Check: ${check}`,
504
+ `Review: ${review}`
505
+ ];
506
+ if (baseline === "missing") {
507
+ lines.push('Warning: initial git baseline missing; run `git add . && git commit -m "initial commit"` to reduce noise.');
508
+ }
509
+ lines.push("");
510
+ lines.push("Next:");
511
+ lines.push(` ${next}`);
512
+ return lines;
513
+ }
514
+ function summarizeReviewOutput(lines) {
515
+ const status = valueAfter(lines, "status:") ?? "unknown";
516
+ const alignment = valueAfter(lines, "- Requirement Alignment Score:") ?? valueAfter(lines, "Requirement Alignment Score:");
517
+ const drift = valueAfter(lines, "- Drift Risk:") ?? valueAfter(lines, "Drift Risk:");
518
+ const scope = valueAfter(lines, "- Scope Safety:") ?? valueAfter(lines, "Scope Safety:");
519
+ const commitIndex = lines.findIndex((line) => line.includes("커밋 가능 여부"));
520
+ const commit = commitIndex >= 0 ? lines.slice(commitIndex + 1).find((line) => line.trim().startsWith("- "))?.trim() : undefined;
521
+ return [
522
+ `status: ${status}`,
523
+ alignment ? `requirement alignment: ${alignment}` : undefined,
524
+ drift ? `drift risk: ${drift}` : undefined,
525
+ scope ? `scope safety: ${scope}` : undefined,
526
+ commit ? `commit: ${commit.replace(/^- /, "")}` : undefined
527
+ ].filter((line) => Boolean(line));
528
+ }
529
+ function summarizeUpdatePreviewOutput(lines) {
530
+ const summary = pickLines(lines, ["Mode:", "Summary:"]);
531
+ const docsIndex = lines.findIndex((line) => line.includes("Docs Update Preview:"));
532
+ const docLines = docsIndex >= 0
533
+ ? lines
534
+ .slice(docsIndex + 1)
535
+ .filter((line) => /^- docs\//.test(line.trim()) || /^ - /.test(line))
536
+ .slice(0, 8)
537
+ : [];
538
+ const modified = lines.find((line) => line.includes("No files were modified."));
539
+ const applyIndex = lines.findIndex((line) => line.trim() === "Apply:");
540
+ const apply = applyIndex >= 0 ? lines[applyIndex + 1]?.trim() : undefined;
541
+ return [...summary, "Docs Update Preview:", ...docLines, modified, apply ? `Apply: ${apply}` : undefined].filter((line) => Boolean(line));
542
+ }
543
+ function valueAfter(lines, prefix) {
544
+ const line = lines.find((candidate) => candidate.trim().startsWith(prefix));
545
+ if (!line) {
546
+ return undefined;
547
+ }
548
+ return line.trim().slice(prefix.length).trim();
549
+ }
550
+ main().catch((error) => {
551
+ const message = error instanceof Error ? error.message : String(error);
552
+ console.error(`dev-guard error: ${message}`);
553
+ process.exitCode = 1;
554
+ });
555
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzM,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEnD,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACzD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YACnC,iBAAiB,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,SAAS,EAAE,CAAC;QACd,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;QAChC,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,4BAA4B,EAAE,CAAC;QAC7C,MAAM,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,IAAI,EAAE;YACnB,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACrE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;SACxC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,EAAE;YACpB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACvC,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACtE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Bb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDb,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,gBAAgB,gBAAgB,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,iBAAiB,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,qFAAqF,CAAC,CAAC;QACrG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9E,sBAAsB,CAAC,IAAI,CAAC;YAC5B,oBAAoB,CAAC,IAAI,CAAC;YAC1B,wBAAwB,CAAC,IAAI,CAAC;SAC/B,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,gBAAgB,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAoB,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,aAAa,CAAC,YAAY,gBAAgB,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9D,gBAAgB,CAAC,IAAI,CAAC;QACtB,gBAAgB,CAAC,IAAI,CAAC;QACtB,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B,aAAa,CAAC,IAAI,CAAC;KACpB,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,eAAe,IAAI,MAAM,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,WAAW,IAAI,MAAM,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,kBAAkB,IAAI,SAAS,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;IAC3G,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;IACxG,MAAM,cAAc,GAAG,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC,iBAAiB,KAAK,IAAI,CAAC;IAC3F,MAAM,aAAa,GAAG,SAAS,KAAK,WAAW,IAAI,UAAU,CAAC,gBAAgB,KAAK,IAAI,CAAC;IACxF,MAAM,cAAc,GAAG,UAAU,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW,CAAC;IAC/E,MAAM,aAAa,GAAG,cAAc,IAAI,aAAa,CAAC;IACtD,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC7H,OAAO,CAAC,GAAG,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC3K,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,MAAM,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,WAAW,SAAS,MAAM,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC9L,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,sBAAsB,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,uBAAuB,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,WAAW,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,2BAA2B,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,uBAAuB,kBAAkB,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,8BAA8B,kBAAkB,CAAC,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC5G,OAAO,CAAC,GAAG,CAAC,0BAA0B,kBAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,+BAA+B,kBAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACjH,OAAO,CAAC,GAAG,CAAC,iCAAiC,kBAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACjH,OAAO,CAAC,GAAG,CAAC,+BAA+B,kBAAkB,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9G,OAAO,CAAC,GAAG,CAAC,WAAW,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1I,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,MAAM,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,MAAM,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACtG,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,CAAC,WAAW,IAAI,MAAM,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9H,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC5I,IAAI,cAAc,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,aAAa,CAAC,YAAY,gBAAgB,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;YAChE,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,4BAA4B,qBAAqB,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC7K,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;AACjG,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,KAAK,YAAY,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAoB,EAAE,KAAiC,EAAE,OAAgB,EAAE,aAAsB;IAC9H,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,yCAAyC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,OAAO,aAAa,IAAI,iCAAiC,aAAa,CAAC,aAAa,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,UAAU,aAAa,CAAC,eAAe,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAA2B;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAChC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACnC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IACF,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;QAC1B,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAe;IACxD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IACxH,CAAC;IAED,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,aAAa,QAAQ,gBAAgB,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAC9F,CAAC;IAED,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAClC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC9B,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,SAAS,CAAC,KAAe,EAAE,QAAkB;IACpD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,IAAI,IAAI,EAAE,CAAC;YACT,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,KAAe,EAAE,OAAe;IACrD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/D,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAsB,EAAE,YAAsB;IAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,SAAS,CAAC;IACpE,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC;IAC9D,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,SAAS,CAAC;IACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,eAAe,CAAC,IAAI,SAAS,CAAC;IACxE,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,WAAW,CAAC;IACxE,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,WAAW,CAAC;IACpE,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,EAAE,kBAAkB,CAAC,IAAI,WAAW,CAAC;IACnF,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,EAAE,iBAAiB,CAAC,IAAI,SAAS,CAAC;IACxE,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,YAAY,CAAC;IAC/D,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC;IAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC;IAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,wCAAwC,CAAC;IAChI,MAAM,KAAK,GAAG;QACZ,YAAY,SAAS,aAAa,OAAO,qBAAqB,cAAc,EAAE;QAC9E,aAAa,QAAQ,WAAW,KAAK,aAAa,MAAM,EAAE;QAC1D,iBAAiB,QAAQ,EAAE;QAC3B,WAAW,MAAM,EAAE;QACnB,SAAS,IAAI,EAAE;QACf,YAAY,OAAO,EAAE;QACrB,UAAU,KAAK,EAAE;QACjB,WAAW,MAAM,EAAE;KACpB,CAAC;IACF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,2GAA2G,CAAC,CAAC;IAC1H,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAe;IAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC;IACzD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,gCAAgC,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAC3H,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACzF,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAChI,OAAO;QACL,WAAW,MAAM,EAAE;QACnB,SAAS,CAAC,CAAC,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;QAC7D,KAAK,CAAC,CAAC,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;QAC1C,KAAK,CAAC,CAAC,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;QAC5C,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAe;IACnD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACnF,MAAM,QAAQ,GACZ,SAAS,IAAI,CAAC;QACZ,CAAC,CAAC,KAAK;aACF,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;aACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACrE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,OAAO,CAAC,GAAG,OAAO,EAAE,sBAAsB,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAC9G,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAe,EAAE,MAAc;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function runInferTask(root: string, args: string[]): Promise<void>;