agent-work-loop 0.6.26 → 0.6.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/{brief-JIXESFMO.js → brief-O6IGLOPY.js} +5 -5
- package/dist/{changelog-PBF6JBOC.js → changelog-4XKSWJX2.js} +5 -5
- package/dist/{chunk-PUI2B27T.js → chunk-3CR74VLL.js} +111 -14
- package/dist/{chunk-YODF2HTK.js → chunk-45X7T64Y.js} +12 -37
- package/dist/{chunk-F34MITMC.js → chunk-7WDDWO2B.js} +3 -3
- package/dist/{chunk-XD4IDIEM.js → chunk-7WE2E76P.js} +6 -6
- package/dist/{chunk-2YWYGWCZ.js → chunk-AYFHV27J.js} +70 -32
- package/dist/{chunk-JDCW2Y2G.js → chunk-FJKJTXN4.js} +7 -7
- package/dist/{chunk-NXH5EBBJ.js → chunk-FOTWJOWF.js} +8 -8
- package/dist/{chunk-OPPRCJT2.js → chunk-FUP7DKT3.js} +7 -7
- package/dist/{chunk-AMQFBJCO.js → chunk-IEFYCUWX.js} +18 -8
- package/dist/{chunk-SQFGUNTY.js → chunk-ILXQGAUE.js} +5 -5
- package/dist/{chunk-KEVDO3C3.js → chunk-R4LFOY5M.js} +9 -9
- package/dist/{chunk-B6AEYNF3.js → chunk-RAMHRXFX.js} +40 -23
- package/dist/{chunk-PLHEP5QE.js → chunk-RXG6BUQ6.js} +5 -5
- package/dist/{chunk-6DXZYTDA.js → chunk-TTLFDLK6.js} +6 -6
- package/dist/{chunk-XQ7JJXBY.js → chunk-VX23A4FW.js} +7 -7
- package/dist/{chunk-FQLRA2YC.js → chunk-WZCIAGNJ.js} +1 -1
- package/dist/cli.js +61 -53
- package/dist/{commit-OUZNLCNL.js → commit-2UFIIERX.js} +6 -6
- package/dist/{config-26FHYODU.js → config-D7LUIZYA.js} +3 -3
- package/dist/{doctor-UHUA6ULF.js → doctor-IAK57PIS.js} +8 -8
- package/dist/{evolve-V5BQCSHC.js → evolve-RMKOBGSK.js} +7 -7
- package/dist/{feedback-UJ7WSARN.js → feedback-RT63F57C.js} +8 -8
- package/dist/{gotchas-L3NXDDDI.js → gotchas-DM7BXF77.js} +11 -11
- package/dist/{hold-recheck-QINLKCPM.js → hold-recheck-I6JMGTP6.js} +18 -18
- package/dist/{init-6R4MT6FQ.js → init-XUJTEY2Y.js} +6 -2
- package/dist/lane-OZ5WGGDT.js +41 -0
- package/dist/{loop-summary-FVJICIWA.js → loop-summary-7HMFHKUD.js} +10 -10
- package/dist/{metrics-NVJFKQ4J.js → metrics-F3YDMURU.js} +4 -4
- package/dist/{record-JJJSGU5E.js → record-ZNGMMZHF.js} +5 -5
- package/dist/{review-I4QMZPTI.js → review-R5I4KYFN.js} +16 -16
- package/dist/{rules-OTUONMXO.js → rules-GVDXKROQ.js} +8 -8
- package/dist/{state-UC45ECTI.js → state-B45D6VSF.js} +4 -4
- package/dist/status-7SBNSHTV.js +40 -0
- package/dist/{uninstall-HHKLOXF5.js → uninstall-Q6KJYH5E.js} +17 -17
- package/dist/update-WHHGVXIY.js +135 -0
- package/dist/{verify-A64P77RU.js → verify-ZBDWID5U.js} +10 -10
- package/dist/version-check-3NVRLYUF.js +14 -0
- package/dist/{work-LMM5W2PQ.js → work-EVYCDIPE.js} +14 -14
- package/engine/version.json +1 -1
- package/package.json +1 -1
- package/dist/lane-CJVXEV3A.js +0 -41
- package/dist/status-TU36KJDH.js +0 -40
- package/dist/update-BXRWE7OH.js +0 -61
- package/dist/version-check-UBXBVPTS.js +0 -14
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
gatherVersionInputs
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FJKJTXN4.js";
|
|
4
4
|
import {
|
|
5
5
|
checkVersions
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7WDDWO2B.js";
|
|
7
7
|
import {
|
|
8
8
|
loadProjectName,
|
|
9
9
|
readRecords
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-TTLFDLK6.js";
|
|
11
11
|
import {
|
|
12
12
|
loadState,
|
|
13
13
|
readStateLock
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-7WE2E76P.js";
|
|
15
15
|
import {
|
|
16
16
|
CommandNotFoundError,
|
|
17
17
|
run,
|
|
18
18
|
tokenize
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RAMHRXFX.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-45X7T64Y.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();
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
requireConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RAMHRXFX.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-45X7T64Y.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();
|
|
@@ -5,22 +5,25 @@ import {
|
|
|
5
5
|
runWorkNew,
|
|
6
6
|
sanitizeForGit,
|
|
7
7
|
worktreeDirtyTracked
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-3CR74VLL.js";
|
|
9
|
+
import {
|
|
10
|
+
loadProjectName
|
|
11
|
+
} from "./chunk-TTLFDLK6.js";
|
|
9
12
|
import {
|
|
10
13
|
loadState,
|
|
11
14
|
writeState
|
|
12
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-7WE2E76P.js";
|
|
13
16
|
import {
|
|
14
17
|
resolveProjectRoot,
|
|
15
18
|
run
|
|
16
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RAMHRXFX.js";
|
|
17
20
|
import {
|
|
18
21
|
caps,
|
|
19
|
-
card,
|
|
20
22
|
feedback,
|
|
21
23
|
makeColors,
|
|
24
|
+
sectionBox,
|
|
22
25
|
signal
|
|
23
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-45X7T64Y.js";
|
|
24
27
|
|
|
25
28
|
// src/commands/lane.ts
|
|
26
29
|
import fs from "fs";
|
|
@@ -168,7 +171,7 @@ async function collectLanes(root) {
|
|
|
168
171
|
function renderLaneList(lanes, c) {
|
|
169
172
|
const color = makeColors(c.color);
|
|
170
173
|
if (lanes.length === 0) {
|
|
171
|
-
return
|
|
174
|
+
return sectionBox(
|
|
172
175
|
"\uB808\uC778",
|
|
173
176
|
[
|
|
174
177
|
`${signal(c, "info")} \uB808\uC778\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.`,
|
|
@@ -184,7 +187,7 @@ function renderLaneList(lanes, c) {
|
|
|
184
187
|
out.push(`${color.bold(l.name.padEnd(nameWidth, " "))}${color.dim(l.branch)}`);
|
|
185
188
|
out.push(` ${color.dim(l.path)}`);
|
|
186
189
|
}
|
|
187
|
-
return
|
|
190
|
+
return sectionBox("\uB808\uC778", out, c);
|
|
188
191
|
}
|
|
189
192
|
async function runLaneList(opts) {
|
|
190
193
|
const root = requireRoot();
|
|
@@ -258,7 +261,8 @@ ${feedback(c, "error", `\uB808\uC778 \uBE0C\uB79C\uCE58 ${branch} \uC5D0 \uBCD1\
|
|
|
258
261
|
}
|
|
259
262
|
let merged = null;
|
|
260
263
|
try {
|
|
261
|
-
|
|
264
|
+
const project = loadProjectName(root) ?? path.basename(root);
|
|
265
|
+
merged = mergeIsolatedHome(path.join(lanePath, ".awl", "home"), { project, lane: laneName });
|
|
262
266
|
} catch (e) {
|
|
263
267
|
process.stderr.write(
|
|
264
268
|
`
|
|
@@ -287,6 +291,12 @@ ${feedback(c, "ok", `\uB808\uC778 \uC81C\uAC70 ${color.bold(laneName)}`, branch
|
|
|
287
291
|
if (merged && (merged.gotchasAdded > 0 || merged.rulesAdded > 0 || merged.generationsAdded > 0)) {
|
|
288
292
|
process.stdout.write(
|
|
289
293
|
` ${color.dim(`\uD559\uC2B5 \uC804\uC5ED \uBCD1\uD569 gotcha ${merged.gotchasAdded} \xB7 rule ${merged.rulesAdded} \xB7 generation ${merged.generationsAdded}`)}
|
|
294
|
+
`
|
|
295
|
+
);
|
|
296
|
+
}
|
|
297
|
+
if (merged && merged.recordsMerged > 0) {
|
|
298
|
+
process.stdout.write(
|
|
299
|
+
` ${color.dim(`records \uC804\uC5ED \uBCD1\uD569 ${merged.recordsMerged}\uAC74${merged.recordsArchivePath ? ` \xB7 \uC544\uCE74\uC774\uBE0C ${merged.recordsArchivePath}` : ""}`)}
|
|
290
300
|
`
|
|
291
301
|
);
|
|
292
302
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
computeDurationMs
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FUP7DKT3.js";
|
|
4
4
|
import {
|
|
5
5
|
computeCoverage,
|
|
6
6
|
readRecords
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-TTLFDLK6.js";
|
|
8
8
|
import {
|
|
9
9
|
loadState
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-7WE2E76P.js";
|
|
11
11
|
import {
|
|
12
12
|
requireConfig
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-RAMHRXFX.js";
|
|
14
14
|
import {
|
|
15
15
|
caps,
|
|
16
16
|
generationsDir,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
lockFile,
|
|
20
20
|
makeColors,
|
|
21
21
|
signal
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-45X7T64Y.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-IEFYCUWX.js";
|
|
4
4
|
import {
|
|
5
5
|
readRecords
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TTLFDLK6.js";
|
|
7
7
|
import {
|
|
8
8
|
loadState
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7WE2E76P.js";
|
|
10
10
|
import {
|
|
11
11
|
resolveProjectRoot,
|
|
12
12
|
run
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-RAMHRXFX.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-45X7T64Y.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();
|
|
@@ -3,16 +3,17 @@ import {
|
|
|
3
3
|
LANG_VALUES,
|
|
4
4
|
ask,
|
|
5
5
|
buildScreens,
|
|
6
|
-
promptNumber
|
|
7
|
-
|
|
6
|
+
promptNumber,
|
|
7
|
+
selectMulti
|
|
8
|
+
} from "./chunk-AYFHV27J.js";
|
|
8
9
|
import {
|
|
9
10
|
caps,
|
|
10
|
-
card,
|
|
11
11
|
findProjectRoot,
|
|
12
12
|
makeColors,
|
|
13
13
|
makeSymbols,
|
|
14
|
+
sectionBox,
|
|
14
15
|
signal
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-45X7T64Y.js";
|
|
16
17
|
|
|
17
18
|
// src/commands/config.ts
|
|
18
19
|
import fs from "fs";
|
|
@@ -204,7 +205,7 @@ function loadConfig(projectRoot) {
|
|
|
204
205
|
const rv = raw.verify;
|
|
205
206
|
const config = {
|
|
206
207
|
project: raw.project,
|
|
207
|
-
mainLanguage:
|
|
208
|
+
mainLanguage: Array.isArray(raw.mainLanguage) ? raw.mainLanguage.filter((v) => typeof v === "string") : [],
|
|
208
209
|
character: typeof raw.character === "string" ? raw.character : "",
|
|
209
210
|
engineVersion: raw.engineVersion,
|
|
210
211
|
...typeof raw.namingConvention === "string" ? { namingConvention: raw.namingConvention } : {},
|
|
@@ -329,18 +330,19 @@ async function applyConfigValue(config, projectRoot, parsed, rawValue, opts) {
|
|
|
329
330
|
return { ok: true, message: `project = ${v2}` };
|
|
330
331
|
}
|
|
331
332
|
if (parsed.kind === "mainLanguage") {
|
|
332
|
-
const
|
|
333
|
-
if (
|
|
333
|
+
const values = rawValue.split(",").map((s) => s.trim()).filter(Boolean);
|
|
334
|
+
if (values.length === 0) {
|
|
334
335
|
return { ok: false, message: "mainLanguage \uB294 \uBE44\uC6B8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4." };
|
|
335
336
|
}
|
|
336
|
-
config.mainLanguage =
|
|
337
|
-
|
|
337
|
+
config.mainLanguage = values;
|
|
338
|
+
const unknown = values.filter((v2) => !KNOWN_LANGUAGES.includes(v2));
|
|
339
|
+
if (unknown.length > 0) {
|
|
338
340
|
return {
|
|
339
341
|
ok: true,
|
|
340
|
-
message: `mainLanguage = ${
|
|
342
|
+
message: `mainLanguage = ${values.join(", ")} (\uACBD\uACE0: \uC54C\uB824\uC9C4 \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4 \u2014 ${unknown.join(", ")} / \uC54C\uB824\uC9C4 \uAC12: ${KNOWN_LANGUAGES.join("/")})`
|
|
341
343
|
};
|
|
342
344
|
}
|
|
343
|
-
return { ok: true, message: `mainLanguage = ${
|
|
345
|
+
return { ok: true, message: `mainLanguage = ${values.join(", ")}` };
|
|
344
346
|
}
|
|
345
347
|
if (parsed.kind === "character") {
|
|
346
348
|
config.character = rawValue;
|
|
@@ -460,7 +462,7 @@ function renderConfig(config, c) {
|
|
|
460
462
|
const color = makeColors(c.color);
|
|
461
463
|
const s = makeSymbols(c);
|
|
462
464
|
const out = [];
|
|
463
|
-
out.push(`${s.branch} \uC8FC \uC5B8\uC5B4 ${config.mainLanguage || "(\uC5C6\uC74C)"}`);
|
|
465
|
+
out.push(`${s.branch} \uC8FC \uC5B8\uC5B4 ${config.mainLanguage.join(", ") || "(\uC5C6\uC74C)"}`);
|
|
464
466
|
out.push(`${s.branch} \uC131\uACA9 ${config.character || "(\uC5C6\uC74C)"}`);
|
|
465
467
|
out.push(`${s.branch} \uC5D4\uC9C4 ${config.engineVersion}`);
|
|
466
468
|
out.push("");
|
|
@@ -479,7 +481,7 @@ function renderConfig(config, c) {
|
|
|
479
481
|
`${s.lastBranch} ${color.dim('\uBA85\uB839\uC744 \uBC14\uAFB8\uB824\uBA74: awl config set verify.lint.cmd "biome check ."')}`
|
|
480
482
|
);
|
|
481
483
|
out.push(` ${color.dim("\uC9C1\uC811 \uD3B8\uC9D1\uB3C4 \uB429\uB2C8\uB2E4: .awl/config.json")}`);
|
|
482
|
-
return
|
|
484
|
+
return sectionBox(`${config.project} \uC124\uC815`, out, c);
|
|
483
485
|
}
|
|
484
486
|
function writeConfigFile(projectRoot, config) {
|
|
485
487
|
const p = path.join(projectRoot, ".awl", "config.json");
|
|
@@ -513,19 +515,34 @@ ${screens.verify}
|
|
|
513
515
|
async function editMainLanguage(rl, config, projectRoot, c) {
|
|
514
516
|
const screens = buildScreens(projectRoot, true, c);
|
|
515
517
|
process.stdout.write(`
|
|
516
|
-
\uD604\uC7AC \uC124\uC815: ${config.mainLanguage || "(\uC5C6\uC74C)"}
|
|
518
|
+
\uD604\uC7AC \uC124\uC815: ${config.mainLanguage.join(", ") || "(\uC5C6\uC74C)"}
|
|
517
519
|
`);
|
|
518
520
|
process.stdout.write(`${screens.lang}
|
|
519
521
|
`);
|
|
520
|
-
const
|
|
521
|
-
const
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
522
|
+
const curIndices = config.mainLanguage.map((lang) => LANG_VALUES.indexOf(lang)).filter((i) => i >= 0);
|
|
523
|
+
const checked = await selectMulti(
|
|
524
|
+
rl,
|
|
525
|
+
LANG_OPTIONS,
|
|
526
|
+
curIndices.length > 0 ? curIndices : [0],
|
|
527
|
+
c,
|
|
528
|
+
false,
|
|
529
|
+
"\uC8FC \uC5B8\uC5B4"
|
|
530
|
+
);
|
|
531
|
+
const manualIdx = LANG_OPTIONS.length - 1;
|
|
532
|
+
const values = checked.filter((i) => i !== manualIdx).map((i) => LANG_VALUES[i]).filter((v) => typeof v === "string" && v !== "");
|
|
533
|
+
if (checked.includes(manualIdx)) {
|
|
534
|
+
const typed = (await ask(rl, " \uC8FC \uC5B8\uC5B4\uB97C \uC785\uB825\uD558\uC138\uC694: ")).trim();
|
|
535
|
+
if (typed) {
|
|
536
|
+
values.push(typed);
|
|
537
|
+
}
|
|
525
538
|
}
|
|
526
|
-
const outcome = await applyConfigValue(
|
|
527
|
-
|
|
528
|
-
|
|
539
|
+
const outcome = await applyConfigValue(
|
|
540
|
+
config,
|
|
541
|
+
projectRoot,
|
|
542
|
+
{ kind: "mainLanguage" },
|
|
543
|
+
values.join(","),
|
|
544
|
+
{ force: false }
|
|
545
|
+
);
|
|
529
546
|
process.stdout.write(` ${outcome.message}
|
|
530
547
|
`);
|
|
531
548
|
}
|
|
@@ -621,7 +638,7 @@ function renderSettableKeys(config, c) {
|
|
|
621
638
|
const color = makeColors(c.color);
|
|
622
639
|
const currentOf = (key) => {
|
|
623
640
|
if (key === "project") return config.project;
|
|
624
|
-
if (key === "mainLanguage") return config.mainLanguage || "(\uC5C6\uC74C)";
|
|
641
|
+
if (key === "mainLanguage") return config.mainLanguage.join(", ") || "(\uC5C6\uC74C)";
|
|
625
642
|
if (key === "character") return config.character || "(\uC5C6\uC74C)";
|
|
626
643
|
const m = /^verify\.(typecheck|lint|test|e2e)\.(cmd|cwd|env)$/.exec(key);
|
|
627
644
|
if (!m?.[1] || !m[2]) return "";
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
acquireLock,
|
|
3
3
|
loadGotchaList,
|
|
4
4
|
releaseLock
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ILXQGAUE.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-45X7T64Y.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) {
|
|
@@ -2,18 +2,18 @@ import {
|
|
|
2
2
|
getCriterion,
|
|
3
3
|
loadState,
|
|
4
4
|
writeState
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7WE2E76P.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveProjectRoot,
|
|
8
8
|
run
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-RAMHRXFX.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-45X7T64Y.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)) {
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
protectedFilesMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WZCIAGNJ.js";
|
|
4
4
|
import {
|
|
5
5
|
gitDirtyFiles
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FOTWJOWF.js";
|
|
7
7
|
import {
|
|
8
8
|
applyVerificationAttempts,
|
|
9
9
|
loadState,
|
|
10
10
|
writeState
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-7WE2E76P.js";
|
|
12
12
|
import {
|
|
13
13
|
CommandNotFoundError,
|
|
14
14
|
VERIFY_ORDER,
|
|
15
15
|
requireConfig,
|
|
16
16
|
run
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RAMHRXFX.js";
|
|
18
18
|
import {
|
|
19
19
|
caps,
|
|
20
|
-
card,
|
|
21
20
|
makeColors,
|
|
21
|
+
sectionBox,
|
|
22
22
|
signal
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-45X7T64Y.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;
|