agent-work-loop 0.6.41 → 0.6.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{brief-GQRHGJQN.js → brief-I2EQVY3F.js} +5 -5
- package/dist/{changelog-HZMH3RPD.js → changelog-UBIZQHQO.js} +5 -5
- package/dist/{chunk-OJ7YO3MY.js → chunk-236TTTK3.js} +2 -2
- package/dist/{chunk-XBUKFMNN.js → chunk-2FQ5HCDI.js} +41 -13
- package/dist/{chunk-G6JX5EYW.js → chunk-3LPCP55B.js} +61 -10
- package/dist/{chunk-HFRQCP26.js → chunk-3N3QH4PK.js} +4 -4
- package/dist/{chunk-6F4VAVKF.js → chunk-4BUPV5VU.js} +3 -3
- package/dist/{chunk-B76434VM.js → chunk-DNDODLP2.js} +2 -2
- package/dist/{chunk-SUF5ISJM.js → chunk-FGHILN3D.js} +9 -1
- package/dist/{chunk-4ZLARTXS.js → chunk-GYXIREXZ.js} +47 -3
- package/dist/{chunk-NOU677FX.js → chunk-K2JV27JR.js} +1 -1
- package/dist/{chunk-OWILAE4M.js → chunk-L4VWHK4D.js} +53 -39
- package/dist/{chunk-2XQZQP7Z.js → chunk-LBZNBCAY.js} +6 -7
- package/dist/{chunk-CSBKWYFK.js → chunk-O7PUNJVM.js} +5 -5
- package/dist/{chunk-7TMAQRJS.js → chunk-SJG22DAK.js} +27 -6
- package/dist/{chunk-FKBBGXGF.js → chunk-SKJZSRVR.js} +5 -5
- package/dist/{chunk-7D4T7HFK.js → chunk-SNWJWX5K.js} +126 -6
- package/dist/{chunk-UNANHUG3.js → chunk-WOH6WML7.js} +2 -2
- package/dist/cli.js +53 -43
- package/dist/{commit-SU6CTBU3.js → commit-I5ULIUHW.js} +6 -6
- package/dist/{config-Z4G5SBWJ.js → config-6VD46H24.js} +9 -3
- package/dist/{doctor-GHWUUAWV.js → doctor-QQLQOP3Y.js} +8 -8
- package/dist/{evolve-SQJ5LIE4.js → evolve-MXGX33GB.js} +7 -7
- package/dist/{feedback-TPITVUZL.js → feedback-K3P6667T.js} +5 -5
- package/dist/{gotchas-UEZG3HVO.js → gotchas-HF5Q2MOA.js} +7 -7
- package/dist/{hold-recheck-STHUHCOU.js → hold-recheck-CBSGGRBM.js} +6 -17
- package/dist/{init-AVVD77XM.js → init-3B4ZRGWY.js} +2 -2
- package/dist/lane-BJ2NJYAH.js +39 -0
- package/dist/{loop-summary-L4UTUOPY.js → loop-summary-RZQBTKVY.js} +49 -7
- package/dist/{metrics-SOYVRSNM.js → metrics-6SZQAG3C.js} +4 -4
- package/dist/{record-V6V5XPPA.js → record-UU4WPT2Z.js} +5 -5
- package/dist/{remove-6VQS4ST6.js → remove-UOAMHEUC.js} +16 -16
- package/dist/{review-42SXUBZE.js → review-DXSGXZLX.js} +15 -15
- package/dist/{rules-ASJFXFGG.js → rules-QDAC6BUX.js} +8 -8
- package/dist/{state-6TNG2EC5.js → state-DZC7JVEK.js} +4 -4
- package/dist/status-ZZEF4NYL.js +29 -0
- package/dist/{update-3AYB3V4I.js → update-CKGPHO5B.js} +2 -2
- package/dist/{verify-ZVZCJ3LH.js → verify-LOTTWOHB.js} +10 -10
- package/dist/version-check-SILVRBMJ.js +14 -0
- package/dist/{work-TVUOH7GQ.js → work-RCV5H7TL.js} +14 -14
- package/engine/skills/claude/awl-loop/SKILL.md +16 -0
- package/engine/skills/claude/awl-loop/reference.md +4 -0
- package/engine/skills/claude/awl-pipeline/SKILL.md +74 -0
- package/engine/skills/claude/awl-pipeline-exec/SKILL.md +8 -1
- package/engine/skills/claude/awl-pipeline-review/SKILL.md +7 -1
- package/engine/version.json +1 -1
- package/package.json +1 -1
- package/dist/lane-JTE45KFF.js +0 -41
- package/dist/status-43UVJLVD.js +0 -40
- package/dist/version-check-OKCLT4BF.js +0 -14
|
@@ -6,12 +6,13 @@ import {
|
|
|
6
6
|
closeFlow,
|
|
7
7
|
detectVerify,
|
|
8
8
|
langScreenLines,
|
|
9
|
+
listRegisteredProjects,
|
|
9
10
|
openFlow,
|
|
10
11
|
promptNumber,
|
|
11
12
|
selectMulti,
|
|
12
13
|
step,
|
|
13
14
|
verifyStepLines
|
|
14
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-SJG22DAK.js";
|
|
15
16
|
import {
|
|
16
17
|
caps,
|
|
17
18
|
findProjectRoot,
|
|
@@ -21,7 +22,7 @@ import {
|
|
|
21
22
|
makeSymbols,
|
|
22
23
|
sectionBox,
|
|
23
24
|
signal
|
|
24
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-FGHILN3D.js";
|
|
25
26
|
|
|
26
27
|
// src/commands/config.ts
|
|
27
28
|
import fs from "fs";
|
|
@@ -120,6 +121,7 @@ function run(spec) {
|
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
// src/commands/config.ts
|
|
124
|
+
var DEFAULT_FEEDBACK_PATH = "/Users/kh1012/MIDAS/Research/agent-work-loop/.tasks/plan/";
|
|
123
125
|
var VERIFY_ORDER = ["typecheck", "lint", "test", "e2e"];
|
|
124
126
|
function resolveProjectRoot(cwd = process.cwd()) {
|
|
125
127
|
try {
|
|
@@ -128,6 +130,29 @@ function resolveProjectRoot(cwd = process.cwd()) {
|
|
|
128
130
|
return null;
|
|
129
131
|
}
|
|
130
132
|
}
|
|
133
|
+
function resolveProjectScope(cwd = process.cwd()) {
|
|
134
|
+
const root = resolveProjectRoot(cwd);
|
|
135
|
+
if (root) {
|
|
136
|
+
return { mode: "single", projectRoot: root };
|
|
137
|
+
}
|
|
138
|
+
const registered = listRegisteredProjects().filter((p) => fs.existsSync(p.path));
|
|
139
|
+
if (registered.length > 0) {
|
|
140
|
+
return { mode: "multi", projects: registered };
|
|
141
|
+
}
|
|
142
|
+
return { mode: "none" };
|
|
143
|
+
}
|
|
144
|
+
function multiProjectFooter(projects, exampleCmd, c) {
|
|
145
|
+
const color = makeColors(c.color);
|
|
146
|
+
const lines = [
|
|
147
|
+
"",
|
|
148
|
+
color.dim(
|
|
149
|
+
`\uD604\uC7AC \uC704\uCE58\uAC00 \uD2B9\uC815 \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC18D\uD558\uC9C0 \uC54A\uC544 \uB4F1\uB85D\uB41C \uD504\uB85C\uC81D\uD2B8 ${projects.length}\uAC1C\uB97C \uBAA8\uB450 \uBCF4\uC5EC\uC90D\uB2C8\uB2E4.`
|
|
150
|
+
),
|
|
151
|
+
color.dim("\uD2B9\uC815 \uD504\uB85C\uC81D\uD2B8\uB9CC \uBCF4\uB824\uBA74:"),
|
|
152
|
+
...projects.map((p) => color.dim(` cd ${p.path} && ${exampleCmd}`))
|
|
153
|
+
];
|
|
154
|
+
return lines.join("\n");
|
|
155
|
+
}
|
|
131
156
|
function isVerifyEntry(v) {
|
|
132
157
|
if (v === null) {
|
|
133
158
|
return true;
|
|
@@ -173,6 +198,19 @@ function validateConfig(obj) {
|
|
|
173
198
|
if ("protectedFiles" in o && (!Array.isArray(o.protectedFiles) || !o.protectedFiles.every((p) => typeof p === "string"))) {
|
|
174
199
|
errors.push("protectedFiles \uD615\uC2DD \uC624\uB958 (\uBB38\uC790\uC5F4 \uBC30\uC5F4)");
|
|
175
200
|
}
|
|
201
|
+
if ("feedback" in o && o.feedback !== void 0) {
|
|
202
|
+
if (typeof o.feedback !== "object" || o.feedback === null) {
|
|
203
|
+
errors.push("feedback \uD615\uC2DD \uC624\uB958 (\uAC1D\uCCB4 \uD544\uC218)");
|
|
204
|
+
} else {
|
|
205
|
+
const fb = o.feedback;
|
|
206
|
+
if (typeof fb.enabled !== "boolean") {
|
|
207
|
+
errors.push("feedback.enabled \uD615\uC2DD \uC624\uB958 (boolean \uD544\uC218)");
|
|
208
|
+
}
|
|
209
|
+
if ("path" in fb && fb.path !== void 0 && typeof fb.path !== "string") {
|
|
210
|
+
errors.push("feedback.path \uD615\uC2DD \uC624\uB958 (\uBB38\uC790\uC5F4)");
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
176
214
|
return errors;
|
|
177
215
|
}
|
|
178
216
|
function jsonErrorLocation(text, err) {
|
|
@@ -219,6 +257,12 @@ function loadConfig(projectRoot) {
|
|
|
219
257
|
...typeof raw.namingConvention === "string" ? { namingConvention: raw.namingConvention } : {},
|
|
220
258
|
...typeof raw.relatedCmd === "string" ? { relatedCmd: raw.relatedCmd } : {},
|
|
221
259
|
...Array.isArray(raw.protectedFiles) ? { protectedFiles: raw.protectedFiles } : {},
|
|
260
|
+
...typeof raw.feedback === "object" && raw.feedback !== null && typeof raw.feedback.enabled === "boolean" ? {
|
|
261
|
+
feedback: {
|
|
262
|
+
enabled: raw.feedback.enabled,
|
|
263
|
+
...typeof raw.feedback.path === "string" ? { path: raw.feedback.path } : {}
|
|
264
|
+
}
|
|
265
|
+
} : {},
|
|
222
266
|
verify: {
|
|
223
267
|
typecheck: rv.typecheck ?? null,
|
|
224
268
|
lint: rv.lint ?? null,
|
|
@@ -276,6 +320,8 @@ var SETTABLE_KEYS = [
|
|
|
276
320
|
"namingConvention",
|
|
277
321
|
"relatedCmd",
|
|
278
322
|
"protectedFiles",
|
|
323
|
+
"feedback.enabled",
|
|
324
|
+
"feedback.path",
|
|
279
325
|
...VERIFY_ORDER.flatMap((n) => [`verify.${n}.cmd`, `verify.${n}.cwd`, `verify.${n}.env`])
|
|
280
326
|
];
|
|
281
327
|
function parseConfigKey(key) {
|
|
@@ -295,6 +341,8 @@ function parseConfigKey(key) {
|
|
|
295
341
|
return { kind: "relatedCmd" };
|
|
296
342
|
}
|
|
297
343
|
if (key === "protectedFiles") return { kind: "protectedFiles" };
|
|
344
|
+
if (key === "feedback.enabled") return { kind: "feedback.enabled" };
|
|
345
|
+
if (key === "feedback.path") return { kind: "feedback.path" };
|
|
298
346
|
const names = VERIFY_ORDER.join("|");
|
|
299
347
|
const cmdMatch = new RegExp(`^verify\\.(${names})(?:\\.cmd)?$`).exec(key);
|
|
300
348
|
if (cmdMatch?.[1]) {
|
|
@@ -399,6 +447,35 @@ async function applyConfigValue(config, projectRoot, parsed, rawValue, opts) {
|
|
|
399
447
|
config.protectedFiles = files;
|
|
400
448
|
return { ok: true, message: `protectedFiles = ${files.join(", ") || "(\uBE44\uC6C0)"}` };
|
|
401
449
|
}
|
|
450
|
+
if (parsed.kind === "feedback.enabled") {
|
|
451
|
+
const v2 = rawValue.trim().toLowerCase();
|
|
452
|
+
const truthy = ["true", "on", "1"];
|
|
453
|
+
const falsy = ["false", "off", "0"];
|
|
454
|
+
if (!truthy.includes(v2) && !falsy.includes(v2)) {
|
|
455
|
+
return {
|
|
456
|
+
ok: false,
|
|
457
|
+
message: `feedback.enabled \uB294 true/false(\uB610\uB294 on/off, 1/0)\uB9CC \uD5C8\uC6A9\uD569\uB2C8\uB2E4: '${rawValue}'`
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
const enabled = truthy.includes(v2);
|
|
461
|
+
config.feedback = { enabled, ...config.feedback?.path ? { path: config.feedback.path } : {} };
|
|
462
|
+
return { ok: true, message: `feedback.enabled = ${enabled}` };
|
|
463
|
+
}
|
|
464
|
+
if (parsed.kind === "feedback.path") {
|
|
465
|
+
const v2 = rawValue.trim();
|
|
466
|
+
if (v2 === "") {
|
|
467
|
+
if (config.feedback) {
|
|
468
|
+
config.feedback.path = void 0;
|
|
469
|
+
}
|
|
470
|
+
return {
|
|
471
|
+
ok: true,
|
|
472
|
+
message: `feedback.path = (\uBE44\uC6C0, \uAE30\uBCF8\uAC12 \uC0AC\uC6A9 \u2014 ${DEFAULT_FEEDBACK_PATH})`
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
const warn = path.isAbsolute(v2) ? "" : "\n\uCC38\uACE0: \uC0C1\uB300\uACBD\uB85C\uC785\uB2C8\uB2E4 \u2014 \uD504\uB85C\uC81D\uD2B8 \uB8E8\uD2B8 \uAE30\uC900\uC73C\uB85C \uD574\uC11D\uB429\uB2C8\uB2E4.";
|
|
476
|
+
config.feedback = { enabled: config.feedback?.enabled ?? false, path: v2 };
|
|
477
|
+
return { ok: true, message: `feedback.path = ${v2}${warn}` };
|
|
478
|
+
}
|
|
402
479
|
const name = parsed.verifyName;
|
|
403
480
|
if (parsed.kind === "verify.cmd") {
|
|
404
481
|
const entry = parseVerifyValue(rawValue);
|
|
@@ -613,8 +690,27 @@ ${flowActiveNode("\uC218\uC815\uD560 \uD56D\uBAA9\uC744 \uACE0\uB974\uC138\uC694
|
|
|
613
690
|
return true;
|
|
614
691
|
}
|
|
615
692
|
async function runConfig() {
|
|
616
|
-
const
|
|
617
|
-
if (
|
|
693
|
+
const scope = resolveProjectScope();
|
|
694
|
+
if (scope.mode === "multi" && scope.projects) {
|
|
695
|
+
const c2 = caps();
|
|
696
|
+
const blocks = scope.projects.map((p) => {
|
|
697
|
+
const color = makeColors(c2.color);
|
|
698
|
+
const loaded2 = loadConfig(p.path);
|
|
699
|
+
const header = color.bold(`\uD504\uB85C\uC81D\uD2B8: ${p.name} (${p.path})`);
|
|
700
|
+
if (!loaded2.config) {
|
|
701
|
+
return `${header}
|
|
702
|
+
${signal(c2, "error")} config.json \uC5D0 \uBB38\uC81C\uAC00 \uC788\uC2B5\uB2C8\uB2E4: ${loaded2.errors.join(", ")}`;
|
|
703
|
+
}
|
|
704
|
+
return `${header}
|
|
705
|
+
${renderConfig(loaded2.config, c2)}`;
|
|
706
|
+
});
|
|
707
|
+
process.stdout.write(`${blocks.join("\n\n")}
|
|
708
|
+
`);
|
|
709
|
+
process.stdout.write(`${multiProjectFooter(scope.projects, "awl config", c2)}
|
|
710
|
+
`);
|
|
711
|
+
return;
|
|
712
|
+
}
|
|
713
|
+
if (scope.mode === "none") {
|
|
618
714
|
process.stderr.write(
|
|
619
715
|
`
|
|
620
716
|
${signal(caps(), "error")} \uD504\uB85C\uC81D\uD2B8 \uB8E8\uD2B8\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. awl init \uC744 \uC2E4\uD589\uD558\uC138\uC694.
|
|
@@ -622,6 +718,7 @@ async function runConfig() {
|
|
|
622
718
|
);
|
|
623
719
|
process.exit(1);
|
|
624
720
|
}
|
|
721
|
+
const projectRoot = scope.projectRoot;
|
|
625
722
|
const loaded = loadConfig(projectRoot);
|
|
626
723
|
if (!loaded.config) {
|
|
627
724
|
process.stderr.write(`
|
|
@@ -660,6 +757,9 @@ function renderSettableKeys(config, c) {
|
|
|
660
757
|
if (key === "project") return config.project;
|
|
661
758
|
if (key === "mainLanguage") return config.mainLanguage.join(", ") || "(\uC5C6\uC74C)";
|
|
662
759
|
if (key === "character") return config.character || "(\uC5C6\uC74C)";
|
|
760
|
+
if (key === "feedback.enabled") return String(config.feedback?.enabled ?? false);
|
|
761
|
+
if (key === "feedback.path")
|
|
762
|
+
return config.feedback?.path || `(\uAE30\uBCF8\uAC12) ${DEFAULT_FEEDBACK_PATH}`;
|
|
663
763
|
const m = /^verify\.(typecheck|lint|test|e2e)\.(cmd|cwd|env)$/.exec(key);
|
|
664
764
|
if (!m?.[1] || !m[2]) return "";
|
|
665
765
|
const entry = config.verify[m[1]];
|
|
@@ -678,8 +778,24 @@ function renderSettableKeys(config, c) {
|
|
|
678
778
|
return out.join("\n");
|
|
679
779
|
}
|
|
680
780
|
async function runConfigSet(key, value, opts) {
|
|
681
|
-
const
|
|
682
|
-
if (
|
|
781
|
+
const scope = resolveProjectScope();
|
|
782
|
+
if (scope.mode === "multi" && scope.projects) {
|
|
783
|
+
const c = caps();
|
|
784
|
+
process.stdout.write(
|
|
785
|
+
`
|
|
786
|
+
${signal(c, "warn")} \uD604\uC7AC \uC704\uCE58\uAC00 \uD2B9\uC815 \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC18D\uD558\uC9C0 \uC54A\uC544 \uC5B4\uB290 \uD504\uB85C\uC81D\uD2B8\uB97C \uBC14\uAFC0\uC9C0 \uC54C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
|
|
787
|
+
`
|
|
788
|
+
);
|
|
789
|
+
process.stdout.write(" \uD574\uB2F9 \uD504\uB85C\uC81D\uD2B8\uB85C \uC774\uB3D9\uD55C \uB4A4 \uB2E4\uC2DC \uC2E4\uD589\uD558\uC138\uC694:\n");
|
|
790
|
+
for (const p of scope.projects) {
|
|
791
|
+
process.stdout.write(
|
|
792
|
+
` cd ${p.path} && awl config set${key ? ` ${key}` : ""}${value ? ` ${value}` : ""}
|
|
793
|
+
`
|
|
794
|
+
);
|
|
795
|
+
}
|
|
796
|
+
return;
|
|
797
|
+
}
|
|
798
|
+
if (scope.mode === "none") {
|
|
683
799
|
process.stderr.write(
|
|
684
800
|
`
|
|
685
801
|
${signal(caps(), "error")} \uD504\uB85C\uC81D\uD2B8 \uB8E8\uD2B8\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. awl init \uC744 \uC2E4\uD589\uD558\uC138\uC694.
|
|
@@ -687,6 +803,7 @@ async function runConfigSet(key, value, opts) {
|
|
|
687
803
|
);
|
|
688
804
|
process.exit(1);
|
|
689
805
|
}
|
|
806
|
+
const projectRoot = scope.projectRoot;
|
|
690
807
|
const loaded = loadConfig(projectRoot);
|
|
691
808
|
if (!loaded.config) {
|
|
692
809
|
process.stderr.write(
|
|
@@ -747,8 +864,11 @@ export {
|
|
|
747
864
|
CommandNotFoundError,
|
|
748
865
|
tokenize,
|
|
749
866
|
run,
|
|
867
|
+
DEFAULT_FEEDBACK_PATH,
|
|
750
868
|
VERIFY_ORDER,
|
|
751
869
|
resolveProjectRoot,
|
|
870
|
+
resolveProjectScope,
|
|
871
|
+
multiProjectFooter,
|
|
752
872
|
validateConfig,
|
|
753
873
|
loadConfig,
|
|
754
874
|
requireConfig,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveProjectRoot
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SNWJWX5K.js";
|
|
4
4
|
import {
|
|
5
5
|
caps,
|
|
6
6
|
makeColors,
|
|
7
7
|
sectionBox
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-FGHILN3D.js";
|
|
9
9
|
|
|
10
10
|
// src/commands/state.ts
|
|
11
11
|
import fs from "fs";
|
package/dist/cli.js
CHANGED
|
@@ -3,9 +3,10 @@ import {
|
|
|
3
3
|
computeUpdateAvailable,
|
|
4
4
|
readCachedLatestVersion,
|
|
5
5
|
version
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DNDODLP2.js";
|
|
7
7
|
import {
|
|
8
8
|
caps,
|
|
9
|
+
engineDir,
|
|
9
10
|
gradient,
|
|
10
11
|
installedEngineVersion,
|
|
11
12
|
makeColors,
|
|
@@ -14,9 +15,10 @@ import {
|
|
|
14
15
|
sectionBox,
|
|
15
16
|
signal,
|
|
16
17
|
visibleWidth
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-FGHILN3D.js";
|
|
18
19
|
|
|
19
20
|
// src/program.ts
|
|
21
|
+
import os from "os";
|
|
20
22
|
import { Command } from "commander";
|
|
21
23
|
var BANNER = `
|
|
22
24
|
[ AGENT WORK LOOP v${version} ]
|
|
@@ -154,11 +156,16 @@ ${renderGettingStartedCard(c)}
|
|
|
154
156
|
|
|
155
157
|
${color.dim("\uC608\uC2DC\uB294 awl --examples \uB85C \uBD05\uB2C8\uB2E4.")}`;
|
|
156
158
|
}
|
|
159
|
+
function displayHomePath(p) {
|
|
160
|
+
const home = os.homedir();
|
|
161
|
+
return p.startsWith(home) ? `~${p.slice(home.length)}` : p;
|
|
162
|
+
}
|
|
157
163
|
function versionString(c = caps()) {
|
|
158
164
|
const color = makeColors(c.color);
|
|
159
165
|
const s = makeSymbols(c);
|
|
160
166
|
const engineVer = installedEngineVersion();
|
|
161
|
-
const
|
|
167
|
+
const enginePath = displayHomePath(engineDir());
|
|
168
|
+
const heading = `awl v${version} ${color.dim("(\uC124\uCE58\uB41C npm \uD328\uD0A4\uC9C0 \uBC84\uC804 \u2014 CLI \uBCF8\uCCB4)")}`;
|
|
162
169
|
let base;
|
|
163
170
|
if (engineVer === null) {
|
|
164
171
|
base = [
|
|
@@ -169,7 +176,10 @@ function versionString(c = caps()) {
|
|
|
169
176
|
` ${color.dim("'awl init'\uC744 \uC2E4\uD589\uD558\uC5EC \uD15C\uD50C\uB9BF\uC744 \uC124\uCE58\uD558\uC138\uC694.")}`
|
|
170
177
|
].join("\n");
|
|
171
178
|
} else {
|
|
172
|
-
const template =
|
|
179
|
+
const template = [
|
|
180
|
+
` ${s.lastBranch} Engine Template: v${engineVer} ${color.dim(`(${enginePath} \uC5D0 \uBCF5\uC0AC\uB41C \uC5D4\uC9C4 \uBC84\uC804)`)}`,
|
|
181
|
+
` ${color.dim("\uD328\uD0A4\uC9C0 \uC124\uCE58 \uD6C4, \uD30C\uC77C \uAD00\uB9AC\uB97C \uC704\uD574 \uC804\uC5ED\uC5D0 \uC5D4\uC9C4 \uD15C\uD50C\uB9BF \uD615\uD0DC\uB85C \uBCF5\uC0AC\uBCF8\uC744 \uB9CC\uB4ED\uB2C8\uB2E4.")}`
|
|
182
|
+
].join("\n");
|
|
173
183
|
if (engineVer === version) {
|
|
174
184
|
base = `${heading}
|
|
175
185
|
${template}`;
|
|
@@ -179,7 +189,7 @@ ${template}`;
|
|
|
179
189
|
template,
|
|
180
190
|
"",
|
|
181
191
|
` ${signal(c, "warn")} \uBC84\uC804 \uBD88\uC77C\uCE58 \uAC10\uC9C0!`,
|
|
182
|
-
|
|
192
|
+
` CLI \uBCF8\uCCB4\uC640 ${enginePath} \uC758 \uC5D4\uC9C4 \uD15C\uD50C\uB9BF \uBC84\uC804\uC774 \uB2E4\uB985\uB2C8\uB2E4.`,
|
|
183
193
|
` ${color.dim("\uD574\uACB0\uD558\uB824\uBA74 awl update \uB85C \uC5D4\uC9C4\uC744 \uAC31\uC2E0\uD558\uC138\uC694.")}`
|
|
184
194
|
].join("\n");
|
|
185
195
|
}
|
|
@@ -222,14 +232,14 @@ function buildProgram() {
|
|
|
222
232
|
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()}
|
|
223
233
|
` : "").option("--examples", "\uC790\uC8FC \uC4F0\uB294 \uBA85\uB839 \uC608\uC2DC\uB97C \uBCF4\uC5EC\uC90D\uB2C8\uB2E4").showHelpAfterError();
|
|
224
234
|
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) => {
|
|
225
|
-
const { runInit } = await import("./init-
|
|
235
|
+
const { runInit } = await import("./init-3B4ZRGWY.js");
|
|
226
236
|
await runInit({ yes: opts.yes === true });
|
|
227
237
|
});
|
|
228
238
|
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(
|
|
229
239
|
"--archive",
|
|
230
240
|
"(--pipeline\uACFC \uD568\uAED8) \uC720\uC608 \uAE30\uAC04(3\uC77C) \uC9C0\uB09C \uC644\uB8CC workitem\uC744 .tasks/archive/ \uB85C \uBCF4\uAD00\uD569\uB2C8\uB2E4"
|
|
231
241
|
).action(async (opts) => {
|
|
232
|
-
const { runStatus } = await import("./status-
|
|
242
|
+
const { runStatus } = await import("./status-ZZEF4NYL.js");
|
|
233
243
|
await runStatus({
|
|
234
244
|
json: opts.json === true,
|
|
235
245
|
pipeline: opts.pipeline === true,
|
|
@@ -237,15 +247,15 @@ function buildProgram() {
|
|
|
237
247
|
});
|
|
238
248
|
});
|
|
239
249
|
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) => {
|
|
240
|
-
const { runBrief } = await import("./brief-
|
|
250
|
+
const { runBrief } = await import("./brief-I2EQVY3F.js");
|
|
241
251
|
await runBrief({ today: opts.today === true, date: opts.date, json: opts.json === true });
|
|
242
252
|
});
|
|
243
253
|
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) => {
|
|
244
|
-
const { runDoctor } = await import("./doctor-
|
|
254
|
+
const { runDoctor } = await import("./doctor-QQLQOP3Y.js");
|
|
245
255
|
await runDoctor({ json: opts.json === true });
|
|
246
256
|
});
|
|
247
257
|
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) => {
|
|
248
|
-
const { runVersionCheck } = await import("./version-check-
|
|
258
|
+
const { runVersionCheck } = await import("./version-check-SILVRBMJ.js");
|
|
249
259
|
await runVersionCheck({ json: opts.json === true });
|
|
250
260
|
});
|
|
251
261
|
program.command("update").description(
|
|
@@ -254,12 +264,12 @@ function buildProgram() {
|
|
|
254
264
|
"-l, --local",
|
|
255
265
|
"\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"
|
|
256
266
|
).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) => {
|
|
257
|
-
const { runUpdate } = await import("./update-
|
|
267
|
+
const { runUpdate } = await import("./update-CKGPHO5B.js");
|
|
258
268
|
runUpdate(opts);
|
|
259
269
|
});
|
|
260
270
|
program.command("remove").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(
|
|
261
271
|
async (opts) => {
|
|
262
|
-
const { runRemove } = await import("./remove-
|
|
272
|
+
const { runRemove } = await import("./remove-UOAMHEUC.js");
|
|
263
273
|
await runRemove({
|
|
264
274
|
yes: opts.yes === true,
|
|
265
275
|
project: opts.project === true,
|
|
@@ -271,22 +281,22 @@ function buildProgram() {
|
|
|
271
281
|
);
|
|
272
282
|
const config = program.command("config").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uC124\uC815\uC744 \uBD05\uB2C8\uB2E4 (TTY \uBA74 \uC218\uC815\uB3C4)");
|
|
273
283
|
config.action(async () => {
|
|
274
|
-
const { runConfig } = await import("./config-
|
|
284
|
+
const { runConfig } = await import("./config-6VD46H24.js");
|
|
275
285
|
await runConfig();
|
|
276
286
|
});
|
|
277
287
|
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(
|
|
278
288
|
async (key, value, opts) => {
|
|
279
|
-
const { runConfigSet } = await import("./config-
|
|
289
|
+
const { runConfigSet } = await import("./config-6VD46H24.js");
|
|
280
290
|
await runConfigSet(key, value, { force: opts.force === true });
|
|
281
291
|
}
|
|
282
292
|
);
|
|
283
293
|
const work = program.command("work").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uC6CC\uD06C\uC544\uC774\uD15C\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4");
|
|
284
294
|
work.option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
|
|
285
|
-
const { runWorkList } = await import("./work-
|
|
295
|
+
const { runWorkList } = await import("./work-RCV5H7TL.js");
|
|
286
296
|
runWorkList({ json: opts.json === true });
|
|
287
297
|
});
|
|
288
298
|
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) => {
|
|
289
|
-
const { runWorkList } = await import("./work-
|
|
299
|
+
const { runWorkList } = await import("./work-RCV5H7TL.js");
|
|
290
300
|
runWorkList({ json: opts.json === true });
|
|
291
301
|
});
|
|
292
302
|
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(
|
|
@@ -294,7 +304,7 @@ function buildProgram() {
|
|
|
294
304
|
"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)"
|
|
295
305
|
).option("--experiment <json>", '\uC2E4\uD5D8 \uCF00\uC774\uC2A4 \uBA54\uD0C0 JSON (\uC608: {"model":"lite","mode":"loop"})').action(
|
|
296
306
|
async (id, description, opts) => {
|
|
297
|
-
const { runWorkNew } = await import("./work-
|
|
307
|
+
const { runWorkNew } = await import("./work-RCV5H7TL.js");
|
|
298
308
|
const parsedExp = parseExperimentOption(opts.experiment);
|
|
299
309
|
if (!parsedExp.ok) {
|
|
300
310
|
process.stderr.write(`
|
|
@@ -306,52 +316,52 @@ function buildProgram() {
|
|
|
306
316
|
}
|
|
307
317
|
);
|
|
308
318
|
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) => {
|
|
309
|
-
const { runWorkSwitch } = await import("./work-
|
|
319
|
+
const { runWorkSwitch } = await import("./work-RCV5H7TL.js");
|
|
310
320
|
await runWorkSwitch(id);
|
|
311
321
|
});
|
|
312
322
|
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) => {
|
|
313
|
-
const { runWorkAbandon } = await import("./work-
|
|
323
|
+
const { runWorkAbandon } = await import("./work-RCV5H7TL.js");
|
|
314
324
|
runWorkAbandon(id);
|
|
315
325
|
});
|
|
316
326
|
work.command("done <id>").description(
|
|
317
327
|
"\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)"
|
|
318
328
|
).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) => {
|
|
319
|
-
const { runWorkDone } = await import("./work-
|
|
329
|
+
const { runWorkDone } = await import("./work-RCV5H7TL.js");
|
|
320
330
|
await runWorkDone(id, { force: opts.force === true });
|
|
321
331
|
});
|
|
322
332
|
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)");
|
|
323
333
|
lane.option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
|
|
324
|
-
const { runLaneList } = await import("./lane-
|
|
334
|
+
const { runLaneList } = await import("./lane-BJ2NJYAH.js");
|
|
325
335
|
await runLaneList({ json: opts.json === true });
|
|
326
336
|
});
|
|
327
337
|
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) => {
|
|
328
|
-
const { runLaneNew } = await import("./lane-
|
|
338
|
+
const { runLaneNew } = await import("./lane-BJ2NJYAH.js");
|
|
329
339
|
await runLaneNew(name, description);
|
|
330
340
|
});
|
|
331
341
|
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) => {
|
|
332
|
-
const { runLaneList } = await import("./lane-
|
|
342
|
+
const { runLaneList } = await import("./lane-BJ2NJYAH.js");
|
|
333
343
|
await runLaneList({ json: opts.json === true });
|
|
334
344
|
});
|
|
335
345
|
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) => {
|
|
336
|
-
const { runLaneRemove } = await import("./lane-
|
|
346
|
+
const { runLaneRemove } = await import("./lane-BJ2NJYAH.js");
|
|
337
347
|
await runLaneRemove(name, { force: opts.force === true });
|
|
338
348
|
});
|
|
339
349
|
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) => {
|
|
340
|
-
const { runRecords } = await import("./record-
|
|
350
|
+
const { runRecords } = await import("./record-UU4WPT2Z.js");
|
|
341
351
|
runRecords({ type: opts.type, workitem: opts.workitem, json: opts.json === true });
|
|
342
352
|
});
|
|
343
353
|
const rules = program.command("rules").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC801\uC6A9\uB418\uB294 \uADDC\uCE59\uC744 \uBD05\uB2C8\uB2E4").enablePositionalOptions();
|
|
344
354
|
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) => {
|
|
345
|
-
const { runRules } = await import("./rules-
|
|
355
|
+
const { runRules } = await import("./rules-QDAC6BUX.js");
|
|
346
356
|
runRules({ scope: opts.scope, json: opts.json === true });
|
|
347
357
|
});
|
|
348
358
|
rules.command("edit").description("$EDITOR \uB85C \uADDC\uCE59 \uD30C\uC77C\uC744 \uC5FD\uB2C8\uB2E4").action(async () => {
|
|
349
|
-
const { runRules } = await import("./rules-
|
|
359
|
+
const { runRules } = await import("./rules-QDAC6BUX.js");
|
|
350
360
|
runRules({ edit: true });
|
|
351
361
|
});
|
|
352
362
|
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(
|
|
353
363
|
async (gotchaId, opts) => {
|
|
354
|
-
const { runRulesPromote } = await import("./rules-
|
|
364
|
+
const { runRulesPromote } = await import("./rules-QDAC6BUX.js");
|
|
355
365
|
runRulesPromote(gotchaId, {
|
|
356
366
|
applies: opts.applies,
|
|
357
367
|
counter: opts.counter,
|
|
@@ -360,16 +370,16 @@ function buildProgram() {
|
|
|
360
370
|
}
|
|
361
371
|
);
|
|
362
372
|
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) => {
|
|
363
|
-
const { runGotchas } = await import("./gotchas-
|
|
373
|
+
const { runGotchas } = await import("./gotchas-HF5Q2MOA.js");
|
|
364
374
|
runGotchas({ json: opts.json === true });
|
|
365
375
|
});
|
|
366
376
|
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) => {
|
|
367
|
-
const { runMetrics } = await import("./metrics-
|
|
377
|
+
const { runMetrics } = await import("./metrics-6SZQAG3C.js");
|
|
368
378
|
runMetrics({ json: opts.json === true, compare: opts.compare === true });
|
|
369
379
|
});
|
|
370
380
|
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(
|
|
371
381
|
async (opts) => {
|
|
372
|
-
const { runLoopSummary } = await import("./loop-summary-
|
|
382
|
+
const { runLoopSummary } = await import("./loop-summary-RZQBTKVY.js");
|
|
373
383
|
runLoopSummary({
|
|
374
384
|
workitem: opts.workitem,
|
|
375
385
|
workitems: parseWorkitemsOption(opts.workitems),
|
|
@@ -379,7 +389,7 @@ function buildProgram() {
|
|
|
379
389
|
}
|
|
380
390
|
);
|
|
381
391
|
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) => {
|
|
382
|
-
const { runFeedback } = await import("./feedback-
|
|
392
|
+
const { runFeedback } = await import("./feedback-K3P6667T.js");
|
|
383
393
|
runFeedback({
|
|
384
394
|
json: opts.json === true,
|
|
385
395
|
area: opts.area,
|
|
@@ -388,12 +398,12 @@ function buildProgram() {
|
|
|
388
398
|
});
|
|
389
399
|
});
|
|
390
400
|
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) => {
|
|
391
|
-
const { runChangelogDraft } = await import("./changelog-
|
|
401
|
+
const { runChangelogDraft } = await import("./changelog-UBIZQHQO.js");
|
|
392
402
|
runChangelogDraft({ workitem: opts.workitem, json: opts.json === true });
|
|
393
403
|
});
|
|
394
404
|
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(
|
|
395
405
|
async (criterion, opts) => {
|
|
396
|
-
const { runCommit } = await import("./commit-
|
|
406
|
+
const { runCommit } = await import("./commit-I5ULIUHW.js");
|
|
397
407
|
await runCommit(criterion, {
|
|
398
408
|
start: opts.start,
|
|
399
409
|
message: opts.message,
|
|
@@ -403,12 +413,12 @@ function buildProgram() {
|
|
|
403
413
|
}
|
|
404
414
|
);
|
|
405
415
|
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) => {
|
|
406
|
-
const { runReview } = await import("./review-
|
|
416
|
+
const { runReview } = await import("./review-DXSGXZLX.js");
|
|
407
417
|
await runReview(range, { json: opts.json === true, base: opts.base });
|
|
408
418
|
});
|
|
409
419
|
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(
|
|
410
420
|
async (type, opts) => {
|
|
411
|
-
const { runRecord } = await import("./record-
|
|
421
|
+
const { runRecord } = await import("./record-UU4WPT2Z.js");
|
|
412
422
|
await runRecord(type, {
|
|
413
423
|
json: opts.json,
|
|
414
424
|
file: opts.file,
|
|
@@ -422,7 +432,7 @@ function buildProgram() {
|
|
|
422
432
|
"\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)"
|
|
423
433
|
).action(
|
|
424
434
|
async (opts) => {
|
|
425
|
-
const { runVerify } = await import("./verify-
|
|
435
|
+
const { runVerify } = await import("./verify-LOTTWOHB.js");
|
|
426
436
|
await runVerify({
|
|
427
437
|
json: opts.json === true,
|
|
428
438
|
bail: opts.bail === true,
|
|
@@ -433,17 +443,17 @@ function buildProgram() {
|
|
|
433
443
|
}
|
|
434
444
|
);
|
|
435
445
|
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) => {
|
|
436
|
-
const { runHoldRecheck } = await import("./hold-recheck-
|
|
446
|
+
const { runHoldRecheck } = await import("./hold-recheck-CBSGGRBM.js");
|
|
437
447
|
await runHoldRecheck({ json: opts.json === true });
|
|
438
448
|
});
|
|
439
449
|
const state = program.command("state", { hidden: true }).description("\uB8E8\uD504 \uC0C1\uD0DC\uB97C \uC77D\uACE0 \uC501\uB2C8\uB2E4");
|
|
440
450
|
state.command("get").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
|
|
441
|
-
const { runStateGet } = await import("./state-
|
|
451
|
+
const { runStateGet } = await import("./state-DZC7JVEK.js");
|
|
442
452
|
runStateGet({ json: opts.json === true });
|
|
443
453
|
});
|
|
444
454
|
state.command("set").requiredOption("--json <patch>", "\uBD80\uBD84 \uAC31\uC2E0 (JSON \uBB38\uC790\uC5F4)").action(async (opts) => {
|
|
445
|
-
const { runStateSet } = await import("./state-
|
|
446
|
-
const { hasApprovedGate1 } = await import("./record-
|
|
455
|
+
const { runStateSet } = await import("./state-DZC7JVEK.js");
|
|
456
|
+
const { hasApprovedGate1 } = await import("./record-UU4WPT2Z.js");
|
|
447
457
|
runStateSet(opts.json, {
|
|
448
458
|
// phase:'loop' 로의 전이는 이 워크아이템에 "승인된" 게이트1 레코드가 있을
|
|
449
459
|
// 때만 허용한다(0.6.3, 적대검증 발견). 예전엔 gate:1 레코드의 존재만 봐서
|
|
@@ -454,7 +464,7 @@ function buildProgram() {
|
|
|
454
464
|
});
|
|
455
465
|
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(
|
|
456
466
|
async (opts) => {
|
|
457
|
-
const m = await import("./evolve-
|
|
467
|
+
const m = await import("./evolve-MXGX33GB.js");
|
|
458
468
|
if (opts.collect && opts.record) {
|
|
459
469
|
process.stderr.write("\n --collect \uC640 --record \uB294 \uB3D9\uC2DC\uC5D0 \uC4F8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n");
|
|
460
470
|
process.exit(1);
|
|
@@ -473,7 +483,7 @@ function buildProgram() {
|
|
|
473
483
|
}
|
|
474
484
|
);
|
|
475
485
|
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) => {
|
|
476
|
-
const m = await import("./record-
|
|
486
|
+
const m = await import("./record-UU4WPT2Z.js");
|
|
477
487
|
m.runDeferSummary({ json: opts.json === true, workitem: opts.workitem });
|
|
478
488
|
});
|
|
479
489
|
program.action((opts, command) => {
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import {
|
|
2
2
|
protectedFilesMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-K2JV27JR.js";
|
|
4
4
|
import {
|
|
5
5
|
hasApprovedGate1
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4BUPV5VU.js";
|
|
7
7
|
import {
|
|
8
8
|
getCriterion,
|
|
9
9
|
loadState,
|
|
10
10
|
setCriterion,
|
|
11
11
|
writeState
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WOH6WML7.js";
|
|
13
13
|
import {
|
|
14
14
|
loadConfig,
|
|
15
15
|
resolveProjectRoot,
|
|
16
16
|
run
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
} from "./chunk-SNWJWX5K.js";
|
|
18
|
+
import "./chunk-SJG22DAK.js";
|
|
19
19
|
import {
|
|
20
20
|
caps,
|
|
21
21
|
feedback,
|
|
22
22
|
makeColors,
|
|
23
23
|
makeTokens,
|
|
24
24
|
signal
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-FGHILN3D.js";
|
|
26
26
|
|
|
27
27
|
// src/commands/commit.ts
|
|
28
28
|
import fs from "fs";
|