agent-work-loop 0.6.27 → 0.6.30

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 (47) hide show
  1. package/README.md +18 -7
  2. package/dist/{brief-TQND6XIK.js → brief-O6IGLOPY.js} +5 -5
  3. package/dist/{changelog-J4LP6ZJI.js → changelog-4XKSWJX2.js} +5 -5
  4. package/dist/{chunk-PFXDX4JF.js → chunk-3CR74VLL.js} +108 -11
  5. package/dist/{chunk-M4H4VNN6.js → chunk-45X7T64Y.js} +12 -11
  6. package/dist/{chunk-MCNUMMKK.js → chunk-7WDDWO2B.js} +3 -3
  7. package/dist/{chunk-UB4RLTLJ.js → chunk-7WE2E76P.js} +2 -2
  8. package/dist/{chunk-PIOV3MQT.js → chunk-AYFHV27J.js} +69 -30
  9. package/dist/{chunk-DGPZEEFJ.js → chunk-FJKJTXN4.js} +4 -4
  10. package/dist/{chunk-J7EKKHVW.js → chunk-FOTWJOWF.js} +6 -6
  11. package/dist/{chunk-OSKS2YRU.js → chunk-FUP7DKT3.js} +2 -2
  12. package/dist/{chunk-H4EMS47F.js → chunk-IEFYCUWX.js} +15 -5
  13. package/dist/{chunk-DR7OZZ4N.js → chunk-ILXQGAUE.js} +5 -5
  14. package/dist/{chunk-GKKWXRQA.js → chunk-R4LFOY5M.js} +5 -5
  15. package/dist/{chunk-CLWQEWEG.js → chunk-RAMHRXFX.js} +38 -21
  16. package/dist/{chunk-KNBSZQGN.js → chunk-RXG6BUQ6.js} +2 -2
  17. package/dist/{chunk-JXFQHNHV.js → chunk-TTLFDLK6.js} +3 -3
  18. package/dist/{chunk-MLD2GOVM.js → chunk-VX23A4FW.js} +5 -5
  19. package/dist/{chunk-KJG2ULS4.js → chunk-WZCIAGNJ.js} +1 -1
  20. package/dist/cli.js +58 -50
  21. package/dist/{commit-2WWILQRB.js → commit-2UFIIERX.js} +6 -6
  22. package/dist/{config-XMM3V7MT.js → config-D7LUIZYA.js} +3 -3
  23. package/dist/{doctor-HZEAQNY7.js → doctor-IAK57PIS.js} +8 -8
  24. package/dist/{evolve-EQ3N6F6M.js → evolve-RMKOBGSK.js} +7 -7
  25. package/dist/{feedback-4FT67LSI.js → feedback-RT63F57C.js} +5 -5
  26. package/dist/{gotchas-QJBUVYJV.js → gotchas-DM7BXF77.js} +7 -7
  27. package/dist/{hold-recheck-L3DAS3MV.js → hold-recheck-I6JMGTP6.js} +16 -16
  28. package/dist/{init-PTTYGP2D.js → init-XUJTEY2Y.js} +6 -2
  29. package/dist/lane-OZ5WGGDT.js +41 -0
  30. package/dist/{loop-summary-OSYJB57M.js → loop-summary-7HMFHKUD.js} +6 -6
  31. package/dist/{metrics-BC7ZUCGU.js → metrics-F3YDMURU.js} +4 -4
  32. package/dist/{record-CKR6G6UZ.js → record-ZNGMMZHF.js} +5 -5
  33. package/dist/{review-UJH6C7F4.js → review-R5I4KYFN.js} +13 -13
  34. package/dist/{rules-E52GU3GA.js → rules-GVDXKROQ.js} +8 -8
  35. package/dist/{state-X7DLLBOD.js → state-B45D6VSF.js} +4 -4
  36. package/dist/status-7SBNSHTV.js +40 -0
  37. package/dist/{uninstall-JECZJNRJ.js → uninstall-Q6KJYH5E.js} +15 -15
  38. package/dist/update-WHHGVXIY.js +135 -0
  39. package/dist/{verify-KKQ2OQMO.js → verify-ZBDWID5U.js} +10 -10
  40. package/dist/version-check-3NVRLYUF.js +14 -0
  41. package/dist/{work-3SONYYYB.js → work-EVYCDIPE.js} +14 -14
  42. package/engine/version.json +1 -1
  43. package/package.json +1 -1
  44. package/dist/lane-WINQEOEW.js +0 -41
  45. package/dist/status-NGSQ4XK3.js +0 -40
  46. package/dist/update-GA6I4AMF.js +0 -61
  47. package/dist/version-check-7XE232L3.js +0 -14
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  computeDurationMs
3
- } from "./chunk-OSKS2YRU.js";
3
+ } from "./chunk-FUP7DKT3.js";
4
4
  import {
5
5
  computeCoverage,
6
6
  readRecords
7
- } from "./chunk-JXFQHNHV.js";
7
+ } from "./chunk-TTLFDLK6.js";
8
8
  import {
9
9
  loadState
10
- } from "./chunk-UB4RLTLJ.js";
10
+ } from "./chunk-7WE2E76P.js";
11
11
  import {
12
12
  requireConfig
13
- } from "./chunk-CLWQEWEG.js";
13
+ } from "./chunk-RAMHRXFX.js";
14
14
  import {
15
15
  caps,
16
16
  generationsDir,
@@ -19,7 +19,7 @@ import {
19
19
  lockFile,
20
20
  makeColors,
21
21
  signal
22
- } from "./chunk-M4H4VNN6.js";
22
+ } from "./chunk-45X7T64Y.js";
23
23
 
24
24
  // src/commands/evolve.ts
25
25
  import fs from "fs";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  WORKTREES_DIR
3
- } from "./chunk-H4EMS47F.js";
3
+ } from "./chunk-IEFYCUWX.js";
4
4
  import {
5
5
  readRecords
6
- } from "./chunk-JXFQHNHV.js";
6
+ } from "./chunk-TTLFDLK6.js";
7
7
  import {
8
8
  loadState
9
- } from "./chunk-UB4RLTLJ.js";
9
+ } from "./chunk-7WE2E76P.js";
10
10
  import {
11
11
  resolveProjectRoot,
12
12
  run
13
- } from "./chunk-CLWQEWEG.js";
13
+ } from "./chunk-RAMHRXFX.js";
14
14
  import {
15
15
  caps,
16
16
  makeColors,
@@ -21,7 +21,7 @@ import {
21
21
  signal,
22
22
  statusBadge,
23
23
  stringWidth
24
- } from "./chunk-M4H4VNN6.js";
24
+ } from "./chunk-45X7T64Y.js";
25
25
 
26
26
  // src/commands/status.ts
27
27
  import fs2 from "fs";
@@ -3,8 +3,9 @@ import {
3
3
  LANG_VALUES,
4
4
  ask,
5
5
  buildScreens,
6
- promptNumber
7
- } from "./chunk-PIOV3MQT.js";
6
+ promptNumber,
7
+ selectMulti
8
+ } from "./chunk-AYFHV27J.js";
8
9
  import {
9
10
  caps,
10
11
  findProjectRoot,
@@ -12,7 +13,7 @@ import {
12
13
  makeSymbols,
13
14
  sectionBox,
14
15
  signal
15
- } from "./chunk-M4H4VNN6.js";
16
+ } from "./chunk-45X7T64Y.js";
16
17
 
17
18
  // src/commands/config.ts
18
19
  import fs from "fs";
@@ -204,7 +205,7 @@ function loadConfig(projectRoot) {
204
205
  const rv = raw.verify;
205
206
  const config = {
206
207
  project: raw.project,
207
- mainLanguage: typeof raw.mainLanguage === "string" ? raw.mainLanguage : "",
208
+ mainLanguage: Array.isArray(raw.mainLanguage) ? raw.mainLanguage.filter((v) => typeof v === "string") : [],
208
209
  character: typeof raw.character === "string" ? raw.character : "",
209
210
  engineVersion: raw.engineVersion,
210
211
  ...typeof raw.namingConvention === "string" ? { namingConvention: raw.namingConvention } : {},
@@ -329,18 +330,19 @@ async function applyConfigValue(config, projectRoot, parsed, rawValue, opts) {
329
330
  return { ok: true, message: `project = ${v2}` };
330
331
  }
331
332
  if (parsed.kind === "mainLanguage") {
332
- const v2 = rawValue.trim();
333
- if (v2 === "") {
333
+ const values = rawValue.split(",").map((s) => s.trim()).filter(Boolean);
334
+ if (values.length === 0) {
334
335
  return { ok: false, message: "mainLanguage \uB294 \uBE44\uC6B8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4." };
335
336
  }
336
- config.mainLanguage = v2;
337
- if (!KNOWN_LANGUAGES.includes(v2)) {
337
+ config.mainLanguage = values;
338
+ const unknown = values.filter((v2) => !KNOWN_LANGUAGES.includes(v2));
339
+ if (unknown.length > 0) {
338
340
  return {
339
341
  ok: true,
340
- message: `mainLanguage = ${v2} (\uACBD\uACE0: \uC54C\uB824\uC9C4 \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4 \u2014 ${KNOWN_LANGUAGES.join("/")})`
342
+ message: `mainLanguage = ${values.join(", ")} (\uACBD\uACE0: \uC54C\uB824\uC9C4 \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4 \u2014 ${unknown.join(", ")} / \uC54C\uB824\uC9C4 \uAC12: ${KNOWN_LANGUAGES.join("/")})`
341
343
  };
342
344
  }
343
- return { ok: true, message: `mainLanguage = ${v2}` };
345
+ return { ok: true, message: `mainLanguage = ${values.join(", ")}` };
344
346
  }
345
347
  if (parsed.kind === "character") {
346
348
  config.character = rawValue;
@@ -460,7 +462,7 @@ function renderConfig(config, c) {
460
462
  const color = makeColors(c.color);
461
463
  const s = makeSymbols(c);
462
464
  const out = [];
463
- out.push(`${s.branch} \uC8FC \uC5B8\uC5B4 ${config.mainLanguage || "(\uC5C6\uC74C)"}`);
465
+ out.push(`${s.branch} \uC8FC \uC5B8\uC5B4 ${config.mainLanguage.join(", ") || "(\uC5C6\uC74C)"}`);
464
466
  out.push(`${s.branch} \uC131\uACA9 ${config.character || "(\uC5C6\uC74C)"}`);
465
467
  out.push(`${s.branch} \uC5D4\uC9C4 ${config.engineVersion}`);
466
468
  out.push("");
@@ -513,19 +515,34 @@ ${screens.verify}
513
515
  async function editMainLanguage(rl, config, projectRoot, c) {
514
516
  const screens = buildScreens(projectRoot, true, c);
515
517
  process.stdout.write(`
516
- \uD604\uC7AC \uC124\uC815: ${config.mainLanguage || "(\uC5C6\uC74C)"}
518
+ \uD604\uC7AC \uC124\uC815: ${config.mainLanguage.join(", ") || "(\uC5C6\uC74C)"}
517
519
  `);
518
520
  process.stdout.write(`${screens.lang}
519
521
  `);
520
- const curIdx = LANG_VALUES.indexOf(config.mainLanguage);
521
- const idx = await promptNumber(rl, curIdx >= 0 ? curIdx : 0, LANG_OPTIONS.length);
522
- let value = LANG_VALUES[idx] ?? "";
523
- if (idx === LANG_OPTIONS.length - 1) {
524
- value = (await ask(rl, " \uC8FC \uC5B8\uC5B4\uB97C \uC785\uB825\uD558\uC138\uC694: ")).trim();
522
+ const curIndices = config.mainLanguage.map((lang) => LANG_VALUES.indexOf(lang)).filter((i) => i >= 0);
523
+ const checked = await selectMulti(
524
+ rl,
525
+ LANG_OPTIONS,
526
+ curIndices.length > 0 ? curIndices : [0],
527
+ c,
528
+ false,
529
+ "\uC8FC \uC5B8\uC5B4"
530
+ );
531
+ const manualIdx = LANG_OPTIONS.length - 1;
532
+ const values = checked.filter((i) => i !== manualIdx).map((i) => LANG_VALUES[i]).filter((v) => typeof v === "string" && v !== "");
533
+ if (checked.includes(manualIdx)) {
534
+ const typed = (await ask(rl, " \uC8FC \uC5B8\uC5B4\uB97C \uC785\uB825\uD558\uC138\uC694: ")).trim();
535
+ if (typed) {
536
+ values.push(typed);
537
+ }
525
538
  }
526
- const outcome = await applyConfigValue(config, projectRoot, { kind: "mainLanguage" }, value, {
527
- force: false
528
- });
539
+ const outcome = await applyConfigValue(
540
+ config,
541
+ projectRoot,
542
+ { kind: "mainLanguage" },
543
+ values.join(","),
544
+ { force: false }
545
+ );
529
546
  process.stdout.write(` ${outcome.message}
530
547
  `);
531
548
  }
@@ -621,7 +638,7 @@ function renderSettableKeys(config, c) {
621
638
  const color = makeColors(c.color);
622
639
  const currentOf = (key) => {
623
640
  if (key === "project") return config.project;
624
- if (key === "mainLanguage") return config.mainLanguage || "(\uC5C6\uC74C)";
641
+ if (key === "mainLanguage") return config.mainLanguage.join(", ") || "(\uC5C6\uC74C)";
625
642
  if (key === "character") return config.character || "(\uC5C6\uC74C)";
626
643
  const m = /^verify\.(typecheck|lint|test|e2e)\.(cmd|cwd|env)$/.exec(key);
627
644
  if (!m?.[1] || !m[2]) return "";
@@ -2,14 +2,14 @@ import {
2
2
  acquireLock,
3
3
  loadGotchaList,
4
4
  releaseLock
5
- } from "./chunk-DR7OZZ4N.js";
5
+ } from "./chunk-ILXQGAUE.js";
6
6
  import {
7
7
  caps,
8
8
  makeColors,
9
9
  rulesDir,
10
10
  sectionBox,
11
11
  signal
12
- } from "./chunk-M4H4VNN6.js";
12
+ } from "./chunk-45X7T64Y.js";
13
13
 
14
14
  // src/commands/rules.ts
15
15
  import { spawnSync } from "child_process";
@@ -2,18 +2,18 @@ import {
2
2
  getCriterion,
3
3
  loadState,
4
4
  writeState
5
- } from "./chunk-UB4RLTLJ.js";
5
+ } from "./chunk-7WE2E76P.js";
6
6
  import {
7
7
  resolveProjectRoot,
8
8
  run
9
- } from "./chunk-CLWQEWEG.js";
9
+ } from "./chunk-RAMHRXFX.js";
10
10
  import {
11
11
  caps,
12
12
  makeColors,
13
13
  recordsDir,
14
14
  sectionBox,
15
15
  signal
16
- } from "./chunk-M4H4VNN6.js";
16
+ } from "./chunk-45X7T64Y.js";
17
17
 
18
18
  // src/commands/record.ts
19
19
  import crypto from "crypto";
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  protectedFilesMessage
3
- } from "./chunk-KJG2ULS4.js";
3
+ } from "./chunk-WZCIAGNJ.js";
4
4
  import {
5
5
  gitDirtyFiles
6
- } from "./chunk-J7EKKHVW.js";
6
+ } from "./chunk-FOTWJOWF.js";
7
7
  import {
8
8
  applyVerificationAttempts,
9
9
  loadState,
10
10
  writeState
11
- } from "./chunk-UB4RLTLJ.js";
11
+ } from "./chunk-7WE2E76P.js";
12
12
  import {
13
13
  CommandNotFoundError,
14
14
  VERIFY_ORDER,
15
15
  requireConfig,
16
16
  run
17
- } from "./chunk-CLWQEWEG.js";
17
+ } from "./chunk-RAMHRXFX.js";
18
18
  import {
19
19
  caps,
20
20
  makeColors,
21
21
  sectionBox,
22
22
  signal
23
- } from "./chunk-M4H4VNN6.js";
23
+ } from "./chunk-45X7T64Y.js";
24
24
 
25
25
  // src/commands/verify.ts
26
26
  import fs from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  run
3
- } from "./chunk-CLWQEWEG.js";
3
+ } from "./chunk-RAMHRXFX.js";
4
4
 
5
5
  // src/core/protected-files.ts
6
6
  async function changedProtectedFiles(projectRoot, protectedFiles) {
package/dist/cli.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  computeUpdateAvailable,
4
4
  readCachedLatestVersion,
5
5
  version
6
- } from "./chunk-MCNUMMKK.js";
6
+ } from "./chunk-7WDDWO2B.js";
7
7
  import {
8
8
  caps,
9
9
  gradient,
@@ -14,7 +14,7 @@ import {
14
14
  sectionBox,
15
15
  signal,
16
16
  visibleWidth
17
- } from "./chunk-M4H4VNN6.js";
17
+ } from "./chunk-45X7T64Y.js";
18
18
 
19
19
  // src/program.ts
20
20
  import { Command } from "commander";
@@ -76,9 +76,12 @@ function renderBanner(c = caps()) {
76
76
  const copy = copyLines[i] ?? "";
77
77
  return `${mark}${" ".repeat(Math.max(0, markWidth - visibleWidth(mark)) + 4)}${copy}`.trimEnd();
78
78
  }).join("\n");
79
+ const color = makeColors(c.color);
79
80
  return `${header}
80
81
 
81
- ${renderGettingStartedCard(c)}`;
82
+ ${renderGettingStartedCard(c)}
83
+
84
+ ${color.dim("\uC608\uC2DC\uB294 awl --examples \uB85C \uBD05\uB2C8\uB2E4.")}`;
82
85
  }
83
86
  function versionString(c = caps()) {
84
87
  const color = makeColors(c.color);
@@ -146,21 +149,16 @@ function parseWorkitemsOption(input) {
146
149
  function buildProgram() {
147
150
  const program = new Command();
148
151
  program.name("awl").version(versionString(), "-v, --version", "\uBC84\uC804\uC744 \uCD9C\uB825\uD569\uB2C8\uB2E4").helpOption("-h, --help", "\uB3C4\uC6C0\uB9D0\uC744 \uCD9C\uB825\uD569\uB2C8\uB2E4").addHelpText("beforeAll", (ctx) => ctx.command === program ? `${renderBanner()}
149
- ` : "").addHelpText(
150
- "afterAll",
151
- (ctx) => ctx.command === program ? `
152
- ${renderExamplesCard(caps())}
153
- ` : ""
154
- ).showHelpAfterError();
152
+ ` : "").option("--examples", "\uC790\uC8FC \uC4F0\uB294 \uBA85\uB839 \uC608\uC2DC\uB97C \uBCF4\uC5EC\uC90D\uB2C8\uB2E4").showHelpAfterError();
155
153
  program.command("init").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0 Agent Work Loop \uB97C \uC124\uC815\uD569\uB2C8\uB2E4").option("--yes", "\uC9C8\uBB38 \uC5C6\uC774 \uC790\uB3D9 \uAC10\uC9C0\uB41C \uAC12\uC73C\uB85C \uC9C4\uD589\uD569\uB2C8\uB2E4 (\uBE44\uB300\uD654\uD615)").action(async (opts) => {
156
- const { runInit } = await import("./init-PTTYGP2D.js");
154
+ const { runInit } = await import("./init-XUJTEY2Y.js");
157
155
  await runInit({ yes: opts.yes === true });
158
156
  });
159
157
  program.command("status").description("\uC9C0\uAE08 \uC5B4\uB514\uAE4C\uC9C0 \uC654\uB294\uC9C0 \uD55C\uB208\uC5D0 \uBD05\uB2C8\uB2E4").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").option("--pipeline", ".tasks \uB808\uC778(plan/exec/review)\uC758 workitem \uC0C1\uD0DC\uB97C \uBC30\uC9C0\uB85C \uBD05\uB2C8\uB2E4").option(
160
158
  "--archive",
161
159
  "(--pipeline\uACFC \uD568\uAED8) \uC720\uC608 \uAE30\uAC04(3\uC77C) \uC9C0\uB09C \uC644\uB8CC workitem\uC744 .tasks/archive/ \uB85C \uBCF4\uAD00\uD569\uB2C8\uB2E4"
162
160
  ).action(async (opts) => {
163
- const { runStatus } = await import("./status-NGSQ4XK3.js");
161
+ const { runStatus } = await import("./status-7SBNSHTV.js");
164
162
  await runStatus({
165
163
  json: opts.json === true,
166
164
  pipeline: opts.pipeline === true,
@@ -168,24 +166,29 @@ ${renderExamplesCard(caps())}
168
166
  });
169
167
  });
170
168
  program.command("brief").description("KST \uC624\uB298(\uB610\uB294 --date)\uC758 \uC9C4\uD589\uBD84\uC744 \uBAA8\uC544 \uB0C5\uB2C8\uB2E4(\uC2A4\uD0AC \uC18C\uBE44\uC6A9 --json)").option("--today", "\uC624\uB298(KST) \uAE30\uC900\uC73C\uB85C \uBAA8\uC74D\uB2C8\uB2E4(\uAE30\uBCF8)").option("--date <YYYY-MM-DD>", "KST \uAE30\uC900 \uD2B9\uC815 \uB0A0\uC9DC\uB85C \uBAA8\uC74D\uB2C8\uB2E4").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
171
- const { runBrief } = await import("./brief-TQND6XIK.js");
169
+ const { runBrief } = await import("./brief-O6IGLOPY.js");
172
170
  await runBrief({ today: opts.today === true, date: opts.date, json: opts.json === true });
173
171
  });
174
172
  program.command("doctor").description("\uC124\uCE58\uC640 \uD658\uACBD\uC744 \uC810\uAC80\uD569\uB2C8\uB2E4 (\uC544\uBB34\uAC83\uB3C4 \uACE0\uCE58\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4)").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
175
- const { runDoctor } = await import("./doctor-HZEAQNY7.js");
173
+ const { runDoctor } = await import("./doctor-IAK57PIS.js");
176
174
  await runDoctor({ json: opts.json === true });
177
175
  });
178
176
  program.command("version-check").description("\uBC84\uC804 \uBD88\uC77C\uCE58\uB97C \uAC80\uC0AC\uD569\uB2C8\uB2E4 (package/engine/\uD504\uB85C\uC81D\uD2B8/\uC2A4\uD0AC)").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
179
- const { runVersionCheck } = await import("./version-check-7XE232L3.js");
177
+ const { runVersionCheck } = await import("./version-check-3NVRLYUF.js");
180
178
  await runVersionCheck({ json: opts.json === true });
181
179
  });
182
- program.command("update").description("\uC124\uCE58\uB41C \uC5D4\uC9C4(~/.awl/engine)\uC744 \uAC31\uC2E0\uD569\uB2C8\uB2E4").action(async () => {
183
- const { runUpdate } = await import("./update-GA6I4AMF.js");
184
- runUpdate();
180
+ program.command("update").description(
181
+ "\uC124\uCE58\uB41C \uC5D4\uC9C4(~/.awl/engine)\uC744 \uAC31\uC2E0\uD569\uB2C8\uB2E4 (\uAE30\uBCF8\uC740 \uC804\uC5ED\uB9CC, --local/--all \uB85C \uD504\uB85C\uC81D\uD2B8\uAE4C\uC9C0)"
182
+ ).option("-g, --global", "\uC804\uC5ED \uC5D4\uC9C4(~/.awl/engine)\uB9CC \uAC31\uC2E0\uD569\uB2C8\uB2E4 (\uAE30\uBCF8\uAC12)").option(
183
+ "-l, --local",
184
+ "\uB4F1\uB85D\uB41C \uD504\uB85C\uC81D\uD2B8 \uC804\uBD80\uC758 \uB85C\uCEEC \uC2A4\uD0AC\uC744 \uC9C0\uAE08 \uC124\uCE58\uB41C \uC5D4\uC9C4\uC5D0 \uB9DE\uCDB0 \uC7AC\uB3D9\uAE30\uD654\uD569\uB2C8\uB2E4"
185
+ ).option("-a, --all", "\uC804\uC5ED\uACFC \uB4F1\uB85D\uB41C \uD504\uB85C\uC81D\uD2B8 \uB85C\uCEEC\uC744 \uBAA8\uB450 \uAC31\uC2E0\uD569\uB2C8\uB2E4").action(async (opts) => {
186
+ const { runUpdate } = await import("./update-WHHGVXIY.js");
187
+ runUpdate(opts);
185
188
  });
186
189
  program.command("uninstall").description("awl \uC774 \uC190\uB304 \uD754\uC801\uC744 \uC9C0\uC6C1\uB2C8\uB2E4 (\uAE30\uBCF8\uC740 \uB4DC\uB77C\uC774\uB7F0 \u2014 --yes \uC5C6\uC774\uB294 \uC0AD\uC81C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4)").option("--yes", "\uC2E4\uC81C\uB85C \uC0AD\uC81C\uD569\uB2C8\uB2E4 (\uAE30\uBCF8\uC740 \uB4DC\uB77C\uC774\uB7F0)").option("--project", "\uC774 \uD504\uB85C\uC81D\uD2B8 \uB85C\uCEEC\uB9CC \uC815\uB9AC\uD569\uB2C8\uB2E4 (\uAE30\uBCF8\uAC12)").option("--global", "\uC804\uC5ED(~/.awl)\uB9CC \uC815\uB9AC\uD569\uB2C8\uB2E4 \u2014 \uB2E4\uB978 \uD504\uB85C\uC81D\uD2B8\uC758 \uD559\uC2B5\uB3C4 \uD568\uAED8 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4").option("--all", "\uD504\uB85C\uC81D\uD2B8 \uB85C\uCEEC + \uC804\uC5ED\uC744 \uBAA8\uB450 \uC815\uB9AC\uD569\uB2C8\uB2E4").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(
187
190
  async (opts) => {
188
- const { runUninstall } = await import("./uninstall-JECZJNRJ.js");
191
+ const { runUninstall } = await import("./uninstall-Q6KJYH5E.js");
189
192
  await runUninstall({
190
193
  yes: opts.yes === true,
191
194
  project: opts.project === true,
@@ -197,22 +200,22 @@ ${renderExamplesCard(caps())}
197
200
  );
198
201
  const config = program.command("config").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uC124\uC815\uC744 \uBD05\uB2C8\uB2E4 (TTY \uBA74 \uC218\uC815\uB3C4)");
199
202
  config.action(async () => {
200
- const { runConfig } = await import("./config-XMM3V7MT.js");
203
+ const { runConfig } = await import("./config-D7LUIZYA.js");
201
204
  await runConfig();
202
205
  });
203
206
  config.command("set [key] [value]").description("\uC124\uC815 \uAC12\uC744 \uBC14\uAFC9\uB2C8\uB2E4 (\uD0A4 \uC0DD\uB7B5 \uC2DC \uBAA9\uB85D, cmd \uB294 \uC2E4\uC81C\uB85C \uC2E4\uD589\uD574 \uBD05\uB2C8\uB2E4)").option("--force", "\uAC80\uC99D\uC5D0 \uC2E4\uD328\uD574\uB3C4 \uC800\uC7A5\uD569\uB2C8\uB2E4").action(
204
207
  async (key, value, opts) => {
205
- const { runConfigSet } = await import("./config-XMM3V7MT.js");
208
+ const { runConfigSet } = await import("./config-D7LUIZYA.js");
206
209
  await runConfigSet(key, value, { force: opts.force === true });
207
210
  }
208
211
  );
209
212
  const work = program.command("work").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uC6CC\uD06C\uC544\uC774\uD15C\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4");
210
213
  work.option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
211
- const { runWorkList } = await import("./work-3SONYYYB.js");
214
+ const { runWorkList } = await import("./work-EVYCDIPE.js");
212
215
  runWorkList({ json: opts.json === true });
213
216
  });
214
217
  work.command("list").description("\uB4F1\uB85D\uB41C \uC6CC\uD06C\uC544\uC774\uD15C \uBAA9\uB85D\uACFC \uC9C4\uD589 \uC0C1\uD669\uC744 \uBD05\uB2C8\uB2E4").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
215
- const { runWorkList } = await import("./work-3SONYYYB.js");
218
+ const { runWorkList } = await import("./work-EVYCDIPE.js");
216
219
  runWorkList({ json: opts.json === true });
217
220
  });
218
221
  work.command("new <id> [description]").description("\uC0C8 \uC6CC\uD06C\uC544\uC774\uD15C\uC744 \uB9CC\uB4E4\uACE0 \uC804\uD658\uD569\uB2C8\uB2E4 (\uD604\uC7AC \uC6CC\uD06C\uC544\uC774\uD15C\uC740 \uBCF4\uAD00\uB429\uB2C8\uB2E4)").option("--worktree [branch]", "\uACA9\uB9AC\uB41C git worktree \uB97C \uB9CC\uB4E4\uC5B4 \uADF8 \uC548\uC5D0\uC11C \uC2DC\uC791\uD569\uB2C8\uB2E4").option("--skip-baseline", "\uAC80\uC99D \uBCA0\uC774\uC2A4\uB77C\uC778 \uCEA1\uCC98\uB97C \uAC74\uB108\uB701\uB2C8\uB2E4 (\uB290\uB9B0 \uD504\uB85C\uC81D\uD2B8\uC6A9)").option(
@@ -220,7 +223,7 @@ ${renderExamplesCard(caps())}
220
223
  "records(~/.awl)\uB97C \uC774 \uC6CC\uD06C\uC544\uC774\uD15C \uC804\uC6A9 AWL_HOME \uC73C\uB85C \uACA9\uB9AC\uD569\uB2C8\uB2E4 (\uBCD1\uB82C \uC138\uC158\uC6A9)"
221
224
  ).option("--experiment <json>", '\uC2E4\uD5D8 \uCF00\uC774\uC2A4 \uBA54\uD0C0 JSON (\uC608: {"model":"lite","mode":"loop"})').action(
222
225
  async (id, description, opts) => {
223
- const { runWorkNew } = await import("./work-3SONYYYB.js");
226
+ const { runWorkNew } = await import("./work-EVYCDIPE.js");
224
227
  const parsedExp = parseExperimentOption(opts.experiment);
225
228
  if (!parsedExp.ok) {
226
229
  process.stderr.write(`
@@ -232,52 +235,52 @@ ${renderExamplesCard(caps())}
232
235
  }
233
236
  );
234
237
  work.command("switch <id>").description("\uB2E4\uB978 \uC6CC\uD06C\uC544\uC774\uD15C\uC73C\uB85C \uC804\uD658\uD569\uB2C8\uB2E4 (\uD604\uC7AC \uC6CC\uD06C\uC544\uC774\uD15C\uC740 \uBCF4\uAD00\uB429\uB2C8\uB2E4)").action(async (id) => {
235
- const { runWorkSwitch } = await import("./work-3SONYYYB.js");
238
+ const { runWorkSwitch } = await import("./work-EVYCDIPE.js");
236
239
  await runWorkSwitch(id);
237
240
  });
238
241
  work.command("abandon <id>").description("\uC6CC\uD06C\uC544\uC774\uD15C\uC744 \uC911\uB2E8 \uCC98\uB9AC\uD569\uB2C8\uB2E4 (\uC0AD\uC81C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4, \uAE30\uB85D\uC740 \uB0A8\uC2B5\uB2C8\uB2E4)").action(async (id) => {
239
- const { runWorkAbandon } = await import("./work-3SONYYYB.js");
242
+ const { runWorkAbandon } = await import("./work-EVYCDIPE.js");
240
243
  runWorkAbandon(id);
241
244
  });
242
245
  work.command("done <id>").description(
243
246
  "\uC644\uB8CC\uB41C \uC6CC\uD06C\uC544\uC774\uD15C\uC744 \uC815\uB9AC\uD569\uB2C8\uB2E4 (\uC6CC\uD06C\uD2B8\uB9AC \uC81C\uAC70 + \uC0C1\uD0DC \uC2A4\uB0C5\uC0F7 \uD68C\uC218, \uAE30\uB85D\uC740 \uB0A8\uC2B5\uB2C8\uB2E4)"
244
247
  ).option("--force", "\uC815\uB9AC\uB418\uC9C0 \uC54A\uC740 \uBCC0\uACBD\uC774 \uC788\uC5B4\uB3C4 \uC6CC\uD06C\uD2B8\uB9AC\uB97C \uC81C\uAC70\uD569\uB2C8\uB2E4").action(async (id, opts) => {
245
- const { runWorkDone } = await import("./work-3SONYYYB.js");
248
+ const { runWorkDone } = await import("./work-EVYCDIPE.js");
246
249
  await runWorkDone(id, { force: opts.force === true });
247
250
  });
248
251
  const lane = program.command("lane").description("\uACA9\uB9AC \uB808\uC778(worktree)\uC73C\uB85C \uD30C\uC774\uD504\uB77C\uC778\uC744 \uBCD1\uB82C \uC2E4\uD589\uD569\uB2C8\uB2E4 (\uB808\uC778 \uC0DD\uC131\xB7\uC870\uD68C\xB7\uC815\uB9AC)");
249
252
  lane.option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
250
- const { runLaneList } = await import("./lane-WINQEOEW.js");
253
+ const { runLaneList } = await import("./lane-OZ5WGGDT.js");
251
254
  await runLaneList({ json: opts.json === true });
252
255
  });
253
256
  lane.command("new <name> [description]").description("\uACA9\uB9AC \uB808\uC778\uC744 \uB9CC\uB4ED\uB2C8\uB2E4 (worktree + \uC804\uC6A9 AWL_HOME + \uC2A4\uD0AC \uC7AC\uC124\uCE58 + \uAE30\uB3D9 \uC548\uB0B4)").action(async (name, description) => {
254
- const { runLaneNew } = await import("./lane-WINQEOEW.js");
257
+ const { runLaneNew } = await import("./lane-OZ5WGGDT.js");
255
258
  await runLaneNew(name, description);
256
259
  });
257
260
  lane.command("ls").description("\uD604\uC874 \uB808\uC778\uC744 \uC774\uB984\xB7\uACBD\uB85C\xB7\uBE0C\uB79C\uCE58\uC640 \uD568\uAED8 \uB098\uC5F4\uD569\uB2C8\uB2E4").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
258
- const { runLaneList } = await import("./lane-WINQEOEW.js");
261
+ const { runLaneList } = await import("./lane-OZ5WGGDT.js");
259
262
  await runLaneList({ json: opts.json === true });
260
263
  });
261
264
  lane.command("rm <name>").description("\uB808\uC778\uC758 \uC6CC\uD06C\uD2B8\uB9AC\uB97C \uD68C\uC218\uD558\uACE0 \uB514\uB809\uD1A0\uB9AC\uB97C \uC81C\uAC70\uD569\uB2C8\uB2E4").option("--force", "\uCEE4\uBC0B\uB418\uC9C0 \uC54A\uC740 \uBCC0\uACBD\uC774 \uC788\uC5B4\uB3C4 \uC81C\uAC70\uD569\uB2C8\uB2E4").action(async (name, opts) => {
262
- const { runLaneRemove } = await import("./lane-WINQEOEW.js");
265
+ const { runLaneRemove } = await import("./lane-OZ5WGGDT.js");
263
266
  await runLaneRemove(name, { force: opts.force === true });
264
267
  });
265
268
  program.command("records").description("\uC313\uC778 \uAE30\uB85D\uC744 \uBD05\uB2C8\uB2E4").option("--type <type>", "\uD0C0\uC785\uC73C\uB85C \uAC70\uB985\uB2C8\uB2E4 (attempt, blocked \uB4F1)").option("--workitem <id>", "\uC6CC\uD06C\uC544\uC774\uD15C\uC73C\uB85C \uAC70\uB985\uB2C8\uB2E4").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
266
- const { runRecords } = await import("./record-CKR6G6UZ.js");
269
+ const { runRecords } = await import("./record-ZNGMMZHF.js");
267
270
  runRecords({ type: opts.type, workitem: opts.workitem, json: opts.json === true });
268
271
  });
269
272
  const rules = program.command("rules").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC801\uC6A9\uB418\uB294 \uADDC\uCE59\uC744 \uBD05\uB2C8\uB2E4").enablePositionalOptions();
270
273
  rules.option("--scope <scope>", "\uBC94\uC704\uB85C \uAC70\uB985\uB2C8\uB2E4 (implement \uB4F1)").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
271
- const { runRules } = await import("./rules-E52GU3GA.js");
274
+ const { runRules } = await import("./rules-GVDXKROQ.js");
272
275
  runRules({ scope: opts.scope, json: opts.json === true });
273
276
  });
274
277
  rules.command("edit").description("$EDITOR \uB85C \uADDC\uCE59 \uD30C\uC77C\uC744 \uC5FD\uB2C8\uB2E4").action(async () => {
275
- const { runRules } = await import("./rules-E52GU3GA.js");
278
+ const { runRules } = await import("./rules-GVDXKROQ.js");
276
279
  runRules({ edit: true });
277
280
  });
278
281
  rules.command("promote <gotchaId>").description("\uAD50\uD6C8\uC744 \uADDC\uCE59\uC73C\uB85C \uC2B9\uACA9\uD569\uB2C8\uB2E4 (applies/counter \uD544\uC218, \uC0AC\uB78C\uC774 \uC2E4\uD589)").option("--applies <cond>", "\uC801\uC6A9 \uC870\uAC74 (\uD544\uC218)").option("--counter <cond>", "\uBC18\uC99D \uC870\uAC74 (\uD544\uC218)").option("--rule-scope <scope>", "\uB85C\uB4DC \uB2E8\uACC4 (audit/criteria/implement/commit/review)").action(
279
282
  async (gotchaId, opts) => {
280
- const { runRulesPromote } = await import("./rules-E52GU3GA.js");
283
+ const { runRulesPromote } = await import("./rules-GVDXKROQ.js");
281
284
  runRulesPromote(gotchaId, {
282
285
  applies: opts.applies,
283
286
  counter: opts.counter,
@@ -286,16 +289,16 @@ ${renderExamplesCard(caps())}
286
289
  }
287
290
  );
288
291
  program.command("gotchas").description("\uC544\uC9C1 \uADDC\uCE59\uC774 \uB418\uC9C0 \uC54A\uC740 \uD568\uC815\uC744 \uBD05\uB2C8\uB2E4").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
289
- const { runGotchas } = await import("./gotchas-QJBUVYJV.js");
292
+ const { runGotchas } = await import("./gotchas-DM7BXF77.js");
290
293
  runGotchas({ json: opts.json === true });
291
294
  });
292
295
  program.command("metrics").description("\uC6CC\uD06C\uC544\uC774\uD15C(\uC138\uB300)\uBCC4 \uD504\uB85D\uC2DC \uC9C0\uD45C \uCD94\uC138\uB97C \uBD05\uB2C8\uB2E4 (\uD1A0\uD070 \uC9C1\uC811 \uCE21\uC815 \uC544\uB2D8)").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").option("--compare", "\uC2E4\uD5D8 \uCF00\uC774\uC2A4(experiment model/mode/taskType)\uBCC4\uB85C \uC9C0\uD45C\uB97C \uBE44\uAD50\uD569\uB2C8\uB2E4").action(async (opts) => {
293
- const { runMetrics } = await import("./metrics-BC7ZUCGU.js");
296
+ const { runMetrics } = await import("./metrics-F3YDMURU.js");
294
297
  runMetrics({ json: opts.json === true, compare: opts.compare === true });
295
298
  });
296
299
  program.command("loop-summary").description("\uB8E8\uD504/\uD30C\uC774\uD504\uB77C\uC778 \uC644\uB8CC\uB97C 4\uB80C\uC988(\uAC1C\uC785\xB7\uD488\uC9C8\xB7\uD6A8\uC728\xB7\uC0B0\uCD9C)\uB85C \uC694\uC57D\uD569\uB2C8\uB2E4").option("--workitem <id>", "\uB300\uC0C1 \uC6CC\uD06C\uC544\uC774\uD15C (\uAE30\uBCF8: \uD604\uC7AC)").option("--workitems <ids>", "\uBC30\uCE58 \uBAA8\uB4DC: \uCF64\uB9C8\uB85C \uAD6C\uBD84\uD55C \uC6CC\uD06C\uC544\uC774\uD15C \uBAA9\uB85D").option("--since <iso>", "\uBC30\uCE58 \uBAA8\uB4DC: \uC774 \uC2DC\uAC01(ISO) \uC774\uD6C4 \uC644\uB8CC\uB41C \uC6CC\uD06C\uC544\uC774\uD15C \uC804\uBD80").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(
297
300
  async (opts) => {
298
- const { runLoopSummary } = await import("./loop-summary-OSYJB57M.js");
301
+ const { runLoopSummary } = await import("./loop-summary-7HMFHKUD.js");
299
302
  runLoopSummary({
300
303
  workitem: opts.workitem,
301
304
  workitems: parseWorkitemsOption(opts.workitems),
@@ -305,7 +308,7 @@ ${renderExamplesCard(caps())}
305
308
  }
306
309
  );
307
310
  program.command("feedback").description("awl \uB3C4\uAD6C \uC790\uCCB4 \uD53C\uB4DC\uBC31\uC744 area \uBCC4\uB85C \uBB36\uC5B4 \uBD05\uB2C8\uB2E4 (\uD574\uBC95\uC740 \uC81C\uC2DC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4)").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").option("--area <area>", "area \uB85C \uAC70\uB985\uB2C8\uB2E4 (commit, gate, verify \uB4F1)").option("--severity <sev>", "severity \uB85C \uAC70\uB985\uB2C8\uB2E4 (high/medium/low)").option("--since <date>", "\uC774 ISO \uB0A0\uC9DC \uC774\uD6C4 \uC218\uC9D1\uBD84\uB9CC \uBD05\uB2C8\uB2E4 (\uC608: 2026-07-01)").action(async (opts) => {
308
- const { runFeedback } = await import("./feedback-4FT67LSI.js");
311
+ const { runFeedback } = await import("./feedback-RT63F57C.js");
309
312
  runFeedback({
310
313
  json: opts.json === true,
311
314
  area: opts.area,
@@ -314,12 +317,12 @@ ${renderExamplesCard(caps())}
314
317
  });
315
318
  });
316
319
  program.command("changelog").description("Gate 2 \uC2B9\uC778 \uB4A4 CHANGELOG.md\uC5D0 \uC62E\uAE38 \uCD08\uC548\uC744 \uB9CC\uB4ED\uB2C8\uB2E4 (\uD30C\uC77C\uC740 \uC4F0\uC9C0 \uC54A\uC74C)").option("--workitem <id>", "\uB300\uC0C1 \uC6CC\uD06C\uC544\uC774\uD15C (\uAE30\uBCF8: \uD604\uC7AC)").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
317
- const { runChangelogDraft } = await import("./changelog-J4LP6ZJI.js");
320
+ const { runChangelogDraft } = await import("./changelog-4XKSWJX2.js");
318
321
  runChangelogDraft({ workitem: opts.workitem, json: opts.json === true });
319
322
  });
320
323
  program.command("commit <criterion>").description("\uC644\uB8CC \uC870\uAC74 \uC791\uC5C5\uC744 \uACA9\uB9AC \uCEE4\uBC0B\uD569\uB2C8\uB2E4 (\uB0B4 \uBCC0\uACBD\uB9CC)").option("--start", "\uBCA0\uC774\uC2A4\uB77C\uC778\uC744 \uC7A1\uC2B5\uB2C8\uB2E4 (\uC791\uC5C5 \uC2DC\uC791 \uC2DC)").option("-m, --message <msg>", "\uCEE4\uBC0B \uBA54\uC2DC\uC9C0").option("--base <ref>", "\uBCA0\uC774\uC2A4 \uB4DC\uB9AC\uD504\uD2B8\uB97C \uD655\uC778\uD560 \uAE30\uC900 \uBE0C\uB79C\uCE58").option("--force", "\uBCF4\uD638 \uD30C\uC77C \uBCC0\uACBD \uAC80\uC0AC\uB97C \uC0AC\uB78C\uC774 \uD655\uC778\uD558\uACE0 \uC6B0\uD68C\uD569\uB2C8\uB2E4").action(
321
324
  async (criterion, opts) => {
322
- const { runCommit } = await import("./commit-2WWILQRB.js");
325
+ const { runCommit } = await import("./commit-2UFIIERX.js");
323
326
  await runCommit(criterion, {
324
327
  start: opts.start,
325
328
  message: opts.message,
@@ -329,12 +332,12 @@ ${renderExamplesCard(caps())}
329
332
  }
330
333
  );
331
334
  program.command("review <range>").description("\uB9AC\uBDF0\uC5B4\uC5D0\uAC8C \uB118\uAE38 \uC790\uB8CC\uB97C \uC870\uB9BD\uD569\uB2C8\uB2E4 (provenance \uD3EC\uD568)").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").option("--base <ref>", "diff \uAE30\uC900 (\uAE30\uBCF8\uC740 \uC644\uB8CC \uC870\uAC74 baseline)").action(async (range, opts) => {
332
- const { runReview } = await import("./review-UJH6C7F4.js");
335
+ const { runReview } = await import("./review-R5I4KYFN.js");
333
336
  await runReview(range, { json: opts.json === true, base: opts.base });
334
337
  });
335
338
  program.command("record <type>", { hidden: true }).description("\uAD6C\uC870\uD654\uB41C \uAE30\uB85D\uC744 \uB0A8\uAE41\uB2C8\uB2E4").option("--json <data>", "\uAE30\uB85D\uD560 \uB370\uC774\uD130 (JSON \uBB38\uC790\uC5F4)").option("--file <path>", "\uB370\uC774\uD130 \uD30C\uC77C \uACBD\uB85C (\uD070 \uB370\uC774\uD130\uC6A9)").option("--diff", "git diff \uB97C \uCEA1\uCC98\uD574 \uCCA8\uBD80\uD569\uB2C8\uB2E4 (blocked)").option("--workitem <id>", "\uC774 \uAE30\uB85D\uB9CC \uB2E4\uB978 \uC6CC\uD06C\uC544\uC774\uD15C\uC73C\uB85C \uB0A8\uAE41\uB2C8\uB2E4(\uAE30\uBCF8\uC740 \uD604\uC7AC \uC6CC\uD06C\uC544\uC774\uD15C)").action(
336
339
  async (type, opts) => {
337
- const { runRecord } = await import("./record-CKR6G6UZ.js");
340
+ const { runRecord } = await import("./record-ZNGMMZHF.js");
338
341
  await runRecord(type, {
339
342
  json: opts.json,
340
343
  file: opts.file,
@@ -348,7 +351,7 @@ ${renderExamplesCard(caps())}
348
351
  "\uBCC0\uACBD\uB41C \uD30C\uC77C\uC5D0 \uAD00\uB828\uB41C \uD14C\uC2A4\uD2B8\uB9CC \uC2E4\uD589\uD569\uB2C8\uB2E4(relatedCmd \uD544\uC694, \uC5C6\uC73C\uBA74 \uC804\uCCB4 \uD14C\uC2A4\uD2B8\uB85C \uD3F4\uBC31)"
349
352
  ).action(
350
353
  async (opts) => {
351
- const { runVerify } = await import("./verify-KKQ2OQMO.js");
354
+ const { runVerify } = await import("./verify-ZBDWID5U.js");
352
355
  await runVerify({
353
356
  json: opts.json === true,
354
357
  bail: opts.bail === true,
@@ -359,17 +362,17 @@ ${renderExamplesCard(caps())}
359
362
  }
360
363
  );
361
364
  program.command("hold-recheck", { hidden: true }).description(".tasks/plan \uC758 \uC758\uC874\uD615 hold \uB97C \uC7AC\uC810\uAC80\uD574 \uCC29\uC9C0+\uD569\uACA9\uD55C \uC758\uC874\uC774\uBA74 \uC790\uB3D9 un-hold \uD569\uB2C8\uB2E4").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
362
- const { runHoldRecheck } = await import("./hold-recheck-L3DAS3MV.js");
365
+ const { runHoldRecheck } = await import("./hold-recheck-I6JMGTP6.js");
363
366
  await runHoldRecheck({ json: opts.json === true });
364
367
  });
365
368
  const state = program.command("state", { hidden: true }).description("\uB8E8\uD504 \uC0C1\uD0DC\uB97C \uC77D\uACE0 \uC501\uB2C8\uB2E4");
366
369
  state.command("get").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
367
- const { runStateGet } = await import("./state-X7DLLBOD.js");
370
+ const { runStateGet } = await import("./state-B45D6VSF.js");
368
371
  runStateGet({ json: opts.json === true });
369
372
  });
370
373
  state.command("set").requiredOption("--json <patch>", "\uBD80\uBD84 \uAC31\uC2E0 (JSON \uBB38\uC790\uC5F4)").action(async (opts) => {
371
- const { runStateSet } = await import("./state-X7DLLBOD.js");
372
- const { hasApprovedGate1 } = await import("./record-CKR6G6UZ.js");
374
+ const { runStateSet } = await import("./state-B45D6VSF.js");
375
+ const { hasApprovedGate1 } = await import("./record-ZNGMMZHF.js");
373
376
  runStateSet(opts.json, {
374
377
  // phase:'loop' 로의 전이는 이 워크아이템에 "승인된" 게이트1 레코드가 있을
375
378
  // 때만 허용한다(0.6.3, 적대검증 발견). 예전엔 gate:1 레코드의 존재만 봐서
@@ -380,7 +383,7 @@ ${renderExamplesCard(caps())}
380
383
  });
381
384
  program.command("evolve", { hidden: true }).description("\uAE30\uB85D\uC744 \uBAA8\uC544 \uAD50\uD6C8\uC73C\uB85C, \uAD50\uD6C8\uC744 \uADDC\uCE59\uC73C\uB85C \uC787\uC2B5\uB2C8\uB2E4").option("--collect", "\uC774\uBC88 \uC6CC\uD06C\uC544\uC774\uD15C\uC758 \uAE30\uB85D\uC744 \uBAA8\uC544 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").option("--record", "\uAD50\uD6C8\uC744 gotchas \uC5D0 \uAE30\uB85D\uD569\uB2C8\uB2E4 (--json \uC73C\uB85C \uB370\uC774\uD130)").option("--json [data]", "collect: \uCD9C\uB825 \uD50C\uB798\uADF8 / record: \uAD50\uD6C8 \uB370\uC774\uD130(JSON \uBB38\uC790\uC5F4)").option("--workitem <wi>", "\uC6CC\uD06C\uC544\uC774\uD15C\uC73C\uB85C \uAC70\uB985\uB2C8\uB2E4 (--collect)").option("--from <YYYY-MM>", "\uAE30\uAC04 \uC2DC\uC791 \uC6D4\uB85C \uC77D\uAE30\uB97C \uC881\uD799\uB2C8\uB2E4 (--collect, \uC5C6\uC73C\uBA74 \uC804\uB7C9)").option("--to <YYYY-MM>", "\uAE30\uAC04 \uB05D \uC6D4 (--collect)").action(
382
385
  async (opts) => {
383
- const m = await import("./evolve-EQ3N6F6M.js");
386
+ const m = await import("./evolve-RMKOBGSK.js");
384
387
  if (opts.collect && opts.record) {
385
388
  process.stderr.write("\n --collect \uC640 --record \uB294 \uB3D9\uC2DC\uC5D0 \uC4F8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n");
386
389
  process.exit(1);
@@ -399,10 +402,15 @@ ${renderExamplesCard(caps())}
399
402
  }
400
403
  );
401
404
  program.command("defer-summary", { hidden: true }).description("\uBCF4\uB958\uD55C \uC911\uC694 \uD56D\uBAA9(\uC0AC\uB78C \uCD5C\uC885 \uD655\uC778 \uD56D\uBAA9)\uC744 \uCD5C\uC885 \uC694\uC57D\uD569\uB2C8\uB2E4").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").option("--workitem <wi>", "\uC6CC\uD06C\uC544\uC774\uD15C \uC9C0\uC815(\uC5C6\uC73C\uBA74 \uD604\uC7AC)").action(async (opts) => {
402
- const m = await import("./record-CKR6G6UZ.js");
405
+ const m = await import("./record-ZNGMMZHF.js");
403
406
  m.runDeferSummary({ json: opts.json === true, workitem: opts.workitem });
404
407
  });
405
- program.action((_opts, command) => {
408
+ program.action((opts, command) => {
409
+ if (opts.examples) {
410
+ process.stdout.write(`${renderExamplesCard(caps())}
411
+ `);
412
+ return;
413
+ }
406
414
  const [first, second] = command.args;
407
415
  if (first === void 0) {
408
416
  program.help();
@@ -1,28 +1,28 @@
1
1
  import {
2
2
  protectedFilesMessage
3
- } from "./chunk-KJG2ULS4.js";
3
+ } from "./chunk-WZCIAGNJ.js";
4
4
  import {
5
5
  hasApprovedGate1
6
- } from "./chunk-JXFQHNHV.js";
6
+ } from "./chunk-TTLFDLK6.js";
7
7
  import {
8
8
  getCriterion,
9
9
  loadState,
10
10
  setCriterion,
11
11
  writeState
12
- } from "./chunk-UB4RLTLJ.js";
12
+ } from "./chunk-7WE2E76P.js";
13
13
  import {
14
14
  loadConfig,
15
15
  resolveProjectRoot,
16
16
  run
17
- } from "./chunk-CLWQEWEG.js";
18
- import "./chunk-PIOV3MQT.js";
17
+ } from "./chunk-RAMHRXFX.js";
18
+ import "./chunk-AYFHV27J.js";
19
19
  import {
20
20
  caps,
21
21
  feedback,
22
22
  makeColors,
23
23
  makeTokens,
24
24
  signal
25
- } from "./chunk-M4H4VNN6.js";
25
+ } from "./chunk-45X7T64Y.js";
26
26
 
27
27
  // src/commands/commit.ts
28
28
  import fs from "fs";
@@ -13,9 +13,9 @@ import {
13
13
  runConfig,
14
14
  runConfigSet,
15
15
  validateConfig
16
- } from "./chunk-CLWQEWEG.js";
17
- import "./chunk-PIOV3MQT.js";
18
- import "./chunk-M4H4VNN6.js";
16
+ } from "./chunk-RAMHRXFX.js";
17
+ import "./chunk-AYFHV27J.js";
18
+ import "./chunk-45X7T64Y.js";
19
19
  export {
20
20
  KNOWN_LANGUAGES,
21
21
  KNOWN_NAMING_CONVENTIONS,