@outerlayer/cli 0.22.1 → 0.22.2

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 (78) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +4 -1
  3. package/dist/{agent-setup-LTSLXPS3.js → agent-setup-KXPDPTAJ.js} +3 -4
  4. package/dist/bridge-QFN3KJP6.js +8 -0
  5. package/dist/build-info.json +1 -1
  6. package/dist/{check-UYKEMQNR.js → check-N6WLZCER.js} +21 -21
  7. package/dist/{chunk-7FEY33MY.js → chunk-2CPOAPU4.js} +8 -8
  8. package/dist/{chunk-BOMRFYTZ.js → chunk-4542B3RR.js} +2 -2
  9. package/dist/{chunk-O6RJ3QMU.js → chunk-4OYKJJ2V.js} +1 -1
  10. package/dist/{chunk-QOALB6ZD.js → chunk-B42BIYC6.js} +2 -2
  11. package/dist/{chunk-3V5C64Y5.js → chunk-BVR6MQLS.js} +2 -3
  12. package/dist/{chunk-IZSVXRDR.js → chunk-DXDF43YG.js} +1 -1
  13. package/dist/{chunk-F7CU5ABH.js → chunk-DYEFPYME.js} +1 -1
  14. package/dist/{chunk-JRCSET55.js → chunk-EMUNEAQK.js} +3 -3
  15. package/dist/{chunk-BET347JZ.js → chunk-FQE5RDHI.js} +4 -5
  16. package/dist/{chunk-FRNYCJ4W.js → chunk-FVDVC2GF.js} +1 -1
  17. package/dist/{chunk-5QRP3MVS.js → chunk-GNPTU4BM.js} +9 -4
  18. package/dist/{chunk-QC72I5GQ.js → chunk-HWZCE745.js} +2 -2
  19. package/dist/{chunk-CUFFDEF3.js → chunk-IMCVQF5F.js} +3 -3
  20. package/dist/{chunk-ENTHEUKT.js → chunk-IPS2JCHK.js} +3 -3
  21. package/dist/{chunk-56X5TOJY.js → chunk-JD6GWYY7.js} +2 -3
  22. package/dist/{chunk-FOCML5FI.js → chunk-KOIMUHIS.js} +8 -7
  23. package/dist/chunk-QS43O4DR.js +113 -0
  24. package/dist/{chunk-ORNJJ7XN.js → chunk-QZX6DAAW.js} +7 -8
  25. package/dist/{chunk-JZGFDTNC.js → chunk-SFHR45FA.js} +19 -2
  26. package/dist/{chunk-6YBLN4TR.js → chunk-SNVXHNU7.js} +1 -2
  27. package/dist/{chunk-URAKVDSI.js → chunk-U6RKHNC7.js} +5 -6
  28. package/dist/{chunk-5NJIWKD4.js → chunk-WKSBSEWT.js} +2 -2
  29. package/dist/chunk-WXJXHZVB.js +73 -0
  30. package/dist/{chunk-ZPSLJFGL.js → chunk-ZCXP35T3.js} +2 -2
  31. package/dist/{claude-launcher-TBWV3YL3.js → claude-launcher-QD3C427Y.js} +1 -1
  32. package/dist/{cli-U253V422.js → cli-A2Y67WAB.js} +69 -62
  33. package/dist/{command-IQTPFSXY.js → command-Q5Q2EIO4.js} +8 -9
  34. package/dist/{connect-cmd-ZFOK6HEL.js → connect-cmd-TNGEIWCA.js} +7 -2
  35. package/dist/{control-plane-launch-OWSNH6YA.js → control-plane-launch-HE6OSWKO.js} +2 -3
  36. package/dist/{doctor-FZTS57ZO.js → doctor-BRN4BGMA.js} +10 -11
  37. package/dist/{emit-artifact-cmd-YLZ5WLSF.js → emit-artifact-cmd-GPAJCCUC.js} +9 -9
  38. package/dist/{emit-criteria-cmd-MF6TVE7C.js → emit-criteria-cmd-R3FKHSQG.js} +4 -4
  39. package/dist/{emit-finding-cmd-S3YMFTZT.js → emit-finding-cmd-IK7RAVP5.js} +4 -4
  40. package/dist/{emit-result-cmd-JHEUFTPX.js → emit-result-cmd-5FJTF7YD.js} +9 -9
  41. package/dist/{emit-step-cmd-TUI2T3DS.js → emit-step-cmd-VRTD5YPP.js} +5 -5
  42. package/dist/{governing-source-XSEIRSBE.js → governing-source-WM736XR4.js} +6 -7
  43. package/dist/{guest-init-DF7V5D2R.js → guest-init-2OZ4YC7R.js} +2 -1
  44. package/dist/{hook-fast-O3UUN6SO.js → hook-fast-QUGEI2IT.js} +1 -1
  45. package/dist/{hook-wrap-fast-NPLHJXFK.js → hook-wrap-fast-NOOGDNSW.js} +2 -2
  46. package/dist/index.js +6 -6
  47. package/dist/{init-VZE72CR4.js → init-U3I43XCP.js} +9 -10
  48. package/dist/{init-ZZZPYGUH.js → init-X7FCQDFX.js} +9 -10
  49. package/dist/{init-cmd-W5VV62ZN.js → init-cmd-VCKH2DUQ.js} +10 -11
  50. package/dist/{init-update-YFPIQS5G.js → init-update-TCMH7M3Q.js} +4 -5
  51. package/dist/{loop-6WENRS5S.js → loop-P3QDQOE5.js} +21 -21
  52. package/dist/{machine-M4MQBV5A.js → machine-EEFOW32K.js} +8 -9
  53. package/dist/{mcp-serve-cmd-SBW7HYKD.js → mcp-serve-cmd-TQSPFRC7.js} +2 -2
  54. package/dist/{runner-key-QT7GKGEE.js → runner-key-O42EUXQU.js} +9 -10
  55. package/dist/{session-sender-BK6TGNVO.js → session-sender-HF6DXFA2.js} +10 -10
  56. package/dist/{settings-J2652U5N.js → settings-AKYEOCC2.js} +1 -1
  57. package/dist/{spec-cmd-ZNJ3GXWC.js → spec-cmd-ADPH236D.js} +5 -5
  58. package/dist/{status-JOO7MGIC.js → status-LXFIVGP3.js} +16 -16
  59. package/dist/{statusline-fast-2OK3DVAA.js → statusline-fast-GVRSBHAF.js} +2 -2
  60. package/dist/{sync-cmd-W2FPY3T5.js → sync-cmd-5XS3CUV5.js} +9 -9
  61. package/dist/{watch-WLH5ZUZU.js → watch-FBZHZV56.js} +9 -9
  62. package/dist/{work-claim-cmd-4PLDTEZR.js → work-claim-cmd-LIIINECF.js} +7 -7
  63. package/dist/{work-cmd-KWHAYUYB.js → work-cmd-SM6DY2WK.js} +5 -5
  64. package/dist/{work-comment-cmd-4CUI7ZDE.js → work-comment-cmd-VYVXGT4W.js} +5 -5
  65. package/dist/{work-logs-cmd-AF253WLM.js → work-logs-cmd-XZSCWWMW.js} +5 -5
  66. package/dist/{work-open-pr-cmd-JETE6HRL.js → work-open-pr-cmd-YZNC3P3R.js} +6 -6
  67. package/dist/{work-pr-cmd-V5G4CPMG.js → work-pr-cmd-AMN23KFJ.js} +5 -5
  68. package/dist/{work-stop-cmd-FIEKUDGE.js → work-stop-cmd-HSR2GOJJ.js} +5 -5
  69. package/package.json +1 -1
  70. package/skill-pack/maintained/outerlayer-amend/SKILL.md +83 -82
  71. package/skill-pack/maintained/outerlayer-build/SKILL.md +4 -2
  72. package/skill-pack/maintained/outerlayer-build/references/agent-briefs.md +10 -3
  73. package/skill-pack/maintained/outerlayer-build/references/release.md +7 -4
  74. package/skill-pack/maintained/outerlayer-build/references/review-briefs.md +6 -3
  75. package/skill-pack/maintained/outerlayer-cli/SKILL.md +8 -1
  76. package/skill-pack/maintained/outerlayer-cli/references/merge-base-branch.md +54 -0
  77. package/dist/chunk-NTRCK4NH.js +0 -38
  78. package/dist/chunk-QF7WZUU6.js +0 -56
@@ -1,24 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-FOCML5FI.js';
4
- import './chunk-BOMRFYTZ.js';
5
- import './chunk-JZGFDTNC.js';
6
- import './chunk-URAKVDSI.js';
7
- import './chunk-56X5TOJY.js';
3
+ import { ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-KOIMUHIS.js';
4
+ import './chunk-4542B3RR.js';
5
+ import './chunk-SFHR45FA.js';
6
+ import './chunk-WXJXHZVB.js';
7
+ import './chunk-U6RKHNC7.js';
8
+ import './chunk-JD6GWYY7.js';
8
9
  import './chunk-ESVW4MJY.js';
9
10
  import { formatBytes } from './chunk-YYYRBYWG.js';
10
11
  import './chunk-TBT347UY.js';
11
- import { LEASE_SECONDS } from './chunk-5NJIWKD4.js';
12
+ import { LEASE_SECONDS } from './chunk-WKSBSEWT.js';
12
13
  import './chunk-3AZYLAJC.js';
13
14
  import './chunk-OGFGZQA3.js';
14
15
  import './chunk-XR56WEA5.js';
15
16
  import './chunk-3W333NFO.js';
16
17
  import './chunk-NYTZ7HVN.js';
17
18
  import './chunk-2Q3PZ42G.js';
18
- import { formatDuration, formatClock, relativeToRunner } from './chunk-CUFFDEF3.js';
19
- import './chunk-BET347JZ.js';
20
- import './chunk-QOALB6ZD.js';
21
- import './chunk-JRCSET55.js';
19
+ import { formatDuration, formatClock, relativeToRunner } from './chunk-IMCVQF5F.js';
20
+ import './chunk-FQE5RDHI.js';
21
+ import './chunk-B42BIYC6.js';
22
+ import './chunk-EMUNEAQK.js';
22
23
  import './chunk-G3IJ3N6F.js';
23
24
  import './chunk-EAQSOE62.js';
24
25
  import './chunk-F35VMF5M.js';
@@ -27,13 +28,12 @@ import './chunk-UXYLWVTQ.js';
27
28
  import './chunk-7RQ73DLO.js';
28
29
  import './chunk-XACXXKQ5.js';
29
30
  import './chunk-JBJTC3UU.js';
30
- import './chunk-6YBLN4TR.js';
31
+ import './chunk-SNVXHNU7.js';
31
32
  import './chunk-USWVXQIH.js';
32
- import './chunk-QF7WZUU6.js';
33
- import './chunk-NTRCK4NH.js';
34
- import './chunk-QC72I5GQ.js';
33
+ import './chunk-QS43O4DR.js';
34
+ import './chunk-HWZCE745.js';
35
35
  import './chunk-ZJSNLVCE.js';
36
- import './chunk-F7CU5ABH.js';
36
+ import './chunk-DYEFPYME.js';
37
37
  import './chunk-BKO6JEZI.js';
38
38
  import './chunk-ZNPE7FW5.js';
39
39
  import './chunk-HCVLP7XA.js';
@@ -45,7 +45,7 @@ import './chunk-ANPNT6PM.js';
45
45
  import './chunk-T2Q7ISPE.js';
46
46
  import './chunk-WZBHBH3J.js';
47
47
  import './chunk-CRB3POP4.js';
48
- import './chunk-5QRP3MVS.js';
48
+ import './chunk-GNPTU4BM.js';
49
49
  import './chunk-YQR6E6OV.js';
50
50
  import './chunk-TUSYOL2O.js';
51
51
  import './chunk-WFSUUUAN.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { STATE_FRESH_MS, WRAP_TIMEOUT_MS, localDateString, parseStatuslineArgs, parseStatuslineStdin, readStatuslineState, renderStatusline, runStatuslineFast, runWrappedStatusline, statuslineStatePath } from './chunk-IZSVXRDR.js';
3
+ export { STATE_FRESH_MS, WRAP_TIMEOUT_MS, localDateString, parseStatuslineArgs, parseStatuslineStdin, readStatuslineState, renderStatusline, runStatuslineFast, runWrappedStatusline, statuslineStatePath } from './chunk-DXDF43YG.js';
4
4
  import './chunk-BKO6JEZI.js';
5
5
  import './chunk-CRB3POP4.js';
6
- import './chunk-5QRP3MVS.js';
6
+ import './chunk-GNPTU4BM.js';
7
7
  import './chunk-VNVZDWO3.js';
8
8
  import './chunk-Z5GEFMRW.js';
9
9
 
@@ -1,19 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { CHUNK_PART_TARGET_BYTES, RETRYABLE_STATUSES, SyncConfigError, SyncTransportError, detectCi, isLoopbackUrl, resolveTier, runSync } from './chunk-URAKVDSI.js';
4
- import './chunk-56X5TOJY.js';
3
+ export { CHUNK_PART_TARGET_BYTES, RETRYABLE_STATUSES, SyncConfigError, SyncTransportError, detectCi, isLoopbackUrl, resolveTier, runSync } from './chunk-U6RKHNC7.js';
4
+ import './chunk-JD6GWYY7.js';
5
5
  import './chunk-ESVW4MJY.js';
6
6
  import './chunk-TBT347UY.js';
7
- import './chunk-QOALB6ZD.js';
8
- import './chunk-JRCSET55.js';
7
+ import './chunk-B42BIYC6.js';
8
+ import './chunk-EMUNEAQK.js';
9
9
  import './chunk-G3IJ3N6F.js';
10
10
  import './chunk-EAQSOE62.js';
11
11
  import './chunk-F35VMF5M.js';
12
- import './chunk-QF7WZUU6.js';
13
- import './chunk-NTRCK4NH.js';
14
- import './chunk-QC72I5GQ.js';
12
+ import './chunk-QS43O4DR.js';
13
+ import './chunk-HWZCE745.js';
15
14
  import './chunk-ZJSNLVCE.js';
16
- import './chunk-F7CU5ABH.js';
15
+ import './chunk-DYEFPYME.js';
17
16
  import './chunk-BKO6JEZI.js';
18
17
  import './chunk-HCVLP7XA.js';
19
18
  import './chunk-BJ3KTMDH.js';
@@ -23,10 +22,11 @@ import './chunk-ANPNT6PM.js';
23
22
  import './chunk-T2Q7ISPE.js';
24
23
  import './chunk-WZBHBH3J.js';
25
24
  import './chunk-CRB3POP4.js';
26
- import './chunk-5QRP3MVS.js';
25
+ import './chunk-GNPTU4BM.js';
27
26
  import './chunk-TUSYOL2O.js';
28
27
  import './chunk-7VUK5RFS.js';
29
28
  import './chunk-VNVZDWO3.js';
29
+ import './chunk-RA3O54FC.js';
30
30
  import './chunk-OW52QLK3.js';
31
31
  import './chunk-IHNQWF6F.js';
32
32
  import './chunk-URWYRAIC.js';
@@ -1,19 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LiveUploader } from './chunk-URAKVDSI.js';
4
- import './chunk-56X5TOJY.js';
3
+ import { LiveUploader } from './chunk-U6RKHNC7.js';
4
+ import './chunk-JD6GWYY7.js';
5
5
  import './chunk-ESVW4MJY.js';
6
6
  import './chunk-TBT347UY.js';
7
- import './chunk-QOALB6ZD.js';
8
- import './chunk-JRCSET55.js';
7
+ import './chunk-B42BIYC6.js';
8
+ import './chunk-EMUNEAQK.js';
9
9
  import './chunk-G3IJ3N6F.js';
10
10
  import './chunk-EAQSOE62.js';
11
11
  import './chunk-F35VMF5M.js';
12
- import './chunk-QF7WZUU6.js';
13
- import './chunk-NTRCK4NH.js';
14
- import './chunk-QC72I5GQ.js';
12
+ import './chunk-QS43O4DR.js';
13
+ import './chunk-HWZCE745.js';
15
14
  import './chunk-ZJSNLVCE.js';
16
- import './chunk-F7CU5ABH.js';
15
+ import './chunk-DYEFPYME.js';
17
16
  import './chunk-BKO6JEZI.js';
18
17
  import './chunk-HCVLP7XA.js';
19
18
  import './chunk-BJ3KTMDH.js';
@@ -23,10 +22,11 @@ import './chunk-ANPNT6PM.js';
23
22
  import './chunk-T2Q7ISPE.js';
24
23
  import './chunk-WZBHBH3J.js';
25
24
  import './chunk-CRB3POP4.js';
26
- import './chunk-5QRP3MVS.js';
25
+ import './chunk-GNPTU4BM.js';
27
26
  import './chunk-TUSYOL2O.js';
28
27
  import './chunk-7VUK5RFS.js';
29
28
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
29
+ import './chunk-RA3O54FC.js';
30
30
  import './chunk-OW52QLK3.js';
31
31
  import './chunk-IHNQWF6F.js';
32
32
  import './chunk-URWYRAIC.js';
@@ -1,18 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { RUNNER_PROTOCOL } from './chunk-TPKYTORP.js';
4
- import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, environmentFacts, findLiveItemForIssue } from './chunk-BET347JZ.js';
5
- export { WorkCommandError } from './chunk-BET347JZ.js';
6
- import './chunk-QOALB6ZD.js';
7
- import './chunk-JRCSET55.js';
4
+ import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, environmentFacts, findLiveItemForIssue } from './chunk-FQE5RDHI.js';
5
+ export { WorkCommandError } from './chunk-FQE5RDHI.js';
6
+ import './chunk-B42BIYC6.js';
7
+ import './chunk-EMUNEAQK.js';
8
8
  import './chunk-G3IJ3N6F.js';
9
9
  import './chunk-EAQSOE62.js';
10
10
  import './chunk-F35VMF5M.js';
11
11
  import { defaultRunnerConfigPath } from './chunk-V5CG75NX.js';
12
12
  import './chunk-UXYLWVTQ.js';
13
13
  import './chunk-7RQ73DLO.js';
14
- import { defaultFetch } from './chunk-QF7WZUU6.js';
15
- import './chunk-NTRCK4NH.js';
14
+ import { defaultFetch } from './chunk-QS43O4DR.js';
16
15
  import './chunk-BJ3KTMDH.js';
17
16
  import './chunk-AEKSX4EY.js';
18
17
  import './chunk-EABW6AJQ.js';
@@ -21,6 +20,7 @@ import './chunk-WZBHBH3J.js';
21
20
  import './chunk-CRB3POP4.js';
22
21
  import './chunk-7VUK5RFS.js';
23
22
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
23
+ import './chunk-RA3O54FC.js';
24
24
  import { ensureHostKey } from './chunk-OW52QLK3.js';
25
25
  import './chunk-IHNQWF6F.js';
26
26
  import './chunk-URWYRAIC.js';
@@ -116,7 +116,7 @@ async function runWorkRelease(opts) {
116
116
  { sessionId, ended: true },
117
117
  fetchImpl
118
118
  );
119
- const { markWorkLeaseRenewed } = await import('./hook-fast-O3UUN6SO.js');
119
+ const { markWorkLeaseRenewed } = await import('./hook-fast-QUGEI2IT.js');
120
120
  markWorkLeaseRenewed(sessionId, opts.home ?? homeFromEnv(env));
121
121
  const output2 = opts.json ? JSON.stringify(data2) : `released session ${sessionId}'s lease on #${itemId}, if it held one`;
122
122
  if (!opts.quiet) process.stdout.write(output2 + "\n");
@@ -1,13 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { WorkCommandError, environmentFacts, findLiveItemForIssue, getJson, parsePositiveInt, patchJson, postJson, resolveCredentials, runWorkBuild, runWorkLinkSession, runWorkList, runWorkRemove, runWorkStatus } from './chunk-BET347JZ.js';
4
- import './chunk-QOALB6ZD.js';
5
- import './chunk-JRCSET55.js';
3
+ export { WorkCommandError, environmentFacts, findLiveItemForIssue, getJson, parsePositiveInt, patchJson, postJson, resolveCredentials, runWorkBuild, runWorkLinkSession, runWorkList, runWorkRemove, runWorkStatus } from './chunk-FQE5RDHI.js';
4
+ import './chunk-B42BIYC6.js';
5
+ import './chunk-EMUNEAQK.js';
6
6
  import './chunk-G3IJ3N6F.js';
7
7
  import './chunk-EAQSOE62.js';
8
8
  import './chunk-F35VMF5M.js';
9
- import './chunk-QF7WZUU6.js';
10
- import './chunk-NTRCK4NH.js';
9
+ import './chunk-QS43O4DR.js';
11
10
  import './chunk-BJ3KTMDH.js';
12
11
  import './chunk-AEKSX4EY.js';
13
12
  import './chunk-EABW6AJQ.js';
@@ -16,6 +15,7 @@ import './chunk-WZBHBH3J.js';
16
15
  import './chunk-CRB3POP4.js';
17
16
  import './chunk-7VUK5RFS.js';
18
17
  import './chunk-VNVZDWO3.js';
18
+ import './chunk-RA3O54FC.js';
19
19
  import './chunk-OW52QLK3.js';
20
20
  import './chunk-IHNQWF6F.js';
21
21
  import './chunk-URWYRAIC.js';
@@ -1,13 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, postJson, getJson } from './chunk-BET347JZ.js';
4
- import { detectActiveSession } from './chunk-QOALB6ZD.js';
5
- import './chunk-JRCSET55.js';
3
+ import { resolveCredentials, postJson, getJson } from './chunk-FQE5RDHI.js';
4
+ import { detectActiveSession } from './chunk-B42BIYC6.js';
5
+ import './chunk-EMUNEAQK.js';
6
6
  import { sanitizeTerminal } from './chunk-G3IJ3N6F.js';
7
7
  import './chunk-EAQSOE62.js';
8
8
  import './chunk-F35VMF5M.js';
9
- import { defaultFetch } from './chunk-QF7WZUU6.js';
10
- import './chunk-NTRCK4NH.js';
9
+ import { defaultFetch } from './chunk-QS43O4DR.js';
11
10
  import './chunk-BJ3KTMDH.js';
12
11
  import { resolveRepoIdentity } from './chunk-AEKSX4EY.js';
13
12
  import './chunk-EABW6AJQ.js';
@@ -16,6 +15,7 @@ import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
16
15
  import './chunk-CRB3POP4.js';
17
16
  import './chunk-7VUK5RFS.js';
18
17
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
18
+ import './chunk-RA3O54FC.js';
19
19
  import './chunk-OW52QLK3.js';
20
20
  import './chunk-IHNQWF6F.js';
21
21
  import './chunk-URWYRAIC.js';
@@ -1,13 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, getJson } from './chunk-BET347JZ.js';
4
- import './chunk-QOALB6ZD.js';
5
- import './chunk-JRCSET55.js';
3
+ import { resolveCredentials, getJson } from './chunk-FQE5RDHI.js';
4
+ import './chunk-B42BIYC6.js';
5
+ import './chunk-EMUNEAQK.js';
6
6
  import './chunk-G3IJ3N6F.js';
7
7
  import './chunk-EAQSOE62.js';
8
8
  import './chunk-F35VMF5M.js';
9
- import { defaultFetch } from './chunk-QF7WZUU6.js';
10
- import './chunk-NTRCK4NH.js';
9
+ import { defaultFetch } from './chunk-QS43O4DR.js';
11
10
  import './chunk-BJ3KTMDH.js';
12
11
  import './chunk-AEKSX4EY.js';
13
12
  import './chunk-EABW6AJQ.js';
@@ -16,6 +15,7 @@ import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
16
15
  import './chunk-CRB3POP4.js';
17
16
  import './chunk-7VUK5RFS.js';
18
17
  import './chunk-VNVZDWO3.js';
18
+ import './chunk-RA3O54FC.js';
19
19
  import './chunk-OW52QLK3.js';
20
20
  import './chunk-IHNQWF6F.js';
21
21
  import './chunk-URWYRAIC.js';
@@ -1,14 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { itemLabel, runWorkPr, WorkPrCommandError } from './chunk-3V5C64Y5.js';
4
- import { resolveCredentials } from './chunk-BET347JZ.js';
5
- import './chunk-QOALB6ZD.js';
6
- import './chunk-JRCSET55.js';
3
+ import { itemLabel, runWorkPr, WorkPrCommandError } from './chunk-BVR6MQLS.js';
4
+ import { resolveCredentials } from './chunk-FQE5RDHI.js';
5
+ import './chunk-B42BIYC6.js';
6
+ import './chunk-EMUNEAQK.js';
7
7
  import './chunk-G3IJ3N6F.js';
8
8
  import './chunk-EAQSOE62.js';
9
9
  import './chunk-F35VMF5M.js';
10
- import { defaultFetch } from './chunk-QF7WZUU6.js';
11
- import './chunk-NTRCK4NH.js';
10
+ import { defaultFetch } from './chunk-QS43O4DR.js';
12
11
  import './chunk-BJ3KTMDH.js';
13
12
  import './chunk-AEKSX4EY.js';
14
13
  import './chunk-EABW6AJQ.js';
@@ -18,6 +17,7 @@ import './chunk-WZBHBH3J.js';
18
17
  import './chunk-CRB3POP4.js';
19
18
  import './chunk-7VUK5RFS.js';
20
19
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
20
+ import './chunk-RA3O54FC.js';
21
21
  import './chunk-OW52QLK3.js';
22
22
  import './chunk-IHNQWF6F.js';
23
23
  import './chunk-URWYRAIC.js';
@@ -1,13 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { WorkPrCommandError, itemLabel, runWorkPr } from './chunk-3V5C64Y5.js';
4
- import './chunk-QOALB6ZD.js';
5
- import './chunk-JRCSET55.js';
3
+ export { WorkPrCommandError, itemLabel, runWorkPr } from './chunk-BVR6MQLS.js';
4
+ import './chunk-B42BIYC6.js';
5
+ import './chunk-EMUNEAQK.js';
6
6
  import './chunk-G3IJ3N6F.js';
7
7
  import './chunk-EAQSOE62.js';
8
8
  import './chunk-F35VMF5M.js';
9
- import './chunk-QF7WZUU6.js';
10
- import './chunk-NTRCK4NH.js';
9
+ import './chunk-QS43O4DR.js';
11
10
  import './chunk-BJ3KTMDH.js';
12
11
  import './chunk-AEKSX4EY.js';
13
12
  import './chunk-EABW6AJQ.js';
@@ -17,6 +16,7 @@ import './chunk-WZBHBH3J.js';
17
16
  import './chunk-CRB3POP4.js';
18
17
  import './chunk-7VUK5RFS.js';
19
18
  import './chunk-VNVZDWO3.js';
19
+ import './chunk-RA3O54FC.js';
20
20
  import './chunk-OW52QLK3.js';
21
21
  import './chunk-IHNQWF6F.js';
22
22
  import './chunk-URWYRAIC.js';
@@ -1,13 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, postJson, WorkCommandError } from './chunk-BET347JZ.js';
4
- import './chunk-QOALB6ZD.js';
5
- import './chunk-JRCSET55.js';
3
+ import { resolveCredentials, postJson, WorkCommandError } from './chunk-FQE5RDHI.js';
4
+ import './chunk-B42BIYC6.js';
5
+ import './chunk-EMUNEAQK.js';
6
6
  import './chunk-G3IJ3N6F.js';
7
7
  import './chunk-EAQSOE62.js';
8
8
  import './chunk-F35VMF5M.js';
9
- import { defaultFetch } from './chunk-QF7WZUU6.js';
10
- import './chunk-NTRCK4NH.js';
9
+ import { defaultFetch } from './chunk-QS43O4DR.js';
11
10
  import './chunk-BJ3KTMDH.js';
12
11
  import './chunk-AEKSX4EY.js';
13
12
  import './chunk-EABW6AJQ.js';
@@ -16,6 +15,7 @@ import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
16
15
  import './chunk-CRB3POP4.js';
17
16
  import './chunk-7VUK5RFS.js';
18
17
  import './chunk-VNVZDWO3.js';
18
+ import './chunk-RA3O54FC.js';
19
19
  import './chunk-OW52QLK3.js';
20
20
  import './chunk-IHNQWF6F.js';
21
21
  import './chunk-URWYRAIC.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outerlayer/cli",
3
- "version": "0.22.1",
3
+ "version": "0.22.2",
4
4
  "description": "OuterLayer CLI — commands: init, claude, connect, doctor, login, logout, sync, daemon (alias: watch), emit, work, spec, runner, hooks, mcp, import, context. Capture and sync coding-agent sessions, and record proof of factory work.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Magu Studios, Inc.",
@@ -3,9 +3,10 @@ name: outerlayer-amend
3
3
  description: >
4
4
  Answer the review threads waiting on an agent on an open pull request: read each
5
5
  thread a person handed to an agent, fix what it says on the pull request's branch,
6
- reply on the thread with a replacement artifact or a sentence, and push. Use when a
7
- work item has threads waiting on an agent, or when asked to "answer the review" or
8
- "fix what the reviewer failed". Invoke with /outerlayer-amend.
6
+ reply on the thread with a replacement artifact or a sentence, and push. Also resolve a
7
+ merge conflict with the base branch. Use when a work item has threads waiting on an
8
+ agent or a conflicting pull request, or when asked to "answer the review" or "fix what
9
+ the reviewer failed". Invoke with /outerlayer-amend.
9
10
  ---
10
11
 
11
12
  Run the CLI as `outerlayer`. If that command is not on PATH, run `npx -y @outerlayer/cli` with the same arguments. Every `outerlayer ...` command below follows this rule.
@@ -13,11 +14,10 @@ Run the CLI as `outerlayer`. If that command is not on PATH, run `npx -y @outerl
13
14
  Answer every thread waiting on an agent on one work item's pull request, then
14
15
  stop. A work item has one general thread and one thread per acceptance
15
16
  criterion. A person's fail on the general thread leaves it waiting on an agent.
16
- A note a reviewer sent with Request changes (a sent note) leaves its criterion
17
- thread waiting on an agent. A plain comment from a person does not hand a
18
- thread to an agent. The person's newest comment says what they want. This
19
- skill never records a verdict. Only a person passes or fails a thread. A
20
- session can only reply.
17
+ A note a reviewer sent with Request changes (a sent note) does the same to its
18
+ criterion thread. A plain comment from a person does not hand a thread to an
19
+ agent. The person's newest comment says what they want. Only a person passes
20
+ or fails a thread. A session can only reply.
21
21
 
22
22
  A session never records a pass or fail on an artifact.
23
23
 
@@ -26,129 +26,130 @@ request's branch first if the working tree is not already on it.
26
26
 
27
27
  ## Arguments
28
28
 
29
- - `--unattended`: no person is watching. Never ask a question. Anything that
30
- needs a person becomes a hand-off (step 6), never a stop that leaves a thread
31
- silently waiting on an agent.
29
+ - `--unattended`: no person is watching. Never ask a question. A need for a
30
+ person becomes a hand-off (step 7), never a silent stop.
32
31
 
33
32
  ## Builds and local sessions
34
33
 
35
34
  A session a runner started for the item is a build. `OUTERLAYER_JOB_DIR` is
36
- set in a build and nowhere else. The GitHub token a runner gives a build can
37
- read the issue and the pull request but cannot comment on either. In the
38
- runner's own build environments, git pushes go through the runner, not
39
- straight to the git host. A local session uses the person's own git remote and
40
- `gh` login.
35
+ set in a build and nowhere else. A build's GitHub token cannot comment on the
36
+ issue or the pull request, and its git pushes go through the runner. A local
37
+ session uses the person's own git remote and `gh` login.
41
38
 
42
39
  ## Several repositories
43
40
 
44
- A build can hold several repositories. `OUTERLAYER_REPOSITORIES` lists them,
45
- each with its `path`, `branch` and whether it is `primary`. The item can have a
46
- pull request in more than one of them. Make each fix in the checkout of the
47
- repository whose pull request the thread is about, and commit and push in each
48
- checkout you change. A push goes only to that checkout's own branch.
41
+ `OUTERLAYER_REPOSITORIES` lists the repositories of a build, each with its
42
+ `path`, `branch` and whether it is `primary`. The item can have a pull request
43
+ in more than one. Make each fix in the checkout of the repository whose pull
44
+ request the thread is about. Commit and push in each checkout you change, to
45
+ its own branch only.
49
46
 
50
47
  ## Steps
51
48
 
52
- 1. **Read the threads.**
49
+ 1. **Resolve a merge conflict.** Run
50
+ `outerlayer work status --item "$OUTERLAYER_WORK" --json`. For each
51
+ `pullRequests` entry, compare `conflict.headSha` with `git rev-parse HEAD`
52
+ in that repository's checkout. Skip an entry whose `conflict` is `null` or
53
+ differs: a push has moved the head. Do this before any thread, and go on
54
+ even when none waits.
55
+ For a matching entry, merge the base branch into the pull request's branch.
56
+ Never rebase and never force-push. Follow
57
+ `.outerlayer/skills/outerlayer-cli/references/merge-base-branch.md`. Run the
58
+ pre-push gate in the foreground. Name the base sha in the merge commit.
59
+ Push, then answer the threads.
60
+ **Hand off a conflict you cannot resolve.** If the resolution needs a
61
+ product decision, or the gate stays red after one fix, abort the merge.
62
+ Push nothing. Post on the general thread with `--ready`. Name the
63
+ conflicting files, the base commits behind them and the decision needed.
64
+ Tell the person to fail the general thread with their answer.
65
+ 2. **Read the threads.**
53
66
  `outerlayer work threads --item "$OUTERLAYER_WORK" --json` prints
54
67
  `{ "general": <thread>, "criteria": [<thread>, ...] }`. Each thread carries
55
68
  `criterion` (null for the general thread), `waitingOn` (`agent`, `person` or
56
69
  null), `verdict`, `proof` and `comments`. Each comment carries `author`
57
70
  (`kind` is `person` or `agent`), `body`, `action` and `artifact`. Keep the
58
- threads whose `waitingOn` is `agent`. One send of notes starts one run, so
59
- expect several criterion threads and the general thread together. If none is
60
- waiting, say so and stop: there is nothing to answer. Then read
61
- `outerlayer work status --item "$OUTERLAYER_WORK" --json` for the pull
62
- request in `pullRequests` (`repository`, `prNumber`).
63
- 2. **Re-orient.** Read the issue the item names from the status JSON's
64
- `issue`, OuterLayer's copy of it, which needs no tracker credential:
65
- `issue.body` is its description in Markdown. Read the pull request,
66
- including its evidence comment, through the git host. The
67
- issue body is the spec. Find each thread's criterion there. Read every
68
- person's comment since the last agent comment on the thread. Read them
69
- literally: they are the reviewer's instruction.
70
- 3. **Decide each thread.** Reply on every criterion thread waiting on an
71
+ threads whose `waitingOn` is `agent`: one send of notes can leave several.
72
+ If none is waiting and step 1 resolved no conflict, say so and stop: there
73
+ is nothing to answer. Take the pull request (`repository`, `prNumber`) from
74
+ the `pullRequests` of the status JSON you read in step 1.
75
+ 3. **Re-orient.** The status JSON's `issue.body` is OuterLayer's copy of the
76
+ issue. It is the spec: find each thread's criterion there. Read the pull
77
+ request, with its evidence comment, through the git host. Read every person's comment since the last agent
78
+ comment on the thread. Read them literally.
79
+ 4. **Decide each thread.** Reply on every criterion thread waiting on an
71
80
  agent, with `--criterion`, so each note gets its answer under it. Read each
72
81
  note and pick one:
73
82
  - **Answer it.** A question gets an answer. Reply with the answer and
74
83
  change nothing. Say which file or test you looked at.
75
- - **Fix it.** A requested change gets a fix. The comment names something the
76
- change got wrong or did not show. Change the code, tests, docs or evidence
77
- so the criterion is met as written, and attach new proof when the
84
+ - **Fix it.** A requested change gets a fix. Change the code, tests, docs or
85
+ evidence so the criterion is met as written, and attach new proof when the
78
86
  criterion declares one.
79
- - **The spec is wrong.** The comment shows the criterion cannot be met as
80
- written, for example because it names a path a repository rule forbids. A
81
- session never rewrites a criterion on its own. Hand it off (step 6), naming
82
- the exact wording change the owner should make.
87
+ - **The spec is wrong.** The criterion cannot be met as written, for
88
+ example because it names a path a repository rule forbids. A session never
89
+ rewrites a criterion. Hand it off (step 7), naming the wording change the
90
+ owner should make.
83
91
  - **Cannot tell.** The comment is ambiguous. Hand it off with `--ready`:
84
- quote it and ask one question back.
85
- 4. **Fix, prove, reply.** An answer needs no commit: reply on its criterion
92
+ quote it and ask one question.
93
+ 5. **Fix, prove, reply.** An answer needs no commit: reply on its criterion
86
94
  thread with the answer and `--ready`. For each thread you fix:
87
- - Make the change on the pull request's branch. Keep it to what the comment
88
- asks. Do not refactor around it.
89
- - Run the tests that cover the criterion, then the repository's full
90
- pre-push checks through a normal `git push`. Never bypass a hook.
91
- - A runner accepts a build's push only to the pull request's branch. If it
92
- refuses one, read the reason git prints, fix it and push again.
93
- - In a local session over SSH, the git host can drop the connection during
94
- a long gate. Push again with
95
+ - Change only what the comment asks, on the pull request's branch.
96
+ - Run the tests that cover the criterion, then the repository's pre-push
97
+ checks through a normal `git push`. Never bypass a hook.
98
+ - If the runner refuses a push, read the reason git prints, fix it and push
99
+ again.
100
+ - Over SSH, a long gate can drop the connection. Push again with
95
101
  `GIT_SSH_COMMAND="ssh -o ServerAliveInterval=20 -o ServerAliveCountMax=60"`.
96
- - **When the thread asks for new proof** (a criterion thread whose proof the
97
- person failed), capture it after the fixed state exists, in the form the
98
- criterion declares (`proof: screenshot` and so on) or the form of the
99
- current proof. Emit it bound to that criterion, without `--replaces`.
100
- Attaching it on the thread supersedes the old proof.
102
+ - **When the thread asks for new proof** (a person failed its proof),
103
+ capture it after the fixed state exists, in the form the criterion
104
+ declares or the form of the current proof. Emit it bound to that
105
+ criterion, without `--replaces`:
101
106
  `outerlayer emit artifact <file> --caption "<what it shows>" --for <criterion>`.
102
- Note the id it prints. Run `outerlayer sync` so the artifact reaches the
103
- server. The attach looks it up there and refuses an artifact it cannot
104
- find. Then reply:
107
+ Note the id it prints. Run `outerlayer sync`, so the attach can find the
108
+ artifact. Then reply, which supersedes the old proof:
105
109
  `outerlayer work comment --item "$OUTERLAYER_WORK" --criterion <criterion> --body "<what changed>" --artifact <uuid> --attach`.
106
- A replacement whose bytes match the current proof is flagged `unchanged`
107
- and keeps the turn where the person's comment left it, so the thread
108
- still waits on you.
110
+ A replacement whose bytes match the current proof is flagged `unchanged`,
111
+ so the thread still waits on you.
109
112
  - **Otherwise** (the general thread, or a fix that needs no new proof),
110
113
  reply with a sentence naming what changed and the commit:
111
114
  `outerlayer work comment --item "$OUTERLAYER_WORK" [--criterion <criterion>] --body "<what changed>" --ready`.
112
115
  Omit `--criterion` on the general thread.
113
- 5. **Watch CI.** Skip this step when you pushed nothing. Run
116
+ 6. **Watch CI.** Skip this step when you pushed nothing. Run
114
117
  `gh pr checks <prNumber> --repo <repository> --watch` on each pull request
115
118
  you pushed. Leave out any check that waits on results recorded after the
116
- session ends. After a push, "no checks reported" is not green: query
117
- again.
119
+ session ends. "No checks reported" is not green: query again.
118
120
  - For a failed check, read `gh run view <run-id> --log-failed`, fix it, push
119
121
  again.
120
122
  - If it also fails on the base branch, or failed outside the code,
121
123
  change nothing.
122
124
  - Stop after two fixes for one check.
123
- 6. **Hand off what you cannot fix.** Reply on the thread with `--ready` and a
124
- body of one sentence of fact, then the decision a person must make. For a
125
- spec problem, quote the criterion and give the replacement wording.
126
- `--ready` hands the thread back to a person.
127
- 7. **Check nothing is left waiting.** Read the threads again. No thread you
128
- started with may still be waiting on an agent. If one is, the reply did not
129
- land or was flagged `unchanged`. Find out why and fix it, or report it.
130
- 8. **Report.** Write one line per thread, naming the criterion (or the general
125
+ 7. **Hand off what you cannot fix.** Reply on the thread with `--ready`: one
126
+ sentence of fact, then the decision a person must make. For a spec problem,
127
+ quote the criterion and give the replacement wording. `--ready` hands the
128
+ thread back to a person.
129
+ 8. **Check nothing is left waiting.** Read the threads again. None you started
130
+ with may still wait on an agent. If one does, the reply did not land or was
131
+ flagged `unchanged`. Fix that, or report it.
132
+ 9. **Report.** Write one line per thread, naming the criterion (or the general
131
133
  thread) and saying fixed (with the replacement) or handed off (with the
132
- reason). Add a CI line when you pushed: green, or each red check and
133
- why. Plain language. No session labels, no raw command output. Post the
134
+ reason). Add one line for a merge conflict: merged, with the base sha, or
135
+ handed off, with the reason. Add a CI line when you pushed: green, or each
136
+ red check and why. Use plain language. Post the
134
137
  lines once on the general thread, in a build and in a local session alike:
135
138
  `outerlayer work comment --item "$OUTERLAYER_WORK" --body "<the lines>"`.
136
139
  A plain comment from an agent leaves the general thread waiting on a person.
137
- A local session also posts the lines once as a pull request comment. A build
138
- does not try: its token cannot comment. End the session with the same lines.
140
+ A local session also posts them on the pull request. A build does not:
141
+ its token cannot comment. End with the same lines.
139
142
 
140
143
  ## Rules
141
144
 
142
145
  - **Answer only threads waiting on an agent.** A thread waiting on a person, or
143
146
  on no one, is not yours to reply on.
144
147
  - **One thread, one proof.** Never attach an artifact that does not prove that
145
- thread's criterion. The attach refuses an artifact bound to a different
146
- criterion.
148
+ thread's criterion.
147
149
  - **A person decides.** Never pass `--pass` or `--fail`, never mark a check as
148
150
  a person, and never edit the issue's criteria.
149
151
  - **Stay on the branch.** Push to the pull request's own branch. Never open a
150
152
  second pull request in a repository that has one, and never force-push over
151
153
  someone else's commits.
152
154
  - **Write for a reader who was not here.** Every comment, commit and reply
153
- follows the repository's writing rule: outcome first, short sentences, plain
154
- words.
155
+ follows the repository's writing rule: outcome first, short plain sentences.