@outerlayer/cli 0.23.0 → 0.25.0

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 (117) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +13 -0
  3. package/dist/{agent-setup-SNDCEHG2.js → agent-setup-PDIIGMKE.js} +7 -7
  4. package/dist/{bridge-QFN3KJP6.js → bridge-5KZ36YDG.js} +3 -3
  5. package/dist/build-Q2OBF77R.js +12 -0
  6. package/dist/build-info.json +1 -1
  7. package/dist/{builder-7FBQAWQZ.js → builder-PRSCX5AH.js} +7 -7
  8. package/dist/{check-3CGLWMHM.js → check-EPYRTE3R.js} +40 -37
  9. package/dist/{chunk-URWYRAIC.js → chunk-2K3TCQHW.js} +1 -3
  10. package/dist/{chunk-Z42JY3LQ.js → chunk-2N72GPS2.js} +3 -3
  11. package/dist/{chunk-WY7HFY62.js → chunk-34ANPNVB.js} +3 -3
  12. package/dist/{chunk-QSEPKZXR.js → chunk-3I44PQ26.js} +206 -57
  13. package/dist/{chunk-ZKWKQIJU.js → chunk-4S4VBDSO.js} +1 -1
  14. package/dist/chunk-5222PA6S.js +66 -0
  15. package/dist/{chunk-GXV73IIS.js → chunk-6CNHXHI2.js} +17 -5
  16. package/dist/{chunk-NYTZ7HVN.js → chunk-7OWPLRJR.js} +1 -1
  17. package/dist/{chunk-EFB3FGLC.js → chunk-ATGHVEU4.js} +1 -1
  18. package/dist/{chunk-QILR6TZP.js → chunk-AXPCGD46.js} +5 -5
  19. package/dist/{chunk-CBCKD6DO.js → chunk-D4AMAEZ7.js} +12 -11
  20. package/dist/{chunk-XACXXKQ5.js → chunk-DEBOL6ON.js} +1 -1
  21. package/dist/{chunk-XGPC3IOR.js → chunk-FXUVXSY2.js} +2 -2
  22. package/dist/{chunk-6AOZD3LY.js → chunk-HBLLZLOH.js} +3 -3
  23. package/dist/{chunk-ZLZ3XVPI.js → chunk-HWEIFHSW.js} +3 -3
  24. package/dist/{chunk-D64E222W.js → chunk-IDJIWKTY.js} +3 -3
  25. package/dist/{chunk-OBCFK4QD.js → chunk-IGRRD7PX.js} +11 -7
  26. package/dist/{chunk-GISNHSYL.js → chunk-JGD5TWQ2.js} +4 -2
  27. package/dist/{chunk-2TT7DEMZ.js → chunk-JKILLWZF.js} +11 -9
  28. package/dist/{chunk-V5CG75NX.js → chunk-JWRX5ZTT.js} +6 -2
  29. package/dist/{chunk-XOEV4FVK.js → chunk-K5WVK7IC.js} +1 -1
  30. package/dist/{chunk-TFGXOHF6.js → chunk-L2FZLBF7.js} +278 -40
  31. package/dist/{chunk-QS43O4DR.js → chunk-M4B6QKNZ.js} +1 -1
  32. package/dist/{chunk-UF5L4BAI.js → chunk-O2WYUIK7.js} +1 -1
  33. package/dist/{chunk-276D7BJ7.js → chunk-QMQC6JCO.js} +1 -1
  34. package/dist/{chunk-OGMZJWWD.js → chunk-QUGYGO6L.js} +6 -6
  35. package/dist/{chunk-JV4YGAAW.js → chunk-QXNJWSTM.js} +5 -5
  36. package/dist/{chunk-3W333NFO.js → chunk-RGW7ERF3.js} +15 -4
  37. package/dist/{chunk-I2UOAV7X.js → chunk-TQMI335S.js} +4 -1
  38. package/dist/{chunk-WXJXHZVB.js → chunk-UNF7MWEL.js} +1 -1
  39. package/dist/{chunk-FX6IHR5C.js → chunk-VMF5LK3D.js} +8 -8
  40. package/dist/{chunk-C2XZBNHY.js → chunk-VNGENFOG.js} +19 -6
  41. package/dist/{chunk-G3LHWUBK.js → chunk-VPUNOGXO.js} +6 -6
  42. package/dist/{chunk-C64D7HR3.js → chunk-X5LNCIZT.js} +19 -10
  43. package/dist/{chunk-2Q3PZ42G.js → chunk-XGJUNNXL.js} +1 -1
  44. package/dist/{chunk-BOG4ENP7.js → chunk-XHXDCYSK.js} +185 -38
  45. package/dist/{chunk-CQAEV3Z5.js → chunk-XRYUJTAT.js} +8 -1
  46. package/dist/{chunk-KGKFEONR.js → chunk-YMKQVCKC.js} +5 -5
  47. package/dist/{chunk-DJYOCD65.js → chunk-YTTHDPWF.js} +5 -5
  48. package/dist/{chunk-4AVDD7VX.js → chunk-ZGMQQWCV.js} +2 -2
  49. package/dist/{chunk-IHNQWF6F.js → chunk-ZI2ZVWKT.js} +1 -1
  50. package/dist/{chunk-OW52QLK3.js → chunk-ZODVSFI4.js} +1 -1
  51. package/dist/chunk-ZVB57WI6.js +19 -0
  52. package/dist/{claude-launcher-KEESTJHO.js → claude-launcher-WGOCLTG6.js} +1 -1
  53. package/dist/{cli-44WGGICQ.js → cli-2LGSPAYZ.js} +131 -97
  54. package/dist/command-ITLPJ5XU.js +533 -0
  55. package/dist/{config-H4QS332G.js → config-JJ3EO7SB.js} +3 -3
  56. package/dist/connect-cmd-JFDZKPND.js +25 -0
  57. package/dist/container-start-X22OXY6E.js +179 -0
  58. package/dist/{control-plane-launch-SEYCOZFH.js → control-plane-launch-ZFT6SI4N.js} +6 -6
  59. package/dist/{dist-SOH3O24Y.js → dist-2APO44JG.js} +1 -1
  60. package/dist/{docker-KMK4LOET.js → docker-PQHWAY5J.js} +7 -7
  61. package/dist/{doctor-4H77CEB7.js → doctor-73GNT4VV.js} +90 -31
  62. package/dist/{emit-artifact-cmd-XCZ3ALLV.js → emit-artifact-cmd-AIOTX6YT.js} +14 -11
  63. package/dist/{emit-criteria-cmd-JE72JHKJ.js → emit-criteria-cmd-7PJINOHA.js} +11 -8
  64. package/dist/{emit-finding-cmd-ILIDRMYN.js → emit-finding-cmd-JRDSZ4DR.js} +11 -8
  65. package/dist/{emit-result-cmd-WPKG5YAS.js → emit-result-cmd-ZGF6Q6OP.js} +14 -11
  66. package/dist/{emit-step-cmd-OVMLQSL6.js → emit-step-cmd-DUR34STQ.js} +12 -9
  67. package/dist/{exec-client-ATPF2DDB.js → exec-client-S5IA7JRG.js} +4 -4
  68. package/dist/{governing-source-EQBKPME7.js → governing-source-DKJABQAT.js} +12 -11
  69. package/dist/{guest-init-HWSE7W6L.js → guest-init-TOSKPGPF.js} +5 -5
  70. package/dist/{hook-fast-27SHD72I.js → hook-fast-NEELST6G.js} +1 -1
  71. package/dist/host-key-ICJEQBWH.js +9 -0
  72. package/dist/image-tag-6KJOGBQK.js +10 -0
  73. package/dist/index.js +4 -4
  74. package/dist/{init-HAAHIQFN.js → init-NE3VR3EY.js} +26 -23
  75. package/dist/{init-WQ62BXDN.js → init-SKOXNJND.js} +26 -23
  76. package/dist/{init-cmd-VPFIDY64.js → init-cmd-UEDOJ7LG.js} +12 -12
  77. package/dist/{init-update-UZIJ2FMU.js → init-update-VKZ4S6HH.js} +36 -10
  78. package/dist/{install-SFACZU7E.js → install-MPEJJ7X6.js} +5 -5
  79. package/dist/install-cmd-SE6NCTJK.js +12 -0
  80. package/dist/job-state-format-WJQGQB6F.js +6 -0
  81. package/dist/{logs-N3ZX7HFV.js → logs-T4ERSOQ4.js} +3 -3
  82. package/dist/loop-BPVEA5OC.js +78 -0
  83. package/dist/{machine-PGDRWPI2.js → machine-G3GICXQN.js} +22 -19
  84. package/dist/{mcp-serve-cmd-CNRC5AL5.js → mcp-serve-cmd-7M4VLNI4.js} +5 -5
  85. package/dist/{paths-AKX2OOLF.js → paths-2KGM2LZV.js} +3 -3
  86. package/dist/pending-BGLMTB5Q.js +9 -0
  87. package/dist/{pidfile-G2J5WBQS.js → pidfile-VYBH3IMN.js} +4 -4
  88. package/dist/{record-Q4IEYIVV.js → record-GNOHDJ2O.js} +4 -4
  89. package/dist/{relay-PSZ4LGMW.js → relay-GFPPD6GF.js} +1 -1
  90. package/dist/relay-protocol-HELO5SNH.js +6 -0
  91. package/dist/{runner-env-GZHXM27A.js → runner-env-GUFV544G.js} +6 -6
  92. package/dist/{runner-identity-IIZ3RK7M.js → runner-identity-J6DXJ6MF.js} +7 -7
  93. package/dist/{runner-key-BPP5XRYR.js → runner-key-L55O7Y7W.js} +26 -23
  94. package/dist/{session-sender-EKKZ5DEU.js → session-sender-LXTASWBY.js} +15 -12
  95. package/dist/{spec-cmd-JDHGNFVJ.js → spec-cmd-G2JNXKD7.js} +12 -9
  96. package/dist/{status-UCQDEMFX.js → status-U6DXOR6C.js} +43 -28
  97. package/dist/{sync-cmd-NSVXOYFJ.js → sync-cmd-VPNS5ITY.js} +14 -11
  98. package/dist/{watch-NQVZWPBJ.js → watch-ZOCYD2NE.js} +14 -11
  99. package/dist/{work-claim-cmd-FPJXQAXP.js → work-claim-cmd-BUMIPJNF.js} +15 -12
  100. package/dist/{work-cmd-FMPDXPU6.js → work-cmd-LRAXUOJV.js} +12 -9
  101. package/dist/{work-comment-cmd-ZVUE2IUN.js → work-comment-cmd-4RDIBUYO.js} +12 -9
  102. package/dist/{work-logs-cmd-CQH2SYT4.js → work-logs-cmd-YYN2CPJQ.js} +12 -9
  103. package/dist/{work-open-pr-cmd-YY2OGJOI.js → work-open-pr-cmd-3MCND2LZ.js} +13 -10
  104. package/dist/{work-pr-cmd-EHFTEVJO.js → work-pr-cmd-BODEZAXN.js} +12 -9
  105. package/dist/{work-stop-cmd-LGWSBSBT.js → work-stop-cmd-P7HXVKEG.js} +12 -9
  106. package/package.json +2 -2
  107. package/skill-pack/maintained/outerlayer-build/SKILL.md +1 -1
  108. package/skill-pack/maintained/outerlayer-build/references/agent-briefs.md +3 -2
  109. package/skill-pack/maintained/outerlayer-build/references/review-briefs.md +3 -1
  110. package/dist/build-WHHFA7KM.js +0 -12
  111. package/dist/command-4FAP2D3P.js +0 -207
  112. package/dist/connect-cmd-6DUTUK63.js +0 -22
  113. package/dist/host-key-ATB23GI3.js +0 -9
  114. package/dist/install-cmd-6HTP7I43.js +0 -12
  115. package/dist/loop-JPW2QJ64.js +0 -75
  116. package/dist/pending-7SGWZCEH.js +0 -9
  117. package/dist/relay-protocol-K7KP2SPI.js +0 -6
@@ -1,30 +1,33 @@
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-C64D7HR3.js';
5
- export { WorkCommandError } from './chunk-C64D7HR3.js';
6
- import './chunk-ZLZ3XVPI.js';
7
- import './chunk-GXV73IIS.js';
4
+ import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, environmentFacts, findLiveItemForIssue } from './chunk-X5LNCIZT.js';
5
+ export { WorkCommandError } from './chunk-X5LNCIZT.js';
6
+ import './chunk-HWEIFHSW.js';
7
+ import './chunk-6CNHXHI2.js';
8
8
  import './chunk-BUP5N3X6.js';
9
9
  import './chunk-XSPA5ODY.js';
10
10
  import './chunk-GOSFARMS.js';
11
- import { defaultRunnerConfigPath } from './chunk-V5CG75NX.js';
11
+ import { defaultRunnerConfigPath } from './chunk-JWRX5ZTT.js';
12
12
  import './chunk-UXYLWVTQ.js';
13
13
  import './chunk-7RQ73DLO.js';
14
- import { defaultFetch } from './chunk-QS43O4DR.js';
14
+ import { defaultFetch } from './chunk-M4B6QKNZ.js';
15
15
  import './chunk-BJ3KTMDH.js';
16
- import './chunk-CBCKD6DO.js';
16
+ import './chunk-D4AMAEZ7.js';
17
17
  import './chunk-ANPNT6PM.js';
18
18
  import './chunk-EABW6AJQ.js';
19
+ import './chunk-JKNYTNYD.js';
20
+ import './chunk-HBISTTG3.js';
19
21
  import './chunk-WZBHBH3J.js';
20
22
  import './chunk-CRB3POP4.js';
23
+ import './chunk-RKOTJQVG.js';
21
24
  import './chunk-QZBXLLTV.js';
22
25
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
23
26
  import './chunk-RA3O54FC.js';
24
- import { ensureHostKey } from './chunk-OW52QLK3.js';
25
- import './chunk-IHNQWF6F.js';
26
- import './chunk-URWYRAIC.js';
27
- import './chunk-GISNHSYL.js';
27
+ import { ensureHostKey } from './chunk-ZODVSFI4.js';
28
+ import './chunk-ZI2ZVWKT.js';
29
+ import './chunk-2K3TCQHW.js';
30
+ import './chunk-JGD5TWQ2.js';
28
31
  import './chunk-Z5GEFMRW.js';
29
32
  import { hostname } from 'os';
30
33
 
@@ -116,7 +119,7 @@ async function runWorkRelease(opts) {
116
119
  { sessionId, ended: true },
117
120
  fetchImpl
118
121
  );
119
- const { markWorkLeaseRenewed } = await import('./hook-fast-27SHD72I.js');
122
+ const { markWorkLeaseRenewed } = await import('./hook-fast-NEELST6G.js');
120
123
  markWorkLeaseRenewed(sessionId, opts.home ?? homeFromEnv(env));
121
124
  const output2 = opts.json ? JSON.stringify(data2) : `released session ${sessionId}'s lease on #${itemId}, if it held one`;
122
125
  if (!opts.quiet) process.stdout.write(output2 + "\n");
@@ -1,25 +1,28 @@
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-C64D7HR3.js';
4
- import './chunk-ZLZ3XVPI.js';
5
- import './chunk-GXV73IIS.js';
3
+ export { WorkCommandError, environmentFacts, findLiveItemForIssue, getJson, parsePositiveInt, patchJson, postJson, resolveCredentials, runWorkBuild, runWorkLinkSession, runWorkList, runWorkRemove, runWorkStatus } from './chunk-X5LNCIZT.js';
4
+ import './chunk-HWEIFHSW.js';
5
+ import './chunk-6CNHXHI2.js';
6
6
  import './chunk-BUP5N3X6.js';
7
7
  import './chunk-XSPA5ODY.js';
8
8
  import './chunk-GOSFARMS.js';
9
- import './chunk-QS43O4DR.js';
9
+ import './chunk-M4B6QKNZ.js';
10
10
  import './chunk-BJ3KTMDH.js';
11
- import './chunk-CBCKD6DO.js';
11
+ import './chunk-D4AMAEZ7.js';
12
12
  import './chunk-ANPNT6PM.js';
13
13
  import './chunk-EABW6AJQ.js';
14
+ import './chunk-JKNYTNYD.js';
15
+ import './chunk-HBISTTG3.js';
14
16
  import './chunk-WZBHBH3J.js';
15
17
  import './chunk-CRB3POP4.js';
18
+ import './chunk-RKOTJQVG.js';
16
19
  import './chunk-QZBXLLTV.js';
17
20
  import './chunk-VNVZDWO3.js';
18
21
  import './chunk-RA3O54FC.js';
19
- import './chunk-OW52QLK3.js';
20
- import './chunk-IHNQWF6F.js';
21
- import './chunk-URWYRAIC.js';
22
- import './chunk-GISNHSYL.js';
22
+ import './chunk-ZODVSFI4.js';
23
+ import './chunk-ZI2ZVWKT.js';
24
+ import './chunk-2K3TCQHW.js';
25
+ import './chunk-JGD5TWQ2.js';
23
26
  import './chunk-Z5GEFMRW.js';
24
27
 
25
28
  createRequire(import.meta.url);
@@ -1,25 +1,28 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, postJson, getJson } from './chunk-C64D7HR3.js';
4
- import { detectActiveSession } from './chunk-ZLZ3XVPI.js';
5
- import './chunk-GXV73IIS.js';
3
+ import { resolveCredentials, postJson, getJson } from './chunk-X5LNCIZT.js';
4
+ import { detectActiveSession } from './chunk-HWEIFHSW.js';
5
+ import './chunk-6CNHXHI2.js';
6
6
  import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
7
7
  import './chunk-XSPA5ODY.js';
8
8
  import './chunk-GOSFARMS.js';
9
- import { defaultFetch } from './chunk-QS43O4DR.js';
9
+ import { defaultFetch } from './chunk-M4B6QKNZ.js';
10
10
  import './chunk-BJ3KTMDH.js';
11
- import { resolveRepoIdentity } from './chunk-CBCKD6DO.js';
11
+ import { resolveRepoIdentity } from './chunk-D4AMAEZ7.js';
12
12
  import { C } from './chunk-ANPNT6PM.js';
13
13
  import './chunk-EABW6AJQ.js';
14
+ import './chunk-JKNYTNYD.js';
15
+ import './chunk-HBISTTG3.js';
14
16
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
15
17
  import './chunk-CRB3POP4.js';
18
+ import './chunk-RKOTJQVG.js';
16
19
  import './chunk-QZBXLLTV.js';
17
20
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
18
21
  import './chunk-RA3O54FC.js';
19
- import './chunk-OW52QLK3.js';
20
- import './chunk-IHNQWF6F.js';
21
- import './chunk-URWYRAIC.js';
22
- import './chunk-GISNHSYL.js';
22
+ import './chunk-ZODVSFI4.js';
23
+ import './chunk-ZI2ZVWKT.js';
24
+ import './chunk-2K3TCQHW.js';
25
+ import './chunk-JGD5TWQ2.js';
23
26
  import './chunk-Z5GEFMRW.js';
24
27
  import { randomUUID } from 'crypto';
25
28
 
@@ -1,25 +1,28 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, getJson } from './chunk-C64D7HR3.js';
4
- import './chunk-ZLZ3XVPI.js';
5
- import './chunk-GXV73IIS.js';
3
+ import { resolveCredentials, getJson } from './chunk-X5LNCIZT.js';
4
+ import './chunk-HWEIFHSW.js';
5
+ import './chunk-6CNHXHI2.js';
6
6
  import './chunk-BUP5N3X6.js';
7
7
  import './chunk-XSPA5ODY.js';
8
8
  import './chunk-GOSFARMS.js';
9
- import { defaultFetch } from './chunk-QS43O4DR.js';
9
+ import { defaultFetch } from './chunk-M4B6QKNZ.js';
10
10
  import './chunk-BJ3KTMDH.js';
11
- import './chunk-CBCKD6DO.js';
11
+ import './chunk-D4AMAEZ7.js';
12
12
  import './chunk-ANPNT6PM.js';
13
13
  import './chunk-EABW6AJQ.js';
14
+ import './chunk-JKNYTNYD.js';
15
+ import './chunk-HBISTTG3.js';
14
16
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
15
17
  import './chunk-CRB3POP4.js';
18
+ import './chunk-RKOTJQVG.js';
16
19
  import './chunk-QZBXLLTV.js';
17
20
  import './chunk-VNVZDWO3.js';
18
21
  import './chunk-RA3O54FC.js';
19
- import './chunk-OW52QLK3.js';
20
- import './chunk-IHNQWF6F.js';
21
- import './chunk-URWYRAIC.js';
22
- import './chunk-GISNHSYL.js';
22
+ import './chunk-ZODVSFI4.js';
23
+ import './chunk-ZI2ZVWKT.js';
24
+ import './chunk-2K3TCQHW.js';
25
+ import './chunk-JGD5TWQ2.js';
23
26
  import './chunk-Z5GEFMRW.js';
24
27
 
25
28
  createRequire(import.meta.url);
@@ -1,27 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { itemLabel, runWorkPr, WorkPrCommandError } from './chunk-6AOZD3LY.js';
4
- import { resolveCredentials } from './chunk-C64D7HR3.js';
5
- import './chunk-ZLZ3XVPI.js';
6
- import './chunk-GXV73IIS.js';
3
+ import { itemLabel, runWorkPr, WorkPrCommandError } from './chunk-HBLLZLOH.js';
4
+ import { resolveCredentials } from './chunk-X5LNCIZT.js';
5
+ import './chunk-HWEIFHSW.js';
6
+ import './chunk-6CNHXHI2.js';
7
7
  import './chunk-BUP5N3X6.js';
8
8
  import './chunk-XSPA5ODY.js';
9
9
  import './chunk-GOSFARMS.js';
10
- import { defaultFetch } from './chunk-QS43O4DR.js';
10
+ import { defaultFetch } from './chunk-M4B6QKNZ.js';
11
11
  import './chunk-BJ3KTMDH.js';
12
- import './chunk-CBCKD6DO.js';
12
+ import './chunk-D4AMAEZ7.js';
13
13
  import { C } from './chunk-ANPNT6PM.js';
14
14
  import './chunk-EABW6AJQ.js';
15
+ import './chunk-JKNYTNYD.js';
16
+ import './chunk-HBISTTG3.js';
15
17
  import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
16
18
  import './chunk-WZBHBH3J.js';
17
19
  import './chunk-CRB3POP4.js';
20
+ import './chunk-RKOTJQVG.js';
18
21
  import './chunk-QZBXLLTV.js';
19
22
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
20
23
  import './chunk-RA3O54FC.js';
21
- import './chunk-OW52QLK3.js';
22
- import './chunk-IHNQWF6F.js';
23
- import './chunk-URWYRAIC.js';
24
- import './chunk-GISNHSYL.js';
24
+ import './chunk-ZODVSFI4.js';
25
+ import './chunk-ZI2ZVWKT.js';
26
+ import './chunk-2K3TCQHW.js';
27
+ import './chunk-JGD5TWQ2.js';
25
28
  import './chunk-Z5GEFMRW.js';
26
29
  import { spawnSync } from 'child_process';
27
30
  import { readFileSync } from 'fs';
@@ -1,26 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { WorkPrCommandError, itemLabel, runWorkPr } from './chunk-6AOZD3LY.js';
4
- import './chunk-ZLZ3XVPI.js';
5
- import './chunk-GXV73IIS.js';
3
+ export { WorkPrCommandError, itemLabel, runWorkPr } from './chunk-HBLLZLOH.js';
4
+ import './chunk-HWEIFHSW.js';
5
+ import './chunk-6CNHXHI2.js';
6
6
  import './chunk-BUP5N3X6.js';
7
7
  import './chunk-XSPA5ODY.js';
8
8
  import './chunk-GOSFARMS.js';
9
- import './chunk-QS43O4DR.js';
9
+ import './chunk-M4B6QKNZ.js';
10
10
  import './chunk-BJ3KTMDH.js';
11
- import './chunk-CBCKD6DO.js';
11
+ import './chunk-D4AMAEZ7.js';
12
12
  import './chunk-ANPNT6PM.js';
13
13
  import './chunk-EABW6AJQ.js';
14
+ import './chunk-JKNYTNYD.js';
15
+ import './chunk-HBISTTG3.js';
14
16
  import './chunk-T2Q7ISPE.js';
15
17
  import './chunk-WZBHBH3J.js';
16
18
  import './chunk-CRB3POP4.js';
19
+ import './chunk-RKOTJQVG.js';
17
20
  import './chunk-QZBXLLTV.js';
18
21
  import './chunk-VNVZDWO3.js';
19
22
  import './chunk-RA3O54FC.js';
20
- import './chunk-OW52QLK3.js';
21
- import './chunk-IHNQWF6F.js';
22
- import './chunk-URWYRAIC.js';
23
- import './chunk-GISNHSYL.js';
23
+ import './chunk-ZODVSFI4.js';
24
+ import './chunk-ZI2ZVWKT.js';
25
+ import './chunk-2K3TCQHW.js';
26
+ import './chunk-JGD5TWQ2.js';
24
27
  import './chunk-Z5GEFMRW.js';
25
28
 
26
29
  createRequire(import.meta.url);
@@ -1,25 +1,28 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, postJson, WorkCommandError } from './chunk-C64D7HR3.js';
4
- import './chunk-ZLZ3XVPI.js';
5
- import './chunk-GXV73IIS.js';
3
+ import { resolveCredentials, postJson, WorkCommandError } from './chunk-X5LNCIZT.js';
4
+ import './chunk-HWEIFHSW.js';
5
+ import './chunk-6CNHXHI2.js';
6
6
  import './chunk-BUP5N3X6.js';
7
7
  import './chunk-XSPA5ODY.js';
8
8
  import './chunk-GOSFARMS.js';
9
- import { defaultFetch } from './chunk-QS43O4DR.js';
9
+ import { defaultFetch } from './chunk-M4B6QKNZ.js';
10
10
  import './chunk-BJ3KTMDH.js';
11
- import './chunk-CBCKD6DO.js';
11
+ import './chunk-D4AMAEZ7.js';
12
12
  import './chunk-ANPNT6PM.js';
13
13
  import './chunk-EABW6AJQ.js';
14
+ import './chunk-JKNYTNYD.js';
15
+ import './chunk-HBISTTG3.js';
14
16
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
15
17
  import './chunk-CRB3POP4.js';
18
+ import './chunk-RKOTJQVG.js';
16
19
  import './chunk-QZBXLLTV.js';
17
20
  import './chunk-VNVZDWO3.js';
18
21
  import './chunk-RA3O54FC.js';
19
- import './chunk-OW52QLK3.js';
20
- import './chunk-IHNQWF6F.js';
21
- import './chunk-URWYRAIC.js';
22
- import './chunk-GISNHSYL.js';
22
+ import './chunk-ZODVSFI4.js';
23
+ import './chunk-ZI2ZVWKT.js';
24
+ import './chunk-2K3TCQHW.js';
25
+ import './chunk-JGD5TWQ2.js';
23
26
  import './chunk-Z5GEFMRW.js';
24
27
 
25
28
  createRequire(import.meta.url);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outerlayer/cli",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
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.",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "scripts": {
36
36
  "build": "tsup",
37
- "test": "vitest run ${CLI_VITEST_PROJECT:+--project=$CLI_VITEST_PROJECT} ${CLI_VITEST_CHANGED_SINCE:+--changed=$CLI_VITEST_CHANGED_SINCE --passWithNoTests}",
37
+ "test": "vitest run ${CLI_VITEST_PROJECT:+--project=$CLI_VITEST_PROJECT}",
38
38
  "test:watch": "vitest",
39
39
  "test:mutate": "stryker run",
40
40
  "typecheck": "tsc --noEmit",
@@ -31,7 +31,7 @@ Paste a brief verbatim into the agent that runs it. Add only the run's own
31
31
  values, such as paths, the branch and the item number.
32
32
 
33
33
  Every text a person will read follows the writing rule in the repository's
34
- instructions file, if it has one. Otherwise write for a reader who was not in
34
+ instructions, if they have one. Otherwise write for a reader who was not in
35
35
  the session: short sentences, the outcome first, and plain words. Paste that
36
36
  rule into every agent that writes prose.
37
37
 
@@ -29,8 +29,9 @@ report there and returns a summary of at most ten lines.
29
29
 
30
30
  Paste this block at the top of every brief in this file.
31
31
 
32
- Read the repository's instructions file first and hold your work to it.
33
- Write every text a person will read, such as reports, commit messages and
32
+ The repository's instructions are already loaded in your context. Do not
33
+ look for an instructions file in the checkout: a governed repository keeps
34
+ its instructions outside the checkout. Hold your work to them. Write every text a person will read, such as reports, commit messages and
34
35
  candidate issue bodies, in short sentences with plain words, leading with the
35
36
  outcome.
36
37
 
@@ -47,7 +47,9 @@ starts with your stage, such as `implement-tooling-1`. End your report with a
47
47
  You are a cold adversarial reviewer. You know nothing about how this change
48
48
  was built, and that is deliberate. Judge only the branch diff, the issue (its
49
49
  criteria, when it has them, are the definition of done), and the
50
- repository's instructions file, which you read first and hold the change to.
50
+ repository's instructions, which are already loaded in your context. Do not
51
+ look for an instructions file in the checkout. Hold the change to the
52
+ instructions.
51
53
  Your job is to break the change within your assigned territory.
52
54
 
53
55
  Report only findings you have confirmed by reading the code or running
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire } from 'node:module';
3
- export { buildRepositoryImage } from './chunk-QILR6TZP.js';
4
- import './chunk-XACXXKQ5.js';
5
- import './chunk-JBJTC3UU.js';
6
- export { RecipeError } from './chunk-3W333NFO.js';
7
- import './chunk-IHNQWF6F.js';
8
- import './chunk-URWYRAIC.js';
9
- import './chunk-GISNHSYL.js';
10
- import './chunk-Z5GEFMRW.js';
11
-
12
- createRequire(import.meta.url);
@@ -1,207 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire } from 'node:module';
3
- import { runRunnerInstall, launcherSummary, restartNote } from './chunk-JV4YGAAW.js';
4
- import './chunk-I2UOAV7X.js';
5
- import './chunk-EFB3FGLC.js';
6
- import { currentLink, execStartCommand } from './chunk-276D7BJ7.js';
7
- import { detectMachine } from './chunk-C2XZBNHY.js';
8
- import './chunk-BOG4ENP7.js';
9
- import { installService, uninstallService, realTaskScheduler } from './chunk-OBCFK4QD.js';
10
- import './chunk-QILR6TZP.js';
11
- import './chunk-XACXXKQ5.js';
12
- import './chunk-JBJTC3UU.js';
13
- import './chunk-OGFGZQA3.js';
14
- import { readJobFile } from './chunk-OGMZJWWD.js';
15
- import './chunk-3W333NFO.js';
16
- import './chunk-NYTZ7HVN.js';
17
- import './chunk-2Q3PZ42G.js';
18
- import './chunk-KGKFEONR.js';
19
- import './chunk-C64D7HR3.js';
20
- import './chunk-ZLZ3XVPI.js';
21
- import './chunk-GXV73IIS.js';
22
- import './chunk-BUP5N3X6.js';
23
- import './chunk-XSPA5ODY.js';
24
- import './chunk-GOSFARMS.js';
25
- import { runnerVmOf, loadRunnerConfig } from './chunk-V5CG75NX.js';
26
- import './chunk-UXYLWVTQ.js';
27
- import './chunk-7RQ73DLO.js';
28
- import { realLima } from './chunk-77MM5RYD.js';
29
- import { writeLaunchAgent, launchAgentPath } from './chunk-LF6MLJCY.js';
30
- import './chunk-XGPC3IOR.js';
31
- import './chunk-MQ743JX3.js';
32
- import './chunk-QS43O4DR.js';
33
- import './chunk-ZJSNLVCE.js';
34
- import './chunk-VPEGE3QZ.js';
35
- import './chunk-HCVLP7XA.js';
36
- import './chunk-BJ3KTMDH.js';
37
- import './chunk-CBCKD6DO.js';
38
- import './chunk-ANPNT6PM.js';
39
- import './chunk-EABW6AJQ.js';
40
- import './chunk-HBISTTG3.js';
41
- import './chunk-WZBHBH3J.js';
42
- import './chunk-CRB3POP4.js';
43
- import './chunk-YQR6E6OV.js';
44
- import './chunk-RKOTJQVG.js';
45
- import './chunk-QZBXLLTV.js';
46
- import './chunk-VNVZDWO3.js';
47
- import './chunk-RA3O54FC.js';
48
- import './chunk-OW52QLK3.js';
49
- import './chunk-IHNQWF6F.js';
50
- import './chunk-URWYRAIC.js';
51
- import './chunk-GISNHSYL.js';
52
- import './chunk-Z5GEFMRW.js';
53
- import { userInfo, totalmem } from 'os';
54
- import { join } from 'path';
55
- import { rmSync, existsSync, readdirSync, readFileSync } from 'fs';
56
- import { spawnSync } from 'child_process';
57
-
58
- createRequire(import.meta.url);
59
- async function serviceInVm(lima, instance, action, options) {
60
- const limactl = lima.locate();
61
- if (limactl === void 0) {
62
- return { ok: false, lines: ["limactl is not installed, and the runner's service lives in the Linux VM it manages. Install Lima with `brew install lima`."] };
63
- }
64
- const ran = await lima.shell(instance, ["outerlayer", "runner", action, "--service", ...options.extraArgs ?? []]);
65
- const lines = [...ran.stdout.split("\n"), ...ran.stderr.split("\n")].map((line) => line.trim()).filter((line) => line !== "");
66
- if (ran.status !== 0) return { ok: false, lines: lines.length > 0 ? lines : [`outerlayer runner ${action} --service failed in the VM ${instance} with exit status ${ran.status}`] };
67
- if (action === "install") {
68
- const path = writeLaunchAgent(options.home, limactl, instance);
69
- lines.push(`the VM ${instance} starts at login through ${path}`);
70
- } else {
71
- rmSync(launchAgentPath(options.home), { force: true });
72
- lines.push("removed the launch agent that started the VM at login");
73
- }
74
- return { ok: true, lines };
75
- }
76
- var WSL_CONF = "/etc/wsl.conf";
77
- function readText(path) {
78
- try {
79
- return readFileSync(path, "utf8");
80
- } catch {
81
- return void 0;
82
- }
83
- }
84
- function sudoWrite(path, text) {
85
- const result = spawnSync("sudo", ["tee", path], { input: text, stdio: ["pipe", "ignore", "inherit"] });
86
- if (result.status !== 0) throw new Error(`sudo tee ${path} failed with exit status ${result.status}`);
87
- }
88
- function realSystemd() {
89
- return {
90
- running: () => existsSync("/run/systemd/system"),
91
- read: readText,
92
- write: sudoWrite,
93
- remove: (path) => {
94
- spawnSync("sudo", ["rm", "-f", path], { stdio: ["inherit", "ignore", "inherit"] });
95
- },
96
- systemctl: (args, options) => {
97
- const result = options?.sudo === true ? spawnSync("sudo", ["systemctl", ...args], { encoding: "utf8", stdio: ["inherit", "pipe", "inherit"] }) : spawnSync("systemctl", args, { encoding: "utf8" });
98
- return { status: result.status ?? -1, stdout: result.stdout ?? "" };
99
- }
100
- };
101
- }
102
- function realWslConf() {
103
- return { read: () => readText(WSL_CONF), write: (text) => sudoWrite(WSL_CONF, text) };
104
- }
105
- function buildsRunningIn(runnerDirPath) {
106
- const jobs = join(runnerDirPath, "jobs");
107
- if (!existsSync(jobs)) return false;
108
- try {
109
- return readdirSync(jobs, { withFileTypes: true }).some((entry) => {
110
- if (!entry.isDirectory()) return false;
111
- const job = readJobFile(join(jobs, entry.name, "job.json"));
112
- return job === null || job.outcome === void 0 && job.endedAt === void 0;
113
- });
114
- } catch {
115
- return true;
116
- }
117
- }
118
- function realServiceDeps() {
119
- const platform = detectMachine().platform;
120
- return {
121
- platform,
122
- say: (line) => process.stdout.write(`running: ${line}
123
- `),
124
- systemd: realSystemd(),
125
- ...platform === "wsl2" ? { tasks: realTaskScheduler(), wslConf: realWslConf(), distro: process.env.WSL_DISTRO_NAME } : {},
126
- usableMemoryBytes: totalmem(),
127
- buildsRunning: buildsRunningIn,
128
- // Asked as the account, through sudo, which the unit's own install needs anyway.
129
- accountCan: (account, flag, path) => spawnSync("sudo", ["-n", "-u", account, "test", flag, path], { stdio: "ignore" }).status === 0
130
- };
131
- }
132
-
133
- // src/runner/service/command.ts
134
- function accountCannotStart(account, nodePath, entry, can) {
135
- if (!can(account, "-x", nodePath)) {
136
- return `\u2717 the service would run as ${account}, which cannot execute ${nodePath}, the Node this install runs on. Nothing is set up: run the install as ${account} with a Node it can execute, or install Node where ${account} can reach it`;
137
- }
138
- if (!can(account, "-r", entry)) {
139
- return `\u2717 the service would run as ${account}, which cannot read ${entry}. Nothing is set up: put the runner's config where ${account} can read it, or run the install as ${account}`;
140
- }
141
- return void 0;
142
- }
143
- function vmArgs(input) {
144
- return [...input.print === true ? ["--print"] : [], ...input.replace === true ? ["--replace"] : [], ...input.allowDowngrade === true ? ["--allow-downgrade"] : [], ...input.user === void 0 ? [] : ["--user", input.user], ...input.unitName === void 0 ? [] : ["--unit-name", input.unitName]];
145
- }
146
- async function installServiceCommand(input, deps = {}) {
147
- const vm = runnerVmOf(input.configPath);
148
- if (vm !== void 0) {
149
- const result = await serviceInVm((deps.lima ?? realLima)(), vm.instance, "install", { home: input.home, extraArgs: vmArgs(input) });
150
- return { ok: result.ok, state: "vm", lines: result.lines };
151
- }
152
- const config = loadRunnerConfig(input.configPath);
153
- let launcherLines = [];
154
- let launcherNotes = [];
155
- let restartLine;
156
- if (input.print !== true && input.layoutInstalled !== true) {
157
- const installed = runRunnerInstall({
158
- configPath: input.configPath,
159
- entryPath: input.entryPath,
160
- nodePath: input.nodePath,
161
- home: input.home,
162
- PATH: process.env.PATH,
163
- replace: input.replace,
164
- allowDowngrade: input.allowDowngrade,
165
- command: "runner install --service"
166
- });
167
- launcherLines = [launcherSummary(installed.launcher)].filter((line) => line !== void 0);
168
- launcherNotes = installed.launcher.notes;
169
- restartLine = restartNote(installed);
170
- }
171
- const account = input.user ?? userInfo().username;
172
- const serviceDeps = (deps.service ?? realServiceDeps)();
173
- if (input.print !== true && account !== userInfo().username && serviceDeps.accountCan !== void 0) {
174
- const entry = join(currentLink(input.configPath), "node_modules", "@outerlayer", "cli", "dist", "index.js");
175
- const problem = accountCannotStart(account, input.nodePath, entry, serviceDeps.accountCan);
176
- if (problem !== void 0) return { ok: false, state: "refused", lines: [problem] };
177
- }
178
- const outcome = installService(
179
- {
180
- configPath: input.configPath,
181
- hooks: config.hooks,
182
- concurrency: config.concurrency,
183
- buildMemory: config.build?.memory ?? "8g",
184
- timeLimitMinutes: config.timeLimitMinutes,
185
- execStart: execStartCommand(input.configPath, input.nodePath),
186
- user: account,
187
- unitName: input.unitName,
188
- print: input.print,
189
- replace: input.replace,
190
- restart: input.restart
191
- },
192
- serviceDeps
193
- );
194
- const restartLines = restartLine !== void 0 && (outcome.state === "current" || outcome.state === "pending-restart") ? [restartLine] : [];
195
- return { ok: outcome.ok, state: outcome.state, lines: [...outcome.lines, ...outcome.ok ? [...restartLines, ...launcherLines] : []], unit: outcome.unit, ...launcherNotes.length > 0 ? { notes: launcherNotes } : {} };
196
- }
197
- async function uninstallServiceCommand(input, deps = {}) {
198
- const vm = runnerVmOf(input.configPath);
199
- if (vm !== void 0) {
200
- const result = await serviceInVm((deps.lima ?? realLima)(), vm.instance, "uninstall", { home: input.home, extraArgs: input.unitName === void 0 ? [] : ["--unit-name", input.unitName] });
201
- return { ok: result.ok, state: "vm", lines: result.lines };
202
- }
203
- const outcome = uninstallService({ configPath: input.configPath, unitName: input.unitName }, (deps.service ?? realServiceDeps)());
204
- return { ok: outcome.ok, state: outcome.state, lines: outcome.lines };
205
- }
206
-
207
- export { installServiceCommand, uninstallServiceCommand };
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire } from 'node:module';
3
- export { COMMIT_LINE, autoConnectedLine, listText as factoryListText, slug as factorySlug, fetchFactories, hasUncommittedPolicy, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-GXV73IIS.js';
4
- import './chunk-BUP5N3X6.js';
5
- import './chunk-XSPA5ODY.js';
6
- import './chunk-GOSFARMS.js';
7
- import './chunk-QS43O4DR.js';
8
- import './chunk-BJ3KTMDH.js';
9
- import './chunk-CBCKD6DO.js';
10
- import './chunk-ANPNT6PM.js';
11
- import './chunk-EABW6AJQ.js';
12
- import './chunk-CRB3POP4.js';
13
- import './chunk-QZBXLLTV.js';
14
- import './chunk-VNVZDWO3.js';
15
- import './chunk-RA3O54FC.js';
16
- import './chunk-OW52QLK3.js';
17
- import './chunk-IHNQWF6F.js';
18
- import './chunk-URWYRAIC.js';
19
- import './chunk-GISNHSYL.js';
20
- import './chunk-Z5GEFMRW.js';
21
-
22
- createRequire(import.meta.url);
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire } from 'node:module';
3
- export { ensureHostKey, loadHostKey, signerFor } from './chunk-OW52QLK3.js';
4
- import './chunk-IHNQWF6F.js';
5
- import './chunk-URWYRAIC.js';
6
- import './chunk-GISNHSYL.js';
7
- import './chunk-Z5GEFMRW.js';
8
-
9
- createRequire(import.meta.url);
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire } from 'node:module';
3
- export { RunnerDowngradeError, RunnerInstallError, launcherSummary, restartNote, runRunnerInstall } from './chunk-JV4YGAAW.js';
4
- import './chunk-I2UOAV7X.js';
5
- import './chunk-EFB3FGLC.js';
6
- import './chunk-276D7BJ7.js';
7
- import './chunk-IHNQWF6F.js';
8
- import './chunk-URWYRAIC.js';
9
- import './chunk-GISNHSYL.js';
10
- import './chunk-Z5GEFMRW.js';
11
-
12
- createRequire(import.meta.url);