agent-work-loop 0.6.44 → 0.6.45
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/README.md +3 -3
- package/dist/{brief-I2EQVY3F.js → brief-SGMFXOY2.js} +3 -3
- package/dist/{changelog-UBIZQHQO.js → changelog-VNJ4EQ74.js} +3 -3
- package/dist/{chunk-DNDODLP2.js → chunk-5MXSJD3C.js} +1 -1
- package/dist/{chunk-L4VWHK4D.js → chunk-DQF7RF37.js} +5 -5
- package/dist/{chunk-236TTTK3.js → chunk-EHJYX57P.js} +1 -1
- package/dist/{chunk-4BUPV5VU.js → chunk-FK3Q7UY2.js} +2 -2
- package/dist/{chunk-3N3QH4PK.js → chunk-HAUTKVB5.js} +2 -2
- package/dist/{chunk-LBZNBCAY.js → chunk-IA32FVBA.js} +4 -4
- package/dist/{chunk-2FQ5HCDI.js → chunk-ISLNBWKV.js} +7 -7
- package/dist/{chunk-GYXIREXZ.js → chunk-IVEV5L7P.js} +1 -1
- package/dist/{chunk-SNWJWX5K.js → chunk-MLTY3EE6.js} +60 -1
- package/dist/{chunk-3LPCP55B.js → chunk-PUINOFOR.js} +3 -3
- package/dist/{chunk-O7PUNJVM.js → chunk-QKKMA2VT.js} +4 -4
- package/dist/{chunk-WOH6WML7.js → chunk-VE2GVNNS.js} +1 -1
- package/dist/{chunk-K2JV27JR.js → chunk-VVZOIFL4.js} +1 -1
- package/dist/{chunk-SKJZSRVR.js → chunk-ZRKOZQKP.js} +4 -4
- package/dist/cli.js +42 -40
- package/dist/{commit-I5ULIUHW.js → commit-GPQATPEA.js} +4 -4
- package/dist/{config-6VD46H24.js → config-QTEKLFZP.js} +1 -1
- package/dist/{doctor-QQLQOP3Y.js → doctor-TMMIO4CE.js} +6 -6
- package/dist/{evolve-MXGX33GB.js → evolve-N3S32P5I.js} +5 -5
- package/dist/{feedback-K3P6667T.js → feedback-log-UCNJ2GVT.js} +9 -9
- package/dist/{gotchas-HF5Q2MOA.js → gotchas-PDG2ZZFQ.js} +5 -5
- package/dist/{hold-recheck-CBSGGRBM.js → hold-recheck-UNAILFN5.js} +4 -4
- package/dist/{lane-BJ2NJYAH.js → lane-24GAVVR6.js} +13 -13
- package/dist/{loop-summary-RZQBTKVY.js → loop-summary-CODZMRUY.js} +4 -4
- package/dist/{metrics-6SZQAG3C.js → metrics-ZR7BPATB.js} +2 -2
- package/dist/{record-UU4WPT2Z.js → record-TSB22DIO.js} +3 -3
- package/dist/{remove-UOAMHEUC.js → remove-J7B32U75.js} +13 -13
- package/dist/{review-DXSGXZLX.js → review-EM5Q2ZJX.js} +11 -11
- package/dist/{rules-QDAC6BUX.js → rules-QLUXNSCN.js} +6 -6
- package/dist/{state-DZC7JVEK.js → state-6IIH7SW2.js} +2 -2
- package/dist/{status-ZZEF4NYL.js → status-2LPWVCHT.js} +4 -4
- package/dist/{verify-LOTTWOHB.js → verify-VWKIBPZD.js} +8 -8
- package/dist/{version-check-SILVRBMJ.js → version-check-3BZXXAQD.js} +3 -3
- package/dist/{work-RCV5H7TL.js → work-PEJN55JB.js} +12 -12
- package/engine/skills/claude/awl-loop/reference.md +1 -1
- package/engine/skills/claude/awl-pipeline/SKILL.md +1 -1
- package/engine/templates/block-publish.mjs +20 -2
- package/engine/templates/pre-push.sample +8 -2
- package/engine/version.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -136,7 +136,7 @@ $ awl init
|
|
|
136
136
|
- **`.awl/config.json`**: 검증 명령과 프로젝트 성격. **커밋하세요.** 팀원이 같이 씁니다.
|
|
137
137
|
- **`.awl/state.json`**: 지금 어느 워크아이템의 어느 단계인지. gitignore 대상입니다.
|
|
138
138
|
- **`.claude/skills/`** 또는 **`AGENTS.md`**: 작업 루프 스킬. 선택한 에이전트에 설치됩니다.
|
|
139
|
-
- **`.git/hooks/pre-push`**:
|
|
139
|
+
- **`.git/hooks/pre-push`**: "push는 사람이 한다"는 규칙을 git 레벨에서도 강제하는 훅. 사람이 실제 터미널에서 직접 치는 `git push`는 그냥 통과합니다(제어 터미널이 잡히는지로 판별). 에이전트가 비대화형으로 실행한 push는 막히고, 이 경우엔 `AWL_ALLOW_PUSH=1 git push`로 명시적으로 통과시켜야 합니다.
|
|
140
140
|
|
|
141
141
|
이제 에이전트(Claude Code / Codex)를 열고 목표를 서술문으로 줍니다.
|
|
142
142
|
|
|
@@ -233,7 +233,7 @@ awl records # 쌓인 기록
|
|
|
233
233
|
awl gotchas # 아직 규칙이 안 된 교훈
|
|
234
234
|
awl rules # 이 프로젝트에 적용되는 규칙
|
|
235
235
|
awl metrics # 워크아이템 세대별 지표 추세
|
|
236
|
-
awl feedback # awl 도구 자체에
|
|
236
|
+
awl feedback-log # awl 도구 자체에 남겨진 피드백 기록 검토
|
|
237
237
|
```
|
|
238
238
|
|
|
239
239
|
---
|
|
@@ -354,7 +354,7 @@ awl work switch <ID> # 보관된 워크아이템으로 전환
|
|
|
354
354
|
정확한 동작입니다. 확신할 수 없으면 커밋하지 않고 사람에게 알리도록 설계했습니다. `git status`/`git diff`로 실제로 무엇이 섞였는지 확인하세요. 완료 조건마다 `awl commit <AC> -m`으로 닫고 넘어가는 습관을 들이세요(`awl commit --start`를 편집보다 먼저 호출하지 않으면 그 편집이 스냅샷에 흡수돼 격리 커밋이 무의미해집니다).
|
|
355
355
|
|
|
356
356
|
**`git push`가 막힌다**
|
|
357
|
-
`awl init`이 심는 pre-push 훅 때문입니다(위 5분 시작 참고).
|
|
357
|
+
`awl init`이 심는 pre-push 훅 때문입니다(위 5분 시작 참고). 실제 터미널에서 사람이 직접 치는 push는 막히지 않습니다 — 막혔다면 비대화형(에이전트, CI, 스크립트)으로 실행된 경우이고, 그때는 `AWL_ALLOW_PUSH=1 git push`를 씁니다.
|
|
358
358
|
|
|
359
359
|
**대형 저장소에서 `awl lane new`/`awl work new --worktree`가 `Could not write new index file`로 실패한다**
|
|
360
360
|
`git worktree add`가 기본 180초 안에 못 끝나 강제 종료됐다는 뜻입니다(대형 모노레포는
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadProjectName,
|
|
3
3
|
readRecords
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
5
5
|
import {
|
|
6
6
|
loadState
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VE2GVNNS.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveProjectRoot,
|
|
10
10
|
run
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MLTY3EE6.js";
|
|
12
12
|
import "./chunk-SJG22DAK.js";
|
|
13
13
|
import "./chunk-FGHILN3D.js";
|
|
14
14
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readRecords
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
4
4
|
import {
|
|
5
5
|
loadState
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VE2GVNNS.js";
|
|
7
7
|
import {
|
|
8
8
|
resolveProjectRoot
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-MLTY3EE6.js";
|
|
10
10
|
import "./chunk-SJG22DAK.js";
|
|
11
11
|
import {
|
|
12
12
|
caps,
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadProjectName,
|
|
3
3
|
readRecords
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
5
5
|
import {
|
|
6
6
|
loadState,
|
|
7
7
|
readStateLock
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VE2GVNNS.js";
|
|
9
9
|
import {
|
|
10
10
|
gatherVersionInputs
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-HAUTKVB5.js";
|
|
12
12
|
import {
|
|
13
13
|
checkVersions
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-5MXSJD3C.js";
|
|
15
15
|
import {
|
|
16
16
|
CommandNotFoundError,
|
|
17
17
|
run,
|
|
18
18
|
tokenize
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-MLTY3EE6.js";
|
|
20
20
|
import {
|
|
21
21
|
listRegisteredProjects
|
|
22
22
|
} from "./chunk-SJG22DAK.js";
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
getCriterion,
|
|
3
3
|
loadState,
|
|
4
4
|
writeState
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VE2GVNNS.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveProjectRoot,
|
|
8
8
|
run
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-MLTY3EE6.js";
|
|
10
10
|
import {
|
|
11
11
|
caps,
|
|
12
12
|
makeColors,
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
getLatestVersionCached,
|
|
4
4
|
name,
|
|
5
5
|
version
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5MXSJD3C.js";
|
|
7
7
|
import {
|
|
8
8
|
resolveProjectRoot
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-MLTY3EE6.js";
|
|
10
10
|
import {
|
|
11
11
|
packageEngineDir,
|
|
12
12
|
skillsVersionPath
|
|
@@ -5,18 +5,18 @@ import {
|
|
|
5
5
|
runWorkNew,
|
|
6
6
|
sanitizeForGit,
|
|
7
7
|
worktreeDirtyTracked
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ISLNBWKV.js";
|
|
9
9
|
import {
|
|
10
10
|
loadProjectName
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
12
12
|
import {
|
|
13
13
|
loadState,
|
|
14
14
|
writeState
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-VE2GVNNS.js";
|
|
16
16
|
import {
|
|
17
17
|
resolveProjectRoot,
|
|
18
18
|
run
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-MLTY3EE6.js";
|
|
20
20
|
import {
|
|
21
21
|
WORKTREES_DIR,
|
|
22
22
|
caps,
|
|
@@ -4,34 +4,34 @@ import {
|
|
|
4
4
|
} from "./chunk-D5OINC3G.js";
|
|
5
5
|
import {
|
|
6
6
|
parseRuleFile
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EHJYX57P.js";
|
|
8
8
|
import {
|
|
9
9
|
nextGotchaId
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ZRKOZQKP.js";
|
|
11
11
|
import {
|
|
12
12
|
buildVerifyBaseline,
|
|
13
13
|
isCheckPassed,
|
|
14
14
|
runVerifyChecks,
|
|
15
15
|
writeVerifyBaseline
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-QKKMA2VT.js";
|
|
17
17
|
import {
|
|
18
18
|
gitBranch
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-DQF7RF37.js";
|
|
20
20
|
import {
|
|
21
21
|
loadProjectName
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
23
23
|
import {
|
|
24
24
|
loadState,
|
|
25
25
|
migrateState,
|
|
26
26
|
writeState
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-VE2GVNNS.js";
|
|
28
28
|
import {
|
|
29
29
|
loadConfig,
|
|
30
30
|
multiProjectFooter,
|
|
31
31
|
resolveProjectRoot,
|
|
32
32
|
resolveProjectScope,
|
|
33
33
|
run
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-MLTY3EE6.js";
|
|
35
35
|
import {
|
|
36
36
|
installClaudeSkill
|
|
37
37
|
} from "./chunk-SJG22DAK.js";
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
openFlow,
|
|
11
11
|
promptNumber,
|
|
12
12
|
selectMulti,
|
|
13
|
+
selectSingle,
|
|
13
14
|
step,
|
|
14
15
|
verifyStepLines
|
|
15
16
|
} from "./chunk-SJG22DAK.js";
|
|
@@ -136,6 +137,9 @@ function resolveProjectScope(cwd = process.cwd()) {
|
|
|
136
137
|
return { mode: "single", projectRoot: root };
|
|
137
138
|
}
|
|
138
139
|
const registered = listRegisteredProjects().filter((p) => fs.existsSync(p.path));
|
|
140
|
+
if (registered.length === 1) {
|
|
141
|
+
return { mode: "single", projectRoot: registered[0]?.path };
|
|
142
|
+
}
|
|
139
143
|
if (registered.length > 0) {
|
|
140
144
|
return { mode: "multi", projects: registered };
|
|
141
145
|
}
|
|
@@ -550,6 +554,11 @@ function renderConfig(config, c) {
|
|
|
550
554
|
out.push(`${s.branch} \uC8FC \uC5B8\uC5B4 ${config.mainLanguage.join(", ") || "(\uC5C6\uC74C)"}`);
|
|
551
555
|
out.push(`${s.branch} \uC131\uACA9 ${config.character || "(\uC5C6\uC74C)"}`);
|
|
552
556
|
out.push(`${s.branch} \uC5D4\uC9C4 ${config.engineVersion}`);
|
|
557
|
+
const feedbackOn = config.feedback?.enabled ?? false;
|
|
558
|
+
out.push(`${s.branch} \uD53C\uB4DC\uBC31 ${feedbackOn ? "\uCF1C\uC9D0" : "\uAEBC\uC9D0"}`);
|
|
559
|
+
out.push(
|
|
560
|
+
`${s.vGuide} ${s.lastBranch} \uACBD\uB85C: ${color.dim(config.feedback?.path || `(\uAE30\uBCF8\uAC12) ${DEFAULT_FEEDBACK_PATH}`)}`
|
|
561
|
+
);
|
|
553
562
|
out.push("");
|
|
554
563
|
for (const k of VERIFY_ORDER) {
|
|
555
564
|
const entry = config.verify[k];
|
|
@@ -573,7 +582,7 @@ function writeConfigFile(projectRoot, config) {
|
|
|
573
582
|
fs.writeFileSync(p, `${JSON.stringify(config, null, 2)}
|
|
574
583
|
`);
|
|
575
584
|
}
|
|
576
|
-
var EDIT_MENU = ["\uADF8\uB300\uB85C \uB454\uB2E4", "\uC8FC \uC5B8\uC5B4", "\uAC80\uC99D \uBA85\uB839\uC5B4", "\uC131\uACA9", "\uD504\uB85C\uC81D\uD2B8 \uC774\uB984"];
|
|
585
|
+
var EDIT_MENU = ["\uADF8\uB300\uB85C \uB454\uB2E4", "\uC8FC \uC5B8\uC5B4", "\uAC80\uC99D \uBA85\uB839\uC5B4", "\uC131\uACA9", "\uD504\uB85C\uC81D\uD2B8 \uC774\uB984", "\uD53C\uB4DC\uBC31 \uBAA8\uB4DC"];
|
|
577
586
|
async function editVerifyCommands(rl, config, projectRoot, c, flow) {
|
|
578
587
|
process.stdout.write(
|
|
579
588
|
`${flowConnector(c)}
|
|
@@ -663,6 +672,54 @@ async function editProjectName(rl, config, projectRoot, c, flow) {
|
|
|
663
672
|
});
|
|
664
673
|
step(flow, outcome.message);
|
|
665
674
|
}
|
|
675
|
+
async function editFeedback(rl, config, projectRoot, c, flow) {
|
|
676
|
+
const curEnabled = config.feedback?.enabled ?? false;
|
|
677
|
+
process.stdout.write(
|
|
678
|
+
`${flowConnector(c)}
|
|
679
|
+
${flowActiveNode(
|
|
680
|
+
"\uD53C\uB4DC\uBC31 \uBAA8\uB4DC",
|
|
681
|
+
[
|
|
682
|
+
`\uD604\uC7AC: ${curEnabled ? "\uCF1C\uC9D0" : "\uAEBC\uC9D0"}`,
|
|
683
|
+
`\uACBD\uB85C: ${config.feedback?.path || `(\uAE30\uBCF8\uAC12) ${DEFAULT_FEEDBACK_PATH}`}`,
|
|
684
|
+
"",
|
|
685
|
+
"awl/awl-loop/awl-pipeline \uC2A4\uD0AC\xB7CLI \uC790\uCCB4\uC758 \uC124\uACC4 \uAC2D\xB7\uBC84\uADF8\xB7\uB9C8\uCC30\uC744 \uB2E4\uB978 \uD504\uB85C\uC81D\uD2B8\uB85C \uB77C\uC6B0\uD305\uD569\uB2C8\uB2E4."
|
|
686
|
+
],
|
|
687
|
+
c
|
|
688
|
+
)}
|
|
689
|
+
`
|
|
690
|
+
);
|
|
691
|
+
const choice = await selectSingle(
|
|
692
|
+
rl,
|
|
693
|
+
["\uCF1C\uC9D0", "\uAEBC\uC9D0"],
|
|
694
|
+
curEnabled ? 0 : 1,
|
|
695
|
+
c,
|
|
696
|
+
false,
|
|
697
|
+
"\uD53C\uB4DC\uBC31 \uBAA8\uB4DC"
|
|
698
|
+
);
|
|
699
|
+
const toggled = await applyConfigValue(
|
|
700
|
+
config,
|
|
701
|
+
projectRoot,
|
|
702
|
+
{ kind: "feedback.enabled" },
|
|
703
|
+
choice === 0 ? "true" : "false",
|
|
704
|
+
{ force: false }
|
|
705
|
+
);
|
|
706
|
+
step(flow, toggled.message);
|
|
707
|
+
const pathAnswer = (await ask(
|
|
708
|
+
rl,
|
|
709
|
+
`${flowConnector(c)} \uACBD\uB85C [${config.feedback?.path || DEFAULT_FEEDBACK_PATH}] (\uBE44\uC6B0\uBA74 \uADF8\uB300\uB85C, '-'\uBA74 \uAE30\uBCF8\uAC12): `
|
|
710
|
+
)).trim();
|
|
711
|
+
if (pathAnswer === "") {
|
|
712
|
+
return;
|
|
713
|
+
}
|
|
714
|
+
const outcome = await applyConfigValue(
|
|
715
|
+
config,
|
|
716
|
+
projectRoot,
|
|
717
|
+
{ kind: "feedback.path" },
|
|
718
|
+
pathAnswer === "-" ? "" : pathAnswer,
|
|
719
|
+
{ force: false }
|
|
720
|
+
);
|
|
721
|
+
step(flow, outcome.message);
|
|
722
|
+
}
|
|
666
723
|
async function interactiveEditMenu(rl, config, projectRoot, c) {
|
|
667
724
|
const flow = openFlow("\uC124\uC815 \uC218\uC815", c);
|
|
668
725
|
process.stdout.write(`${flowConnector(c)}
|
|
@@ -685,6 +742,8 @@ ${flowActiveNode("\uC218\uC815\uD560 \uD56D\uBAA9\uC744 \uACE0\uB974\uC138\uC694
|
|
|
685
742
|
await editCharacter(rl, config, projectRoot, c, flow);
|
|
686
743
|
} else if (idx === 4) {
|
|
687
744
|
await editProjectName(rl, config, projectRoot, c, flow);
|
|
745
|
+
} else if (idx === 5) {
|
|
746
|
+
await editFeedback(rl, config, projectRoot, c, flow);
|
|
688
747
|
}
|
|
689
748
|
closeFlow(flow);
|
|
690
749
|
return true;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readRecords
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
4
4
|
import {
|
|
5
5
|
loadState
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VE2GVNNS.js";
|
|
7
7
|
import {
|
|
8
8
|
multiProjectFooter,
|
|
9
9
|
resolveProjectScope,
|
|
10
10
|
run
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MLTY3EE6.js";
|
|
12
12
|
import {
|
|
13
13
|
WORKTREES_DIR,
|
|
14
14
|
caps,
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
protectedFilesMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VVZOIFL4.js";
|
|
4
4
|
import {
|
|
5
5
|
gitDirtyFiles
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DQF7RF37.js";
|
|
7
7
|
import {
|
|
8
8
|
applyVerificationAttempts,
|
|
9
9
|
loadState,
|
|
10
10
|
writeState
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-VE2GVNNS.js";
|
|
12
12
|
import {
|
|
13
13
|
CommandNotFoundError,
|
|
14
14
|
VERIFY_ORDER,
|
|
15
15
|
requireConfig,
|
|
16
16
|
run
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-MLTY3EE6.js";
|
|
18
18
|
import {
|
|
19
19
|
caps,
|
|
20
20
|
makeColors,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
computeDurationMs
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IVEV5L7P.js";
|
|
4
4
|
import {
|
|
5
5
|
computeCoverage,
|
|
6
6
|
readRecords
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
8
8
|
import {
|
|
9
9
|
loadState
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-VE2GVNNS.js";
|
|
11
11
|
import {
|
|
12
12
|
requireConfig
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-MLTY3EE6.js";
|
|
14
14
|
import {
|
|
15
15
|
caps,
|
|
16
16
|
generationsDir,
|
package/dist/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
computeUpdateAvailable,
|
|
4
4
|
readCachedLatestVersion,
|
|
5
5
|
version
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5MXSJD3C.js";
|
|
7
7
|
import {
|
|
8
8
|
caps,
|
|
9
9
|
engineDir,
|
|
@@ -109,7 +109,7 @@ function renderExamplesCard(c) {
|
|
|
109
109
|
examples: [
|
|
110
110
|
{ cmd: "awl brief --today", note: "\uC624\uB298 \uD558\uB8E8 \uC694\uC57D" },
|
|
111
111
|
{ cmd: "awl metrics --compare", note: "\uC138\uB300 \uAC04 \uBE44\uAD50" },
|
|
112
|
-
{ cmd: "awl feedback --severity high", note: "awl \uC790\uCCB4\uC5D0 \uB300\uD55C \uD53C\uB4DC\uBC31, \uC2EC\uAC01\uB3C4 \uD544\uD130" },
|
|
112
|
+
{ cmd: "awl feedback-log --severity high", note: "awl \uC790\uCCB4\uC5D0 \uB300\uD55C \uD53C\uB4DC\uBC31, \uC2EC\uAC01\uB3C4 \uD544\uD130" },
|
|
113
113
|
{ cmd: "awl changelog --workitem WI-01", note: "\uADF8 \uC6CC\uD06C\uC544\uC774\uD15C\uC758 \uBCC0\uACBD \uC774\uB825" }
|
|
114
114
|
]
|
|
115
115
|
}
|
|
@@ -239,7 +239,7 @@ function buildProgram() {
|
|
|
239
239
|
"--archive",
|
|
240
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"
|
|
241
241
|
).action(async (opts) => {
|
|
242
|
-
const { runStatus } = await import("./status-
|
|
242
|
+
const { runStatus } = await import("./status-2LPWVCHT.js");
|
|
243
243
|
await runStatus({
|
|
244
244
|
json: opts.json === true,
|
|
245
245
|
pipeline: opts.pipeline === true,
|
|
@@ -247,15 +247,15 @@ function buildProgram() {
|
|
|
247
247
|
});
|
|
248
248
|
});
|
|
249
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) => {
|
|
250
|
-
const { runBrief } = await import("./brief-
|
|
250
|
+
const { runBrief } = await import("./brief-SGMFXOY2.js");
|
|
251
251
|
await runBrief({ today: opts.today === true, date: opts.date, json: opts.json === true });
|
|
252
252
|
});
|
|
253
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) => {
|
|
254
|
-
const { runDoctor } = await import("./doctor-
|
|
254
|
+
const { runDoctor } = await import("./doctor-TMMIO4CE.js");
|
|
255
255
|
await runDoctor({ json: opts.json === true });
|
|
256
256
|
});
|
|
257
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) => {
|
|
258
|
-
const { runVersionCheck } = await import("./version-check-
|
|
258
|
+
const { runVersionCheck } = await import("./version-check-3BZXXAQD.js");
|
|
259
259
|
await runVersionCheck({ json: opts.json === true });
|
|
260
260
|
});
|
|
261
261
|
program.command("update").description(
|
|
@@ -269,7 +269,7 @@ function buildProgram() {
|
|
|
269
269
|
});
|
|
270
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(
|
|
271
271
|
async (opts) => {
|
|
272
|
-
const { runRemove } = await import("./remove-
|
|
272
|
+
const { runRemove } = await import("./remove-J7B32U75.js");
|
|
273
273
|
await runRemove({
|
|
274
274
|
yes: opts.yes === true,
|
|
275
275
|
project: opts.project === true,
|
|
@@ -281,22 +281,22 @@ function buildProgram() {
|
|
|
281
281
|
);
|
|
282
282
|
const config = program.command("config").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uC124\uC815\uC744 \uBD05\uB2C8\uB2E4 (TTY \uBA74 \uC218\uC815\uB3C4)");
|
|
283
283
|
config.action(async () => {
|
|
284
|
-
const { runConfig } = await import("./config-
|
|
284
|
+
const { runConfig } = await import("./config-QTEKLFZP.js");
|
|
285
285
|
await runConfig();
|
|
286
286
|
});
|
|
287
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(
|
|
288
288
|
async (key, value, opts) => {
|
|
289
|
-
const { runConfigSet } = await import("./config-
|
|
289
|
+
const { runConfigSet } = await import("./config-QTEKLFZP.js");
|
|
290
290
|
await runConfigSet(key, value, { force: opts.force === true });
|
|
291
291
|
}
|
|
292
292
|
);
|
|
293
293
|
const work = program.command("work").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC758 \uC6CC\uD06C\uC544\uC774\uD15C\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4");
|
|
294
294
|
work.option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
|
|
295
|
-
const { runWorkList } = await import("./work-
|
|
295
|
+
const { runWorkList } = await import("./work-PEJN55JB.js");
|
|
296
296
|
runWorkList({ json: opts.json === true });
|
|
297
297
|
});
|
|
298
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) => {
|
|
299
|
-
const { runWorkList } = await import("./work-
|
|
299
|
+
const { runWorkList } = await import("./work-PEJN55JB.js");
|
|
300
300
|
runWorkList({ json: opts.json === true });
|
|
301
301
|
});
|
|
302
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(
|
|
@@ -304,7 +304,7 @@ function buildProgram() {
|
|
|
304
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)"
|
|
305
305
|
).option("--experiment <json>", '\uC2E4\uD5D8 \uCF00\uC774\uC2A4 \uBA54\uD0C0 JSON (\uC608: {"model":"lite","mode":"loop"})').action(
|
|
306
306
|
async (id, description, opts) => {
|
|
307
|
-
const { runWorkNew } = await import("./work-
|
|
307
|
+
const { runWorkNew } = await import("./work-PEJN55JB.js");
|
|
308
308
|
const parsedExp = parseExperimentOption(opts.experiment);
|
|
309
309
|
if (!parsedExp.ok) {
|
|
310
310
|
process.stderr.write(`
|
|
@@ -316,52 +316,52 @@ function buildProgram() {
|
|
|
316
316
|
}
|
|
317
317
|
);
|
|
318
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) => {
|
|
319
|
-
const { runWorkSwitch } = await import("./work-
|
|
319
|
+
const { runWorkSwitch } = await import("./work-PEJN55JB.js");
|
|
320
320
|
await runWorkSwitch(id);
|
|
321
321
|
});
|
|
322
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) => {
|
|
323
|
-
const { runWorkAbandon } = await import("./work-
|
|
323
|
+
const { runWorkAbandon } = await import("./work-PEJN55JB.js");
|
|
324
324
|
runWorkAbandon(id);
|
|
325
325
|
});
|
|
326
326
|
work.command("done <id>").description(
|
|
327
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)"
|
|
328
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) => {
|
|
329
|
-
const { runWorkDone } = await import("./work-
|
|
329
|
+
const { runWorkDone } = await import("./work-PEJN55JB.js");
|
|
330
330
|
await runWorkDone(id, { force: opts.force === true });
|
|
331
331
|
});
|
|
332
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)");
|
|
333
333
|
lane.option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
|
|
334
|
-
const { runLaneList } = await import("./lane-
|
|
334
|
+
const { runLaneList } = await import("./lane-24GAVVR6.js");
|
|
335
335
|
await runLaneList({ json: opts.json === true });
|
|
336
336
|
});
|
|
337
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) => {
|
|
338
|
-
const { runLaneNew } = await import("./lane-
|
|
338
|
+
const { runLaneNew } = await import("./lane-24GAVVR6.js");
|
|
339
339
|
await runLaneNew(name, description);
|
|
340
340
|
});
|
|
341
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) => {
|
|
342
|
-
const { runLaneList } = await import("./lane-
|
|
342
|
+
const { runLaneList } = await import("./lane-24GAVVR6.js");
|
|
343
343
|
await runLaneList({ json: opts.json === true });
|
|
344
344
|
});
|
|
345
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) => {
|
|
346
|
-
const { runLaneRemove } = await import("./lane-
|
|
346
|
+
const { runLaneRemove } = await import("./lane-24GAVVR6.js");
|
|
347
347
|
await runLaneRemove(name, { force: opts.force === true });
|
|
348
348
|
});
|
|
349
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) => {
|
|
350
|
-
const { runRecords } = await import("./record-
|
|
350
|
+
const { runRecords } = await import("./record-TSB22DIO.js");
|
|
351
351
|
runRecords({ type: opts.type, workitem: opts.workitem, json: opts.json === true });
|
|
352
352
|
});
|
|
353
353
|
const rules = program.command("rules").description("\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC801\uC6A9\uB418\uB294 \uADDC\uCE59\uC744 \uBD05\uB2C8\uB2E4").enablePositionalOptions();
|
|
354
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) => {
|
|
355
|
-
const { runRules } = await import("./rules-
|
|
355
|
+
const { runRules } = await import("./rules-QLUXNSCN.js");
|
|
356
356
|
runRules({ scope: opts.scope, json: opts.json === true });
|
|
357
357
|
});
|
|
358
358
|
rules.command("edit").description("$EDITOR \uB85C \uADDC\uCE59 \uD30C\uC77C\uC744 \uC5FD\uB2C8\uB2E4").action(async () => {
|
|
359
|
-
const { runRules } = await import("./rules-
|
|
359
|
+
const { runRules } = await import("./rules-QLUXNSCN.js");
|
|
360
360
|
runRules({ edit: true });
|
|
361
361
|
});
|
|
362
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(
|
|
363
363
|
async (gotchaId, opts) => {
|
|
364
|
-
const { runRulesPromote } = await import("./rules-
|
|
364
|
+
const { runRulesPromote } = await import("./rules-QLUXNSCN.js");
|
|
365
365
|
runRulesPromote(gotchaId, {
|
|
366
366
|
applies: opts.applies,
|
|
367
367
|
counter: opts.counter,
|
|
@@ -370,16 +370,16 @@ function buildProgram() {
|
|
|
370
370
|
}
|
|
371
371
|
);
|
|
372
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) => {
|
|
373
|
-
const { runGotchas } = await import("./gotchas-
|
|
373
|
+
const { runGotchas } = await import("./gotchas-PDG2ZZFQ.js");
|
|
374
374
|
runGotchas({ json: opts.json === true });
|
|
375
375
|
});
|
|
376
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) => {
|
|
377
|
-
const { runMetrics } = await import("./metrics-
|
|
377
|
+
const { runMetrics } = await import("./metrics-ZR7BPATB.js");
|
|
378
378
|
runMetrics({ json: opts.json === true, compare: opts.compare === true });
|
|
379
379
|
});
|
|
380
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(
|
|
381
381
|
async (opts) => {
|
|
382
|
-
const { runLoopSummary } = await import("./loop-summary-
|
|
382
|
+
const { runLoopSummary } = await import("./loop-summary-CODZMRUY.js");
|
|
383
383
|
runLoopSummary({
|
|
384
384
|
workitem: opts.workitem,
|
|
385
385
|
workitems: parseWorkitemsOption(opts.workitems),
|
|
@@ -388,9 +388,11 @@ function buildProgram() {
|
|
|
388
388
|
});
|
|
389
389
|
}
|
|
390
390
|
);
|
|
391
|
-
program.command("feedback").description(
|
|
392
|
-
|
|
393
|
-
|
|
391
|
+
program.command("feedback-log").description(
|
|
392
|
+
"awl \uB3C4\uAD6C \uC790\uCCB4\uC5D0 \uB0A8\uACA8\uC9C4 \uD53C\uB4DC\uBC31 \uAE30\uB85D(awl-feedback)\uC744 area \uBCC4\uB85C \uBB36\uC5B4 \uAC80\uD1A0\uD569\uB2C8\uB2E4 (\uD574\uBC95\uC740 \uC81C\uC2DC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4)"
|
|
393
|
+
).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) => {
|
|
394
|
+
const { runFeedbackLog } = await import("./feedback-log-UCNJ2GVT.js");
|
|
395
|
+
runFeedbackLog({
|
|
394
396
|
json: opts.json === true,
|
|
395
397
|
area: opts.area,
|
|
396
398
|
severity: opts.severity,
|
|
@@ -398,12 +400,12 @@ function buildProgram() {
|
|
|
398
400
|
});
|
|
399
401
|
});
|
|
400
402
|
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) => {
|
|
401
|
-
const { runChangelogDraft } = await import("./changelog-
|
|
403
|
+
const { runChangelogDraft } = await import("./changelog-VNJ4EQ74.js");
|
|
402
404
|
runChangelogDraft({ workitem: opts.workitem, json: opts.json === true });
|
|
403
405
|
});
|
|
404
406
|
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(
|
|
405
407
|
async (criterion, opts) => {
|
|
406
|
-
const { runCommit } = await import("./commit-
|
|
408
|
+
const { runCommit } = await import("./commit-GPQATPEA.js");
|
|
407
409
|
await runCommit(criterion, {
|
|
408
410
|
start: opts.start,
|
|
409
411
|
message: opts.message,
|
|
@@ -413,12 +415,12 @@ function buildProgram() {
|
|
|
413
415
|
}
|
|
414
416
|
);
|
|
415
417
|
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) => {
|
|
416
|
-
const { runReview } = await import("./review-
|
|
418
|
+
const { runReview } = await import("./review-EM5Q2ZJX.js");
|
|
417
419
|
await runReview(range, { json: opts.json === true, base: opts.base });
|
|
418
420
|
});
|
|
419
421
|
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(
|
|
420
422
|
async (type, opts) => {
|
|
421
|
-
const { runRecord } = await import("./record-
|
|
423
|
+
const { runRecord } = await import("./record-TSB22DIO.js");
|
|
422
424
|
await runRecord(type, {
|
|
423
425
|
json: opts.json,
|
|
424
426
|
file: opts.file,
|
|
@@ -432,7 +434,7 @@ function buildProgram() {
|
|
|
432
434
|
"\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)"
|
|
433
435
|
).action(
|
|
434
436
|
async (opts) => {
|
|
435
|
-
const { runVerify } = await import("./verify-
|
|
437
|
+
const { runVerify } = await import("./verify-VWKIBPZD.js");
|
|
436
438
|
await runVerify({
|
|
437
439
|
json: opts.json === true,
|
|
438
440
|
bail: opts.bail === true,
|
|
@@ -443,17 +445,17 @@ function buildProgram() {
|
|
|
443
445
|
}
|
|
444
446
|
);
|
|
445
447
|
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) => {
|
|
446
|
-
const { runHoldRecheck } = await import("./hold-recheck-
|
|
448
|
+
const { runHoldRecheck } = await import("./hold-recheck-UNAILFN5.js");
|
|
447
449
|
await runHoldRecheck({ json: opts.json === true });
|
|
448
450
|
});
|
|
449
451
|
const state = program.command("state", { hidden: true }).description("\uB8E8\uD504 \uC0C1\uD0DC\uB97C \uC77D\uACE0 \uC501\uB2C8\uB2E4");
|
|
450
452
|
state.command("get").option("--json", "\uAE30\uACC4\uAC00 \uC77D\uC744 \uC218 \uC788\uB294 JSON\uC73C\uB85C \uCD9C\uB825\uD569\uB2C8\uB2E4").action(async (opts) => {
|
|
451
|
-
const { runStateGet } = await import("./state-
|
|
453
|
+
const { runStateGet } = await import("./state-6IIH7SW2.js");
|
|
452
454
|
runStateGet({ json: opts.json === true });
|
|
453
455
|
});
|
|
454
456
|
state.command("set").requiredOption("--json <patch>", "\uBD80\uBD84 \uAC31\uC2E0 (JSON \uBB38\uC790\uC5F4)").action(async (opts) => {
|
|
455
|
-
const { runStateSet } = await import("./state-
|
|
456
|
-
const { hasApprovedGate1 } = await import("./record-
|
|
457
|
+
const { runStateSet } = await import("./state-6IIH7SW2.js");
|
|
458
|
+
const { hasApprovedGate1 } = await import("./record-TSB22DIO.js");
|
|
457
459
|
runStateSet(opts.json, {
|
|
458
460
|
// phase:'loop' 로의 전이는 이 워크아이템에 "승인된" 게이트1 레코드가 있을
|
|
459
461
|
// 때만 허용한다(0.6.3, 적대검증 발견). 예전엔 gate:1 레코드의 존재만 봐서
|
|
@@ -464,7 +466,7 @@ function buildProgram() {
|
|
|
464
466
|
});
|
|
465
467
|
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(
|
|
466
468
|
async (opts) => {
|
|
467
|
-
const m = await import("./evolve-
|
|
469
|
+
const m = await import("./evolve-N3S32P5I.js");
|
|
468
470
|
if (opts.collect && opts.record) {
|
|
469
471
|
process.stderr.write("\n --collect \uC640 --record \uB294 \uB3D9\uC2DC\uC5D0 \uC4F8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n");
|
|
470
472
|
process.exit(1);
|
|
@@ -483,7 +485,7 @@ function buildProgram() {
|
|
|
483
485
|
}
|
|
484
486
|
);
|
|
485
487
|
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) => {
|
|
486
|
-
const m = await import("./record-
|
|
488
|
+
const m = await import("./record-TSB22DIO.js");
|
|
487
489
|
m.runDeferSummary({ json: opts.json === true, workitem: opts.workitem });
|
|
488
490
|
});
|
|
489
491
|
program.action((opts, command) => {
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
protectedFilesMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VVZOIFL4.js";
|
|
4
4
|
import {
|
|
5
5
|
hasApprovedGate1
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
7
7
|
import {
|
|
8
8
|
getCriterion,
|
|
9
9
|
loadState,
|
|
10
10
|
setCriterion,
|
|
11
11
|
writeState
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-VE2GVNNS.js";
|
|
13
13
|
import {
|
|
14
14
|
loadConfig,
|
|
15
15
|
resolveProjectRoot,
|
|
16
16
|
run
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-MLTY3EE6.js";
|
|
18
18
|
import "./chunk-SJG22DAK.js";
|
|
19
19
|
import {
|
|
20
20
|
caps,
|
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
gitHasCommits,
|
|
9
9
|
renderText,
|
|
10
10
|
runDoctor
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-DQF7RF37.js";
|
|
12
|
+
import "./chunk-FK3Q7UY2.js";
|
|
13
|
+
import "./chunk-VE2GVNNS.js";
|
|
14
|
+
import "./chunk-HAUTKVB5.js";
|
|
15
|
+
import "./chunk-5MXSJD3C.js";
|
|
16
|
+
import "./chunk-MLTY3EE6.js";
|
|
17
17
|
import "./chunk-SJG22DAK.js";
|
|
18
18
|
import "./chunk-FGHILN3D.js";
|
|
19
19
|
export {
|
|
@@ -13,11 +13,11 @@ import {
|
|
|
13
13
|
runEvolveCollect,
|
|
14
14
|
runEvolveRecord,
|
|
15
15
|
writeGeneration
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-ZRKOZQKP.js";
|
|
17
|
+
import "./chunk-IVEV5L7P.js";
|
|
18
|
+
import "./chunk-FK3Q7UY2.js";
|
|
19
|
+
import "./chunk-VE2GVNNS.js";
|
|
20
|
+
import "./chunk-MLTY3EE6.js";
|
|
21
21
|
import "./chunk-SJG22DAK.js";
|
|
22
22
|
import "./chunk-FGHILN3D.js";
|
|
23
23
|
export {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readRecords
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
4
|
+
import "./chunk-VE2GVNNS.js";
|
|
5
|
+
import "./chunk-MLTY3EE6.js";
|
|
6
6
|
import "./chunk-SJG22DAK.js";
|
|
7
7
|
import {
|
|
8
8
|
caps,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
signal
|
|
12
12
|
} from "./chunk-FGHILN3D.js";
|
|
13
13
|
|
|
14
|
-
// src/commands/feedback.ts
|
|
14
|
+
// src/commands/feedback-log.ts
|
|
15
15
|
var SEVERITY_RANK = { high: 0, medium: 1, low: 2 };
|
|
16
16
|
function loadAwlFeedback(filter = {}) {
|
|
17
17
|
let records = readRecords().filter((r) => r.type === "awl-feedback");
|
|
@@ -60,7 +60,7 @@ function buildFeedbackReport(records) {
|
|
|
60
60
|
const prioritized = Object.entries(areas).filter(([, g]) => g.count >= 2).sort(([, a], [, b]) => b.count - a.count).map(([area]) => area);
|
|
61
61
|
return { collectedFrom: workitems.size, areas, prioritized };
|
|
62
62
|
}
|
|
63
|
-
function
|
|
63
|
+
function renderFeedbackLog(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) {
|
|
@@ -98,7 +98,7 @@ function renderFeedback(report, c) {
|
|
|
98
98
|
}
|
|
99
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
|
-
function
|
|
101
|
+
function runFeedbackLog(opts) {
|
|
102
102
|
if (isInvalidSince(opts.since)) {
|
|
103
103
|
process.stderr.write(
|
|
104
104
|
`
|
|
@@ -113,13 +113,13 @@ function runFeedback(opts) {
|
|
|
113
113
|
`);
|
|
114
114
|
return;
|
|
115
115
|
}
|
|
116
|
-
process.stdout.write(`${
|
|
116
|
+
process.stdout.write(`${renderFeedbackLog(report, caps())}
|
|
117
117
|
`);
|
|
118
118
|
}
|
|
119
119
|
export {
|
|
120
120
|
buildFeedbackReport,
|
|
121
121
|
isInvalidSince,
|
|
122
122
|
loadAwlFeedback,
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
renderFeedbackLog,
|
|
124
|
+
runFeedbackLog
|
|
125
125
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadGotchaList
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-ZRKOZQKP.js";
|
|
4
|
+
import "./chunk-IVEV5L7P.js";
|
|
5
|
+
import "./chunk-FK3Q7UY2.js";
|
|
6
|
+
import "./chunk-VE2GVNNS.js";
|
|
7
|
+
import "./chunk-MLTY3EE6.js";
|
|
8
8
|
import "./chunk-SJG22DAK.js";
|
|
9
9
|
import {
|
|
10
10
|
caps,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
pipelineLanes
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-PUINOFOR.js";
|
|
4
|
+
import "./chunk-FK3Q7UY2.js";
|
|
5
|
+
import "./chunk-VE2GVNNS.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveProjectRoot
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-MLTY3EE6.js";
|
|
9
9
|
import "./chunk-SJG22DAK.js";
|
|
10
10
|
import {
|
|
11
11
|
caps,
|
|
@@ -9,20 +9,20 @@ import {
|
|
|
9
9
|
runLaneRemove,
|
|
10
10
|
unmergedCommitCount,
|
|
11
11
|
worktreeUntracked
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-IA32FVBA.js";
|
|
13
|
+
import "./chunk-ISLNBWKV.js";
|
|
14
14
|
import "./chunk-D5OINC3G.js";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-EHJYX57P.js";
|
|
16
|
+
import "./chunk-ZRKOZQKP.js";
|
|
17
|
+
import "./chunk-IVEV5L7P.js";
|
|
18
|
+
import "./chunk-QKKMA2VT.js";
|
|
19
|
+
import "./chunk-VVZOIFL4.js";
|
|
20
|
+
import "./chunk-DQF7RF37.js";
|
|
21
|
+
import "./chunk-FK3Q7UY2.js";
|
|
22
|
+
import "./chunk-VE2GVNNS.js";
|
|
23
|
+
import "./chunk-HAUTKVB5.js";
|
|
24
|
+
import "./chunk-5MXSJD3C.js";
|
|
25
|
+
import "./chunk-MLTY3EE6.js";
|
|
26
26
|
import "./chunk-SJG22DAK.js";
|
|
27
27
|
import "./chunk-FGHILN3D.js";
|
|
28
28
|
export {
|
|
@@ -6,20 +6,20 @@ import {
|
|
|
6
6
|
computeDurationMs,
|
|
7
7
|
fmtDuration,
|
|
8
8
|
loadGenerations
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IVEV5L7P.js";
|
|
10
10
|
import {
|
|
11
11
|
collectDeferred,
|
|
12
12
|
readRecords
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
14
14
|
import {
|
|
15
15
|
loadState
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-VE2GVNNS.js";
|
|
17
17
|
import {
|
|
18
18
|
loadConfig,
|
|
19
19
|
multiProjectFooter,
|
|
20
20
|
requireConfig,
|
|
21
21
|
resolveProjectScope
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-MLTY3EE6.js";
|
|
23
23
|
import "./chunk-SJG22DAK.js";
|
|
24
24
|
import {
|
|
25
25
|
caps,
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
renderMetrics,
|
|
9
9
|
renderMetricsCaveat,
|
|
10
10
|
runMetrics
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-IVEV5L7P.js";
|
|
12
|
+
import "./chunk-MLTY3EE6.js";
|
|
13
13
|
import "./chunk-SJG22DAK.js";
|
|
14
14
|
import "./chunk-FGHILN3D.js";
|
|
15
15
|
export {
|
|
@@ -29,9 +29,9 @@ import {
|
|
|
29
29
|
runRecords,
|
|
30
30
|
selectMonthFiles,
|
|
31
31
|
shouldDefer
|
|
32
|
-
} from "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
32
|
+
} from "./chunk-FK3Q7UY2.js";
|
|
33
|
+
import "./chunk-VE2GVNNS.js";
|
|
34
|
+
import "./chunk-MLTY3EE6.js";
|
|
35
35
|
import "./chunk-SJG22DAK.js";
|
|
36
36
|
import "./chunk-FGHILN3D.js";
|
|
37
37
|
export {
|
|
@@ -4,25 +4,25 @@ import {
|
|
|
4
4
|
laneBranchMap,
|
|
5
5
|
unmergedCommitCount,
|
|
6
6
|
worktreeUntracked
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IA32FVBA.js";
|
|
8
8
|
import {
|
|
9
9
|
removeGitWorktree,
|
|
10
10
|
worktreeDirtyTracked
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ISLNBWKV.js";
|
|
12
12
|
import "./chunk-D5OINC3G.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-EHJYX57P.js";
|
|
14
|
+
import "./chunk-ZRKOZQKP.js";
|
|
15
|
+
import "./chunk-IVEV5L7P.js";
|
|
16
|
+
import "./chunk-QKKMA2VT.js";
|
|
17
|
+
import "./chunk-VVZOIFL4.js";
|
|
18
|
+
import "./chunk-DQF7RF37.js";
|
|
19
|
+
import "./chunk-FK3Q7UY2.js";
|
|
20
|
+
import "./chunk-VE2GVNNS.js";
|
|
21
|
+
import "./chunk-HAUTKVB5.js";
|
|
22
|
+
import "./chunk-5MXSJD3C.js";
|
|
23
23
|
import {
|
|
24
24
|
resolveProjectRoot
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-MLTY3EE6.js";
|
|
26
26
|
import {
|
|
27
27
|
packageEngineDir
|
|
28
28
|
} from "./chunk-SJG22DAK.js";
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
filterRules,
|
|
3
3
|
loadRules
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-EHJYX57P.js";
|
|
5
|
+
import "./chunk-ZRKOZQKP.js";
|
|
6
|
+
import "./chunk-IVEV5L7P.js";
|
|
7
7
|
import {
|
|
8
8
|
runVerifyChecks
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-QKKMA2VT.js";
|
|
10
|
+
import "./chunk-VVZOIFL4.js";
|
|
11
|
+
import "./chunk-DQF7RF37.js";
|
|
12
|
+
import "./chunk-FK3Q7UY2.js";
|
|
13
13
|
import {
|
|
14
14
|
loadState
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-VE2GVNNS.js";
|
|
16
|
+
import "./chunk-HAUTKVB5.js";
|
|
17
|
+
import "./chunk-5MXSJD3C.js";
|
|
18
18
|
import {
|
|
19
19
|
requireConfig,
|
|
20
20
|
run
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-MLTY3EE6.js";
|
|
22
22
|
import "./chunk-SJG22DAK.js";
|
|
23
23
|
import {
|
|
24
24
|
caps,
|
|
@@ -10,12 +10,12 @@ import {
|
|
|
10
10
|
runRulesPromote,
|
|
11
11
|
suggestLinter,
|
|
12
12
|
validatePromoteOpts
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-EHJYX57P.js";
|
|
14
|
+
import "./chunk-ZRKOZQKP.js";
|
|
15
|
+
import "./chunk-IVEV5L7P.js";
|
|
16
|
+
import "./chunk-FK3Q7UY2.js";
|
|
17
|
+
import "./chunk-VE2GVNNS.js";
|
|
18
|
+
import "./chunk-MLTY3EE6.js";
|
|
19
19
|
import "./chunk-SJG22DAK.js";
|
|
20
20
|
import "./chunk-FGHILN3D.js";
|
|
21
21
|
export {
|
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
stateLockFile,
|
|
15
15
|
statePath,
|
|
16
16
|
writeState
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
} from "./chunk-VE2GVNNS.js";
|
|
18
|
+
import "./chunk-MLTY3EE6.js";
|
|
19
19
|
import "./chunk-SJG22DAK.js";
|
|
20
20
|
import "./chunk-FGHILN3D.js";
|
|
21
21
|
export {
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
renderPipelineGroups,
|
|
10
10
|
renderStatus,
|
|
11
11
|
runStatus
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-PUINOFOR.js";
|
|
13
|
+
import "./chunk-FK3Q7UY2.js";
|
|
14
|
+
import "./chunk-VE2GVNNS.js";
|
|
15
|
+
import "./chunk-MLTY3EE6.js";
|
|
16
16
|
import "./chunk-SJG22DAK.js";
|
|
17
17
|
import "./chunk-FGHILN3D.js";
|
|
18
18
|
export {
|
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
substituteRelatedCmd,
|
|
12
12
|
verifyBaselinePath,
|
|
13
13
|
writeVerifyBaseline
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-QKKMA2VT.js";
|
|
15
|
+
import "./chunk-VVZOIFL4.js";
|
|
16
|
+
import "./chunk-DQF7RF37.js";
|
|
17
|
+
import "./chunk-FK3Q7UY2.js";
|
|
18
|
+
import "./chunk-VE2GVNNS.js";
|
|
19
|
+
import "./chunk-HAUTKVB5.js";
|
|
20
|
+
import "./chunk-5MXSJD3C.js";
|
|
21
|
+
import "./chunk-MLTY3EE6.js";
|
|
22
22
|
import "./chunk-SJG22DAK.js";
|
|
23
23
|
import "./chunk-FGHILN3D.js";
|
|
24
24
|
export {
|
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
gatherVersionInputs,
|
|
3
3
|
renderVersionCheck,
|
|
4
4
|
runVersionCheck
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-HAUTKVB5.js";
|
|
6
|
+
import "./chunk-5MXSJD3C.js";
|
|
7
|
+
import "./chunk-MLTY3EE6.js";
|
|
8
8
|
import "./chunk-SJG22DAK.js";
|
|
9
9
|
import "./chunk-FGHILN3D.js";
|
|
10
10
|
export {
|
|
@@ -20,19 +20,19 @@ import {
|
|
|
20
20
|
summarizeWorkitems,
|
|
21
21
|
withCostAtStart,
|
|
22
22
|
worktreeDirtyTracked
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-ISLNBWKV.js";
|
|
24
24
|
import "./chunk-D5OINC3G.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-EHJYX57P.js";
|
|
26
|
+
import "./chunk-ZRKOZQKP.js";
|
|
27
|
+
import "./chunk-IVEV5L7P.js";
|
|
28
|
+
import "./chunk-QKKMA2VT.js";
|
|
29
|
+
import "./chunk-VVZOIFL4.js";
|
|
30
|
+
import "./chunk-DQF7RF37.js";
|
|
31
|
+
import "./chunk-FK3Q7UY2.js";
|
|
32
|
+
import "./chunk-VE2GVNNS.js";
|
|
33
|
+
import "./chunk-HAUTKVB5.js";
|
|
34
|
+
import "./chunk-5MXSJD3C.js";
|
|
35
|
+
import "./chunk-MLTY3EE6.js";
|
|
36
36
|
import "./chunk-SJG22DAK.js";
|
|
37
37
|
import "./chunk-FGHILN3D.js";
|
|
38
38
|
export {
|
|
@@ -112,7 +112,7 @@ awl evolve --record --json '{"lesson":"...","context":"...","source":{...},"same
|
|
|
112
112
|
`awl evolve --collect` 출력의 `awlFeedback.prompt` 를 본다. 이번 워크아이템에서 awl 도구 자체(작업 대상 코드가 아니라)가 불편했다면 남긴다:
|
|
113
113
|
|
|
114
114
|
`awl record awl-feedback --json '{"area":"commit","what":"...","impact":"...","severity":"high","suggestion":"..."}'`
|
|
115
|
-
- `area`: 어느 기능인가 (commit/review/gate/verify/state/init/cli/기타) — 나중에 모으기(`awl feedback`)의 묶는 키.
|
|
115
|
+
- `area`: 어느 기능인가 (commit/review/gate/verify/state/init/cli/기타) — 나중에 모으기(`awl feedback-log`)의 묶는 키.
|
|
116
116
|
- `what`: 무슨 일이 있었나(사실). `impact`: 그래서 무엇을 해야 했나(아픔의 크기). `severity`: high/medium/low.
|
|
117
117
|
- `suggestion`: 선택. 개선 아이디어. 강제 아님 — 번역(패치로 바꾸기)은 사람 몫이다.
|
|
118
118
|
|
|
@@ -102,7 +102,7 @@ exec가 이 문서를 집어갈지는 기존 **실행형 판별**(완료조건
|
|
|
102
102
|
그대로 맡긴다 — 이 절에서 "자동 착수 금지"를 별도로 못박지 않는다.
|
|
103
103
|
|
|
104
104
|
**`awl record awl-feedback`과 다르다**: awl-loop에 이미 있는 `awl record awl-feedback`(evolve
|
|
105
|
-
시점 1회, 구조화 JSON, 그 프로젝트의 `~/.awl/records/`에 로컬 저장, 사람이 나중에 `awl feedback
|
|
105
|
+
시점 1회, 구조화 JSON, 그 프로젝트의 `~/.awl/records/`에 로컬 저장, 사람이 나중에 `awl feedback-log`로
|
|
106
106
|
수동 수집·번역)와 목적이 다르다 — 이 절의 피드백 모드는 **다른 프로젝트로 즉시 라우팅**돼 그 프로젝트의
|
|
107
107
|
`.tasks/plan/`(exec가 실제로 감시하는 큐)에 바로 꽂히는 **능동적** 경로다. 세션 중 계속 켜둘 수 있고
|
|
108
108
|
(evolve 시점 1회가 아님), 구조화 JSON이 아니라 실행형 판별을 거칠 수 있는 workitem 형식 문서다. 둘 다
|
|
@@ -1,9 +1,27 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
|
|
1
3
|
const dryRun =
|
|
2
4
|
process.env.npm_config_dry_run === 'true' ||
|
|
3
5
|
process.env.npm_config_dry_run === '1' ||
|
|
4
6
|
process.argv.includes('--dry-run');
|
|
5
|
-
|
|
7
|
+
|
|
8
|
+
// Same rationale as engine/templates/pre-push.sample: this script can't tell
|
|
9
|
+
// a human's `npm publish` apart from one an agent ran programmatically, so
|
|
10
|
+
// it checks for a controlling terminal instead of demanding the override
|
|
11
|
+
// variable from everyone.
|
|
12
|
+
function hasControllingTerminal() {
|
|
13
|
+
try {
|
|
14
|
+
fs.closeSync(fs.openSync('/dev/tty', 'r+'));
|
|
15
|
+
return true;
|
|
16
|
+
} catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (dryRun || process.env.AWL_ALLOW_PUBLISH === '1' || hasControllingTerminal()) {
|
|
22
|
+
process.exit(0);
|
|
23
|
+
}
|
|
6
24
|
console.error(
|
|
7
|
-
'❌ awl: npm publish is blocked. A human
|
|
25
|
+
'❌ awl: npm publish is blocked (no interactive terminal detected). A human at a terminal can publish directly; otherwise set AWL_ALLOW_PUBLISH=1 after review.',
|
|
8
26
|
);
|
|
9
27
|
process.exit(1);
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
|
-
# awl safety hook:
|
|
2
|
+
# awl safety hook: a human at an interactive terminal can push directly.
|
|
3
|
+
# This hook has no way to tell a human's `git push` apart from one an agent
|
|
4
|
+
# ran programmatically, so it checks for a controlling terminal instead
|
|
5
|
+
# (agents/CI invocations don't have one; opening /dev/tty fails for them).
|
|
3
6
|
if [ "${AWL_ALLOW_PUSH:-}" = "1" ]; then
|
|
4
7
|
exit 0
|
|
5
8
|
fi
|
|
6
|
-
|
|
9
|
+
if ( exec 3<>/dev/tty ) 2>/dev/null; then
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
echo "❌ awl: git push is blocked (no interactive terminal detected). A human at a terminal can push directly; otherwise use AWL_ALLOW_PUSH=1 git push." >&2
|
|
7
13
|
exit 1
|
package/engine/version.json
CHANGED