@outerlayer/cli 0.22.0 → 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 (109) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +4 -1
  3. package/dist/{agent-setup-XAJH6MPW.js → agent-setup-KXPDPTAJ.js} +6 -7
  4. package/dist/bridge-QFN3KJP6.js +8 -0
  5. package/dist/{build-GTMEADQD.js → build-6WRNZPVR.js} +4 -4
  6. package/dist/build-info.json +1 -1
  7. package/dist/{builder-OAUSTZHL.js → builder-G3MLDMTI.js} +4 -4
  8. package/dist/{check-3YHMJQ3P.js → check-N6WLZCER.js} +34 -34
  9. package/dist/{chunk-4NM3I3VV.js → chunk-276D7BJ7.js} +1 -1
  10. package/dist/{chunk-22DYXLU7.js → chunk-2CPOAPU4.js} +17 -17
  11. package/dist/{chunk-BLW6GPBZ.js → chunk-2Q3PZ42G.js} +1 -1
  12. package/dist/{chunk-IRBNIRQJ.js → chunk-3AZYLAJC.js} +4 -4
  13. package/dist/{chunk-ATRIVTRE.js → chunk-4542B3RR.js} +2 -2
  14. package/dist/{chunk-7V7KG3YM.js → chunk-4AVDD7VX.js} +2 -2
  15. package/dist/{chunk-JVB63NIB.js → chunk-4OYKJJ2V.js} +1 -1
  16. package/dist/{chunk-QOALB6ZD.js → chunk-B42BIYC6.js} +2 -2
  17. package/dist/{chunk-G6DZCKA6.js → chunk-BVR6MQLS.js} +2 -3
  18. package/dist/{chunk-KPBQYEND.js → chunk-CQAEV3Z5.js} +1 -1
  19. package/dist/{chunk-IZSVXRDR.js → chunk-DXDF43YG.js} +1 -1
  20. package/dist/{chunk-F7CU5ABH.js → chunk-DYEFPYME.js} +1 -1
  21. package/dist/{chunk-LOB2SUM3.js → chunk-EFB3FGLC.js} +1 -1
  22. package/dist/{chunk-JRCSET55.js → chunk-EMUNEAQK.js} +3 -3
  23. package/dist/{chunk-2HT2XGJX.js → chunk-FQE5RDHI.js} +5 -6
  24. package/dist/{chunk-EXV37PKS.js → chunk-FVDVC2GF.js} +1 -1
  25. package/dist/{chunk-5QRP3MVS.js → chunk-GNPTU4BM.js} +9 -4
  26. package/dist/{chunk-6IO62VJS.js → chunk-HWZCE745.js} +2 -2
  27. package/dist/{chunk-KIGSGZBB.js → chunk-IHNQWF6F.js} +1 -1
  28. package/dist/{chunk-C3OVGKVJ.js → chunk-IMCVQF5F.js} +5 -5
  29. package/dist/{chunk-WMHYIBJW.js → chunk-IPS2JCHK.js} +6 -6
  30. package/dist/{chunk-G2WME4RG.js → chunk-JD6GWYY7.js} +2 -3
  31. package/dist/{chunk-C3HKR67W.js → chunk-JV4YGAAW.js} +3 -3
  32. package/dist/{chunk-FGW2774C.js → chunk-KOIMUHIS.js} +16 -15
  33. package/dist/{chunk-PHHBYAL6.js → chunk-NYTZ7HVN.js} +1 -1
  34. package/dist/{chunk-I66MQDXH.js → chunk-OBCFK4QD.js} +2 -2
  35. package/dist/{chunk-KDHYLBRR.js → chunk-OW52QLK3.js} +1 -1
  36. package/dist/chunk-QS43O4DR.js +113 -0
  37. package/dist/{chunk-4JHVPFH6.js → chunk-QZX6DAAW.js} +9 -10
  38. package/dist/{chunk-UD3EXMKB.js → chunk-SFHR45FA.js} +21 -4
  39. package/dist/{chunk-KOQELWQ6.js → chunk-SNVXHNU7.js} +2 -3
  40. package/dist/{chunk-34XORKFD.js → chunk-U6RKHNC7.js} +6 -7
  41. package/dist/{chunk-2J5JGLW5.js → chunk-UF5L4BAI.js} +1 -1
  42. package/dist/{chunk-V7MQKOZY.js → chunk-URWYRAIC.js} +1 -1
  43. package/dist/{chunk-2CMJLYV6.js → chunk-V5CG75NX.js} +1 -1
  44. package/dist/{chunk-VX74ND77.js → chunk-WKSBSEWT.js} +8 -8
  45. package/dist/chunk-WXJXHZVB.js +73 -0
  46. package/dist/{chunk-ZFLOGMUC.js → chunk-XACXXKQ5.js} +1 -1
  47. package/dist/{chunk-WERZMIKA.js → chunk-XR56WEA5.js} +3 -3
  48. package/dist/{chunk-4QKLMNI3.js → chunk-ZCXP35T3.js} +5 -5
  49. package/dist/{claude-launcher-4BQNXYAF.js → claude-launcher-QD3C427Y.js} +1 -1
  50. package/dist/{cli-NMGVZQPB.js → cli-A2Y67WAB.js} +98 -91
  51. package/dist/{command-GE62AJZY.js → command-Q5Q2EIO4.js} +21 -22
  52. package/dist/{config-7Q52COZ3.js → config-H4QS332G.js} +2 -2
  53. package/dist/{connect-cmd-ZFOK6HEL.js → connect-cmd-TNGEIWCA.js} +7 -2
  54. package/dist/{control-plane-launch-SZTE4TUS.js → control-plane-launch-HE6OSWKO.js} +5 -6
  55. package/dist/{docker-2OVBKVRK.js → docker-JU422JL7.js} +4 -4
  56. package/dist/{doctor-3SQGZVYP.js → doctor-BRN4BGMA.js} +23 -24
  57. package/dist/{emit-artifact-cmd-R42BE6ID.js → emit-artifact-cmd-GPAJCCUC.js} +12 -12
  58. package/dist/{emit-criteria-cmd-MQZE7W4Y.js → emit-criteria-cmd-R3FKHSQG.js} +7 -7
  59. package/dist/{emit-finding-cmd-ZS5JEGGM.js → emit-finding-cmd-IK7RAVP5.js} +7 -7
  60. package/dist/{emit-result-cmd-FUE3DXBW.js → emit-result-cmd-5FJTF7YD.js} +12 -12
  61. package/dist/{emit-step-cmd-T7PRA44X.js → emit-step-cmd-VRTD5YPP.js} +8 -8
  62. package/dist/{exec-client-YIDTWXMZ.js → exec-client-ATPF2DDB.js} +3 -3
  63. package/dist/{governing-source-TORXL4I4.js → governing-source-WM736XR4.js} +9 -10
  64. package/dist/{guest-init-TO6HAWIT.js → guest-init-2OZ4YC7R.js} +4 -3
  65. package/dist/{hook-fast-WFB2ZMRB.js → hook-fast-QUGEI2IT.js} +1 -1
  66. package/dist/{hook-wrap-fast-NPLHJXFK.js → hook-wrap-fast-NOOGDNSW.js} +2 -2
  67. package/dist/{host-key-2LXQDSBO.js → host-key-ATB23GI3.js} +3 -3
  68. package/dist/index.js +6 -6
  69. package/dist/{init-2CRAVIUU.js → init-U3I43XCP.js} +20 -21
  70. package/dist/{init-AHDZCMDC.js → init-X7FCQDFX.js} +20 -21
  71. package/dist/{init-cmd-IXDL2ZSL.js → init-cmd-VCKH2DUQ.js} +13 -14
  72. package/dist/{init-update-YB3PODDH.js → init-update-TCMH7M3Q.js} +7 -8
  73. package/dist/{install-CZUIW2AF.js → install-SFACZU7E.js} +4 -4
  74. package/dist/{install-cmd-Q7RJGFUO.js → install-cmd-6HTP7I43.js} +5 -5
  75. package/dist/{logs-RJPYTVQE.js → logs-N3ZX7HFV.js} +2 -2
  76. package/dist/{loop-ZDW6TRAA.js → loop-P3QDQOE5.js} +34 -34
  77. package/dist/{machine-JCOHLASP.js → machine-EEFOW32K.js} +16 -17
  78. package/dist/{mcp-serve-cmd-IULQPVHL.js → mcp-serve-cmd-TQSPFRC7.js} +5 -5
  79. package/dist/{paths-N3LU4O2Z.js → paths-AKX2OOLF.js} +2 -2
  80. package/dist/{pending-GRCV3ZR4.js → pending-7SGWZCEH.js} +3 -3
  81. package/dist/{pidfile-IF3TCL5A.js → pidfile-G2J5WBQS.js} +3 -3
  82. package/dist/{record-73PQE77B.js → record-Q4IEYIVV.js} +3 -3
  83. package/dist/{runner-env-LDOBJESN.js → runner-env-GZHXM27A.js} +5 -5
  84. package/dist/{runner-identity-RWCBTY2A.js → runner-identity-FTHZFMGY.js} +4 -4
  85. package/dist/{runner-key-HMYLP6WN.js → runner-key-O42EUXQU.js} +20 -21
  86. package/dist/{session-sender-2G25JYHI.js → session-sender-HF6DXFA2.js} +13 -13
  87. package/dist/{settings-J2652U5N.js → settings-AKYEOCC2.js} +1 -1
  88. package/dist/{spec-cmd-LBVXM6XS.js → spec-cmd-ADPH236D.js} +8 -8
  89. package/dist/{status-QZB2GWXJ.js → status-LXFIVGP3.js} +25 -25
  90. package/dist/{statusline-fast-2OK3DVAA.js → statusline-fast-GVRSBHAF.js} +2 -2
  91. package/dist/{sync-cmd-TQQIR4PN.js → sync-cmd-5XS3CUV5.js} +12 -12
  92. package/dist/{watch-4JES4PCS.js → watch-FBZHZV56.js} +12 -12
  93. package/dist/{work-claim-cmd-XG6O7B63.js → work-claim-cmd-LIIINECF.js} +11 -11
  94. package/dist/{work-cmd-L6WMPAA2.js → work-cmd-SM6DY2WK.js} +8 -8
  95. package/dist/{work-comment-cmd-SNTDCPGH.js → work-comment-cmd-VYVXGT4W.js} +8 -8
  96. package/dist/{work-logs-cmd-3S7IAVII.js → work-logs-cmd-XZSCWWMW.js} +8 -8
  97. package/dist/{work-open-pr-cmd-E3WMO5XT.js → work-open-pr-cmd-YZNC3P3R.js} +9 -9
  98. package/dist/{work-pr-cmd-22T6FG4T.js → work-pr-cmd-AMN23KFJ.js} +8 -8
  99. package/dist/{work-stop-cmd-WR7ESS4Z.js → work-stop-cmd-HSR2GOJJ.js} +8 -8
  100. package/package.json +1 -1
  101. package/skill-pack/maintained/outerlayer-amend/SKILL.md +90 -78
  102. package/skill-pack/maintained/outerlayer-build/SKILL.md +4 -2
  103. package/skill-pack/maintained/outerlayer-build/references/agent-briefs.md +10 -3
  104. package/skill-pack/maintained/outerlayer-build/references/release.md +7 -4
  105. package/skill-pack/maintained/outerlayer-build/references/review-briefs.md +6 -3
  106. package/skill-pack/maintained/outerlayer-cli/SKILL.md +8 -1
  107. package/skill-pack/maintained/outerlayer-cli/references/merge-base-branch.md +54 -0
  108. package/dist/chunk-NTRCK4NH.js +0 -38
  109. package/dist/chunk-VWLOQ6FI.js +0 -56
@@ -1,19 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-4JHVPFH6.js';
3
+ import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-QZX6DAAW.js';
4
4
  import './chunk-VSUXCMMH.js';
5
- import { verifiedTrackerNames, TRACKERS } from './chunk-2HT2XGJX.js';
6
- import './chunk-QOALB6ZD.js';
7
- import './chunk-JRCSET55.js';
5
+ import { verifiedTrackerNames, TRACKERS } 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 './chunk-USWVXQIH.js';
12
- import './chunk-VWLOQ6FI.js';
13
- import './chunk-NTRCK4NH.js';
14
- import { hookFiredMarkerPath, installedCliDistDir } from './chunk-6IO62VJS.js';
12
+ import './chunk-QS43O4DR.js';
13
+ import { hookFiredMarkerPath, installedCliDistDir } from './chunk-HWZCE745.js';
15
14
  import './chunk-ZJSNLVCE.js';
16
- import './chunk-IZSVXRDR.js';
15
+ import './chunk-DXDF43YG.js';
17
16
  import './chunk-BKO6JEZI.js';
18
17
  import './chunk-HCVLP7XA.js';
19
18
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
@@ -25,7 +24,7 @@ import './chunk-5OCIHFGE.js';
25
24
  import { C, warnDeprecated, API_KEY_FLAG_DEPRECATION, NO_COLOR_FLAG, stripNoColor } from './chunk-ANPNT6PM.js';
26
25
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
27
26
  import { cliInvocation, packageRunnerOf } from './chunk-CRB3POP4.js';
28
- import { settingsPath, readSettings, SettingsParseError, listHookCandidates, wrapHooks, writeSettings, unwrapHooks, REGISTERED_EVENTS, cliCommand, removeHooks, removeStatusline, cliBinResolvable, mergeHooks, repointWrappedHooks, AUTO_WRAP_EVENTS, mergeStatusline } from './chunk-5QRP3MVS.js';
27
+ import { settingsPath, readSettings, SettingsParseError, listHookCandidates, wrapHooks, writeSettings, unwrapHooks, REGISTERED_EVENTS, cliCommand, removeHooks, removeStatusline, cliBinResolvable, mergeHooks, repointWrappedHooks, AUTO_WRAP_EVENTS, mergeStatusline } from './chunk-GNPTU4BM.js';
29
28
  import './chunk-W3SWJ2TD.js';
30
29
  import { cloneIsGoverned } from './chunk-YQR6E6OV.js';
31
30
  import { removeJournalHooks, removePreCommitGuardHook } from './chunk-TUSYOL2O.js';
@@ -33,9 +32,9 @@ import './chunk-WFSUUUAN.js';
33
32
  import './chunk-7VUK5RFS.js';
34
33
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
35
34
  import { resolveVersion } from './chunk-RA3O54FC.js';
36
- import './chunk-KDHYLBRR.js';
37
- import './chunk-KIGSGZBB.js';
38
- import './chunk-V7MQKOZY.js';
35
+ import './chunk-OW52QLK3.js';
36
+ import './chunk-IHNQWF6F.js';
37
+ import './chunk-URWYRAIC.js';
39
38
  import './chunk-GISNHSYL.js';
40
39
  import './chunk-Z5GEFMRW.js';
41
40
  import { EventEmitter } from 'events';
@@ -3781,7 +3780,7 @@ ${starter.output}`),
3781
3780
  }
3782
3781
  }
3783
3782
  async function realConnectDepsForCwd() {
3784
- const { realConnectDeps } = await import('./connect-cmd-ZFOK6HEL.js');
3783
+ const { realConnectDeps } = await import('./connect-cmd-TNGEIWCA.js');
3785
3784
  const { resolveRepoIdentity } = await import('./dist-7IH56ELA.js');
3786
3785
  return {
3787
3786
  ...realConnectDeps(),
@@ -3845,7 +3844,7 @@ states under Starter files.
3845
3844
  `
3846
3845
  ).action(async (opts) => {
3847
3846
  if (opts.update || opts.dryRun) {
3848
- const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-YB3PODDH.js');
3847
+ const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-TCMH7M3Q.js');
3849
3848
  const problem = updateFlagProblem(opts);
3850
3849
  if (problem !== void 0) {
3851
3850
  fail(problem);
@@ -3892,12 +3891,12 @@ states under Starter files.
3892
3891
  if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
3893
3892
  `);
3894
3893
  }
3895
- const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-IXDL2ZSL.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
3894
+ const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-VCKH2DUQ.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
3896
3895
  if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
3897
3896
  else process.stdout.write(outcome.text + (shell?.text ?? ""));
3898
3897
  return;
3899
3898
  }
3900
- const { runInitCommand } = await import('./init-cmd-IXDL2ZSL.js');
3899
+ const { runInitCommand } = await import('./init-cmd-VCKH2DUQ.js');
3901
3900
  const code = await runInitCommand(
3902
3901
  { json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
3903
3902
  {
@@ -3909,7 +3908,7 @@ states under Starter files.
3909
3908
  return { ok, text, detail };
3910
3909
  },
3911
3910
  runAgentSetup: async () => {
3912
- const { runAgentSetup } = await import('./agent-setup-XAJH6MPW.js');
3911
+ const { runAgentSetup } = await import('./agent-setup-KXPDPTAJ.js');
3913
3912
  return runAgentSetup({ cwd: process.cwd() });
3914
3913
  },
3915
3914
  runDoctorChecks: gatherDoctorChecks,
@@ -3918,7 +3917,7 @@ states under Starter files.
3918
3917
  shellPath: process.env.SHELL,
3919
3918
  interactive: Boolean(process.stdin.isTTY && process.stderr.isTTY) && opts.json !== true,
3920
3919
  ask: async () => {
3921
- const { promptOnTerminal } = await import('./connect-cmd-ZFOK6HEL.js');
3920
+ const { promptOnTerminal } = await import('./connect-cmd-TNGEIWCA.js');
3922
3921
  const answer = await promptOnTerminal({
3923
3922
  message: `Should plain claude start Claude Code through ${cliInvocation()} claude? That is how a session in a governed repository gets its control plane. It adds one block to your zsh or bash startup file.`,
3924
3923
  options: [
@@ -3957,7 +3956,7 @@ linked (true, false, or null when it could not be checked) and, when false,
3957
3956
  linkUrl.
3958
3957
  `
3959
3958
  ).action(async (opts) => {
3960
- const { runConnectCommand } = await import('./connect-cmd-ZFOK6HEL.js');
3959
+ const { runConnectCommand } = await import('./connect-cmd-TNGEIWCA.js');
3961
3960
  const code = await runConnectCommand({ factory: opts.factory, json: opts.json }, await realConnectDepsForCwd(), {
3962
3961
  stdout: process.stdout,
3963
3962
  stderr: process.stderr
@@ -4035,7 +4034,7 @@ code is 1: revoke the token on /profile/security.
4035
4034
  else fail(found.reason);
4036
4035
  return;
4037
4036
  }
4038
- const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-TQQIR4PN.js');
4037
+ const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-5XS3CUV5.js');
4039
4038
  try {
4040
4039
  const result = await runSync({
4041
4040
  url: opts.url,
@@ -4066,7 +4065,7 @@ code is 1: revoke the token on /profile/security.
4066
4065
  if (invokedCommandToken(argv) === "watch") {
4067
4066
  warnDeprecated(`\`${cliInvocation()} watch\` is now \`${cliInvocation()} daemon\`; the old name will be removed in a future release.`);
4068
4067
  }
4069
- const { runWatch } = await import('./watch-4JES4PCS.js');
4068
+ const { runWatch } = await import('./watch-FBZHZV56.js');
4070
4069
  await runWatch({ once: opts.once });
4071
4070
  });
4072
4071
  program2.command("hook <event>", { hidden: true }).description("capture-hook fast path, installed by `init`").action(() => {
@@ -4127,7 +4126,7 @@ code is 1: revoke the token on /profile/security.
4127
4126
  }
4128
4127
  });
4129
4128
  program2.command("vm-exec", { hidden: true }).description("run a command in a microVM build's guest through its exec agent").requiredOption("--socket <path>", "the Unix socket Firecracker serves the build's vsock device on").option("--user <user>", "the user to run as", "").option("--cwd <dir>", "the working directory", "/").option("--env <NAME=value>", "an environment value the command line carries; repeatable", (value, previous) => [...previous, value], []).option("--pass <NAME>", "an environment variable whose value is read from this process; repeatable", (value, previous) => [...previous, value], []).argument("<argv...>", "the command and its arguments").action(async (argv2, opts) => {
4130
- const { runVmExec } = await import('./exec-client-YIDTWXMZ.js');
4129
+ const { runVmExec } = await import('./exec-client-ATPF2DDB.js');
4131
4130
  const env = {};
4132
4131
  for (const entry of opts.env) {
4133
4132
  const eq = entry.indexOf("=");
@@ -4156,7 +4155,7 @@ code is 1: revoke the token on /profile/security.
4156
4155
  process.exitCode = await runBuildCommand({ dir: opts.dir, argv: command });
4157
4156
  });
4158
4157
  program2.command("session-sender", { hidden: true }).description("stream a runner build's sessions to its work item while the build runs").action(async () => {
4159
- const { runSessionSender } = await import('./session-sender-2G25JYHI.js');
4158
+ const { runSessionSender } = await import('./session-sender-HF6DXFA2.js');
4160
4159
  try {
4161
4160
  await runSessionSender();
4162
4161
  } catch (err) {
@@ -4164,7 +4163,7 @@ code is 1: revoke the token on /profile/security.
4164
4163
  }
4165
4164
  });
4166
4165
  program2.command("vm-init", { hidden: true }).description("lay out a microVM build's guest; the guest helper runs it").action(async () => {
4167
- const { realGuestHost, runGuestInit } = await import('./guest-init-TO6HAWIT.js');
4166
+ const { realGuestHost, runGuestInit } = await import('./guest-init-2OZ4YC7R.js');
4168
4167
  const { readFileSync: readFileSync3 } = await import('fs');
4169
4168
  try {
4170
4169
  runGuestInit(realGuestHost(), readFileSync3("/proc/cmdline", "utf8"));
@@ -4172,6 +4171,14 @@ code is 1: revoke the token on /profile/security.
4172
4171
  fail(`vm-init failed: ${err instanceof Error ? err.message : String(err)}`);
4173
4172
  }
4174
4173
  });
4174
+ program2.command("vm-forward", { hidden: true }).description("pipe a guest port to another; vm-init runs it").requiredOption("--listen <host:port>", "the address to listen on").requiredOption("--to <host:port>", "the address to pipe each connection to").action(async (opts) => {
4175
+ const { startBridgeForward } = await import('./bridge-QFN3KJP6.js');
4176
+ try {
4177
+ await startBridgeForward(opts);
4178
+ } catch (err) {
4179
+ fail(`vm-forward failed: ${err instanceof Error ? err.message : String(err)}`);
4180
+ }
4181
+ });
4175
4182
  registerEmitCommands(program2);
4176
4183
  registerImportCommands(program2);
4177
4184
  registerHooksCommands(program2);
@@ -4239,7 +4246,7 @@ Compiling .outerlayer/ moved to \`${cliInvocation()} context emit\`.
4239
4246
  await compileContext({ dir: opts.dir, check: opts.check, json: opts.json });
4240
4247
  return;
4241
4248
  }
4242
- const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-FUE3DXBW.js');
4249
+ const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-5FJTF7YD.js');
4243
4250
  try {
4244
4251
  const result = await runEmitResult({
4245
4252
  name,
@@ -4289,7 +4296,7 @@ everywhere, bytes and deep link untouched; a still-queued one is cancelled
4289
4296
  locally so it never uploads. One correction can retire several duplicates.
4290
4297
  `
4291
4298
  ).action(async (file, opts) => {
4292
- const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-R42BE6ID.js');
4299
+ const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-GPAJCCUC.js');
4293
4300
  let pr;
4294
4301
  if (opts.pr !== void 0) {
4295
4302
  pr = parseTrackerNumber(opts.pr);
@@ -4348,7 +4355,7 @@ recent events with their ids. --find <text> searches all of them.
4348
4355
  item that session was launched for is used automatically.
4349
4356
  `
4350
4357
  ).action(async (opts) => {
4351
- const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-ZS5JEGGM.js');
4358
+ const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-IK7RAVP5.js');
4352
4359
  try {
4353
4360
  refuseRemovedFindingFlags(opts);
4354
4361
  const result = await runEmitFinding({
@@ -4415,7 +4422,7 @@ the whole batch. "untimed": true records one with no time on purpose.
4415
4422
  that session was launched for is used automatically.
4416
4423
  `
4417
4424
  ).action(async (file, opts) => {
4418
- const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-ZS5JEGGM.js');
4425
+ const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-IK7RAVP5.js');
4419
4426
  try {
4420
4427
  const result = await runEmitFindings({
4421
4428
  file,
@@ -4450,7 +4457,7 @@ command, the command exits 0, and \`sync\` sends it later. If the gateway refuse
4450
4457
  the step, the command prints why and exits 1.
4451
4458
  `
4452
4459
  ).action(async (name, opts) => {
4453
- const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-T7PRA44X.js');
4460
+ const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-VRTD5YPP.js');
4454
4461
  try {
4455
4462
  await runEmitStep({
4456
4463
  name,
@@ -4493,7 +4500,7 @@ of the item, and a (proof: <kind>) annotation names its proof.
4493
4500
  ${cliInvocation()} emit criteria acceptance/412-login.md --item 412
4494
4501
  `
4495
4502
  ).action(async (file, opts) => {
4496
- const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-MQZE7W4Y.js');
4503
+ const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-R3FKHSQG.js');
4497
4504
  try {
4498
4505
  const result = await runEmitCriteria({
4499
4506
  file,
@@ -4517,9 +4524,9 @@ function registerSpecCommands(program2) {
4517
4524
  const specCmd = program2.command("spec").description("Find, file and edit the issue a spec lives in, in your factory's tracker");
4518
4525
  const credentialOptions = (command) => command.option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)");
4519
4526
  const run = async (action) => {
4520
- const { WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4527
+ const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4521
4528
  try {
4522
- await action(await import('./spec-cmd-LBVXM6XS.js'));
4529
+ await action(await import('./spec-cmd-ADPH236D.js'));
4523
4530
  } catch (err) {
4524
4531
  if (err instanceof WorkCommandError) {
4525
4532
  fail(err.message);
@@ -4561,7 +4568,7 @@ takes it, and prints the line that starts your session on it. That
4561
4568
  session links itself and holds the item's lease while it works.
4562
4569
  `
4563
4570
  ).action(async (opts) => {
4564
- const { runWorkBuild, WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4571
+ const { runWorkBuild, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4565
4572
  try {
4566
4573
  await runWorkBuild(opts);
4567
4574
  } catch (err) {
@@ -4584,7 +4591,7 @@ renews that session's own 20-minute lease, unless --no-lease or
4584
4591
  --ended is given, or another worker already holds a live one.
4585
4592
  `
4586
4593
  ).action(async (number, opts) => {
4587
- const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4594
+ const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4588
4595
  try {
4589
4596
  await runWorkLinkSession({ ...opts, number, noLease: opts.lease === false, logFailures: opts.logFailures === true });
4590
4597
  } catch (err) {
@@ -4608,8 +4615,8 @@ criterion's new proof; --ready hands the thread back to a person. At
4608
4615
  most one action flag may be given.
4609
4616
  `
4610
4617
  ).action(async (opts) => {
4611
- const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-SNTDCPGH.js');
4612
- const { WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4618
+ const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-VYVXGT4W.js');
4619
+ const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4613
4620
  try {
4614
4621
  await runWorkComment(opts);
4615
4622
  } catch (err) {
@@ -4630,8 +4637,8 @@ criterion that carries proof or a comment, each with who is waiting
4630
4637
  on whom next.
4631
4638
  `
4632
4639
  ).action(async (opts) => {
4633
- const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-SNTDCPGH.js');
4634
- const { WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4640
+ const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-VYVXGT4W.js');
4641
+ const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4635
4642
  try {
4636
4643
  await runWorkThreads(opts);
4637
4644
  } catch (err) {
@@ -4655,8 +4662,8 @@ still running, or that an older runner released, has no log and the
4655
4662
  command exits 1.
4656
4663
  `
4657
4664
  ).action(async (opts) => {
4658
- const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-3S7IAVII.js');
4659
- const { WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4665
+ const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-XZSCWWMW.js');
4666
+ const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4660
4667
  try {
4661
4668
  await runWorkLogs(opts);
4662
4669
  } catch (err) {
@@ -4679,8 +4686,8 @@ item is not built again until a new build request. Exits 1 when no host
4679
4686
  build is running for the item.
4680
4687
  `
4681
4688
  ).action(async (opts) => {
4682
- const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-WR7ESS4Z.js');
4683
- const { WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4689
+ const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-HSR2GOJJ.js');
4690
+ const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4684
4691
  try {
4685
4692
  await runWorkStop(opts);
4686
4693
  } catch (err) {
@@ -4701,7 +4708,7 @@ deletes anything \u2014 the item is removed from Work only once no
4701
4708
  live addition remains on it.
4702
4709
  `
4703
4710
  ).action(async (opts) => {
4704
- const { runWorkRemove, WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4711
+ const { runWorkRemove, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4705
4712
  try {
4706
4713
  await runWorkRemove(opts);
4707
4714
  } catch (err) {
@@ -4713,7 +4720,7 @@ live addition remains on it.
4713
4720
  }
4714
4721
  });
4715
4722
  workCmd.command("status").description("Show one item's stage, gate ledger, and additions").option("--item <number>", "the item's number inside this factory").option("--issue <number>", "issue number, or a Linear/Jira key like ENG-123").option(TRACKER_OPTION_FLAG, "tracker for a keyed --issue, when both hold the key").option("--repo <owner/name>", "repository for an issue number (default: the checkout's remote)").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").action(async (opts) => {
4716
- const { runWorkStatus, WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4723
+ const { runWorkStatus, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4717
4724
  try {
4718
4725
  await runWorkStatus(opts);
4719
4726
  } catch (err) {
@@ -4725,7 +4732,7 @@ live addition remains on it.
4725
4732
  }
4726
4733
  });
4727
4734
  workCmd.command("list").description("List live work items for this factory").option("--stage <spec|build|review>", "filter by stage").option("--section <attention|waiting|flowing>", "filter by Queue section").option("--repo <owner/name>", "repository (default: the current checkout's remote)").option("--unclaimed", "only items with no live lease").option("--claimed", "only items with a live lease, held by a host or a local session").option("--startable", "only items a host can start: a build request, no open PR, no live lease").option("--needs <amend>", "only items with a thread waiting on an agent").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").action(async (opts) => {
4728
- const { runWorkList, WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4735
+ const { runWorkList, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4729
4736
  try {
4730
4737
  await runWorkList(opts);
4731
4738
  } catch (err) {
@@ -4746,7 +4753,7 @@ by a different key is refused; claiming again with the same key extends
4746
4753
  it. --host is a label only.
4747
4754
  `
4748
4755
  ).action(async (opts) => {
4749
- const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-XG6O7B63.js');
4756
+ const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-LIIINECF.js');
4750
4757
  try {
4751
4758
  await runWorkClaim(opts);
4752
4759
  } catch (err) {
@@ -4766,7 +4773,7 @@ Extends the live lease this API key holds. Refused with a 410 if the
4766
4773
  lease has expired, or a 403 if a different key holds it.
4767
4774
  `
4768
4775
  ).action(async (opts) => {
4769
- const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-XG6O7B63.js');
4776
+ const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-LIIINECF.js');
4770
4777
  try {
4771
4778
  await runWorkRenew(opts);
4772
4779
  } catch (err) {
@@ -4798,7 +4805,7 @@ applies to a host's lease only. A later tool call in the session
4798
4805
  takes the lease again.
4799
4806
  `
4800
4807
  ).action(async (opts) => {
4801
- const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-XG6O7B63.js');
4808
+ const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-LIIINECF.js');
4802
4809
  try {
4803
4810
  await runWorkRelease(opts);
4804
4811
  } catch (err) {
@@ -4825,7 +4832,7 @@ Idempotent: declaring the same pull request twice is a no-op.
4825
4832
  needs your own login; an agent session or a factory key is refused.
4826
4833
  `
4827
4834
  ).action(async (number, opts) => {
4828
- const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-22T6FG4T.js');
4835
+ const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-AMN23KFJ.js');
4829
4836
  try {
4830
4837
  await runWorkPr({ ...opts, number });
4831
4838
  } catch (err) {
@@ -4850,8 +4857,8 @@ login, then declares the pull request on the item, as \`work pr\` does.
4850
4857
  Run it again after a change to the title or description.
4851
4858
  `
4852
4859
  ).action(async (opts) => {
4853
- const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-E3WMO5XT.js');
4854
- const { WorkCommandError } = await import('./work-cmd-L6WMPAA2.js');
4860
+ const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-YZNC3P3R.js');
4861
+ const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
4855
4862
  try {
4856
4863
  await runWorkOpenPr(opts);
4857
4864
  } catch (err) {
@@ -4867,9 +4874,9 @@ function registerRunnerCommands(program2) {
4867
4874
  const runnerCmd = program2.command("runner").description("Take work from the implement and amend queues on this machine");
4868
4875
  const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
4869
4876
  runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
4870
- const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-7Q52COZ3.js');
4871
- const { start, RunnerStartError } = await import('./loop-ZDW6TRAA.js');
4872
- const { RunnerAlreadyRunningError } = await import('./pidfile-IF3TCL5A.js');
4877
+ const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-H4QS332G.js');
4878
+ const { start, RunnerStartError } = await import('./loop-P3QDQOE5.js');
4879
+ const { RunnerAlreadyRunningError } = await import('./pidfile-G2J5WBQS.js');
4873
4880
  const configPath = opts.config ?? defaultRunnerConfigPath();
4874
4881
  try {
4875
4882
  const { realUpdateDeps } = await import('./real-deps-KNNBQC75.js');
@@ -4883,8 +4890,8 @@ function registerRunnerCommands(program2) {
4883
4890
  }
4884
4891
  });
4885
4892
  runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
4886
- const { defaultRunnerConfigPath } = await import('./config-7Q52COZ3.js');
4887
- const { runRunnerCheck } = await import('./check-3YHMJQ3P.js');
4893
+ const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
4894
+ const { runRunnerCheck } = await import('./check-N6WLZCER.js');
4888
4895
  const configPath = opts.config ?? defaultRunnerConfigPath();
4889
4896
  const result = await runRunnerCheck(configPath);
4890
4897
  if (!result.ok) {
@@ -4900,8 +4907,8 @@ function registerRunnerCommands(program2) {
4900
4907
  `);
4901
4908
  });
4902
4909
  runnerCmd.command("install").description("Put this CLI in the runner's install layout; --service adds its service").option("--config <path>", configOption).option("--service", "set up the service that keeps the runner running").option("--print", "with --service, print the unit and set up nothing").option("--user <account>", "with --service, the account the service runs as").option("--replace", "replace a unit or launcher file this command did not write").option("--allow-downgrade", "install this CLI even when it is older than the version the runner runs").option("--unit-name <name>", "with --service, the unit's name, to run a second runner beside the first").action(async (opts) => {
4903
- const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-7Q52COZ3.js');
4904
- const { runRunnerInstall, RunnerInstallError, launcherSummary, restartNote } = await import('./install-cmd-Q7RJGFUO.js');
4910
+ const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-H4QS332G.js');
4911
+ const { runRunnerInstall, RunnerInstallError, launcherSummary, restartNote } = await import('./install-cmd-6HTP7I43.js');
4905
4912
  const configPath = opts.config ?? defaultRunnerConfigPath();
4906
4913
  if (opts.service !== true) {
4907
4914
  for (const flag of ["print", "user", "unitName"]) {
@@ -4913,7 +4920,7 @@ function registerRunnerCommands(program2) {
4913
4920
  }
4914
4921
  try {
4915
4922
  if (opts.service === true) {
4916
- const { installServiceCommand } = await import('./command-GE62AJZY.js');
4923
+ const { installServiceCommand } = await import('./command-Q5Q2EIO4.js');
4917
4924
  const result2 = await installServiceCommand({
4918
4925
  configPath,
4919
4926
  print: opts.print,
@@ -4968,8 +4975,8 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
4968
4975
  fail(`pass --service: \`${cliInvocation()} runner uninstall --service\` removes the runner's service.`);
4969
4976
  return;
4970
4977
  }
4971
- const { defaultRunnerConfigPath } = await import('./config-7Q52COZ3.js');
4972
- const { uninstallServiceCommand } = await import('./command-GE62AJZY.js');
4978
+ const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
4979
+ const { uninstallServiceCommand } = await import('./command-Q5Q2EIO4.js');
4973
4980
  const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
4974
4981
  if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
4975
4982
  `);
@@ -4996,12 +5003,12 @@ already in runner.env is used.
4996
5003
  printf '%s' "$CLAUDE_CODE_OAUTH_TOKEN" | ${cliInvocation()} runner init --agent claude --factory <org>/<factory>
4997
5004
  `
4998
5005
  ).action(async (opts) => {
4999
- const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-7Q52COZ3.js');
5000
- const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-2CRAVIUU.js');
5001
- const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-HMYLP6WN.js');
5002
- const { detectMachine } = await import('./machine-JCOHLASP.js');
5003
- const { chooseVm, runVmInit, VmInitError } = await import('./init-AHDZCMDC.js');
5004
- const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-LDOBJESN.js');
5006
+ const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-H4QS332G.js');
5007
+ const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-U3I43XCP.js');
5008
+ const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-O42EUXQU.js');
5009
+ const { detectMachine } = await import('./machine-EEFOW32K.js');
5010
+ const { chooseVm, runVmInit, VmInitError } = await import('./init-X7FCQDFX.js');
5011
+ const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-GZHXM27A.js');
5005
5012
  const configPath = opts.config ?? defaultRunnerConfigPath();
5006
5013
  if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
5007
5014
  fail(`--agent ${opts.agent}: runner init writes commands for ${Object.keys(AGENT_COMMANDS).join(", ")}. For another agent, leave --agent out and edit runner.commands.`);
@@ -5032,7 +5039,7 @@ already in runner.env is used.
5032
5039
  const chunks = [];
5033
5040
  for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
5034
5041
  const result2 = runRunnerInit(configPath, { machine, configFromStdin: Buffer.concat(chunks).toString("utf8"), requireContainer: true });
5035
- const { ensureHostKey: ensureHostKey2 } = await import('./host-key-2LXQDSBO.js');
5042
+ const { ensureHostKey: ensureHostKey2 } = await import('./host-key-ATB23GI3.js');
5036
5043
  const hostKey2 = await ensureHostKey2(configPath);
5037
5044
  process.stdout.write(`host key ${hostKey2.fingerprint}
5038
5045
  hooks: ${result2.hooks}
@@ -5091,7 +5098,7 @@ hooks: ${result2.hooks}
5091
5098
  const prepared = prepareRunnerInit(configPath, { machine, allowProcess, agent, credential, keyFromLogin: makeKey !== void 0 });
5092
5099
  const created = makeKey === void 0 ? void 0 : await makeKey();
5093
5100
  const result = writeRunnerInit(prepared, created);
5094
- const { ensureHostKey } = await import('./host-key-2LXQDSBO.js');
5101
+ const { ensureHostKey } = await import('./host-key-ATB23GI3.js');
5095
5102
  const hostKey = await ensureHostKey(configPath);
5096
5103
  if (created !== void 0) {
5097
5104
  process.stdout.write(`${C.green}\u2713${C.reset} saved the runner key in ${result.configPath}
@@ -5119,7 +5126,7 @@ ${C.yellow}${result.note}${C.reset}
5119
5126
  To isolate builds in containers instead, run ${C.yellow}${cliInvocation()} runner init --vm${C.reset}.
5120
5127
  `);
5121
5128
  }
5122
- const { runRunnerInstall, RunnerInstallError, RunnerDowngradeError, launcherSummary } = await import('./install-cmd-Q7RJGFUO.js');
5129
+ const { runRunnerInstall, RunnerInstallError, RunnerDowngradeError, launcherSummary } = await import('./install-cmd-6HTP7I43.js');
5123
5130
  let installedLayout = false;
5124
5131
  let noService = "it starts the runner from the install layout, which needs a CLI installed with npm";
5125
5132
  try {
@@ -5151,7 +5158,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
5151
5158
  let serviceUp = false;
5152
5159
  let restart;
5153
5160
  if (installedLayout) {
5154
- const { installServiceCommand } = await import('./command-GE62AJZY.js');
5161
+ const { installServiceCommand } = await import('./command-Q5Q2EIO4.js');
5155
5162
  const service = await installServiceCommand({
5156
5163
  configPath,
5157
5164
  entryPath: process.argv[1] ?? "",
@@ -5195,12 +5202,12 @@ Next:
5195
5202
  "after",
5196
5203
  "\nA repository governed by a control plane builds the control plane's image, at the commit\nthe gateway has stored for it. A repository that governs itself fetches the head of its\ndefault branch into the runner's cache. Either way it reads .devcontainer/devcontainer.json\nand builds the image with the devcontainer CLI. Settings\nthat reach the host or widen the container's privileges are ignored and listed. The\nimage holds this CLI and a pinned Claude Code. Nothing runs inside the image.\n"
5197
5204
  ).action(async (opts) => {
5198
- const { defaultRunnerConfigPath } = await import('./config-7Q52COZ3.js');
5199
- const { buildRepositoryImage, RecipeError } = await import('./build-GTMEADQD.js');
5205
+ const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
5206
+ const { buildRepositoryImage, RecipeError } = await import('./build-6WRNZPVR.js');
5200
5207
  const { currentCliBuild } = await import('./cli-build-K56DK4DS.js');
5201
- const { createDockerHost } = await import('./docker-2OVBKVRK.js');
5202
- const { builderSpec } = await import('./builder-OAUSTZHL.js');
5203
- const { loadRunnerConfig } = await import('./config-7Q52COZ3.js');
5208
+ const { createDockerHost } = await import('./docker-JU422JL7.js');
5209
+ const { builderSpec } = await import('./builder-G3MLDMTI.js');
5210
+ const { loadRunnerConfig } = await import('./config-H4QS332G.js');
5204
5211
  const configPath = opts.config ?? defaultRunnerConfigPath();
5205
5212
  const loaded = (() => {
5206
5213
  try {
@@ -5211,11 +5218,11 @@ Next:
5211
5218
  })();
5212
5219
  const memory = loaded?.build?.memory ?? "8g";
5213
5220
  try {
5214
- const { ensureRunnerIdentity } = await import('./runner-identity-RWCBTY2A.js');
5221
+ const { ensureRunnerIdentity } = await import('./runner-identity-FTHZFMGY.js');
5215
5222
  await ensureRunnerIdentity(configPath, { log: (line) => console.error(line) }).catch((err) => {
5216
5223
  console.error(`the runner's Docker identity could not be stored: ${err instanceof Error ? err.message : String(err)}`);
5217
5224
  });
5218
- const { imageTargetFor } = await import('./governing-source-TORXL4I4.js');
5225
+ const { imageTargetFor } = await import('./governing-source-WM736XR4.js');
5219
5226
  const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
5220
5227
  if (!target.ok) {
5221
5228
  if (opts.json) {
@@ -5278,22 +5285,22 @@ Next:
5278
5285
  }
5279
5286
  });
5280
5287
  runnerCmd.command("stop").description("Take no more work; wait for running jobs to finish, then exit").option("--config <path>", "the cloud config file naming the runner to stop").option("--now", "end running jobs immediately, with outcome stopped").action(async (opts) => {
5281
- const { defaultRunnerConfigPath } = await import('./config-7Q52COZ3.js');
5282
- const { requestStop } = await import('./loop-ZDW6TRAA.js');
5288
+ const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
5289
+ const { requestStop } = await import('./loop-P3QDQOE5.js');
5283
5290
  const configPath = opts.config ?? defaultRunnerConfigPath();
5284
5291
  await requestStop(configPath, Boolean(opts.now));
5285
5292
  });
5286
5293
  runnerCmd.command("status").description("List running jobs; with --recent, finished ones too").option("--config <path>", "the cloud config file naming the runner to inspect").option("--recent", "also list finished jobs, newest first, capped at 20").option("--json", "machine-readable JSON output").action(async (opts) => {
5287
- const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-7Q52COZ3.js');
5288
- const { jobsDir, runnerDir } = await import('./paths-N3LU4O2Z.js');
5289
- const { listJobFiles, runnerProcessState } = await import('./loop-ZDW6TRAA.js');
5290
- const { renderStatus } = await import('./status-QZB2GWXJ.js');
5291
- const { readHousekeepingRecord } = await import('./record-73PQE77B.js');
5294
+ const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-H4QS332G.js');
5295
+ const { jobsDir, runnerDir } = await import('./paths-AKX2OOLF.js');
5296
+ const { listJobFiles, runnerProcessState } = await import('./loop-P3QDQOE5.js');
5297
+ const { renderStatus } = await import('./status-LXFIVGP3.js');
5298
+ const { readHousekeepingRecord } = await import('./record-Q4IEYIVV.js');
5292
5299
  const path2 = await import('path');
5293
5300
  const configPath = opts.config ?? defaultRunnerConfigPath();
5294
5301
  const all = listJobFiles(configPath);
5295
5302
  const housekeeping = readHousekeepingRecord(runnerDir(configPath));
5296
- const { readPendingUpdate } = await import('./pending-GRCV3ZR4.js');
5303
+ const { readPendingUpdate } = await import('./pending-7SGWZCEH.js');
5297
5304
  const pendingUpdate = readPendingUpdate(runnerDir(configPath));
5298
5305
  let host = "unknown";
5299
5306
  let concurrency = 1;
@@ -5307,7 +5314,7 @@ Next:
5307
5314
  const service = await (async () => {
5308
5315
  if (process.platform !== "linux" || !existsSync("/run/systemd/system")) return void 0;
5309
5316
  const { inspectService, realInspectProbes } = await import('./inspect-6UYAAXH7.js');
5310
- const { DEFAULT_UNIT_NAME } = await import('./install-CZUIW2AF.js');
5317
+ const { DEFAULT_UNIT_NAME } = await import('./install-SFACZU7E.js');
5311
5318
  const facts = inspectService(DEFAULT_UNIT_NAME, path2.dirname(configPath), realInspectProbes());
5312
5319
  return facts === void 0 ? void 0 : { unit: facts.unit, running: facts.mainPid !== void 0, delegated: facts.delegate };
5313
5320
  })();
@@ -5342,9 +5349,9 @@ Next:
5342
5349
  );
5343
5350
  });
5344
5351
  runnerCmd.command("logs").argument("<item>", "the work item's number in the factory").description("Print the newest attempt's log for one item").option("--config <path>", "the cloud config file naming the runner to inspect").option("-f, --follow", "keep printing as the log grows").action(async (itemArg, opts) => {
5345
- const { defaultRunnerConfigPath } = await import('./config-7Q52COZ3.js');
5346
- const { listJobFiles } = await import('./loop-ZDW6TRAA.js');
5347
- const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-RJPYTVQE.js');
5352
+ const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
5353
+ const { listJobFiles } = await import('./loop-P3QDQOE5.js');
5354
+ const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-N3ZX7HFV.js');
5348
5355
  const configPath = opts.config ?? defaultRunnerConfigPath();
5349
5356
  const item = parseTrackerNumber(itemArg);
5350
5357
  if (item === void 0) {
@@ -5592,7 +5599,7 @@ caller from the bearer token, the gateway answers 401 without that header.
5592
5599
  "after",
5593
5600
  "\nWhat the stdio .mcp.json entry spawns. Reads newline-delimited JSON-RPC 2.0 on\nstdin and writes responses on stdout. The API key comes from OUTERLAYER_API_KEY\nor ~/.outerlayer/config.json at start-up; with neither the command exits 1 and\nprints why, which the MCP client shows as the connect error.\n"
5594
5601
  ).action(async (opts) => {
5595
- const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-IULQPVHL.js');
5602
+ const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-TQSPFRC7.js');
5596
5603
  try {
5597
5604
  await runMcpServe({ url: opts.url, appId: opts.appId });
5598
5605
  } catch (err) {
@@ -1,36 +1,35 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { runRunnerInstall, launcherSummary, restartNote } from './chunk-C3HKR67W.js';
3
+ import { runRunnerInstall, launcherSummary, restartNote } from './chunk-JV4YGAAW.js';
4
4
  import './chunk-I2UOAV7X.js';
5
- import './chunk-LOB2SUM3.js';
6
- import { currentLink, execStartCommand } from './chunk-4NM3I3VV.js';
7
- import { installService, uninstallService, realTaskScheduler } from './chunk-I66MQDXH.js';
8
- import { detectMachine } from './chunk-EXV37PKS.js';
9
- import './chunk-VX74ND77.js';
10
- import './chunk-IRBNIRQJ.js';
5
+ import './chunk-EFB3FGLC.js';
6
+ import { currentLink, execStartCommand } from './chunk-276D7BJ7.js';
7
+ import { installService, uninstallService, realTaskScheduler } from './chunk-OBCFK4QD.js';
8
+ import { detectMachine } from './chunk-FVDVC2GF.js';
9
+ import './chunk-WKSBSEWT.js';
10
+ import './chunk-3AZYLAJC.js';
11
11
  import './chunk-OGFGZQA3.js';
12
- import { readJobFile } from './chunk-WERZMIKA.js';
12
+ import { readJobFile } from './chunk-XR56WEA5.js';
13
13
  import './chunk-3W333NFO.js';
14
- import './chunk-PHHBYAL6.js';
15
- import './chunk-BLW6GPBZ.js';
16
- import './chunk-C3OVGKVJ.js';
17
- import './chunk-2HT2XGJX.js';
18
- import './chunk-QOALB6ZD.js';
19
- import './chunk-JRCSET55.js';
14
+ import './chunk-NYTZ7HVN.js';
15
+ import './chunk-2Q3PZ42G.js';
16
+ import './chunk-IMCVQF5F.js';
17
+ import './chunk-FQE5RDHI.js';
18
+ import './chunk-B42BIYC6.js';
19
+ import './chunk-EMUNEAQK.js';
20
20
  import './chunk-G3IJ3N6F.js';
21
21
  import './chunk-EAQSOE62.js';
22
22
  import './chunk-F35VMF5M.js';
23
- import { runnerVmOf, loadRunnerConfig } from './chunk-2CMJLYV6.js';
23
+ import { runnerVmOf, loadRunnerConfig } from './chunk-V5CG75NX.js';
24
24
  import './chunk-UXYLWVTQ.js';
25
25
  import './chunk-7RQ73DLO.js';
26
26
  import { realLima } from './chunk-77MM5RYD.js';
27
27
  import { writeLaunchAgent, launchAgentPath } from './chunk-LF6MLJCY.js';
28
- import './chunk-ZFLOGMUC.js';
28
+ import './chunk-XACXXKQ5.js';
29
29
  import './chunk-JBJTC3UU.js';
30
- import './chunk-KOQELWQ6.js';
30
+ import './chunk-SNVXHNU7.js';
31
31
  import './chunk-USWVXQIH.js';
32
- import './chunk-VWLOQ6FI.js';
33
- import './chunk-NTRCK4NH.js';
32
+ import './chunk-QS43O4DR.js';
34
33
  import './chunk-ZJSNLVCE.js';
35
34
  import './chunk-ZNPE7FW5.js';
36
35
  import './chunk-HCVLP7XA.js';
@@ -46,9 +45,9 @@ import './chunk-WFSUUUAN.js';
46
45
  import './chunk-7VUK5RFS.js';
47
46
  import './chunk-VNVZDWO3.js';
48
47
  import './chunk-RA3O54FC.js';
49
- import './chunk-KDHYLBRR.js';
50
- import './chunk-KIGSGZBB.js';
51
- import './chunk-V7MQKOZY.js';
48
+ import './chunk-OW52QLK3.js';
49
+ import './chunk-IHNQWF6F.js';
50
+ import './chunk-URWYRAIC.js';
52
51
  import './chunk-GISNHSYL.js';
53
52
  import './chunk-Z5GEFMRW.js';
54
53
  import { userInfo, totalmem } from 'os';