agent-work-loop 0.6.25 → 0.6.27
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 +17 -0
- package/dist/{brief-LZ6JC5V5.js → brief-TQND6XIK.js} +5 -5
- package/dist/{changelog-ZCPSFDX3.js → changelog-J4LP6ZJI.js} +5 -5
- package/dist/{chunk-5TFILHLH.js → chunk-CLWQEWEG.js} +4 -4
- package/dist/{chunk-57EWVAZO.js → chunk-DGPZEEFJ.js} +7 -7
- package/dist/{chunk-QLUBNGHR.js → chunk-DR7OZZ4N.js} +5 -5
- package/dist/{chunk-R2RZC5NQ.js → chunk-GKKWXRQA.js} +9 -9
- package/dist/{chunk-4MWV4RBI.js → chunk-H4EMS47F.js} +7 -7
- package/dist/{chunk-7KIVLJG3.js → chunk-J7EKKHVW.js} +8 -8
- package/dist/{chunk-6MG6CQBD.js → chunk-JXFQHNHV.js} +6 -6
- package/dist/{chunk-ZYXKMNHC.js → chunk-KJG2ULS4.js} +1 -1
- package/dist/{chunk-MJT6UANJ.js → chunk-KNBSZQGN.js} +5 -5
- package/dist/{chunk-OTN2QONN.js → chunk-M4H4VNN6.js} +5 -9
- package/dist/{chunk-JQN653ZS.js → chunk-MCNUMMKK.js} +2 -2
- package/dist/{chunk-FBRW7KKY.js → chunk-MLD2GOVM.js} +7 -7
- package/dist/{chunk-WRNCUSNU.js → chunk-OSKS2YRU.js} +7 -7
- package/dist/{chunk-F7Z3S5LD.js → chunk-PFXDX4JF.js} +11 -11
- package/dist/{chunk-ELQ4VANN.js → chunk-PIOV3MQT.js} +52 -14
- package/dist/{chunk-SBX6LOQE.js → chunk-UB4RLTLJ.js} +6 -6
- package/dist/cli.js +43 -43
- package/dist/{commit-4XEKMCJF.js → commit-2WWILQRB.js} +6 -6
- package/dist/{config-BZDCXBQ5.js → config-XMM3V7MT.js} +3 -3
- package/dist/{doctor-ST67JMQ6.js → doctor-HZEAQNY7.js} +8 -8
- package/dist/{evolve-ZBSIUZXP.js → evolve-EQ3N6F6M.js} +7 -7
- package/dist/{feedback-HVNBFJBW.js → feedback-4FT67LSI.js} +8 -8
- package/dist/{gotchas-642PZ5AQ.js → gotchas-QJBUVYJV.js} +11 -11
- package/dist/{hold-recheck-N3UCEIXL.js → hold-recheck-L3DAS3MV.js} +18 -18
- package/dist/{init-2FPJSD64.js → init-PTTYGP2D.js} +6 -2
- package/dist/lane-WINQEOEW.js +41 -0
- package/dist/{loop-summary-22VD3BDL.js → loop-summary-OSYJB57M.js} +10 -10
- package/dist/{metrics-4OT2R3GT.js → metrics-BC7ZUCGU.js} +4 -4
- package/dist/{record-CJONXDR2.js → record-CKR6G6UZ.js} +5 -5
- package/dist/{review-L52UGCIJ.js → review-UJH6C7F4.js} +16 -16
- package/dist/{rules-U7UCVU5O.js → rules-E52GU3GA.js} +8 -8
- package/dist/{state-3G4XAB6P.js → state-X7DLLBOD.js} +4 -4
- package/dist/status-NGSQ4XK3.js +40 -0
- package/dist/{uninstall-M7Z6SO7L.js → uninstall-JECZJNRJ.js} +17 -17
- package/dist/{update-LQBVQIXW.js → update-GA6I4AMF.js} +6 -6
- package/dist/{verify-PYZXB67X.js → verify-KKQ2OQMO.js} +10 -10
- package/dist/version-check-7XE232L3.js +14 -0
- package/dist/{work-VTHTF4AQ.js → work-3SONYYYB.js} +14 -14
- package/engine/skills/claude/awl-loop/SKILL.md +3 -1
- package/engine/skills/claude/awl-pipeline/SKILL.md +5 -1
- package/engine/skills/claude/awl-pipeline-exec/SKILL.md +4 -1
- package/engine/skills/claude/awl-pipeline-plan/SKILL.md +4 -1
- package/engine/skills/claude/awl-pipeline-review/SKILL.md +4 -1
- package/engine/skills/codex/AGENTS.awl.md +2 -0
- package/engine/version.json +1 -1
- package/package.json +1 -1
- package/dist/lane-7AB53N4M.js +0 -41
- package/dist/status-7V4W52VA.js +0 -40
- package/dist/version-check-QQDDSBU7.js +0 -14
package/README.md
CHANGED
|
@@ -43,6 +43,23 @@ yarn global add agent-work-loop
|
|
|
43
43
|
> ```
|
|
44
44
|
> `dist/cli.js`가 `awl` bin으로 등록됩니다. 정식 npm 배포가 되면 이 문단은 지웁니다.
|
|
45
45
|
|
|
46
|
+
### 나중에 업데이트하려면
|
|
47
|
+
|
|
48
|
+
설치에 쓴 도구로 그대로 다시 실행하면 최신 버전을 받습니다(권장은 npm).
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm install -g agent-work-loop@latest
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
pnpm이나 yarn을 쓴다면:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pnpm add -g agent-work-loop@latest
|
|
58
|
+
yarn global add agent-work-loop@latest
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
이건 CLI 패키지 자체를 새로 받는 것이고, 그 새 버전의 엔진(스킬 템플릿)을 `~/.awl`에 반영하는 건 `awl update`가 따로 합니다.
|
|
62
|
+
|
|
46
63
|
설치가 됐는지 확인합니다:
|
|
47
64
|
|
|
48
65
|
```bash
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadProjectName,
|
|
3
3
|
readRecords
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JXFQHNHV.js";
|
|
5
5
|
import {
|
|
6
6
|
loadState
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-UB4RLTLJ.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveProjectRoot,
|
|
10
10
|
run
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-CLWQEWEG.js";
|
|
12
|
+
import "./chunk-PIOV3MQT.js";
|
|
13
|
+
import "./chunk-M4H4VNN6.js";
|
|
14
14
|
|
|
15
15
|
// src/commands/brief.ts
|
|
16
16
|
var KST_OFFSET_MS = 9 * 60 * 60 * 1e3;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readRecords
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JXFQHNHV.js";
|
|
4
4
|
import {
|
|
5
5
|
loadState
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UB4RLTLJ.js";
|
|
7
7
|
import {
|
|
8
8
|
resolveProjectRoot
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-CLWQEWEG.js";
|
|
10
|
+
import "./chunk-PIOV3MQT.js";
|
|
11
11
|
import {
|
|
12
12
|
caps,
|
|
13
13
|
signal
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-M4H4VNN6.js";
|
|
15
15
|
|
|
16
16
|
// src/commands/changelog.ts
|
|
17
17
|
function runChangelogDraft(opts) {
|
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
ask,
|
|
5
5
|
buildScreens,
|
|
6
6
|
promptNumber
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PIOV3MQT.js";
|
|
8
8
|
import {
|
|
9
9
|
caps,
|
|
10
|
-
card,
|
|
11
10
|
findProjectRoot,
|
|
12
11
|
makeColors,
|
|
13
12
|
makeSymbols,
|
|
13
|
+
sectionBox,
|
|
14
14
|
signal
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-M4H4VNN6.js";
|
|
16
16
|
|
|
17
17
|
// src/commands/config.ts
|
|
18
18
|
import fs from "fs";
|
|
@@ -479,7 +479,7 @@ function renderConfig(config, c) {
|
|
|
479
479
|
`${s.lastBranch} ${color.dim('\uBA85\uB839\uC744 \uBC14\uAFB8\uB824\uBA74: awl config set verify.lint.cmd "biome check ."')}`
|
|
480
480
|
);
|
|
481
481
|
out.push(` ${color.dim("\uC9C1\uC811 \uD3B8\uC9D1\uB3C4 \uB429\uB2C8\uB2E4: .awl/config.json")}`);
|
|
482
|
-
return
|
|
482
|
+
return sectionBox(`${config.project} \uC124\uC815`, out, c);
|
|
483
483
|
}
|
|
484
484
|
function writeConfigFile(projectRoot, config) {
|
|
485
485
|
const p = path.join(projectRoot, ".awl", "config.json");
|
|
@@ -3,23 +3,23 @@ import {
|
|
|
3
3
|
getLatestVersionCached,
|
|
4
4
|
name,
|
|
5
5
|
version
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MCNUMMKK.js";
|
|
7
7
|
import {
|
|
8
8
|
resolveProjectRoot
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CLWQEWEG.js";
|
|
10
10
|
import {
|
|
11
11
|
packageEngineDir,
|
|
12
12
|
skillsVersionPath
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PIOV3MQT.js";
|
|
14
14
|
import {
|
|
15
15
|
caps,
|
|
16
|
-
card,
|
|
17
16
|
installedEngineVersion,
|
|
18
17
|
makeColors,
|
|
19
18
|
makeSymbols,
|
|
20
19
|
makeTokens,
|
|
20
|
+
sectionBox,
|
|
21
21
|
signal
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-M4H4VNN6.js";
|
|
23
23
|
|
|
24
24
|
// src/commands/version-check.ts
|
|
25
25
|
import fs from "fs";
|
|
@@ -67,14 +67,14 @@ function renderVersionCheck(result, c) {
|
|
|
67
67
|
const s = makeSymbols(c);
|
|
68
68
|
const t = makeTokens(c);
|
|
69
69
|
if (result.ok) {
|
|
70
|
-
return
|
|
70
|
+
return sectionBox("\uBC84\uC804 \uD655\uC778", [`${signal(c, "ok")} \uBC84\uC804\uC774 \uC804\uBD80 \uC77C\uCE58\uD569\uB2C8\uB2E4.`], c);
|
|
71
71
|
}
|
|
72
72
|
const out = [];
|
|
73
73
|
for (const m of result.mismatches) {
|
|
74
74
|
out.push(`${signal(c, "warn")} ${m.kind}: ${t.emphasis(m.a)} / ${t.emphasis(m.b)}`);
|
|
75
75
|
out.push(`${s.lastBranch} ${color.dim(m.hint)}`);
|
|
76
76
|
}
|
|
77
|
-
return
|
|
77
|
+
return sectionBox(`\uBC84\uC804 \uBD88\uC77C\uCE58 ${result.mismatches.length}\uAC74`, out, c);
|
|
78
78
|
}
|
|
79
79
|
async function runVersionCheck(opts) {
|
|
80
80
|
const projectRoot = resolveProjectRoot();
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
computeDurationMs
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OSKS2YRU.js";
|
|
4
4
|
import {
|
|
5
5
|
computeCoverage,
|
|
6
6
|
readRecords
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JXFQHNHV.js";
|
|
8
8
|
import {
|
|
9
9
|
loadState
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-UB4RLTLJ.js";
|
|
11
11
|
import {
|
|
12
12
|
requireConfig
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-CLWQEWEG.js";
|
|
14
14
|
import {
|
|
15
15
|
caps,
|
|
16
16
|
generationsDir,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
lockFile,
|
|
20
20
|
makeColors,
|
|
21
21
|
signal
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-M4H4VNN6.js";
|
|
23
23
|
|
|
24
24
|
// src/commands/evolve.ts
|
|
25
25
|
import fs from "fs";
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WORKTREES_DIR
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-H4EMS47F.js";
|
|
4
4
|
import {
|
|
5
5
|
readRecords
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JXFQHNHV.js";
|
|
7
7
|
import {
|
|
8
8
|
loadState
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-UB4RLTLJ.js";
|
|
10
10
|
import {
|
|
11
11
|
resolveProjectRoot,
|
|
12
12
|
run
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-CLWQEWEG.js";
|
|
14
14
|
import {
|
|
15
15
|
caps,
|
|
16
|
-
card,
|
|
17
16
|
makeColors,
|
|
18
17
|
makeSymbols,
|
|
19
18
|
makeTokens,
|
|
20
19
|
padEndDisplay,
|
|
20
|
+
sectionBox,
|
|
21
21
|
signal,
|
|
22
22
|
statusBadge,
|
|
23
23
|
stringWidth
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-M4H4VNN6.js";
|
|
25
25
|
|
|
26
26
|
// src/commands/status.ts
|
|
27
27
|
import fs2 from "fs";
|
|
@@ -240,7 +240,7 @@ function renderStatus(report, c) {
|
|
|
240
240
|
const t = makeTokens(c);
|
|
241
241
|
const s = makeSymbols(c);
|
|
242
242
|
if (report.phase === null && report.criteria.total === 0 && report.records.total === 0) {
|
|
243
|
-
return
|
|
243
|
+
return sectionBox(
|
|
244
244
|
"\uC9C4\uD589 \uC0C1\uD669",
|
|
245
245
|
[
|
|
246
246
|
`${signal(c, "info")} \uC544\uC9C1 \uC2DC\uC791 \uC804\uC785\uB2C8\uB2E4.`,
|
|
@@ -285,7 +285,7 @@ function renderStatus(report, c) {
|
|
|
285
285
|
` ${s.lastBranch} \uAC8C\uC774\uD2B8 ${g.gate} ${decisionColored(t, g.decision ?? "")}${autoTag} ${when} ${color.dim(summary)}`
|
|
286
286
|
);
|
|
287
287
|
}
|
|
288
|
-
return
|
|
288
|
+
return sectionBox(`\uC9C4\uD589 \uC0C1\uD669 \xB7 ${report.generation}\uC138\uB300`, out, c);
|
|
289
289
|
}
|
|
290
290
|
function markerBaseName(f) {
|
|
291
291
|
return f.replace(/\.md$/, "").replace(/\.(taken|hold|pass)$/, "");
|
|
@@ -382,7 +382,7 @@ function renderPipelineGroups(groups, c) {
|
|
|
382
382
|
out.push(` ${statusBadge(c, w.status)} ${padEndDisplay(w.name, nameWidth)}${w.status}`);
|
|
383
383
|
}
|
|
384
384
|
});
|
|
385
|
-
return
|
|
385
|
+
return sectionBox(`\uD30C\uC774\uD504\uB77C\uC778 ${groups.length}\uAC1C \uB808\uC778`, out, c);
|
|
386
386
|
}
|
|
387
387
|
async function runStatus(opts) {
|
|
388
388
|
const root = resolveProjectRoot();
|
|
@@ -5,22 +5,22 @@ import {
|
|
|
5
5
|
runWorkNew,
|
|
6
6
|
sanitizeForGit,
|
|
7
7
|
worktreeDirtyTracked
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-PFXDX4JF.js";
|
|
9
9
|
import {
|
|
10
10
|
loadState,
|
|
11
11
|
writeState
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-UB4RLTLJ.js";
|
|
13
13
|
import {
|
|
14
14
|
resolveProjectRoot,
|
|
15
15
|
run
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-CLWQEWEG.js";
|
|
17
17
|
import {
|
|
18
18
|
caps,
|
|
19
|
-
card,
|
|
20
19
|
feedback,
|
|
21
20
|
makeColors,
|
|
21
|
+
sectionBox,
|
|
22
22
|
signal
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-M4H4VNN6.js";
|
|
24
24
|
|
|
25
25
|
// src/commands/lane.ts
|
|
26
26
|
import fs from "fs";
|
|
@@ -168,7 +168,7 @@ async function collectLanes(root) {
|
|
|
168
168
|
function renderLaneList(lanes, c) {
|
|
169
169
|
const color = makeColors(c.color);
|
|
170
170
|
if (lanes.length === 0) {
|
|
171
|
-
return
|
|
171
|
+
return sectionBox(
|
|
172
172
|
"\uB808\uC778",
|
|
173
173
|
[
|
|
174
174
|
`${signal(c, "info")} \uB808\uC778\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.`,
|
|
@@ -184,7 +184,7 @@ function renderLaneList(lanes, c) {
|
|
|
184
184
|
out.push(`${color.bold(l.name.padEnd(nameWidth, " "))}${color.dim(l.branch)}`);
|
|
185
185
|
out.push(` ${color.dim(l.path)}`);
|
|
186
186
|
}
|
|
187
|
-
return
|
|
187
|
+
return sectionBox("\uB808\uC778", out, c);
|
|
188
188
|
}
|
|
189
189
|
async function runLaneList(opts) {
|
|
190
190
|
const root = requireRoot();
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
gatherVersionInputs
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DGPZEEFJ.js";
|
|
4
4
|
import {
|
|
5
5
|
checkVersions
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MCNUMMKK.js";
|
|
7
7
|
import {
|
|
8
8
|
loadProjectName,
|
|
9
9
|
readRecords
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JXFQHNHV.js";
|
|
11
11
|
import {
|
|
12
12
|
loadState,
|
|
13
13
|
readStateLock
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-UB4RLTLJ.js";
|
|
15
15
|
import {
|
|
16
16
|
CommandNotFoundError,
|
|
17
17
|
run,
|
|
18
18
|
tokenize
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-CLWQEWEG.js";
|
|
20
20
|
import {
|
|
21
21
|
caps,
|
|
22
|
-
card,
|
|
23
22
|
clipToWidth,
|
|
24
23
|
findProjectRoot,
|
|
25
24
|
globalRoot,
|
|
@@ -30,9 +29,10 @@ import {
|
|
|
30
29
|
makeTokens,
|
|
31
30
|
projectsFile,
|
|
32
31
|
rulesDir,
|
|
32
|
+
sectionBox,
|
|
33
33
|
signal,
|
|
34
34
|
visibleWidth
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-M4H4VNN6.js";
|
|
36
36
|
|
|
37
37
|
// src/commands/doctor.ts
|
|
38
38
|
import fs from "fs";
|
|
@@ -744,7 +744,7 @@ function renderText(report, c) {
|
|
|
744
744
|
const action = problems.some((p) => (p.hint ?? "").includes("init")) ? "awl init \uC744 \uC2E4\uD589\uD558\uC138\uC694." : "\uC704 \uC548\uB0B4\uB97C \uD655\uC778\uD558\uC138\uC694.";
|
|
745
745
|
lines.push(`${signal(c, "error")} ${color.red(`\uBB38\uC81C ${problems.length}\uAC1C.`)} ${action}`);
|
|
746
746
|
}
|
|
747
|
-
return
|
|
747
|
+
return sectionBox("Agent Work Loop \xB7 \uC9C4\uB2E8", lines, c);
|
|
748
748
|
}
|
|
749
749
|
async function runDoctor(opts) {
|
|
750
750
|
const report = await collectChecks();
|
|
@@ -2,18 +2,18 @@ import {
|
|
|
2
2
|
getCriterion,
|
|
3
3
|
loadState,
|
|
4
4
|
writeState
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-UB4RLTLJ.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveProjectRoot,
|
|
8
8
|
run
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CLWQEWEG.js";
|
|
10
10
|
import {
|
|
11
11
|
caps,
|
|
12
|
-
card,
|
|
13
12
|
makeColors,
|
|
14
13
|
recordsDir,
|
|
14
|
+
sectionBox,
|
|
15
15
|
signal
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-M4H4VNN6.js";
|
|
17
17
|
|
|
18
18
|
// src/commands/record.ts
|
|
19
19
|
import crypto from "crypto";
|
|
@@ -468,7 +468,7 @@ function summaryOf(r) {
|
|
|
468
468
|
function renderRecords(records, c) {
|
|
469
469
|
const color = makeColors(c.color);
|
|
470
470
|
if (records.length === 0) {
|
|
471
|
-
return
|
|
471
|
+
return sectionBox("\uAE30\uB85D", ["\uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."], c);
|
|
472
472
|
}
|
|
473
473
|
const out = [];
|
|
474
474
|
for (const r of records) {
|
|
@@ -479,7 +479,7 @@ function renderRecords(records, c) {
|
|
|
479
479
|
}
|
|
480
480
|
out.push("");
|
|
481
481
|
out.push(color.dim("\uC0C1\uC138\uB294 awl records --json \uB610\uB294 ~/.awl/records/ \uB97C \uBCF4\uC138\uC694."));
|
|
482
|
-
return
|
|
482
|
+
return sectionBox(`\uAE30\uB85D ${records.length}\uAC1C \xB7 \uCD5C\uADFC\uC21C`, out, c);
|
|
483
483
|
}
|
|
484
484
|
async function runRecord(type, opts) {
|
|
485
485
|
if (!RECORD_TYPES.includes(type)) {
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
acquireLock,
|
|
3
3
|
loadGotchaList,
|
|
4
4
|
releaseLock
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-DR7OZZ4N.js";
|
|
6
6
|
import {
|
|
7
7
|
caps,
|
|
8
|
-
card,
|
|
9
8
|
makeColors,
|
|
10
9
|
rulesDir,
|
|
10
|
+
sectionBox,
|
|
11
11
|
signal
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-M4H4VNN6.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/rules.ts
|
|
15
15
|
import { spawnSync } from "child_process";
|
|
@@ -100,14 +100,14 @@ function renderRules(rules, warnings, c) {
|
|
|
100
100
|
out.push("\uC801\uC6A9\uB418\uB294 \uADDC\uCE59\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.");
|
|
101
101
|
out.push("");
|
|
102
102
|
out.push(color.dim("\uADDC\uCE59\uC740 \uC791\uC5C5\uD558\uB2E4 \uAC19\uC740 \uC2E4\uD328\uB97C \uB450 \uBC88 \uD560 \uB54C \uC313\uC785\uB2C8\uB2E4."));
|
|
103
|
-
return
|
|
103
|
+
return sectionBox("\uADDC\uCE59", out, c);
|
|
104
104
|
}
|
|
105
105
|
for (const r of rules) {
|
|
106
106
|
const scope = r.scope ? color.dim(`[${r.scope}]`) : color.dim("[\uBC94\uC6A9]");
|
|
107
107
|
out.push(`${color.bold(r.id)} ${scope}`);
|
|
108
108
|
out.push(` ${r.body.split("\n")[0] ?? ""}`);
|
|
109
109
|
}
|
|
110
|
-
return
|
|
110
|
+
return sectionBox(`\uADDC\uCE59 ${rules.length}\uAC1C`, out, c);
|
|
111
111
|
}
|
|
112
112
|
function runRules(opts) {
|
|
113
113
|
if (opts.edit) {
|
|
@@ -390,7 +390,7 @@ function viewportWidth() {
|
|
|
390
390
|
}
|
|
391
391
|
return HARD_MAX_WIDTH;
|
|
392
392
|
}
|
|
393
|
-
function
|
|
393
|
+
function sectionBox(title, lines, c = caps(), minInnerWidth = 0) {
|
|
394
394
|
const s = makeSymbols(c);
|
|
395
395
|
const t = makeTokens(c);
|
|
396
396
|
const pad = 2;
|
|
@@ -404,16 +404,12 @@ function card(title, lines, c = caps(), minInnerWidth = 0) {
|
|
|
404
404
|
Math.max(minInnerWidth, visibleWidth(title), ...wrapped.map(visibleWidth), 0)
|
|
405
405
|
);
|
|
406
406
|
const frame = (text) => t.frame(text);
|
|
407
|
-
const row = (text) => {
|
|
408
|
-
const gap = Math.max(0, inner - visibleWidth(text));
|
|
409
|
-
return `${frame(s.boxV)}${" ".repeat(pad)}${text}${" ".repeat(gap + pad)}${frame(s.boxV)}`;
|
|
410
|
-
};
|
|
407
|
+
const row = (text) => `${frame(s.boxV)}${" ".repeat(pad)}${text}`;
|
|
411
408
|
const safeTitle = truncateToWidth(title, inner);
|
|
412
409
|
const tvis = visibleWidth(safeTitle);
|
|
413
410
|
const dash = Math.max(1, inner + pad * 2 - 3 - tvis);
|
|
414
|
-
const top = frame(`${s.boxTL}${s.boxH} `) + t.emphasis(t.accent(safeTitle)) + frame(` ${s.boxH.repeat(dash)}
|
|
415
|
-
|
|
416
|
-
return [top, ...wrapped.map(row), bottom].join("\n");
|
|
411
|
+
const top = frame(`${s.boxTL}${s.boxH} `) + t.emphasis(t.accent(safeTitle)) + frame(` ${s.boxH.repeat(dash)}`);
|
|
412
|
+
return [top, ...wrapped.map(row)].join("\n");
|
|
417
413
|
}
|
|
418
414
|
var RESET = "\x1B[0m";
|
|
419
415
|
function ansi(code, str, enabled) {
|
|
@@ -515,7 +511,7 @@ export {
|
|
|
515
511
|
clipToWidth,
|
|
516
512
|
padEndDisplay,
|
|
517
513
|
makeSymbols,
|
|
518
|
-
|
|
514
|
+
sectionBox,
|
|
519
515
|
makeTokens,
|
|
520
516
|
signal,
|
|
521
517
|
statusBadge,
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
protectedFilesMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KJG2ULS4.js";
|
|
4
4
|
import {
|
|
5
5
|
gitDirtyFiles
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-J7EKKHVW.js";
|
|
7
7
|
import {
|
|
8
8
|
applyVerificationAttempts,
|
|
9
9
|
loadState,
|
|
10
10
|
writeState
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UB4RLTLJ.js";
|
|
12
12
|
import {
|
|
13
13
|
CommandNotFoundError,
|
|
14
14
|
VERIFY_ORDER,
|
|
15
15
|
requireConfig,
|
|
16
16
|
run
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-CLWQEWEG.js";
|
|
18
18
|
import {
|
|
19
19
|
caps,
|
|
20
|
-
card,
|
|
21
20
|
makeColors,
|
|
21
|
+
sectionBox,
|
|
22
22
|
signal
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-M4H4VNN6.js";
|
|
24
24
|
|
|
25
25
|
// src/commands/verify.ts
|
|
26
26
|
import fs from "fs";
|
|
@@ -102,7 +102,7 @@ function renderVerify(report, c) {
|
|
|
102
102
|
out.push(
|
|
103
103
|
report.passed ? `${signal(c, "ok")} \uC804\uBD80 \uD1B5\uACFC\uD588\uC2B5\uB2C8\uB2E4.` : `${signal(c, "error")} \uC2E4\uD328\uD55C \uAC80\uC99D\uC774 \uC788\uC2B5\uB2C8\uB2E4.`
|
|
104
104
|
);
|
|
105
|
-
return
|
|
105
|
+
return sectionBox("\uAC80\uC99D \uACB0\uACFC", out, c);
|
|
106
106
|
}
|
|
107
107
|
function isCheckPassed(r) {
|
|
108
108
|
return !r.error && !r.timedOut && r.exitCode === 0;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
requireConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CLWQEWEG.js";
|
|
4
4
|
import {
|
|
5
5
|
caps,
|
|
6
|
-
card,
|
|
7
6
|
generationsDir,
|
|
8
7
|
makeColors,
|
|
9
8
|
padEndDisplay,
|
|
9
|
+
sectionBox,
|
|
10
10
|
stringWidth
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-M4H4VNN6.js";
|
|
12
12
|
|
|
13
13
|
// src/commands/metrics.ts
|
|
14
14
|
import fs from "fs";
|
|
@@ -78,7 +78,7 @@ function renderMetrics(generations, c) {
|
|
|
78
78
|
const color = makeColors(c.color);
|
|
79
79
|
const caveat = color.dim(renderMetricsCaveat());
|
|
80
80
|
if (generations.length === 0) {
|
|
81
|
-
return
|
|
81
|
+
return sectionBox("\uC138\uB300 \uC9C0\uD45C", ["\uC138\uB300 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.", "", caveat], c);
|
|
82
82
|
}
|
|
83
83
|
const idWidth = Math.max(...generations.map((g) => g.workitem.length), 9) + 2;
|
|
84
84
|
const out = [];
|
|
@@ -93,7 +93,7 @@ function renderMetrics(generations, c) {
|
|
|
93
93
|
}
|
|
94
94
|
out.push("");
|
|
95
95
|
out.push(caveat);
|
|
96
|
-
return
|
|
96
|
+
return sectionBox(`\uC138\uB300 ${generations.length}\uAC1C \xB7 \uC2DC\uAC04\uC21C`, out, c);
|
|
97
97
|
}
|
|
98
98
|
var str = (v) => typeof v === "string" && v !== "" ? v : "?";
|
|
99
99
|
var round2 = (n) => Math.round(n * 100) / 100;
|
|
@@ -145,7 +145,7 @@ function renderCompare(groups, untagged, c) {
|
|
|
145
145
|
const color = makeColors(c.color);
|
|
146
146
|
const caveat = color.dim(renderMetricsCaveat());
|
|
147
147
|
if (groups.length === 0) {
|
|
148
|
-
return
|
|
148
|
+
return sectionBox(
|
|
149
149
|
"\uCF00\uC774\uC2A4 \uBE44\uAD50",
|
|
150
150
|
[`experiment \uD0DC\uADF8\uAC00 \uC788\uB294 \uC138\uB300\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4(\uD0DC\uADF8 \uC5C6\uB294 \uC138\uB300 ${untagged}\uAC1C).`, "", caveat],
|
|
151
151
|
c
|
|
@@ -166,7 +166,7 @@ function renderCompare(groups, untagged, c) {
|
|
|
166
166
|
}
|
|
167
167
|
out.push("");
|
|
168
168
|
out.push(caveat);
|
|
169
|
-
return
|
|
169
|
+
return sectionBox(`\uCF00\uC774\uC2A4 ${groups.length}\uAC1C \uBE44\uAD50`, out, c);
|
|
170
170
|
}
|
|
171
171
|
function runMetrics(opts) {
|
|
172
172
|
const { config } = requireConfig();
|
|
@@ -7,39 +7,39 @@ import {
|
|
|
7
7
|
isCheckPassed,
|
|
8
8
|
runVerifyChecks,
|
|
9
9
|
writeVerifyBaseline
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-MLD2GOVM.js";
|
|
11
11
|
import {
|
|
12
12
|
gitBranch
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-J7EKKHVW.js";
|
|
14
14
|
import {
|
|
15
15
|
parseRuleFile
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-KNBSZQGN.js";
|
|
17
17
|
import {
|
|
18
18
|
nextGotchaId
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-DR7OZZ4N.js";
|
|
20
20
|
import {
|
|
21
21
|
loadState,
|
|
22
22
|
migrateState,
|
|
23
23
|
writeState
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-UB4RLTLJ.js";
|
|
25
25
|
import {
|
|
26
26
|
loadConfig,
|
|
27
27
|
resolveProjectRoot,
|
|
28
28
|
run
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-CLWQEWEG.js";
|
|
30
30
|
import {
|
|
31
31
|
installClaudeSkill
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-PIOV3MQT.js";
|
|
33
33
|
import {
|
|
34
34
|
caps,
|
|
35
|
-
card,
|
|
36
35
|
feedback,
|
|
37
36
|
globalRoot,
|
|
38
37
|
makeColors,
|
|
39
38
|
makeSymbols,
|
|
40
39
|
makeTokens,
|
|
40
|
+
sectionBox,
|
|
41
41
|
signal
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-M4H4VNN6.js";
|
|
43
43
|
|
|
44
44
|
// src/commands/work.ts
|
|
45
45
|
import fs2 from "fs";
|
|
@@ -299,7 +299,7 @@ function renderWorkList(list, c) {
|
|
|
299
299
|
const t = makeTokens(c);
|
|
300
300
|
const s = makeSymbols(c);
|
|
301
301
|
if (list.length === 0) {
|
|
302
|
-
return
|
|
302
|
+
return sectionBox(
|
|
303
303
|
"\uC6CC\uD06C\uC544\uC774\uD15C",
|
|
304
304
|
[
|
|
305
305
|
`${signal(c, "info")} \uB4F1\uB85D\uB41C \uC6CC\uD06C\uC544\uC774\uD15C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.`,
|
|
@@ -324,7 +324,7 @@ function renderWorkList(list, c) {
|
|
|
324
324
|
out.push(` ${s.lastBranch} ${color.dim(`worktree: ${w.worktreePath}`)}`);
|
|
325
325
|
}
|
|
326
326
|
}
|
|
327
|
-
return
|
|
327
|
+
return sectionBox("\uC6CC\uD06C\uC544\uC774\uD15C", out, c);
|
|
328
328
|
}
|
|
329
329
|
function registryOf(state) {
|
|
330
330
|
return state.workitems && typeof state.workitems === "object" ? state.workitems : {};
|