agent-work-loop 0.6.41 → 0.6.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{brief-GQRHGJQN.js → brief-I2EQVY3F.js} +5 -5
- package/dist/{changelog-HZMH3RPD.js → changelog-UBIZQHQO.js} +5 -5
- package/dist/{chunk-OJ7YO3MY.js → chunk-236TTTK3.js} +2 -2
- package/dist/{chunk-XBUKFMNN.js → chunk-2FQ5HCDI.js} +41 -13
- package/dist/{chunk-G6JX5EYW.js → chunk-3LPCP55B.js} +61 -10
- package/dist/{chunk-HFRQCP26.js → chunk-3N3QH4PK.js} +4 -4
- package/dist/{chunk-6F4VAVKF.js → chunk-4BUPV5VU.js} +3 -3
- package/dist/{chunk-B76434VM.js → chunk-DNDODLP2.js} +2 -2
- package/dist/{chunk-SUF5ISJM.js → chunk-FGHILN3D.js} +9 -1
- package/dist/{chunk-4ZLARTXS.js → chunk-GYXIREXZ.js} +47 -3
- package/dist/{chunk-NOU677FX.js → chunk-K2JV27JR.js} +1 -1
- package/dist/{chunk-OWILAE4M.js → chunk-L4VWHK4D.js} +53 -39
- package/dist/{chunk-2XQZQP7Z.js → chunk-LBZNBCAY.js} +6 -7
- package/dist/{chunk-CSBKWYFK.js → chunk-O7PUNJVM.js} +5 -5
- package/dist/{chunk-7TMAQRJS.js → chunk-SJG22DAK.js} +27 -6
- package/dist/{chunk-FKBBGXGF.js → chunk-SKJZSRVR.js} +5 -5
- package/dist/{chunk-7D4T7HFK.js → chunk-SNWJWX5K.js} +126 -6
- package/dist/{chunk-UNANHUG3.js → chunk-WOH6WML7.js} +2 -2
- package/dist/cli.js +53 -43
- package/dist/{commit-SU6CTBU3.js → commit-I5ULIUHW.js} +6 -6
- package/dist/{config-Z4G5SBWJ.js → config-6VD46H24.js} +9 -3
- package/dist/{doctor-GHWUUAWV.js → doctor-QQLQOP3Y.js} +8 -8
- package/dist/{evolve-SQJ5LIE4.js → evolve-MXGX33GB.js} +7 -7
- package/dist/{feedback-TPITVUZL.js → feedback-K3P6667T.js} +5 -5
- package/dist/{gotchas-UEZG3HVO.js → gotchas-HF5Q2MOA.js} +7 -7
- package/dist/{hold-recheck-STHUHCOU.js → hold-recheck-CBSGGRBM.js} +6 -17
- package/dist/{init-AVVD77XM.js → init-3B4ZRGWY.js} +2 -2
- package/dist/lane-BJ2NJYAH.js +39 -0
- package/dist/{loop-summary-L4UTUOPY.js → loop-summary-RZQBTKVY.js} +49 -7
- package/dist/{metrics-SOYVRSNM.js → metrics-6SZQAG3C.js} +4 -4
- package/dist/{record-V6V5XPPA.js → record-UU4WPT2Z.js} +5 -5
- package/dist/{remove-6VQS4ST6.js → remove-UOAMHEUC.js} +16 -16
- package/dist/{review-42SXUBZE.js → review-DXSGXZLX.js} +15 -15
- package/dist/{rules-ASJFXFGG.js → rules-QDAC6BUX.js} +8 -8
- package/dist/{state-6TNG2EC5.js → state-DZC7JVEK.js} +4 -4
- package/dist/status-ZZEF4NYL.js +29 -0
- package/dist/{update-3AYB3V4I.js → update-CKGPHO5B.js} +2 -2
- package/dist/{verify-ZVZCJ3LH.js → verify-LOTTWOHB.js} +10 -10
- package/dist/version-check-SILVRBMJ.js +14 -0
- package/dist/{work-TVUOH7GQ.js → work-RCV5H7TL.js} +14 -14
- package/engine/skills/claude/awl-loop/SKILL.md +16 -0
- package/engine/skills/claude/awl-loop/reference.md +4 -0
- package/engine/skills/claude/awl-pipeline/SKILL.md +74 -0
- package/engine/skills/claude/awl-pipeline-exec/SKILL.md +8 -1
- package/engine/skills/claude/awl-pipeline-review/SKILL.md +7 -1
- package/engine/version.json +1 -1
- package/package.json +1 -1
- package/dist/lane-JTE45KFF.js +0 -41
- package/dist/status-43UVJLVD.js +0 -40
- package/dist/version-check-OKCLT4BF.js +0 -14
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
gatherVersionInputs
|
|
3
|
-
} from "./chunk-HFRQCP26.js";
|
|
4
|
-
import {
|
|
5
|
-
checkVersions
|
|
6
|
-
} from "./chunk-B76434VM.js";
|
|
7
1
|
import {
|
|
8
2
|
loadProjectName,
|
|
9
3
|
readRecords
|
|
10
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4BUPV5VU.js";
|
|
11
5
|
import {
|
|
12
6
|
loadState,
|
|
13
7
|
readStateLock
|
|
14
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-WOH6WML7.js";
|
|
9
|
+
import {
|
|
10
|
+
gatherVersionInputs
|
|
11
|
+
} from "./chunk-3N3QH4PK.js";
|
|
12
|
+
import {
|
|
13
|
+
checkVersions
|
|
14
|
+
} from "./chunk-DNDODLP2.js";
|
|
15
15
|
import {
|
|
16
16
|
CommandNotFoundError,
|
|
17
17
|
run,
|
|
18
18
|
tokenize
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-SNWJWX5K.js";
|
|
20
|
+
import {
|
|
21
|
+
listRegisteredProjects
|
|
22
|
+
} from "./chunk-SJG22DAK.js";
|
|
20
23
|
import {
|
|
21
24
|
caps,
|
|
22
25
|
clipToWidth,
|
|
@@ -32,7 +35,7 @@ import {
|
|
|
32
35
|
sectionBox,
|
|
33
36
|
signal,
|
|
34
37
|
visibleWidth
|
|
35
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-FGHILN3D.js";
|
|
36
39
|
|
|
37
40
|
// src/commands/doctor.ts
|
|
38
41
|
import fs from "fs";
|
|
@@ -372,7 +375,12 @@ function collectGlobal(checks, versionResult) {
|
|
|
372
375
|
checks.push({ group: "\uC804\uC5ED \uC124\uCE58", name: "\uD504\uB85C\uC81D\uD2B8", status: "info", value: `${projectCount}\uAC1C` });
|
|
373
376
|
}
|
|
374
377
|
async function collectProject(checks, projectRoot, versionResult) {
|
|
375
|
-
if (
|
|
378
|
+
if (projectRoot) {
|
|
379
|
+
await collectSingleProject(checks, projectRoot, "\uC774 \uD504\uB85C\uC81D\uD2B8", versionResult);
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
const registered = listRegisteredProjects().filter((p) => exists(p.path));
|
|
383
|
+
if (registered.length === 0) {
|
|
376
384
|
checks.push({
|
|
377
385
|
group: "\uC774 \uD504\uB85C\uC81D\uD2B8",
|
|
378
386
|
name: "\uD504\uB85C\uC81D\uD2B8 \uB8E8\uD2B8",
|
|
@@ -381,15 +389,21 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
381
389
|
});
|
|
382
390
|
return;
|
|
383
391
|
}
|
|
392
|
+
for (const p of registered) {
|
|
393
|
+
const pVersionResult = checkVersions(gatherVersionInputs(p.path));
|
|
394
|
+
await collectSingleProject(checks, p.path, `\uD504\uB85C\uC81D\uD2B8: ${p.name}`, pVersionResult);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
async function collectSingleProject(checks, projectRoot, groupLabel, versionResult) {
|
|
384
398
|
checks.push({
|
|
385
|
-
group:
|
|
399
|
+
group: groupLabel,
|
|
386
400
|
name: "\uD504\uB85C\uC81D\uD2B8 \uB8E8\uD2B8",
|
|
387
401
|
status: "info",
|
|
388
402
|
value: projectRoot
|
|
389
403
|
});
|
|
390
404
|
const branch = await gitBranch(projectRoot);
|
|
391
405
|
checks.push({
|
|
392
|
-
group:
|
|
406
|
+
group: groupLabel,
|
|
393
407
|
name: "\uBE0C\uB79C\uCE58",
|
|
394
408
|
status: "info",
|
|
395
409
|
value: branch ?? "\uC54C \uC218 \uC5C6\uC74C (\uD655\uC778 \uC2E4\uD328)"
|
|
@@ -397,16 +411,16 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
397
411
|
const dirtyFiles = await gitDirtyFiles(projectRoot);
|
|
398
412
|
if (dirtyFiles === null) {
|
|
399
413
|
checks.push({
|
|
400
|
-
group:
|
|
414
|
+
group: groupLabel,
|
|
401
415
|
name: "\uC6CC\uD0B9\uD2B8\uB9AC",
|
|
402
416
|
status: "info",
|
|
403
417
|
value: "\uD655\uC778 \uC548 \uB428 (git \uC800\uC7A5\uC18C\uAC00 \uC544\uB2C8\uAC70\uB098 \uD655\uC778 \uC2E4\uD328)"
|
|
404
418
|
});
|
|
405
419
|
} else if (dirtyFiles.length === 0) {
|
|
406
|
-
checks.push({ group:
|
|
420
|
+
checks.push({ group: groupLabel, name: "\uC6CC\uD0B9\uD2B8\uB9AC", status: "ok", value: "\uD074\uB9B0" });
|
|
407
421
|
} else {
|
|
408
422
|
checks.push({
|
|
409
|
-
group:
|
|
423
|
+
group: groupLabel,
|
|
410
424
|
name: "\uC6CC\uD0B9\uD2B8\uB9AC",
|
|
411
425
|
status: "warn",
|
|
412
426
|
value: `\uBBF8\uCEE4\uBC0B \uBCC0\uACBD ${dirtyFiles.length}\uAC1C`,
|
|
@@ -416,7 +430,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
416
430
|
const configPath = path.join(projectRoot, ".awl", "config.json");
|
|
417
431
|
if (!exists(configPath)) {
|
|
418
432
|
checks.push({
|
|
419
|
-
group:
|
|
433
|
+
group: groupLabel,
|
|
420
434
|
name: "config.json",
|
|
421
435
|
status: "missing",
|
|
422
436
|
value: "\uC5C6\uC74C",
|
|
@@ -427,7 +441,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
427
441
|
const raw = readJson(configPath);
|
|
428
442
|
if (!isAwlConfig(raw)) {
|
|
429
443
|
checks.push({
|
|
430
|
-
group:
|
|
444
|
+
group: groupLabel,
|
|
431
445
|
name: "config.json",
|
|
432
446
|
status: "fail",
|
|
433
447
|
value: "\uD615\uC2DD \uC624\uB958",
|
|
@@ -435,11 +449,11 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
435
449
|
});
|
|
436
450
|
return;
|
|
437
451
|
}
|
|
438
|
-
checks.push({ group:
|
|
452
|
+
checks.push({ group: groupLabel, name: "config.json", status: "ok", value: "\uC788\uC74C" });
|
|
439
453
|
const recordedNaming = typeof raw.namingConvention === "string" ? raw.namingConvention : void 0;
|
|
440
454
|
if (recordedNaming) {
|
|
441
455
|
checks.push({
|
|
442
|
-
group:
|
|
456
|
+
group: groupLabel,
|
|
443
457
|
name: "\uB124\uC774\uBC0D \uCEE8\uBCA4\uC158",
|
|
444
458
|
status: "info",
|
|
445
459
|
value: recordedNaming
|
|
@@ -450,17 +464,17 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
450
464
|
);
|
|
451
465
|
if (naming.reason === "detected" && naming.convention) {
|
|
452
466
|
checks.push({
|
|
453
|
-
group:
|
|
467
|
+
group: groupLabel,
|
|
454
468
|
name: "\uB124\uC774\uBC0D \uCEE8\uBCA4\uC158",
|
|
455
469
|
status: "info",
|
|
456
470
|
value: `${naming.convention} (${naming.counts[naming.convention]}/${naming.decisiveTotal} \uD30C\uC77C, \uBBF8\uAE30\uB85D)`,
|
|
457
471
|
hint: `config.json \uC5D0 \uAE30\uB85D\uD558\uB824\uBA74: awl config set namingConvention ${naming.convention}`
|
|
458
472
|
});
|
|
459
473
|
} else if (naming.reason === "mixed") {
|
|
460
|
-
checks.push({ group:
|
|
474
|
+
checks.push({ group: groupLabel, name: "\uB124\uC774\uBC0D \uCEE8\uBCA4\uC158", status: "info", value: "\uD63C\uC7AC" });
|
|
461
475
|
} else {
|
|
462
476
|
checks.push({
|
|
463
|
-
group:
|
|
477
|
+
group: groupLabel,
|
|
464
478
|
name: "\uB124\uC774\uBC0D \uCEE8\uBCA4\uC158",
|
|
465
479
|
status: "info",
|
|
466
480
|
value: "\uD310\uB2E8 \uBCF4\uB958 (\uD30C\uC77C \uBD80\uC871)"
|
|
@@ -470,16 +484,16 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
470
484
|
const sizeReport = computeFileSizeOutliers(countFileLines(projectRoot));
|
|
471
485
|
if (sizeReport.threshold === null) {
|
|
472
486
|
checks.push({
|
|
473
|
-
group:
|
|
487
|
+
group: groupLabel,
|
|
474
488
|
name: "\uD30C\uC77C \uD06C\uAE30",
|
|
475
489
|
status: "info",
|
|
476
490
|
value: "\uD310\uB2E8 \uBCF4\uB958 (\uD30C\uC77C \uBD80\uC871)"
|
|
477
491
|
});
|
|
478
492
|
} else if (sizeReport.outliers.length === 0) {
|
|
479
|
-
checks.push({ group:
|
|
493
|
+
checks.push({ group: groupLabel, name: "\uD30C\uC77C \uD06C\uAE30", status: "ok", value: "\uC774\uC0C1\uCE58 \uC5C6\uC74C" });
|
|
480
494
|
} else {
|
|
481
495
|
checks.push({
|
|
482
|
-
group:
|
|
496
|
+
group: groupLabel,
|
|
483
497
|
name: "\uD30C\uC77C \uD06C\uAE30",
|
|
484
498
|
status: "warn",
|
|
485
499
|
value: `\uC774\uC0C1\uCE58 ${sizeReport.outliers.length}\uAC1C (\uC784\uACC4\uAC12 ${Math.round(sizeReport.threshold)}\uC904)`,
|
|
@@ -492,7 +506,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
492
506
|
if (installed !== null) {
|
|
493
507
|
const projectMismatch = findMismatch(versionResult, "project-vs-engine");
|
|
494
508
|
checks.push({
|
|
495
|
-
group:
|
|
509
|
+
group: groupLabel,
|
|
496
510
|
name: "\uC5D4\uC9C4 \uBC84\uC804 \uC77C\uCE58",
|
|
497
511
|
status: projectMismatch ? "warn" : "ok",
|
|
498
512
|
value: projectMismatch ? `config ${raw.engineVersion} / \uC124\uCE58 ${installed}` : raw.engineVersion,
|
|
@@ -506,7 +520,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
506
520
|
const first = tokenize(spec.cmd)[0] ?? "";
|
|
507
521
|
if (!first) {
|
|
508
522
|
checks.push({
|
|
509
|
-
group:
|
|
523
|
+
group: groupLabel,
|
|
510
524
|
name: `\uAC80\uC99D: ${vname}`,
|
|
511
525
|
status: "warn",
|
|
512
526
|
value: "\uBA85\uB839 \uBE44\uC5B4 \uC788\uC74C"
|
|
@@ -516,7 +530,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
516
530
|
const cwd = spec.cwd ? path.isAbsolute(spec.cwd) ? spec.cwd : path.join(projectRoot, spec.cwd) : void 0;
|
|
517
531
|
if (cwd && !isDirectory(cwd)) {
|
|
518
532
|
checks.push({
|
|
519
|
-
group:
|
|
533
|
+
group: groupLabel,
|
|
520
534
|
name: `\uAC80\uC99D: ${vname}`,
|
|
521
535
|
status: "missing",
|
|
522
536
|
value: "cwd \uC5C6\uC74C",
|
|
@@ -527,7 +541,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
527
541
|
try {
|
|
528
542
|
await run({ cmd: first, args: ["--version"], cwd, timeoutMs: 3e3 });
|
|
529
543
|
checks.push({
|
|
530
|
-
group:
|
|
544
|
+
group: groupLabel,
|
|
531
545
|
name: `\uAC80\uC99D: ${vname}`,
|
|
532
546
|
status: "ok",
|
|
533
547
|
value: `${first} \uC2E4\uD589 \uAC00\uB2A5`
|
|
@@ -535,7 +549,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
535
549
|
} catch (e) {
|
|
536
550
|
if (e instanceof CommandNotFoundError) {
|
|
537
551
|
checks.push({
|
|
538
|
-
group:
|
|
552
|
+
group: groupLabel,
|
|
539
553
|
name: `\uAC80\uC99D: ${vname}`,
|
|
540
554
|
status: "missing",
|
|
541
555
|
value: "\uBA85\uB839 \uC5C6\uC74C",
|
|
@@ -543,7 +557,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
543
557
|
});
|
|
544
558
|
} else {
|
|
545
559
|
checks.push({
|
|
546
|
-
group:
|
|
560
|
+
group: groupLabel,
|
|
547
561
|
name: `\uAC80\uC99D: ${vname}`,
|
|
548
562
|
status: "warn",
|
|
549
563
|
value: "\uD655\uC778 \uC2E4\uD328",
|
|
@@ -555,7 +569,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
555
569
|
const statePath = path.join(projectRoot, ".awl", "state.json");
|
|
556
570
|
if (!exists(statePath)) {
|
|
557
571
|
checks.push({
|
|
558
|
-
group:
|
|
572
|
+
group: groupLabel,
|
|
559
573
|
name: "state.json",
|
|
560
574
|
status: "info",
|
|
561
575
|
value: "\uC5C6\uC74C (\uC544\uC9C1 \uC2DC\uC791 \uC804)"
|
|
@@ -565,9 +579,9 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
565
579
|
if (st && typeof st === "object") {
|
|
566
580
|
const o = st;
|
|
567
581
|
const pos = typeof o.phase === "string" && o.phase || typeof o.step === "string" && o.step || typeof o.position === "string" && o.position || "\uC788\uC74C";
|
|
568
|
-
checks.push({ group:
|
|
582
|
+
checks.push({ group: groupLabel, name: "state.json", status: "ok", value: String(pos) });
|
|
569
583
|
} else {
|
|
570
|
-
checks.push({ group:
|
|
584
|
+
checks.push({ group: groupLabel, name: "state.json", status: "warn", value: "\uD615\uC2DD \uC624\uB958" });
|
|
571
585
|
}
|
|
572
586
|
let stateBytes = null;
|
|
573
587
|
try {
|
|
@@ -577,7 +591,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
577
591
|
}
|
|
578
592
|
if (stateBytes !== null && stateBytes > STATE_SIZE_WARN_BYTES) {
|
|
579
593
|
checks.push({
|
|
580
|
-
group:
|
|
594
|
+
group: groupLabel,
|
|
581
595
|
name: "state.json \uD06C\uAE30",
|
|
582
596
|
status: "warn",
|
|
583
597
|
value: `${(stateBytes / (1024 * 1024)).toFixed(1)}MB`,
|
|
@@ -594,7 +608,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
594
608
|
if (leftoverWorktrees.length > 0) {
|
|
595
609
|
const shown = leftoverWorktrees.slice(0, 3).join(", ");
|
|
596
610
|
checks.push({
|
|
597
|
-
group:
|
|
611
|
+
group: groupLabel,
|
|
598
612
|
name: "\uC6CC\uD06C\uD2B8\uB9AC \uC794\uC874",
|
|
599
613
|
status: "warn",
|
|
600
614
|
value: `${leftoverWorktrees.length}\uAC1C`,
|
|
@@ -611,7 +625,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
611
625
|
const hasCommits = await gitHasCommits(projectRoot);
|
|
612
626
|
if (detectRecordTrailGap({ hasCommits, activeWorkitem, gateAttemptRecords })) {
|
|
613
627
|
checks.push({
|
|
614
|
-
group:
|
|
628
|
+
group: groupLabel,
|
|
615
629
|
name: "record \uD2B8\uB808\uC77C",
|
|
616
630
|
status: "warn",
|
|
617
631
|
value: "\uACF5\uBC31 (\uD65C\uC131 \uC6CC\uD06C\uC544\uC774\uD15C \uC5C6\uC774 \uCEE4\uBC0B \uC774\uB825)",
|
|
@@ -632,7 +646,7 @@ async function collectProject(checks, projectRoot, versionResult) {
|
|
|
632
646
|
const fmt = (iso) => iso ? iso.slice(0, 16).replace("T", " ") : "\uC5C6\uC74C";
|
|
633
647
|
const lockNote = lock ? ` \xB7 \uB2E4\uB978 \uC138\uC158\uC774 state \uC4F0\uB294 \uC911(${lock.token})` : "";
|
|
634
648
|
checks.push({
|
|
635
|
-
group:
|
|
649
|
+
group: groupLabel,
|
|
636
650
|
name: "\uCD5C\uADFC \uD65C\uB3D9",
|
|
637
651
|
status: lock ? "warn" : "info",
|
|
638
652
|
value: `\uAE30\uB85D ${fmt(lastAt)} \xB7 state ${fmt(stateMtime)}${lockNote}`,
|
|
@@ -5,30 +5,30 @@ import {
|
|
|
5
5
|
runWorkNew,
|
|
6
6
|
sanitizeForGit,
|
|
7
7
|
worktreeDirtyTracked
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-2FQ5HCDI.js";
|
|
9
9
|
import {
|
|
10
10
|
loadProjectName
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-4BUPV5VU.js";
|
|
12
12
|
import {
|
|
13
13
|
loadState,
|
|
14
14
|
writeState
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WOH6WML7.js";
|
|
16
16
|
import {
|
|
17
17
|
resolveProjectRoot,
|
|
18
18
|
run
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-SNWJWX5K.js";
|
|
20
20
|
import {
|
|
21
|
+
WORKTREES_DIR,
|
|
21
22
|
caps,
|
|
22
23
|
feedback,
|
|
23
24
|
makeColors,
|
|
24
25
|
sectionBox,
|
|
25
26
|
signal
|
|
26
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-FGHILN3D.js";
|
|
27
28
|
|
|
28
29
|
// src/commands/lane.ts
|
|
29
30
|
import fs from "fs";
|
|
30
31
|
import path from "path";
|
|
31
|
-
var WORKTREES_DIR = ".awl-worktrees";
|
|
32
32
|
var PIPELINE_TRIGGERS = ["/awl-pipeline-plan", "/awl-pipeline-exec", "/awl-pipeline-review"];
|
|
33
33
|
function requireRoot() {
|
|
34
34
|
const root = resolveProjectRoot();
|
|
@@ -303,7 +303,6 @@ ${feedback(c, "ok", `\uB808\uC778 \uC81C\uAC70 ${color.bold(laneName)}`, branch
|
|
|
303
303
|
}
|
|
304
304
|
|
|
305
305
|
export {
|
|
306
|
-
WORKTREES_DIR,
|
|
307
306
|
runLaneNew,
|
|
308
307
|
parseWorktreeBranches,
|
|
309
308
|
laneBranchMap,
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
protectedFilesMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-K2JV27JR.js";
|
|
4
4
|
import {
|
|
5
5
|
gitDirtyFiles
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-L4VWHK4D.js";
|
|
7
7
|
import {
|
|
8
8
|
applyVerificationAttempts,
|
|
9
9
|
loadState,
|
|
10
10
|
writeState
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-WOH6WML7.js";
|
|
12
12
|
import {
|
|
13
13
|
CommandNotFoundError,
|
|
14
14
|
VERIFY_ORDER,
|
|
15
15
|
requireConfig,
|
|
16
16
|
run
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-SNWJWX5K.js";
|
|
18
18
|
import {
|
|
19
19
|
caps,
|
|
20
20
|
makeColors,
|
|
21
21
|
sectionBox,
|
|
22
22
|
signal
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-FGHILN3D.js";
|
|
24
24
|
|
|
25
25
|
// src/commands/verify.ts
|
|
26
26
|
import fs from "fs";
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
flowStepLine,
|
|
10
10
|
globalRoot,
|
|
11
11
|
installedEngineVersion,
|
|
12
|
+
isInsideWorktreesDir,
|
|
12
13
|
makeColors,
|
|
13
14
|
makeSymbols,
|
|
14
15
|
makeTokens,
|
|
@@ -18,7 +19,7 @@ import {
|
|
|
18
19
|
sectionBox,
|
|
19
20
|
signal,
|
|
20
21
|
stringWidth
|
|
21
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-FGHILN3D.js";
|
|
22
23
|
|
|
23
24
|
// src/commands/init.ts
|
|
24
25
|
import fs from "fs";
|
|
@@ -547,6 +548,9 @@ function installSafetyHook(projectRoot) {
|
|
|
547
548
|
function registerProject(entry) {
|
|
548
549
|
const raw = readJson(projectsFile());
|
|
549
550
|
const list = Array.isArray(raw) ? raw : [];
|
|
551
|
+
if (isInsideWorktreesDir(entry.path)) {
|
|
552
|
+
return { count: list.length, skipped: true };
|
|
553
|
+
}
|
|
550
554
|
const idx = list.findIndex((p) => p.path === entry.path);
|
|
551
555
|
if (idx >= 0) {
|
|
552
556
|
list[idx] = { ...list[idx], ...entry };
|
|
@@ -555,7 +559,7 @@ function registerProject(entry) {
|
|
|
555
559
|
}
|
|
556
560
|
writeFileEnsuringDir(projectsFile(), `${JSON.stringify(list, null, 2)}
|
|
557
561
|
`);
|
|
558
|
-
return list.length;
|
|
562
|
+
return { count: list.length, skipped: false };
|
|
559
563
|
}
|
|
560
564
|
function claudeSkillNames() {
|
|
561
565
|
for (const base of [engineDir(), packageEngineDir()]) {
|
|
@@ -634,7 +638,7 @@ function syncExistingInstall(projectRoot, engineVersion, now) {
|
|
|
634
638
|
`);
|
|
635
639
|
configUpdated = true;
|
|
636
640
|
}
|
|
637
|
-
registerProject({
|
|
641
|
+
const { skipped: registrationSkipped } = registerProject({
|
|
638
642
|
name: typeof raw?.project === "string" ? raw.project : path.basename(projectRoot),
|
|
639
643
|
path: projectRoot,
|
|
640
644
|
mainLanguage: Array.isArray(raw?.mainLanguage) ? raw.mainLanguage : [],
|
|
@@ -658,7 +662,7 @@ function syncExistingInstall(projectRoot, engineVersion, now) {
|
|
|
658
662
|
{ claude: skills.includes("claude"), codex: skills.includes("codex") },
|
|
659
663
|
engineVersion
|
|
660
664
|
);
|
|
661
|
-
return { configUpdated, skills };
|
|
665
|
+
return { configUpdated, skills, registrationSkipped };
|
|
662
666
|
}
|
|
663
667
|
function countEntries(dir) {
|
|
664
668
|
try {
|
|
@@ -691,7 +695,7 @@ function applyInit(projectRoot, inputs, now) {
|
|
|
691
695
|
const statePath = writeState(projectRoot, now);
|
|
692
696
|
const gitignore = ensureGitignore(projectRoot);
|
|
693
697
|
const safetyHook = installSafetyHook(projectRoot);
|
|
694
|
-
const projectCount = registerProject({
|
|
698
|
+
const { count: projectCount, skipped: registrationSkipped } = registerProject({
|
|
695
699
|
name: inputs.project,
|
|
696
700
|
path: projectRoot,
|
|
697
701
|
mainLanguage: inputs.mainLanguage,
|
|
@@ -720,6 +724,7 @@ function applyInit(projectRoot, inputs, now) {
|
|
|
720
724
|
gitignore,
|
|
721
725
|
skills,
|
|
722
726
|
projectCount,
|
|
727
|
+
registrationSkipped,
|
|
723
728
|
ruleCount: countEntries(path.join(globalRoot(), "rules", "active")),
|
|
724
729
|
lessonCount: countEntries(path.join(globalRoot(), "lessons")),
|
|
725
730
|
safetyHook
|
|
@@ -785,6 +790,13 @@ function resultSetupLines(result, c) {
|
|
|
785
790
|
`\uADDC\uCE59 ${result.ruleCount}\uAC1C \xB7 \uAD50\uD6C8 ${result.lessonCount}\uAC1C \xB7 \uB4F1\uB85D\uB41C \uD504\uB85C\uC81D\uD2B8 ${result.projectCount}\uAC1C \xB7 1\uC138\uB300`
|
|
786
791
|
)
|
|
787
792
|
);
|
|
793
|
+
if (result.registrationSkipped) {
|
|
794
|
+
setupLines.push(
|
|
795
|
+
color.dim(
|
|
796
|
+
"\uC774 \uC704\uCE58\uB294 \uB808\uC778 \uC6CC\uD06C\uD2B8\uB9AC\uC785\uB2C8\uB2E4(.awl-worktrees \uD558\uC704) \u2014 \uC804\uC5ED \uD504\uB85C\uC81D\uD2B8 \uBAA9\uB85D\uC5D0\uB294 \uB4F1\uB85D\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uBD80\uBAA8 \uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C awl lane rm/awl remove\uB85C \uAD00\uB9AC\uD558\uC138\uC694."
|
|
797
|
+
)
|
|
798
|
+
);
|
|
799
|
+
}
|
|
788
800
|
return setupLines;
|
|
789
801
|
}
|
|
790
802
|
function resultNextLines(inputs, c) {
|
|
@@ -1155,6 +1167,13 @@ ${flowActiveNode("\uAE30\uC874 \uC124\uC815", summaryLines, c)}
|
|
|
1155
1167
|
} else {
|
|
1156
1168
|
process.stdout.write("\n \uC124\uC815\uC744 \uADF8\uB300\uB85C \uC501\uB2C8\uB2E4. \uC774\uBBF8 \uCD5C\uC2E0\uC785\uB2C8\uB2E4.\n");
|
|
1157
1169
|
}
|
|
1170
|
+
if (synced.registrationSkipped) {
|
|
1171
|
+
process.stdout.write(
|
|
1172
|
+
`
|
|
1173
|
+
${makeColors(c.color).dim("\uC774 \uC704\uCE58\uB294 \uB808\uC778 \uC6CC\uD06C\uD2B8\uB9AC\uC785\uB2C8\uB2E4(.awl-worktrees \uD558\uC704) \u2014 \uC804\uC5ED \uD504\uB85C\uC81D\uD2B8 \uBAA9\uB85D\uC5D0\uB294 \uB4F1\uB85D\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uBD80\uBAA8 \uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C awl lane rm/awl remove\uB85C \uAD00\uB9AC\uD558\uC138\uC694.")}
|
|
1174
|
+
`
|
|
1175
|
+
);
|
|
1176
|
+
}
|
|
1158
1177
|
return;
|
|
1159
1178
|
}
|
|
1160
1179
|
if (choice === 1) {
|
|
@@ -1330,12 +1349,14 @@ async function runInit(opts) {
|
|
|
1330
1349
|
const synced = syncExistingInstall(projectRoot, engine.engineVersion, now);
|
|
1331
1350
|
const syncNote = synced.configUpdated || synced.skills.length > 0 ? `
|
|
1332
1351
|
${signal(c, "ok")} \uBC84\uC804 \uB9C8\uCEE4\uB97C ${engine.engineVersion} \uB85C \uB3D9\uAE30\uD654\uD588\uC2B5\uB2C8\uB2E4${synced.skills.length ? ` (\uC2A4\uD0AC: ${synced.skills.join(", ")})` : ""}.` : "";
|
|
1352
|
+
const worktreeNote = synced.registrationSkipped ? `
|
|
1353
|
+
${makeColors(c.color).dim("\uC774 \uC704\uCE58\uB294 \uB808\uC778 \uC6CC\uD06C\uD2B8\uB9AC\uC785\uB2C8\uB2E4(.awl-worktrees \uD558\uC704) \u2014 \uC804\uC5ED \uD504\uB85C\uC81D\uD2B8 \uBAA9\uB85D\uC5D0\uB294 \uB4F1\uB85D\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uBD80\uBAA8 \uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C awl lane rm/awl remove\uB85C \uAD00\uB9AC\uD558\uC138\uC694.")}` : "";
|
|
1333
1354
|
process.stdout.write(
|
|
1334
1355
|
`
|
|
1335
1356
|
.awl/config.json \uC774 \uC774\uBBF8 \uC788\uC2B5\uB2C8\uB2E4. \uADF8\uB300\uB85C \uC501\uB2C8\uB2E4.
|
|
1336
1357
|
${signal(c, "ok")} \uC5D4\uC9C4 \uD15C\uD50C\uB9BF\uC744 ${engine.created ? "\uC124\uCE58\uD588\uC2B5\uB2C8\uB2E4." : "\uAC31\uC2E0\uD588\uC2B5\uB2C8\uB2E4."}${syncNote}${hook.warning ? `
|
|
1337
1358
|
${signal(c, "warn")} ${hook.warning}` : hook.installed ? `
|
|
1338
|
-
${signal(c, "ok")} git push \uCC28\uB2E8 \uD6C5 \uC124\uCE58` : ""}
|
|
1359
|
+
${signal(c, "ok")} git push \uCC28\uB2E8 \uD6C5 \uC124\uCE58` : ""}${worktreeNote}
|
|
1339
1360
|
`
|
|
1340
1361
|
);
|
|
1341
1362
|
return;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
computeDurationMs
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GYXIREXZ.js";
|
|
4
4
|
import {
|
|
5
5
|
computeCoverage,
|
|
6
6
|
readRecords
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4BUPV5VU.js";
|
|
8
8
|
import {
|
|
9
9
|
loadState
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-WOH6WML7.js";
|
|
11
11
|
import {
|
|
12
12
|
requireConfig
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-SNWJWX5K.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-FGHILN3D.js";
|
|
23
23
|
|
|
24
24
|
// src/commands/evolve.ts
|
|
25
25
|
import fs from "fs";
|