@outerlayer/cli 0.26.3 → 0.26.4

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 (95) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/{agent-setup-PZYQWN4H.js → agent-setup-5DXPEO64.js} +7 -7
  3. package/dist/{build-EBQYXL7Y.js → build-F5QWH7G5.js} +4 -4
  4. package/dist/build-info.json +1 -1
  5. package/dist/{builder-WEGLC2F2.js → builder-KDUXCHTY.js} +4 -4
  6. package/dist/{check-WJJ325EQ.js → check-ZSYCR5WG.js} +31 -31
  7. package/dist/{chunk-SKZG7SAN.js → chunk-27RDUTQH.js} +21 -13
  8. package/dist/{chunk-665QWBNW.js → chunk-2J46BQ5Y.js} +1 -1
  9. package/dist/{chunk-W3NVHOCS.js → chunk-4UFSTKE5.js} +1 -1
  10. package/dist/{chunk-XSPA5ODY.js → chunk-6BLXUD56.js} +4 -3
  11. package/dist/{chunk-UKCNOAO6.js → chunk-6CGXSMKX.js} +5 -5
  12. package/dist/{chunk-MLD2NA7N.js → chunk-6SPXKRQR.js} +1 -1
  13. package/dist/{chunk-XFGL53GU.js → chunk-6WTAYEKJ.js} +1 -1
  14. package/dist/{chunk-4IFKLYMM.js → chunk-7Z2WMXM5.js} +1 -1
  15. package/dist/{chunk-TSW4DGV2.js → chunk-B6K7R5UY.js} +2 -2
  16. package/dist/{chunk-364XDGOK.js → chunk-EHBDYLM6.js} +3 -3
  17. package/dist/{chunk-L4CW6LZQ.js → chunk-F3BBEBPL.js} +4 -1
  18. package/dist/{chunk-GOSFARMS.js → chunk-G2JWZDFA.js} +9 -2
  19. package/dist/{chunk-7LVF4E5V.js → chunk-GFHLEVUE.js} +3 -3
  20. package/dist/{chunk-F6DIHHBS.js → chunk-GWRDL75D.js} +1 -1
  21. package/dist/{chunk-HXFRJKMU.js → chunk-H57M3HC7.js} +2 -2
  22. package/dist/{chunk-PYSKSROG.js → chunk-IZAOO5AR.js} +1 -1
  23. package/dist/{chunk-KDDFI5MR.js → chunk-K4FXNMV5.js} +1 -1
  24. package/dist/{chunk-6M4LNO22.js → chunk-KNBWOL2B.js} +2 -2
  25. package/dist/{chunk-YVZJ6GKF.js → chunk-KT4CN6OU.js} +1 -1
  26. package/dist/{chunk-QRZLUUNN.js → chunk-MCSINUVC.js} +8 -3
  27. package/dist/{chunk-6FAP657M.js → chunk-NWPRNKZ5.js} +1 -1
  28. package/dist/{chunk-TPAF24PK.js → chunk-O4362FPA.js} +2 -2
  29. package/dist/{chunk-TKL74NLB.js → chunk-OFTFW7TH.js} +1 -1
  30. package/dist/{chunk-W7LGHNXT.js → chunk-OQUD3UYF.js} +4 -4
  31. package/dist/{chunk-J7BXZLSO.js → chunk-OZKEEXVH.js} +28 -7
  32. package/dist/{chunk-EABW6AJQ.js → chunk-PJDQPF5N.js} +18 -5
  33. package/dist/{chunk-TEVO3RUV.js → chunk-PZA6ZFYW.js} +3 -3
  34. package/dist/{chunk-XDHYZWEK.js → chunk-Q2SVLBMI.js} +2 -2
  35. package/dist/{chunk-ZLEXMZFW.js → chunk-QUP6CVBQ.js} +3 -3
  36. package/dist/{chunk-VHVFU6QU.js → chunk-SBW4K3XZ.js} +17 -8
  37. package/dist/{chunk-ZPXI7LMG.js → chunk-UOGQZQXN.js} +4 -4
  38. package/dist/{chunk-FO7F6QSV.js → chunk-UZEQVPKF.js} +1 -1
  39. package/dist/{chunk-XF77SNB4.js → chunk-V3YJFEZA.js} +29 -22
  40. package/dist/{chunk-5PMQDQFV.js → chunk-VGHKTSHU.js} +2 -2
  41. package/dist/{chunk-2AKDF6C2.js → chunk-VQ7OAG6H.js} +5 -5
  42. package/dist/{chunk-EORWWFPA.js → chunk-WK35HB56.js} +2 -2
  43. package/dist/{chunk-JF572PM5.js → chunk-Y4BXRVDI.js} +3 -3
  44. package/dist/{chunk-K7FCZCLQ.js → chunk-ZMZGWLYD.js} +7 -7
  45. package/dist/{claude-launcher-O2U6P6ZD.js → claude-launcher-TTLTS4N6.js} +1 -1
  46. package/dist/{cli-2UUJM3AE.js → cli-SKF3AMZ5.js} +89 -89
  47. package/dist/{command-GQBHC53U.js → command-E5OG5NCH.js} +22 -22
  48. package/dist/{connect-cmd-2JHSLBXK.js → connect-cmd-SL4S5HJM.js} +7 -7
  49. package/dist/{container-start-AUJHF2BC.js → container-start-IA2HK4QI.js} +21 -21
  50. package/dist/{control-plane-launch-654RV5PO.js → control-plane-launch-JIQOE6BP.js} +5 -5
  51. package/dist/{docker-NYAIIX2F.js → docker-KKE5Q5S2.js} +4 -4
  52. package/dist/{doctor-NV2PUERZ.js → doctor-U2N7AF3N.js} +24 -24
  53. package/dist/{emit-artifact-cmd-XXTCHP6V.js → emit-artifact-cmd-SDG5H6D7.js} +11 -11
  54. package/dist/{emit-criteria-cmd-VMZIRJCQ.js → emit-criteria-cmd-QGSP77AG.js} +8 -8
  55. package/dist/{emit-finding-cmd-KMJNYQI7.js → emit-finding-cmd-6FGMTEFM.js} +8 -8
  56. package/dist/{emit-result-cmd-HRTXGZLK.js → emit-result-cmd-AUPIXPEU.js} +11 -11
  57. package/dist/{emit-step-cmd-AUHA3EXY.js → emit-step-cmd-PORHEKHN.js} +9 -9
  58. package/dist/{governing-source-PTJ6EAA3.js → governing-source-YPBK4H5H.js} +11 -11
  59. package/dist/{hook-fast-SDFXJEAW.js → hook-fast-XMZFMBKC.js} +1 -1
  60. package/dist/{pending-54HC7MM3.js → host-key-GQFBRX3J.js} +2 -2
  61. package/dist/{image-tag-5SJ6ZKT7.js → image-tag-W4JKVNP4.js} +2 -2
  62. package/dist/index.js +4 -4
  63. package/dist/{init-KIGYMLDM.js → init-GEFKJNJU.js} +21 -21
  64. package/dist/{init-UZWRJMPZ.js → init-Y64OAKKQ.js} +21 -21
  65. package/dist/{init-cmd-SQKWPACS.js → init-cmd-YR4LLIRU.js} +13 -13
  66. package/dist/{init-update-FJDKY4SJ.js → init-update-46G6QJHB.js} +11 -11
  67. package/dist/{install-QSTTBUHX.js → install-AFMXH25X.js} +2 -2
  68. package/dist/{install-cmd-3DXJJUAA.js → install-cmd-X5XCUTSX.js} +4 -4
  69. package/dist/{login-browser-4OMZFP3U.js → login-browser-EWXSGHM7.js} +3 -3
  70. package/dist/{logout-cmd-5V5MMBSY.js → logout-cmd-5WE2N5B5.js} +2 -2
  71. package/dist/{logs-VN2HKDSH.js → logs-PKNQOJN6.js} +1 -1
  72. package/dist/{loop-OE32U2IZ.js → loop-3TJKFRN7.js} +31 -31
  73. package/dist/{machine-L7INJ4JN.js → machine-3W4LKTEW.js} +18 -18
  74. package/dist/{mcp-install-cmd-GGWB3JJ2.js → mcp-install-cmd-LD7KYAOP.js} +2 -2
  75. package/dist/{mcp-serve-cmd-U5N5DK3H.js → mcp-serve-cmd-MJIJHSQ6.js} +4 -4
  76. package/dist/{paths-ZC6BMWMT.js → paths-6V7572NN.js} +1 -1
  77. package/dist/{host-key-5TKBNUZ4.js → pending-GUHHKO42.js} +2 -2
  78. package/dist/{pidfile-BY5Z6YH7.js → pidfile-ZQOFDY7T.js} +2 -2
  79. package/dist/{record-K23IN6QN.js → record-C4ZVSLKV.js} +2 -2
  80. package/dist/{runner-env-2D7MPOIJ.js → runner-env-6Q2RMENH.js} +3 -3
  81. package/dist/{runner-identity-YYENYKDH.js → runner-identity-DP577A7S.js} +4 -4
  82. package/dist/{runner-key-AZVXBQIB.js → runner-key-LR5P2EJ5.js} +21 -21
  83. package/dist/{session-sender-VH2EKAT5.js → session-sender-ZTPWIU5L.js} +12 -12
  84. package/dist/{spec-cmd-BOUPLX7X.js → spec-cmd-RLZMX67G.js} +9 -9
  85. package/dist/{status-3WC2IGVI.js → status-GNUOTHRH.js} +22 -22
  86. package/dist/{sync-cmd-GT2WTQRA.js → sync-cmd-GLWEAULP.js} +11 -11
  87. package/dist/{watch-JED7SYAA.js → watch-F47NPUDX.js} +11 -11
  88. package/dist/{work-claim-cmd-MY4N74HA.js → work-claim-cmd-GXPIRRBG.js} +11 -11
  89. package/dist/{work-cmd-UQ45HDM4.js → work-cmd-S2FHIFJA.js} +9 -9
  90. package/dist/{work-comment-cmd-I7NNSNDP.js → work-comment-cmd-UJRKULO6.js} +9 -9
  91. package/dist/{work-logs-cmd-YIQJVENH.js → work-logs-cmd-SCAHJXSP.js} +9 -9
  92. package/dist/{work-open-pr-cmd-VP5NNTCW.js → work-open-pr-cmd-BGMHUQGD.js} +10 -10
  93. package/dist/{work-pr-cmd-DKTBEFHO.js → work-pr-cmd-EDDRP5DK.js} +9 -9
  94. package/dist/{work-stop-cmd-GN2WX73C.js → work-stop-cmd-ADE5K6UX.js} +9 -9
  95. package/package.json +1 -1
@@ -1,26 +1,26 @@
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-K7FCZCLQ.js';
4
- import './chunk-XFGL53GU.js';
3
+ import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-ZMZGWLYD.js';
4
+ import './chunk-6WTAYEKJ.js';
5
5
  import './chunk-VJBFQP3H.js';
6
- import { verifiedTrackerNames, TRACKERS } from './chunk-UKCNOAO6.js';
7
- import './chunk-HXFRJKMU.js';
8
- import './chunk-TEVO3RUV.js';
6
+ import { verifiedTrackerNames, TRACKERS } from './chunk-6CGXSMKX.js';
7
+ import './chunk-H57M3HC7.js';
8
+ import './chunk-PZA6ZFYW.js';
9
9
  import './chunk-BUP5N3X6.js';
10
- import './chunk-XSPA5ODY.js';
11
- import './chunk-GOSFARMS.js';
10
+ import './chunk-6BLXUD56.js';
11
+ import './chunk-G2JWZDFA.js';
12
12
  import './chunk-MQ743JX3.js';
13
- import './chunk-QRZLUUNN.js';
14
- import { hookFiredMarkerPath, installedCliDistDir } from './chunk-FO7F6QSV.js';
13
+ import './chunk-MCSINUVC.js';
14
+ import { hookFiredMarkerPath, installedCliDistDir } from './chunk-UZEQVPKF.js';
15
15
  import './chunk-ZJSNLVCE.js';
16
16
  import './chunk-I7RZHMXW.js';
17
17
  import './chunk-BKO6JEZI.js';
18
18
  import './chunk-HCVLP7XA.js';
19
19
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
20
20
  import './chunk-QE3UQAHK.js';
21
- import './chunk-YVZJ6GKF.js';
21
+ import './chunk-KT4CN6OU.js';
22
22
  import { C, warnDeprecated, API_KEY_FLAG_DEPRECATION, NO_COLOR_FLAG, stripNoColor } from './chunk-ANPNT6PM.js';
23
- import './chunk-EABW6AJQ.js';
23
+ import './chunk-PJDQPF5N.js';
24
24
  import { FIRST_VERSION_READING_AGENTS_SKILLS } from './chunk-JKNYTNYD.js';
25
25
  import './chunk-HBISTTG3.js';
26
26
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
@@ -33,8 +33,8 @@ import './chunk-RKOTJQVG.js';
33
33
  import './chunk-QZBXLLTV.js';
34
34
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
35
35
  import { resolveVersion } from './chunk-RA3O54FC.js';
36
- import './chunk-F6DIHHBS.js';
37
- import './chunk-L4CW6LZQ.js';
36
+ import './chunk-GWRDL75D.js';
37
+ import './chunk-F3BBEBPL.js';
38
38
  import './chunk-2K3TCQHW.js';
39
39
  import './chunk-JGD5TWQ2.js';
40
40
  import './chunk-Z5GEFMRW.js';
@@ -3786,7 +3786,7 @@ ${starter.output}`),
3786
3786
  }
3787
3787
  }
3788
3788
  async function realConnectDepsForCwd() {
3789
- const { realConnectDeps } = await import('./connect-cmd-2JHSLBXK.js');
3789
+ const { realConnectDeps } = await import('./connect-cmd-SL4S5HJM.js');
3790
3790
  const { resolveRepoIdentity } = await import('./dist-QPHZE47F.js');
3791
3791
  return {
3792
3792
  ...realConnectDeps(),
@@ -3853,7 +3853,7 @@ edited file, and writes nothing. --control-plane makes no link and says
3853
3853
  what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocation() + " doctor` reports the same\nstates under Starter files.\n"
3854
3854
  ).action(async (opts) => {
3855
3855
  if (opts.update || opts.dryRun) {
3856
- const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-FJDKY4SJ.js');
3856
+ const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-46G6QJHB.js');
3857
3857
  const problem = updateFlagProblem(opts);
3858
3858
  if (problem !== void 0) {
3859
3859
  fail(problem);
@@ -3900,12 +3900,12 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
3900
3900
  if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
3901
3901
  `);
3902
3902
  }
3903
- const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-SQKWPACS.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
3903
+ const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-YR4LLIRU.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
3904
3904
  if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
3905
3905
  else process.stdout.write(outcome.text + (shell?.text ?? ""));
3906
3906
  return;
3907
3907
  }
3908
- const { runInitCommand } = await import('./init-cmd-SQKWPACS.js');
3908
+ const { runInitCommand } = await import('./init-cmd-YR4LLIRU.js');
3909
3909
  const code = await runInitCommand(
3910
3910
  { json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
3911
3911
  {
@@ -3917,7 +3917,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
3917
3917
  return { ok, text, detail };
3918
3918
  },
3919
3919
  runAgentSetup: async () => {
3920
- const { runAgentSetup } = await import('./agent-setup-PZYQWN4H.js');
3920
+ const { runAgentSetup } = await import('./agent-setup-5DXPEO64.js');
3921
3921
  return runAgentSetup({ cwd: process.cwd(), skillsLink: opts.skillsLink !== false });
3922
3922
  },
3923
3923
  runDoctorChecks: gatherDoctorChecks,
@@ -3926,7 +3926,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
3926
3926
  shellPath: process.env.SHELL,
3927
3927
  interactive: Boolean(process.stdin.isTTY && process.stderr.isTTY) && opts.json !== true,
3928
3928
  ask: async () => {
3929
- const { promptOnTerminal } = await import('./connect-cmd-2JHSLBXK.js');
3929
+ const { promptOnTerminal } = await import('./connect-cmd-SL4S5HJM.js');
3930
3930
  const answer = await promptOnTerminal({
3931
3931
  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.`,
3932
3932
  options: [
@@ -3965,7 +3965,7 @@ linked (true, false, or null when it could not be checked) and, when false,
3965
3965
  linkUrl.
3966
3966
  `
3967
3967
  ).action(async (opts) => {
3968
- const { runConnectCommand } = await import('./connect-cmd-2JHSLBXK.js');
3968
+ const { runConnectCommand } = await import('./connect-cmd-SL4S5HJM.js');
3969
3969
  const code = await runConnectCommand({ factory: opts.factory, json: opts.json }, await realConnectDepsForCwd(), {
3970
3970
  stdout: process.stdout,
3971
3971
  stderr: process.stderr
@@ -4004,7 +4004,7 @@ Every later command reads the saved file, so none of them needs a key on
4004
4004
  its command line. A saved key is checked for real on the first \`sync\`.
4005
4005
  `
4006
4006
  ).action(async (opts) => {
4007
- const { runLoginCommand, realLoginDeps } = await import('./login-browser-4OMZFP3U.js');
4007
+ const { runLoginCommand, realLoginDeps } = await import('./login-browser-EWXSGHM7.js');
4008
4008
  const code = await runLoginCommand(
4009
4009
  {
4010
4010
  browser: opts.browser !== false,
@@ -4028,7 +4028,7 @@ dashboard cannot be reached the local copy is still deleted and the exit
4028
4028
  code is 1: revoke the token on /profile/security.
4029
4029
  `
4030
4030
  ).action(async () => {
4031
- const { runLogoutCommand, realLogoutDeps } = await import('./logout-cmd-5V5MMBSY.js');
4031
+ const { runLogoutCommand, realLogoutDeps } = await import('./logout-cmd-5WE2N5B5.js');
4032
4032
  const code = await runLogoutCommand(realLogoutDeps());
4033
4033
  if (code !== 0) process.exitCode = code;
4034
4034
  });
@@ -4043,7 +4043,7 @@ code is 1: revoke the token on /profile/security.
4043
4043
  else fail(found.reason);
4044
4044
  return;
4045
4045
  }
4046
- const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-GT2WTQRA.js');
4046
+ const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-GLWEAULP.js');
4047
4047
  try {
4048
4048
  const result = await runSync({
4049
4049
  url: opts.url,
@@ -4074,7 +4074,7 @@ code is 1: revoke the token on /profile/security.
4074
4074
  if (invokedCommandToken(argv) === "watch") {
4075
4075
  warnDeprecated(`\`${cliInvocation()} watch\` is now \`${cliInvocation()} daemon\`; the old name will be removed in a future release.`);
4076
4076
  }
4077
- const { runWatch } = await import('./watch-JED7SYAA.js');
4077
+ const { runWatch } = await import('./watch-F47NPUDX.js');
4078
4078
  await runWatch({ once: opts.once });
4079
4079
  });
4080
4080
  program2.command("hook <event>", { hidden: true }).description("capture-hook fast path, installed by `init`").action(() => {
@@ -4164,7 +4164,7 @@ code is 1: revoke the token on /profile/security.
4164
4164
  process.exitCode = await runBuildCommand({ dir: opts.dir, argv: command });
4165
4165
  });
4166
4166
  program2.command("session-sender", { hidden: true }).description("stream a runner build's sessions to its work item while the build runs").action(async () => {
4167
- const { runSessionSender } = await import('./session-sender-VH2EKAT5.js');
4167
+ const { runSessionSender } = await import('./session-sender-ZTPWIU5L.js');
4168
4168
  try {
4169
4169
  await runSessionSender();
4170
4170
  } catch (err) {
@@ -4254,7 +4254,7 @@ Compiling .outerlayer/ moved to \`${cliInvocation()} context emit\`.
4254
4254
  await compileContext({ dir: opts.dir, check: opts.check, json: opts.json });
4255
4255
  return;
4256
4256
  }
4257
- const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-HRTXGZLK.js');
4257
+ const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-AUPIXPEU.js');
4258
4258
  try {
4259
4259
  const result = await runEmitResult({
4260
4260
  name,
@@ -4304,7 +4304,7 @@ everywhere, bytes and deep link untouched; a still-queued one is cancelled
4304
4304
  locally so it never uploads. One correction can retire several duplicates.
4305
4305
  `
4306
4306
  ).action(async (file, opts) => {
4307
- const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-XXTCHP6V.js');
4307
+ const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-SDG5H6D7.js');
4308
4308
  let pr;
4309
4309
  if (opts.pr !== void 0) {
4310
4310
  pr = parseTrackerNumber(opts.pr);
@@ -4363,7 +4363,7 @@ recent events with their ids. --find <text> searches all of them.
4363
4363
  item that session was launched for is used automatically.
4364
4364
  `
4365
4365
  ).action(async (opts) => {
4366
- const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-KMJNYQI7.js');
4366
+ const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-6FGMTEFM.js');
4367
4367
  try {
4368
4368
  refuseRemovedFindingFlags(opts);
4369
4369
  const result = await runEmitFinding({
@@ -4430,7 +4430,7 @@ the whole batch. "untimed": true records one with no time on purpose.
4430
4430
  that session was launched for is used automatically.
4431
4431
  `
4432
4432
  ).action(async (file, opts) => {
4433
- const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-KMJNYQI7.js');
4433
+ const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-6FGMTEFM.js');
4434
4434
  try {
4435
4435
  const result = await runEmitFindings({
4436
4436
  file,
@@ -4465,7 +4465,7 @@ command, the command exits 0, and \`sync\` sends it later. If the gateway refuse
4465
4465
  the step, the command prints why and exits 1.
4466
4466
  `
4467
4467
  ).action(async (name, opts) => {
4468
- const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-AUHA3EXY.js');
4468
+ const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-PORHEKHN.js');
4469
4469
  try {
4470
4470
  await runEmitStep({
4471
4471
  name,
@@ -4508,7 +4508,7 @@ of the item, and a (proof: <kind>) annotation names its proof.
4508
4508
  ${cliInvocation()} emit criteria acceptance/412-login.md --item 412
4509
4509
  `
4510
4510
  ).action(async (file, opts) => {
4511
- const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-VMZIRJCQ.js');
4511
+ const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-QGSP77AG.js');
4512
4512
  try {
4513
4513
  const result = await runEmitCriteria({
4514
4514
  file,
@@ -4532,9 +4532,9 @@ function registerSpecCommands(program2) {
4532
4532
  const specCmd = program2.command("spec").description("Find, file and edit the issue a spec lives in, in your factory's tracker");
4533
4533
  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)");
4534
4534
  const run = async (action) => {
4535
- const { WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4535
+ const { WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4536
4536
  try {
4537
- await action(await import('./spec-cmd-BOUPLX7X.js'));
4537
+ await action(await import('./spec-cmd-RLZMX67G.js'));
4538
4538
  } catch (err) {
4539
4539
  if (err instanceof WorkCommandError) {
4540
4540
  fail(err.message);
@@ -4576,7 +4576,7 @@ takes it, and prints the line that starts your session on it. That
4576
4576
  session links itself and holds the item's lease while it works.
4577
4577
  `
4578
4578
  ).action(async (opts) => {
4579
- const { runWorkBuild, WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4579
+ const { runWorkBuild, WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4580
4580
  try {
4581
4581
  await runWorkBuild(opts);
4582
4582
  } catch (err) {
@@ -4599,7 +4599,7 @@ renews that session's own 20-minute lease, unless --no-lease or
4599
4599
  --ended is given, or another worker already holds a live one.
4600
4600
  `
4601
4601
  ).action(async (number, opts) => {
4602
- const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4602
+ const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4603
4603
  try {
4604
4604
  await runWorkLinkSession({ ...opts, number, noLease: opts.lease === false, logFailures: opts.logFailures === true });
4605
4605
  } catch (err) {
@@ -4623,8 +4623,8 @@ criterion's new proof; --ready hands the thread back to a person. At
4623
4623
  most one action flag may be given.
4624
4624
  `
4625
4625
  ).action(async (opts) => {
4626
- const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-I7NNSNDP.js');
4627
- const { WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4626
+ const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-UJRKULO6.js');
4627
+ const { WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4628
4628
  try {
4629
4629
  await runWorkComment(opts);
4630
4630
  } catch (err) {
@@ -4645,8 +4645,8 @@ criterion that carries proof or a comment, each with who is waiting
4645
4645
  on whom next.
4646
4646
  `
4647
4647
  ).action(async (opts) => {
4648
- const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-I7NNSNDP.js');
4649
- const { WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4648
+ const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-UJRKULO6.js');
4649
+ const { WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4650
4650
  try {
4651
4651
  await runWorkThreads(opts);
4652
4652
  } catch (err) {
@@ -4670,8 +4670,8 @@ still running, or that an older runner released, has no log and the
4670
4670
  command exits 1.
4671
4671
  `
4672
4672
  ).action(async (opts) => {
4673
- const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-YIQJVENH.js');
4674
- const { WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4673
+ const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-SCAHJXSP.js');
4674
+ const { WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4675
4675
  try {
4676
4676
  await runWorkLogs(opts);
4677
4677
  } catch (err) {
@@ -4694,8 +4694,8 @@ item is not built again until a new build request. Exits 1 when no host
4694
4694
  build is running for the item.
4695
4695
  `
4696
4696
  ).action(async (opts) => {
4697
- const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-GN2WX73C.js');
4698
- const { WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4697
+ const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-ADE5K6UX.js');
4698
+ const { WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4699
4699
  try {
4700
4700
  await runWorkStop(opts);
4701
4701
  } catch (err) {
@@ -4716,7 +4716,7 @@ deletes anything \u2014 the item is removed from Work only once no
4716
4716
  live addition remains on it.
4717
4717
  `
4718
4718
  ).action(async (opts) => {
4719
- const { runWorkRemove, WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4719
+ const { runWorkRemove, WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4720
4720
  try {
4721
4721
  await runWorkRemove(opts);
4722
4722
  } catch (err) {
@@ -4728,7 +4728,7 @@ live addition remains on it.
4728
4728
  }
4729
4729
  });
4730
4730
  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) => {
4731
- const { runWorkStatus, WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4731
+ const { runWorkStatus, WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4732
4732
  try {
4733
4733
  await runWorkStatus(opts);
4734
4734
  } catch (err) {
@@ -4740,7 +4740,7 @@ live addition remains on it.
4740
4740
  }
4741
4741
  });
4742
4742
  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) => {
4743
- const { runWorkList, WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4743
+ const { runWorkList, WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4744
4744
  try {
4745
4745
  await runWorkList(opts);
4746
4746
  } catch (err) {
@@ -4761,7 +4761,7 @@ by a different key is refused; claiming again with the same key extends
4761
4761
  it. --host is a label only.
4762
4762
  `
4763
4763
  ).action(async (opts) => {
4764
- const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-MY4N74HA.js');
4764
+ const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-GXPIRRBG.js');
4765
4765
  try {
4766
4766
  await runWorkClaim(opts);
4767
4767
  } catch (err) {
@@ -4781,7 +4781,7 @@ Extends the live lease this API key holds. Refused with a 410 if the
4781
4781
  lease has expired, or a 403 if a different key holds it.
4782
4782
  `
4783
4783
  ).action(async (opts) => {
4784
- const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-MY4N74HA.js');
4784
+ const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-GXPIRRBG.js');
4785
4785
  try {
4786
4786
  await runWorkRenew(opts);
4787
4787
  } catch (err) {
@@ -4813,7 +4813,7 @@ applies to a host's lease only. A later tool call in the session
4813
4813
  takes the lease again.
4814
4814
  `
4815
4815
  ).action(async (opts) => {
4816
- const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-MY4N74HA.js');
4816
+ const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-GXPIRRBG.js');
4817
4817
  try {
4818
4818
  await runWorkRelease(opts);
4819
4819
  } catch (err) {
@@ -4840,7 +4840,7 @@ Idempotent: declaring the same pull request twice is a no-op.
4840
4840
  needs your own login; an agent session or a factory key is refused.
4841
4841
  `
4842
4842
  ).action(async (number, opts) => {
4843
- const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-DKTBEFHO.js');
4843
+ const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-EDDRP5DK.js');
4844
4844
  try {
4845
4845
  await runWorkPr({ ...opts, number });
4846
4846
  } catch (err) {
@@ -4865,8 +4865,8 @@ login, then declares the pull request on the item, as \`work pr\` does.
4865
4865
  Run it again after a change to the title or description.
4866
4866
  `
4867
4867
  ).action(async (opts) => {
4868
- const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-VP5NNTCW.js');
4869
- const { WorkCommandError } = await import('./work-cmd-UQ45HDM4.js');
4868
+ const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-BGMHUQGD.js');
4869
+ const { WorkCommandError } = await import('./work-cmd-S2FHIFJA.js');
4870
4870
  try {
4871
4871
  await runWorkOpenPr(opts);
4872
4872
  } catch (err) {
@@ -4883,8 +4883,8 @@ function registerRunnerCommands(program2) {
4883
4883
  const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
4884
4884
  runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
4885
4885
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-JJ3EO7SB.js');
4886
- const { start, RunnerStartError } = await import('./loop-OE32U2IZ.js');
4887
- const { RunnerAlreadyRunningError } = await import('./pidfile-BY5Z6YH7.js');
4886
+ const { start, RunnerStartError } = await import('./loop-3TJKFRN7.js');
4887
+ const { RunnerAlreadyRunningError } = await import('./pidfile-ZQOFDY7T.js');
4888
4888
  const configPath = opts.config ?? defaultRunnerConfigPath();
4889
4889
  try {
4890
4890
  const { realUpdateDeps } = await import('./real-deps-KNNBQC75.js');
@@ -4902,9 +4902,9 @@ function registerRunnerCommands(program2) {
4902
4902
  "\nReads OUTERLAYER_URL, OUTERLAYER_APP_ID, OUTERLAYER_API_KEY, OUTERLAYER_RUNNER_NAME and one Claude credential\n(CLAUDE_CODE_OAUTH_TOKEN, ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN) from the environment. OUTERLAYER_AGENT\nis optional and defaults to claude. On a later start it refuses variables that disagree with the config in the volume.\nThe image sets OUTERLAYER_RUNNER_IMAGE; outside the image, use `runner start`.\n"
4903
4903
  ).action(async () => {
4904
4904
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-JJ3EO7SB.js');
4905
- const { containerStart } = await import('./container-start-AUJHF2BC.js');
4906
- const { start, RunnerStartError } = await import('./loop-OE32U2IZ.js');
4907
- const { RunnerAlreadyRunningError } = await import('./pidfile-BY5Z6YH7.js');
4905
+ const { containerStart } = await import('./container-start-IA2HK4QI.js');
4906
+ const { start, RunnerStartError } = await import('./loop-3TJKFRN7.js');
4907
+ const { RunnerAlreadyRunningError } = await import('./pidfile-ZQOFDY7T.js');
4908
4908
  try {
4909
4909
  const result = await containerStart({
4910
4910
  env: process.env,
@@ -4923,7 +4923,7 @@ function registerRunnerCommands(program2) {
4923
4923
  });
4924
4924
  runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
4925
4925
  const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
4926
- const { runRunnerCheck } = await import('./check-WJJ325EQ.js');
4926
+ const { runRunnerCheck } = await import('./check-ZSYCR5WG.js');
4927
4927
  const configPath = opts.config ?? defaultRunnerConfigPath();
4928
4928
  const result = await runRunnerCheck(configPath);
4929
4929
  if (!result.ok) {
@@ -4945,7 +4945,7 @@ function registerRunnerCommands(program2) {
4945
4945
  });
4946
4946
  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) => {
4947
4947
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-JJ3EO7SB.js');
4948
- const { runRunnerInstall, RunnerInstallError, launcherSummary, restartNote } = await import('./install-cmd-3DXJJUAA.js');
4948
+ const { runRunnerInstall, RunnerInstallError, launcherSummary, restartNote } = await import('./install-cmd-X5XCUTSX.js');
4949
4949
  const configPath = opts.config ?? defaultRunnerConfigPath();
4950
4950
  if (opts.service !== true) {
4951
4951
  for (const flag of ["print", "user", "unitName"]) {
@@ -4957,7 +4957,7 @@ function registerRunnerCommands(program2) {
4957
4957
  }
4958
4958
  try {
4959
4959
  if (opts.service === true) {
4960
- const { installServiceCommand } = await import('./command-GQBHC53U.js');
4960
+ const { installServiceCommand } = await import('./command-E5OG5NCH.js');
4961
4961
  const result2 = await installServiceCommand({
4962
4962
  configPath,
4963
4963
  print: opts.print,
@@ -5013,7 +5013,7 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
5013
5013
  return;
5014
5014
  }
5015
5015
  const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
5016
- const { uninstallServiceCommand } = await import('./command-GQBHC53U.js');
5016
+ const { uninstallServiceCommand } = await import('./command-E5OG5NCH.js');
5017
5017
  const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
5018
5018
  if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
5019
5019
  `);
@@ -5041,11 +5041,11 @@ already in runner.env is used.
5041
5041
  `
5042
5042
  ).action(async (opts) => {
5043
5043
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-JJ3EO7SB.js');
5044
- const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-KIGYMLDM.js');
5045
- const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-AZVXBQIB.js');
5046
- const { detectMachine } = await import('./machine-L7INJ4JN.js');
5047
- const { chooseVm, runVmInit, VmInitError } = await import('./init-UZWRJMPZ.js');
5048
- const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-2D7MPOIJ.js');
5044
+ const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-GEFKJNJU.js');
5045
+ const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-LR5P2EJ5.js');
5046
+ const { detectMachine } = await import('./machine-3W4LKTEW.js');
5047
+ const { chooseVm, runVmInit, VmInitError } = await import('./init-Y64OAKKQ.js');
5048
+ const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-6Q2RMENH.js');
5049
5049
  const configPath = opts.config ?? defaultRunnerConfigPath();
5050
5050
  if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
5051
5051
  fail(`--agent ${opts.agent}: runner init writes commands for ${Object.keys(AGENT_COMMANDS).join(", ")}. For another agent, leave --agent out and edit runner.commands.`);
@@ -5059,7 +5059,7 @@ already in runner.env is used.
5059
5059
  try {
5060
5060
  let credential;
5061
5061
  if (agent !== void 0) {
5062
- const { readPipedKey } = await import('./login-browser-4OMZFP3U.js');
5062
+ const { readPipedKey } = await import('./login-browser-EWXSGHM7.js');
5063
5063
  credential = credentialFromStdin(
5064
5064
  await readPipedKey(process.stdin, {
5065
5065
  onWaiting: () => process.stderr.write(`runner init is waiting for Claude's credential on stdin; close stdin to use the one already in runner.env
@@ -5076,7 +5076,7 @@ already in runner.env is used.
5076
5076
  const chunks = [];
5077
5077
  for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
5078
5078
  const result2 = runRunnerInit(configPath, { machine, configFromStdin: Buffer.concat(chunks).toString("utf8"), requireContainer: true });
5079
- const { ensureHostKey: ensureHostKey2 } = await import('./host-key-5TKBNUZ4.js');
5079
+ const { ensureHostKey: ensureHostKey2 } = await import('./host-key-GQFBRX3J.js');
5080
5080
  const hostKey2 = await ensureHostKey2(configPath);
5081
5081
  process.stdout.write(`host key ${hostKey2.fingerprint}
5082
5082
  hooks: ${result2.hooks}
@@ -5135,7 +5135,7 @@ hooks: ${result2.hooks}
5135
5135
  const prepared = prepareRunnerInit(configPath, { machine, allowProcess, agent, credential, keyFromLogin: makeKey !== void 0 });
5136
5136
  const created = makeKey === void 0 ? void 0 : await makeKey();
5137
5137
  const result = writeRunnerInit(prepared, created);
5138
- const { ensureHostKey } = await import('./host-key-5TKBNUZ4.js');
5138
+ const { ensureHostKey } = await import('./host-key-GQFBRX3J.js');
5139
5139
  const hostKey = await ensureHostKey(configPath);
5140
5140
  if (created !== void 0) {
5141
5141
  process.stdout.write(`${C.green}\u2713${C.reset} saved the runner key in ${result.configPath}
@@ -5163,7 +5163,7 @@ ${C.yellow}${result.note}${C.reset}
5163
5163
  To isolate builds in containers instead, run ${C.yellow}${cliInvocation()} runner init --vm${C.reset}.
5164
5164
  `);
5165
5165
  }
5166
- const { runRunnerInstall, RunnerInstallError, RunnerDowngradeError, launcherSummary } = await import('./install-cmd-3DXJJUAA.js');
5166
+ const { runRunnerInstall, RunnerInstallError, RunnerDowngradeError, launcherSummary } = await import('./install-cmd-X5XCUTSX.js');
5167
5167
  let installedLayout = false;
5168
5168
  let noService = "it starts the runner from the install layout, which needs a CLI installed with npm";
5169
5169
  try {
@@ -5195,7 +5195,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
5195
5195
  let serviceUp = false;
5196
5196
  let restart;
5197
5197
  if (installedLayout) {
5198
- const { installServiceCommand } = await import('./command-GQBHC53U.js');
5198
+ const { installServiceCommand } = await import('./command-E5OG5NCH.js');
5199
5199
  const service = await installServiceCommand({
5200
5200
  configPath,
5201
5201
  entryPath: process.argv[1] ?? "",
@@ -5240,10 +5240,10 @@ Next:
5240
5240
  "\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"
5241
5241
  ).action(async (opts) => {
5242
5242
  const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
5243
- const { buildRepositoryImage, RecipeError } = await import('./build-EBQYXL7Y.js');
5243
+ const { buildRepositoryImage, RecipeError } = await import('./build-F5QWH7G5.js');
5244
5244
  const { currentCliBuild } = await import('./cli-build-K56DK4DS.js');
5245
- const { createDockerHost } = await import('./docker-NYAIIX2F.js');
5246
- const { builderSpec } = await import('./builder-WEGLC2F2.js');
5245
+ const { createDockerHost } = await import('./docker-KKE5Q5S2.js');
5246
+ const { builderSpec } = await import('./builder-KDUXCHTY.js');
5247
5247
  const { loadRunnerConfig } = await import('./config-JJ3EO7SB.js');
5248
5248
  const configPath = opts.config ?? defaultRunnerConfigPath();
5249
5249
  const loaded = (() => {
@@ -5255,11 +5255,11 @@ Next:
5255
5255
  })();
5256
5256
  const memory = loaded?.build?.memory ?? "8g";
5257
5257
  try {
5258
- const { ensureRunnerIdentity } = await import('./runner-identity-YYENYKDH.js');
5258
+ const { ensureRunnerIdentity } = await import('./runner-identity-DP577A7S.js');
5259
5259
  await ensureRunnerIdentity(configPath, { log: (line) => console.error(line) }).catch((err) => {
5260
5260
  console.error(`the runner's Docker identity could not be stored: ${err instanceof Error ? err.message : String(err)}`);
5261
5261
  });
5262
- const { imageTargetFor } = await import('./governing-source-PTJ6EAA3.js');
5262
+ const { imageTargetFor } = await import('./governing-source-YPBK4H5H.js');
5263
5263
  const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
5264
5264
  if (!target.ok) {
5265
5265
  if (opts.json) {
@@ -5323,24 +5323,24 @@ Next:
5323
5323
  });
5324
5324
  runnerCmd.command("stop").description("Take no more work; finish running jobs, 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) => {
5325
5325
  const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
5326
- const { requestStop } = await import('./loop-OE32U2IZ.js');
5326
+ const { requestStop } = await import('./loop-3TJKFRN7.js');
5327
5327
  const configPath = opts.config ?? defaultRunnerConfigPath();
5328
- const { runnerImageVersion } = await import('./image-tag-5SJ6ZKT7.js');
5328
+ const { runnerImageVersion } = await import('./image-tag-W4JKVNP4.js');
5329
5329
  await requestStop(configPath, Boolean(opts.now), void 0, { image: runnerImageVersion() !== void 0 });
5330
5330
  });
5331
5331
  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) => {
5332
5332
  const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-JJ3EO7SB.js');
5333
- const { jobsDir, runnerDir } = await import('./paths-ZC6BMWMT.js');
5334
- const { listJobFiles, runnerProcessState } = await import('./loop-OE32U2IZ.js');
5335
- const { renderStatus } = await import('./status-3WC2IGVI.js');
5336
- const { readHousekeepingRecord } = await import('./record-K23IN6QN.js');
5333
+ const { jobsDir, runnerDir } = await import('./paths-6V7572NN.js');
5334
+ const { listJobFiles, runnerProcessState } = await import('./loop-3TJKFRN7.js');
5335
+ const { renderStatus } = await import('./status-GNUOTHRH.js');
5336
+ const { readHousekeepingRecord } = await import('./record-C4ZVSLKV.js');
5337
5337
  const path2 = await import('path');
5338
5338
  const configPath = opts.config ?? defaultRunnerConfigPath();
5339
5339
  const all = listJobFiles(configPath);
5340
5340
  const housekeeping = readHousekeepingRecord(runnerDir(configPath));
5341
- const { readPendingUpdate } = await import('./pending-54HC7MM3.js');
5341
+ const { readPendingUpdate } = await import('./pending-GUHHKO42.js');
5342
5342
  const pendingUpdate = readPendingUpdate(runnerDir(configPath));
5343
- const { readImageStatus } = await import('./image-tag-5SJ6ZKT7.js');
5343
+ const { readImageStatus } = await import('./image-tag-W4JKVNP4.js');
5344
5344
  const image = readImageStatus(runnerDir(configPath));
5345
5345
  let host = "unknown";
5346
5346
  let concurrency = 1;
@@ -5354,7 +5354,7 @@ Next:
5354
5354
  const service = await (async () => {
5355
5355
  if (process.platform !== "linux" || !existsSync("/run/systemd/system")) return void 0;
5356
5356
  const { inspectService, realInspectProbes } = await import('./inspect-6UYAAXH7.js');
5357
- const { DEFAULT_UNIT_NAME } = await import('./install-QSTTBUHX.js');
5357
+ const { DEFAULT_UNIT_NAME } = await import('./install-AFMXH25X.js');
5358
5358
  const facts = inspectService(DEFAULT_UNIT_NAME, path2.dirname(configPath), realInspectProbes());
5359
5359
  return facts === void 0 ? void 0 : { unit: facts.unit, running: facts.mainPid !== void 0, delegated: facts.delegate };
5360
5360
  })();
@@ -5392,8 +5392,8 @@ Next:
5392
5392
  });
5393
5393
  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) => {
5394
5394
  const { defaultRunnerConfigPath } = await import('./config-JJ3EO7SB.js');
5395
- const { listJobFiles } = await import('./loop-OE32U2IZ.js');
5396
- const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-VN2HKDSH.js');
5395
+ const { listJobFiles } = await import('./loop-3TJKFRN7.js');
5396
+ const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-PKNQOJN6.js');
5397
5397
  const configPath = opts.config ?? defaultRunnerConfigPath();
5398
5398
  const item = parseTrackerNumber(itemArg);
5399
5399
  if (item === void 0) {
@@ -5602,7 +5602,7 @@ Self-host deployments also need --app-id: without a key service to resolve the
5602
5602
  caller from the bearer token, the gateway answers 401 without that header.
5603
5603
  `
5604
5604
  ).action(async (opts) => {
5605
- const { runMcpInstall, handleMcpInstallError, McpInstallError } = await import('./mcp-install-cmd-GGWB3JJ2.js');
5605
+ const { runMcpInstall, handleMcpInstallError, McpInstallError } = await import('./mcp-install-cmd-LD7KYAOP.js');
5606
5606
  try {
5607
5607
  if (opts.transport !== void 0 && opts.transport !== "stdio" && opts.transport !== "http") {
5608
5608
  throw new McpInstallError(`--transport must be "stdio" or "http", got "${opts.transport}"`);
@@ -5624,7 +5624,7 @@ caller from the bearer token, the gateway answers 401 without that header.
5624
5624
  "after",
5625
5625
  "\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"
5626
5626
  ).action(async (opts) => {
5627
- const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-U5N5DK3H.js');
5627
+ const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-MJIJHSQ6.js');
5628
5628
  try {
5629
5629
  await runMcpServe({ url: opts.url, appId: opts.appId });
5630
5630
  } catch (err) {