agent-work-loop 0.6.47 → 0.6.48

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.
Files changed (44) hide show
  1. package/dist/{brief-SGMFXOY2.js → brief-ODMUS5B3.js} +4 -4
  2. package/dist/{changelog-VNJ4EQ74.js → changelog-P35RSRT3.js} +4 -4
  3. package/dist/{chunk-FK3Q7UY2.js → chunk-2NETKDCV.js} +2 -2
  4. package/dist/{chunk-SFTVZFTQ.js → chunk-AVIUMBJZ.js} +3 -3
  5. package/dist/{chunk-MLTY3EE6.js → chunk-FLVRMRHX.js} +1 -1
  6. package/dist/{chunk-PUINOFOR.js → chunk-FPNV5L3Y.js} +3 -3
  7. package/dist/{chunk-YW64OU6W.js → chunk-HW2OSIB3.js} +1 -1
  8. package/dist/{chunk-SJG22DAK.js → chunk-IPNBHVGX.js} +30 -1
  9. package/dist/{chunk-ZRKOZQKP.js → chunk-ITZ52UYF.js} +4 -4
  10. package/dist/{chunk-NCS2EPDP.js → chunk-IUXE7EG3.js} +4 -4
  11. package/dist/{chunk-5HXSUU6Y.js → chunk-JY3DXRXV.js} +8 -8
  12. package/dist/{chunk-R4UNIGE5.js → chunk-KKFXZ3NV.js} +6 -6
  13. package/dist/{chunk-EHJYX57P.js → chunk-OQJIRLKN.js} +1 -1
  14. package/dist/{chunk-VVZOIFL4.js → chunk-RTALSPLK.js} +1 -1
  15. package/dist/{chunk-VE2GVNNS.js → chunk-RTZLAXTZ.js} +16 -5
  16. package/dist/{chunk-IVEV5L7P.js → chunk-TCIRO4GU.js} +1 -1
  17. package/dist/{chunk-R5JAYYQ6.js → chunk-UFVGXPJB.js} +4 -4
  18. package/dist/cli.js +44 -42
  19. package/dist/{commit-GPQATPEA.js → commit-7ONX22OG.js} +25 -7
  20. package/dist/{config-QTEKLFZP.js → config-KNSNSKU7.js} +2 -2
  21. package/dist/{doctor-3XCI22NM.js → doctor-UYO4Z6VC.js} +7 -7
  22. package/dist/{evolve-N3S32P5I.js → evolve-KSA5W6F3.js} +6 -6
  23. package/dist/{feedback-log-UCNJ2GVT.js → feedback-log-BIIFYX6D.js} +4 -4
  24. package/dist/{gotchas-PDG2ZZFQ.js → gotchas-US2HUCK2.js} +6 -6
  25. package/dist/{hold-recheck-UNAILFN5.js → hold-recheck-NYW2AGYK.js} +5 -5
  26. package/dist/{init-3B4ZRGWY.js → init-PEKMQY7D.js} +1 -1
  27. package/dist/{lane-5CU25EAJ.js → lane-647Q33RO.js} +14 -14
  28. package/dist/{loop-summary-CODZMRUY.js → loop-summary-BRRJ6V2U.js} +5 -5
  29. package/dist/{metrics-ZR7BPATB.js → metrics-C3UUN5U5.js} +3 -3
  30. package/dist/{record-TSB22DIO.js → record-MBGID3SX.js} +4 -4
  31. package/dist/{remove-SGQHBPW3.js → remove-46IZDWJ7.js} +14 -14
  32. package/dist/{review-RT7EPECQ.js → review-XBOUKZTN.js} +12 -12
  33. package/dist/{rules-QLUXNSCN.js → rules-JKR4DO6F.js} +7 -7
  34. package/dist/{state-6IIH7SW2.js → state-QVDADIXS.js} +3 -3
  35. package/dist/{status-2LPWVCHT.js → status-BJ4B6NKL.js} +5 -5
  36. package/dist/{update-CKGPHO5B.js → update-UXULNKWR.js} +1 -1
  37. package/dist/{verify-34G2WAQ4.js → verify-7KWUZCN7.js} +9 -9
  38. package/dist/{version-check-ZVQZAJ5X.js → version-check-Y3KBDUQ2.js} +4 -4
  39. package/dist/{work-XO5RGFTG.js → work-T5S4FNFZ.js} +13 -13
  40. package/engine/skills/claude/awl-pipeline/SKILL.md +1 -0
  41. package/engine/skills/claude/awl-pipeline-exec/SKILL.md +7 -4
  42. package/engine/skills/claude/awl-pipeline-review/SKILL.md +6 -3
  43. package/engine/version.json +1 -1
  44. package/package.json +1 -1
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  loadProjectName,
3
3
  readRecords
4
- } from "./chunk-FK3Q7UY2.js";
4
+ } from "./chunk-2NETKDCV.js";
5
5
  import {
6
6
  loadState
7
- } from "./chunk-VE2GVNNS.js";
7
+ } from "./chunk-RTZLAXTZ.js";
8
8
  import {
9
9
  resolveProjectRoot,
10
10
  run
11
- } from "./chunk-MLTY3EE6.js";
12
- import "./chunk-SJG22DAK.js";
11
+ } from "./chunk-FLVRMRHX.js";
12
+ import "./chunk-IPNBHVGX.js";
13
13
  import "./chunk-FGHILN3D.js";
14
14
 
15
15
  // src/commands/brief.ts
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  readRecords
3
- } from "./chunk-FK3Q7UY2.js";
3
+ } from "./chunk-2NETKDCV.js";
4
4
  import {
5
5
  loadState
6
- } from "./chunk-VE2GVNNS.js";
6
+ } from "./chunk-RTZLAXTZ.js";
7
7
  import {
8
8
  resolveProjectRoot
9
- } from "./chunk-MLTY3EE6.js";
10
- import "./chunk-SJG22DAK.js";
9
+ } from "./chunk-FLVRMRHX.js";
10
+ import "./chunk-IPNBHVGX.js";
11
11
  import {
12
12
  caps,
13
13
  signal
@@ -2,11 +2,11 @@ import {
2
2
  getCriterion,
3
3
  loadState,
4
4
  writeState
5
- } from "./chunk-VE2GVNNS.js";
5
+ } from "./chunk-RTZLAXTZ.js";
6
6
  import {
7
7
  resolveProjectRoot,
8
8
  run
9
- } from "./chunk-MLTY3EE6.js";
9
+ } from "./chunk-FLVRMRHX.js";
10
10
  import {
11
11
  caps,
12
12
  makeColors,
@@ -3,14 +3,14 @@ import {
3
3
  getLatestVersionCached,
4
4
  name,
5
5
  version
6
- } from "./chunk-YW64OU6W.js";
6
+ } from "./chunk-HW2OSIB3.js";
7
7
  import {
8
8
  resolveProjectRoot
9
- } from "./chunk-MLTY3EE6.js";
9
+ } from "./chunk-FLVRMRHX.js";
10
10
  import {
11
11
  packageEngineDir,
12
12
  skillsVersionPath
13
- } from "./chunk-SJG22DAK.js";
13
+ } from "./chunk-IPNBHVGX.js";
14
14
  import {
15
15
  caps,
16
16
  installedEngineVersion,
@@ -13,7 +13,7 @@ import {
13
13
  selectSingle,
14
14
  step,
15
15
  verifyStepLines
16
- } from "./chunk-SJG22DAK.js";
16
+ } from "./chunk-IPNBHVGX.js";
17
17
  import {
18
18
  caps,
19
19
  findProjectRoot,
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  readRecords
3
- } from "./chunk-FK3Q7UY2.js";
3
+ } from "./chunk-2NETKDCV.js";
4
4
  import {
5
5
  loadState
6
- } from "./chunk-VE2GVNNS.js";
6
+ } from "./chunk-RTZLAXTZ.js";
7
7
  import {
8
8
  multiProjectFooter,
9
9
  resolveProjectScope,
10
10
  run
11
- } from "./chunk-MLTY3EE6.js";
11
+ } from "./chunk-FLVRMRHX.js";
12
12
  import {
13
13
  WORKTREES_DIR,
14
14
  caps,
@@ -4,7 +4,7 @@ import {
4
4
 
5
5
  // package.json
6
6
  var name = "agent-work-loop";
7
- var version = "0.6.47";
7
+ var version = "0.6.48";
8
8
 
9
9
  // src/core/npm-registry.ts
10
10
  import fs from "fs";
@@ -531,9 +531,38 @@ function ensureGitignore(projectRoot) {
531
531
  fs.writeFileSync(gi, content);
532
532
  return "added";
533
533
  }
534
+ function safetyHookPath(projectRoot) {
535
+ const dotGit = path.join(projectRoot, ".git");
536
+ const dotGitStat = fs.statSync(dotGit);
537
+ if (dotGitStat.isDirectory()) {
538
+ return path.join(dotGit, "hooks", "pre-push");
539
+ }
540
+ if (!dotGitStat.isFile()) {
541
+ throw new Error(`${dotGit} is neither a directory nor a gitdir file`);
542
+ }
543
+ const gitdirMatch = fs.readFileSync(dotGit, "utf8").match(/^gitdir:\s*(.+?)\s*$/m);
544
+ if (!gitdirMatch) {
545
+ throw new Error(`${dotGit} does not contain a gitdir: line`);
546
+ }
547
+ const gitdir = gitdirMatch[1];
548
+ if (!gitdir) {
549
+ throw new Error(`${dotGit} has an empty gitdir: line`);
550
+ }
551
+ const worktreeGitDir = path.resolve(path.dirname(dotGit), gitdir);
552
+ const commonDirFile = path.join(worktreeGitDir, "commondir");
553
+ let commonGitDir = worktreeGitDir;
554
+ if (exists(commonDirFile)) {
555
+ const commonDir = fs.readFileSync(commonDirFile, "utf8").trim();
556
+ if (commonDir === "") {
557
+ throw new Error(`${commonDirFile} is empty`);
558
+ }
559
+ commonGitDir = path.resolve(worktreeGitDir, commonDir);
560
+ }
561
+ return path.join(commonGitDir, "hooks", "pre-push");
562
+ }
534
563
  function installSafetyHook(projectRoot) {
535
564
  try {
536
- const hook = path.join(projectRoot, ".git", "hooks", "pre-push");
565
+ const hook = safetyHookPath(projectRoot);
537
566
  if (exists(hook))
538
567
  return { installed: false, warning: "\uAE30\uC874 pre-push \uD6C5\uC774 \uC788\uC5B4 awl \uD6C5\uC744 \uB36E\uC5B4\uC4F0\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4." };
539
568
  const template = path.join(packageEngineDir(), "templates", "pre-push.sample");
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  computeDurationMs
3
- } from "./chunk-IVEV5L7P.js";
3
+ } from "./chunk-TCIRO4GU.js";
4
4
  import {
5
5
  computeCoverage,
6
6
  readRecords
7
- } from "./chunk-FK3Q7UY2.js";
7
+ } from "./chunk-2NETKDCV.js";
8
8
  import {
9
9
  loadState
10
- } from "./chunk-VE2GVNNS.js";
10
+ } from "./chunk-RTZLAXTZ.js";
11
11
  import {
12
12
  requireConfig
13
- } from "./chunk-MLTY3EE6.js";
13
+ } from "./chunk-FLVRMRHX.js";
14
14
  import {
15
15
  caps,
16
16
  generationsDir,
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  protectedFilesMessage
3
- } from "./chunk-VVZOIFL4.js";
3
+ } from "./chunk-RTALSPLK.js";
4
4
  import {
5
5
  gitDirtyFiles
6
- } from "./chunk-R4UNIGE5.js";
6
+ } from "./chunk-KKFXZ3NV.js";
7
7
  import {
8
8
  applyVerificationAttempts,
9
9
  loadState,
10
10
  writeState
11
- } from "./chunk-VE2GVNNS.js";
11
+ } from "./chunk-RTZLAXTZ.js";
12
12
  import {
13
13
  CommandNotFoundError,
14
14
  VERIFY_ORDER,
15
15
  requireConfig,
16
16
  run
17
- } from "./chunk-MLTY3EE6.js";
17
+ } from "./chunk-FLVRMRHX.js";
18
18
  import {
19
19
  caps,
20
20
  makeColors,
@@ -4,37 +4,37 @@ import {
4
4
  } from "./chunk-D5OINC3G.js";
5
5
  import {
6
6
  parseRuleFile
7
- } from "./chunk-EHJYX57P.js";
7
+ } from "./chunk-OQJIRLKN.js";
8
8
  import {
9
9
  nextGotchaId
10
- } from "./chunk-ZRKOZQKP.js";
10
+ } from "./chunk-ITZ52UYF.js";
11
11
  import {
12
12
  buildVerifyBaseline,
13
13
  isCheckPassed,
14
14
  runVerifyChecks,
15
15
  writeVerifyBaseline
16
- } from "./chunk-NCS2EPDP.js";
16
+ } from "./chunk-IUXE7EG3.js";
17
17
  import {
18
18
  gitBranch
19
- } from "./chunk-R4UNIGE5.js";
19
+ } from "./chunk-KKFXZ3NV.js";
20
20
  import {
21
21
  loadProjectName
22
- } from "./chunk-FK3Q7UY2.js";
22
+ } from "./chunk-2NETKDCV.js";
23
23
  import {
24
24
  loadState,
25
25
  migrateState,
26
26
  writeState
27
- } from "./chunk-VE2GVNNS.js";
27
+ } from "./chunk-RTZLAXTZ.js";
28
28
  import {
29
29
  loadConfig,
30
30
  multiProjectFooter,
31
31
  resolveProjectRoot,
32
32
  resolveProjectScope,
33
33
  run
34
- } from "./chunk-MLTY3EE6.js";
34
+ } from "./chunk-FLVRMRHX.js";
35
35
  import {
36
36
  installClaudeSkill
37
- } from "./chunk-SJG22DAK.js";
37
+ } from "./chunk-IPNBHVGX.js";
38
38
  import {
39
39
  caps,
40
40
  feedback,
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  loadProjectName,
3
3
  readRecords
4
- } from "./chunk-FK3Q7UY2.js";
4
+ } from "./chunk-2NETKDCV.js";
5
5
  import {
6
6
  loadState,
7
7
  readStateLock
8
- } from "./chunk-VE2GVNNS.js";
8
+ } from "./chunk-RTZLAXTZ.js";
9
9
  import {
10
10
  gatherVersionInputs
11
- } from "./chunk-SFTVZFTQ.js";
11
+ } from "./chunk-AVIUMBJZ.js";
12
12
  import {
13
13
  checkVersions
14
- } from "./chunk-YW64OU6W.js";
14
+ } from "./chunk-HW2OSIB3.js";
15
15
  import {
16
16
  CommandNotFoundError,
17
17
  run,
18
18
  tokenize
19
- } from "./chunk-MLTY3EE6.js";
19
+ } from "./chunk-FLVRMRHX.js";
20
20
  import {
21
21
  listRegisteredProjects
22
- } from "./chunk-SJG22DAK.js";
22
+ } from "./chunk-IPNBHVGX.js";
23
23
  import {
24
24
  caps,
25
25
  clipToWidth,
@@ -2,7 +2,7 @@ import {
2
2
  acquireLock,
3
3
  loadGotchaList,
4
4
  releaseLock
5
- } from "./chunk-ZRKOZQKP.js";
5
+ } from "./chunk-ITZ52UYF.js";
6
6
  import {
7
7
  caps,
8
8
  makeColors,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  run
3
- } from "./chunk-MLTY3EE6.js";
3
+ } from "./chunk-FLVRMRHX.js";
4
4
 
5
5
  // src/core/protected-files.ts
6
6
  async function changedProtectedFiles(projectRoot, protectedFiles) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveProjectRoot
3
- } from "./chunk-MLTY3EE6.js";
3
+ } from "./chunk-FLVRMRHX.js";
4
4
  import {
5
5
  caps,
6
6
  makeColors,
@@ -232,13 +232,16 @@ function runStateSet(jsonPatch, opts = {}) {
232
232
  process.exit(1);
233
233
  }
234
234
  let gateRejected = false;
235
+ let workitemRejected = false;
236
+ let activeWorkitem;
235
237
  try {
236
238
  const current = loadState(root);
237
- if (p.phase === "loop" && opts.requireGateForLoop) {
238
- const workitem = typeof current.workitem === "string" ? current.workitem : void 0;
239
- gateRejected = !opts.requireGateForLoop(workitem);
239
+ activeWorkitem = typeof current.workitem === "string" ? current.workitem : void 0;
240
+ workitemRejected = opts.workitem !== void 0 && activeWorkitem !== opts.workitem;
241
+ if (!workitemRejected && p.phase === "loop" && opts.requireGateForLoop) {
242
+ gateRejected = !opts.requireGateForLoop(activeWorkitem);
240
243
  }
241
- if (!gateRejected) {
244
+ if (!workitemRejected && !gateRejected) {
242
245
  const merged = mergeState(current, p);
243
246
  writeState(root, merged);
244
247
  process.stdout.write(`${JSON.stringify(merged, null, 2)}
@@ -247,6 +250,14 @@ function runStateSet(jsonPatch, opts = {}) {
247
250
  } finally {
248
251
  releaseStateLock(root, token);
249
252
  }
253
+ if (workitemRejected) {
254
+ process.stderr.write(
255
+ `
256
+ \uD65C\uC131 \uC6CC\uD06C\uC544\uC774\uD15C\uC774 ${activeWorkitem ?? "(\uC5C6\uC74C)"}\uC73C\uB85C \uBC14\uB00C\uC5B4 \uC788\uC5B4 ${opts.workitem} \uB300\uC0C1 \uAC31\uC2E0\uC744 \uAC70\uBD80\uD588\uC2B5\uB2C8\uB2E4.
257
+ `
258
+ );
259
+ process.exit(1);
260
+ }
250
261
  if (gateRejected) {
251
262
  process.stderr.write(
252
263
  "\n \uAC8C\uC774\uD2B8 1 \uC2B9\uC778 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. awl record gate \uB85C \uACC4\uD68D\uC744 \uC2B9\uC778(approved)\uD55C \uB4A4 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.\n"
@@ -3,7 +3,7 @@ import {
3
3
  multiProjectFooter,
4
4
  requireConfig,
5
5
  resolveProjectScope
6
- } from "./chunk-MLTY3EE6.js";
6
+ } from "./chunk-FLVRMRHX.js";
7
7
  import {
8
8
  caps,
9
9
  generationsDir,
@@ -5,18 +5,18 @@ import {
5
5
  runWorkNew,
6
6
  sanitizeForGit,
7
7
  worktreeDirtyTracked
8
- } from "./chunk-5HXSUU6Y.js";
8
+ } from "./chunk-JY3DXRXV.js";
9
9
  import {
10
10
  loadProjectName
11
- } from "./chunk-FK3Q7UY2.js";
11
+ } from "./chunk-2NETKDCV.js";
12
12
  import {
13
13
  loadState,
14
14
  writeState
15
- } from "./chunk-VE2GVNNS.js";
15
+ } from "./chunk-RTZLAXTZ.js";
16
16
  import {
17
17
  resolveProjectRoot,
18
18
  run
19
- } from "./chunk-MLTY3EE6.js";
19
+ } from "./chunk-FLVRMRHX.js";
20
20
  import {
21
21
  WORKTREES_DIR,
22
22
  caps,