agent-work-loop 0.6.26 → 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 +28 -0
  2. package/dist/{brief-JIXESFMO.js → brief-O6IGLOPY.js} +5 -5
  3. package/dist/{changelog-PBF6JBOC.js → changelog-4XKSWJX2.js} +5 -5
  4. package/dist/{chunk-PUI2B27T.js → chunk-3CR74VLL.js} +111 -14
  5. package/dist/{chunk-YODF2HTK.js → chunk-45X7T64Y.js} +12 -37
  6. package/dist/{chunk-F34MITMC.js → chunk-7WDDWO2B.js} +3 -3
  7. package/dist/{chunk-XD4IDIEM.js → chunk-7WE2E76P.js} +6 -6
  8. package/dist/{chunk-2YWYGWCZ.js → chunk-AYFHV27J.js} +70 -32
  9. package/dist/{chunk-JDCW2Y2G.js → chunk-FJKJTXN4.js} +7 -7
  10. package/dist/{chunk-NXH5EBBJ.js → chunk-FOTWJOWF.js} +8 -8
  11. package/dist/{chunk-OPPRCJT2.js → chunk-FUP7DKT3.js} +7 -7
  12. package/dist/{chunk-AMQFBJCO.js → chunk-IEFYCUWX.js} +18 -8
  13. package/dist/{chunk-SQFGUNTY.js → chunk-ILXQGAUE.js} +5 -5
  14. package/dist/{chunk-KEVDO3C3.js → chunk-R4LFOY5M.js} +9 -9
  15. package/dist/{chunk-B6AEYNF3.js → chunk-RAMHRXFX.js} +40 -23
  16. package/dist/{chunk-PLHEP5QE.js → chunk-RXG6BUQ6.js} +5 -5
  17. package/dist/{chunk-6DXZYTDA.js → chunk-TTLFDLK6.js} +6 -6
  18. package/dist/{chunk-XQ7JJXBY.js → chunk-VX23A4FW.js} +7 -7
  19. package/dist/{chunk-FQLRA2YC.js → chunk-WZCIAGNJ.js} +1 -1
  20. package/dist/cli.js +61 -53
  21. package/dist/{commit-OUZNLCNL.js → commit-2UFIIERX.js} +6 -6
  22. package/dist/{config-26FHYODU.js → config-D7LUIZYA.js} +3 -3
  23. package/dist/{doctor-UHUA6ULF.js → doctor-IAK57PIS.js} +8 -8
  24. package/dist/{evolve-V5BQCSHC.js → evolve-RMKOBGSK.js} +7 -7
  25. package/dist/{feedback-UJ7WSARN.js → feedback-RT63F57C.js} +8 -8
  26. package/dist/{gotchas-L3NXDDDI.js → gotchas-DM7BXF77.js} +11 -11
  27. package/dist/{hold-recheck-QINLKCPM.js → hold-recheck-I6JMGTP6.js} +18 -18
  28. package/dist/{init-6R4MT6FQ.js → init-XUJTEY2Y.js} +6 -2
  29. package/dist/lane-OZ5WGGDT.js +41 -0
  30. package/dist/{loop-summary-FVJICIWA.js → loop-summary-7HMFHKUD.js} +10 -10
  31. package/dist/{metrics-NVJFKQ4J.js → metrics-F3YDMURU.js} +4 -4
  32. package/dist/{record-JJJSGU5E.js → record-ZNGMMZHF.js} +5 -5
  33. package/dist/{review-I4QMZPTI.js → review-R5I4KYFN.js} +16 -16
  34. package/dist/{rules-OTUONMXO.js → rules-GVDXKROQ.js} +8 -8
  35. package/dist/{state-UC45ECTI.js → state-B45D6VSF.js} +4 -4
  36. package/dist/status-7SBNSHTV.js +40 -0
  37. package/dist/{uninstall-HHKLOXF5.js → uninstall-Q6KJYH5E.js} +17 -17
  38. package/dist/update-WHHGVXIY.js +135 -0
  39. package/dist/{verify-A64P77RU.js → verify-ZBDWID5U.js} +10 -10
  40. package/dist/version-check-3NVRLYUF.js +14 -0
  41. package/dist/{work-LMM5W2PQ.js → work-EVYCDIPE.js} +14 -14
  42. package/engine/version.json +1 -1
  43. package/package.json +1 -1
  44. package/dist/lane-CJVXEV3A.js +0 -41
  45. package/dist/status-TU36KJDH.js +0 -40
  46. package/dist/update-BXRWE7OH.js +0 -61
  47. package/dist/version-check-UBXBVPTS.js +0 -14
package/dist/cli.js CHANGED
@@ -3,18 +3,18 @@ import {
3
3
  computeUpdateAvailable,
4
4
  readCachedLatestVersion,
5
5
  version
6
- } from "./chunk-F34MITMC.js";
6
+ } from "./chunk-7WDDWO2B.js";
7
7
  import {
8
8
  caps,
9
- card,
10
9
  gradient,
11
10
  installedEngineVersion,
12
11
  makeColors,
13
12
  makeSymbols,
14
13
  makeTokens,
14
+ sectionBox,
15
15
  signal,
16
16
  visibleWidth
17
- } from "./chunk-YODF2HTK.js";
17
+ } from "./chunk-45X7T64Y.js";
18
18
 
19
19
  // src/program.ts
20
20
  import { Command } from "commander";
@@ -38,7 +38,7 @@ function renderGettingStartedCard(c) {
38
38
  const lines = GETTING_STARTED.map(
39
39
  (g, i) => `${i + 1}. ${t.accent(padVisible(g.cmd, cmdWidth))} ${g.desc}`
40
40
  );
41
- return card("\uC2DC\uC791\uD558\uAE30", lines, c);
41
+ return sectionBox("\uC2DC\uC791\uD558\uAE30", lines, c);
42
42
  }
43
43
  function renderExamplesCard(c) {
44
44
  const t = makeTokens(c);
@@ -52,7 +52,7 @@ function renderExamplesCard(c) {
52
52
  const lines = examples.map(
53
53
  (e) => `${t.accent(padVisible(e.cmd, cmdWidth))} ${t.muted(`# ${e.note}`)}`
54
54
  );
55
- return card("\uC608\uC2DC", lines, c);
55
+ return sectionBox("\uC608\uC2DC", lines, c);
56
56
  }
57
57
  var DENSE_AWL = `
58
58
  \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557
@@ -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-6R4MT6FQ.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-TU36KJDH.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-JIXESFMO.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-UHUA6ULF.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-UBXBVPTS.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-BXRWE7OH.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-HHKLOXF5.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-26FHYODU.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-26FHYODU.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-LMM5W2PQ.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-LMM5W2PQ.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-LMM5W2PQ.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-LMM5W2PQ.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-LMM5W2PQ.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-LMM5W2PQ.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-CJVXEV3A.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-CJVXEV3A.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-CJVXEV3A.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-CJVXEV3A.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-JJJSGU5E.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-OTUONMXO.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-OTUONMXO.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-OTUONMXO.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-L3NXDDDI.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-NVJFKQ4J.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-FVJICIWA.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-UJ7WSARN.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-PBF6JBOC.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-OUZNLCNL.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-I4QMZPTI.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-JJJSGU5E.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-A64P77RU.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-QINLKCPM.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-UC45ECTI.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-UC45ECTI.js");
372
- const { hasApprovedGate1 } = await import("./record-JJJSGU5E.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-V5BQCSHC.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-JJJSGU5E.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-FQLRA2YC.js";
3
+ } from "./chunk-WZCIAGNJ.js";
4
4
  import {
5
5
  hasApprovedGate1
6
- } from "./chunk-6DXZYTDA.js";
6
+ } from "./chunk-TTLFDLK6.js";
7
7
  import {
8
8
  getCriterion,
9
9
  loadState,
10
10
  setCriterion,
11
11
  writeState
12
- } from "./chunk-XD4IDIEM.js";
12
+ } from "./chunk-7WE2E76P.js";
13
13
  import {
14
14
  loadConfig,
15
15
  resolveProjectRoot,
16
16
  run
17
- } from "./chunk-B6AEYNF3.js";
18
- import "./chunk-2YWYGWCZ.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-YODF2HTK.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-B6AEYNF3.js";
17
- import "./chunk-2YWYGWCZ.js";
18
- import "./chunk-YODF2HTK.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,
@@ -8,14 +8,14 @@ import {
8
8
  gitHasCommits,
9
9
  renderText,
10
10
  runDoctor
11
- } from "./chunk-NXH5EBBJ.js";
12
- import "./chunk-JDCW2Y2G.js";
13
- import "./chunk-F34MITMC.js";
14
- import "./chunk-6DXZYTDA.js";
15
- import "./chunk-XD4IDIEM.js";
16
- import "./chunk-B6AEYNF3.js";
17
- import "./chunk-2YWYGWCZ.js";
18
- import "./chunk-YODF2HTK.js";
11
+ } from "./chunk-FOTWJOWF.js";
12
+ import "./chunk-FJKJTXN4.js";
13
+ import "./chunk-7WDDWO2B.js";
14
+ import "./chunk-TTLFDLK6.js";
15
+ import "./chunk-7WE2E76P.js";
16
+ import "./chunk-RAMHRXFX.js";
17
+ import "./chunk-AYFHV27J.js";
18
+ import "./chunk-45X7T64Y.js";
19
19
  export {
20
20
  collectChecks,
21
21
  computeFileSizeOutliers,
@@ -13,13 +13,13 @@ import {
13
13
  runEvolveCollect,
14
14
  runEvolveRecord,
15
15
  writeGeneration
16
- } from "./chunk-SQFGUNTY.js";
17
- import "./chunk-OPPRCJT2.js";
18
- import "./chunk-6DXZYTDA.js";
19
- import "./chunk-XD4IDIEM.js";
20
- import "./chunk-B6AEYNF3.js";
21
- import "./chunk-2YWYGWCZ.js";
22
- import "./chunk-YODF2HTK.js";
16
+ } from "./chunk-ILXQGAUE.js";
17
+ import "./chunk-FUP7DKT3.js";
18
+ import "./chunk-TTLFDLK6.js";
19
+ import "./chunk-7WE2E76P.js";
20
+ import "./chunk-RAMHRXFX.js";
21
+ import "./chunk-AYFHV27J.js";
22
+ import "./chunk-45X7T64Y.js";
23
23
  export {
24
24
  GOTCHA_RELATION_TYPES,
25
25
  acquireLock,
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  readRecords
3
- } from "./chunk-6DXZYTDA.js";
4
- import "./chunk-XD4IDIEM.js";
5
- import "./chunk-B6AEYNF3.js";
6
- import "./chunk-2YWYGWCZ.js";
3
+ } from "./chunk-TTLFDLK6.js";
4
+ import "./chunk-7WE2E76P.js";
5
+ import "./chunk-RAMHRXFX.js";
6
+ import "./chunk-AYFHV27J.js";
7
7
  import {
8
8
  caps,
9
- card,
10
9
  makeColors,
10
+ sectionBox,
11
11
  signal
12
- } from "./chunk-YODF2HTK.js";
12
+ } from "./chunk-45X7T64Y.js";
13
13
 
14
14
  // src/commands/feedback.ts
15
15
  var SEVERITY_RANK = { high: 0, medium: 1, low: 2 };
@@ -64,7 +64,7 @@ function renderFeedback(report, c) {
64
64
  const color = makeColors(c.color);
65
65
  const entries = Object.entries(report.areas).sort(([, a], [, b]) => b.count - a.count);
66
66
  if (entries.length === 0) {
67
- return card(
67
+ return sectionBox(
68
68
  "awl \uC790\uCCB4 \uD53C\uB4DC\uBC31",
69
69
  [
70
70
  "\uC544\uC9C1 \uC218\uC9D1\uB41C awl-feedback \uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",
@@ -96,7 +96,7 @@ function renderFeedback(report, c) {
96
96
  )
97
97
  );
98
98
  }
99
- return card(`awl \uC790\uCCB4 \uD53C\uB4DC\uBC31 \xB7 \uC6CC\uD06C\uC544\uC774\uD15C ${report.collectedFrom}\uAC1C\uC5D0\uC11C \uC218\uC9D1`, out, c);
99
+ return sectionBox(`awl \uC790\uCCB4 \uD53C\uB4DC\uBC31 \xB7 \uC6CC\uD06C\uC544\uC774\uD15C ${report.collectedFrom}\uAC1C\uC5D0\uC11C \uC218\uC9D1`, out, c);
100
100
  }
101
101
  function runFeedback(opts) {
102
102
  if (isInvalidSince(opts.since)) {
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  loadGotchaList
3
- } from "./chunk-SQFGUNTY.js";
4
- import "./chunk-OPPRCJT2.js";
5
- import "./chunk-6DXZYTDA.js";
6
- import "./chunk-XD4IDIEM.js";
7
- import "./chunk-B6AEYNF3.js";
8
- import "./chunk-2YWYGWCZ.js";
3
+ } from "./chunk-ILXQGAUE.js";
4
+ import "./chunk-FUP7DKT3.js";
5
+ import "./chunk-TTLFDLK6.js";
6
+ import "./chunk-7WE2E76P.js";
7
+ import "./chunk-RAMHRXFX.js";
8
+ import "./chunk-AYFHV27J.js";
9
9
  import {
10
10
  caps,
11
- card,
12
- makeColors
13
- } from "./chunk-YODF2HTK.js";
11
+ makeColors,
12
+ sectionBox
13
+ } from "./chunk-45X7T64Y.js";
14
14
 
15
15
  // src/commands/gotchas.ts
16
16
  function loadGotchas() {
@@ -19,13 +19,13 @@ function loadGotchas() {
19
19
  function renderGotchas(gotchas, c) {
20
20
  const color = makeColors(c.color);
21
21
  if (gotchas.length === 0) {
22
- return card("\uD568\uC815", ["\uD568\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."], c);
22
+ return sectionBox("\uD568\uC815", ["\uD568\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."], c);
23
23
  }
24
24
  const out = [];
25
25
  for (const g of gotchas) {
26
26
  out.push(`${color.dim("\xB7")} ${g.lesson || "(\uC694\uC57D \uC5C6\uC74C)"}`);
27
27
  }
28
- return card(`\uD568\uC815 ${gotchas.length}\uAC1C \xB7 \uC544\uC9C1 \uADDC\uCE59 \uC544\uB2D8`, out, c);
28
+ return sectionBox(`\uD568\uC815 ${gotchas.length}\uAC1C \xB7 \uC544\uC9C1 \uADDC\uCE59 \uC544\uB2D8`, out, c);
29
29
  }
30
30
  function runGotchas(opts) {
31
31
  const gotchas = loadGotchas();
@@ -1,29 +1,29 @@
1
1
  import {
2
2
  pipelineLanes
3
- } from "./chunk-KEVDO3C3.js";
4
- import "./chunk-AMQFBJCO.js";
5
- import "./chunk-PUI2B27T.js";
3
+ } from "./chunk-R4LFOY5M.js";
4
+ import "./chunk-IEFYCUWX.js";
5
+ import "./chunk-3CR74VLL.js";
6
6
  import "./chunk-D5OINC3G.js";
7
- import "./chunk-XQ7JJXBY.js";
8
- import "./chunk-FQLRA2YC.js";
9
- import "./chunk-NXH5EBBJ.js";
10
- import "./chunk-JDCW2Y2G.js";
11
- import "./chunk-F34MITMC.js";
12
- import "./chunk-PLHEP5QE.js";
13
- import "./chunk-SQFGUNTY.js";
14
- import "./chunk-OPPRCJT2.js";
15
- import "./chunk-6DXZYTDA.js";
16
- import "./chunk-XD4IDIEM.js";
7
+ import "./chunk-VX23A4FW.js";
8
+ import "./chunk-WZCIAGNJ.js";
9
+ import "./chunk-FOTWJOWF.js";
10
+ import "./chunk-FJKJTXN4.js";
11
+ import "./chunk-7WDDWO2B.js";
12
+ import "./chunk-RXG6BUQ6.js";
13
+ import "./chunk-ILXQGAUE.js";
14
+ import "./chunk-FUP7DKT3.js";
15
+ import "./chunk-TTLFDLK6.js";
16
+ import "./chunk-7WE2E76P.js";
17
17
  import {
18
18
  resolveProjectRoot
19
- } from "./chunk-B6AEYNF3.js";
20
- import "./chunk-2YWYGWCZ.js";
19
+ } from "./chunk-RAMHRXFX.js";
20
+ import "./chunk-AYFHV27J.js";
21
21
  import {
22
22
  caps,
23
- card,
24
23
  makeColors,
24
+ sectionBox,
25
25
  signal
26
- } from "./chunk-YODF2HTK.js";
26
+ } from "./chunk-45X7T64Y.js";
27
27
 
28
28
  // src/commands/hold-recheck.ts
29
29
  import fs from "fs";
@@ -123,7 +123,7 @@ async function runHoldRecheck(opts) {
123
123
  const why = k.reason === "no-condition" ? "\uD328\uD134 \uC5C6\uC74C(\uC804\uB7B5\uBB38\uC11C \uB4F1)" : `\uB300\uAE30: ${(k.waitingOn ?? []).join(", ")}`;
124
124
  lines.push(`${signal(c, "warn")} ${color.dim(k.name)} hold \uC720\uC9C0 ${color.dim(`(${why})`)}`);
125
125
  }
126
- process.stdout.write(`${card("hold \uC7AC\uC810\uAC80", lines, c)}
126
+ process.stdout.write(`${sectionBox("hold \uC7AC\uC810\uAC80", lines, c)}
127
127
  `);
128
128
  }
129
129
  export {
@@ -9,6 +9,7 @@ import {
9
9
  claudeSkillLabel,
10
10
  detectAgents,
11
11
  detectLanguage,
12
+ detectLanguages,
12
13
  detectVerify,
13
14
  detectWorkspacePackages,
14
15
  ensureGitignore,
@@ -17,6 +18,7 @@ import {
17
18
  installCodexSkill,
18
19
  installSafetyHook,
19
20
  isGlobalInstalled,
21
+ listRegisteredProjects,
20
22
  nonInteractiveInputs,
21
23
  packageEngineDir,
22
24
  promptNumber,
@@ -38,8 +40,8 @@ import {
38
40
  writeConfig,
39
41
  writeSkillsVersionStamp,
40
42
  writeState
41
- } from "./chunk-2YWYGWCZ.js";
42
- import "./chunk-YODF2HTK.js";
43
+ } from "./chunk-AYFHV27J.js";
44
+ import "./chunk-45X7T64Y.js";
43
45
  export {
44
46
  LANG_OPTIONS,
45
47
  LANG_VALUES,
@@ -51,6 +53,7 @@ export {
51
53
  claudeSkillLabel,
52
54
  detectAgents,
53
55
  detectLanguage,
56
+ detectLanguages,
54
57
  detectVerify,
55
58
  detectWorkspacePackages,
56
59
  ensureGitignore,
@@ -59,6 +62,7 @@ export {
59
62
  installCodexSkill,
60
63
  installSafetyHook,
61
64
  isGlobalInstalled,
65
+ listRegisteredProjects,
62
66
  nonInteractiveInputs,
63
67
  packageEngineDir,
64
68
  promptNumber,