@outerlayer/cli 0.34.0-next.20261024180339 → 0.34.0-next.20261024231715

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 (94) hide show
  1. package/README.md +5 -5
  2. package/dist/{agent-setup-FBAT5LGX.js → agent-setup-HEJM3D3V.js} +9 -9
  3. package/dist/build-info.json +1 -1
  4. package/dist/{check-HCKDHD2R.js → check-OOUGS65D.js} +20 -20
  5. package/dist/{chunk-SVLFZLTE.js → chunk-272AKVRP.js} +5 -5
  6. package/dist/{chunk-B5MSDF5B.js → chunk-2AIOOU3A.js} +4 -4
  7. package/dist/{chunk-BTHH5H5H.js → chunk-3IH6K7KG.js} +2 -2
  8. package/dist/{chunk-XFAJQZN2.js → chunk-4P6QGMPN.js} +2 -2
  9. package/dist/{chunk-43ZOV4OR.js → chunk-4Y54SQXH.js} +10 -10
  10. package/dist/{chunk-MHGIN2X6.js → chunk-5HZGLLNW.js} +2 -2
  11. package/dist/{chunk-74Q24R3B.js → chunk-5QBUX5YZ.js} +7 -7
  12. package/dist/{chunk-6AQLRSYU.js → chunk-62LXQM7U.js} +2 -2
  13. package/dist/{chunk-SHIGGHZO.js → chunk-65AKMFBH.js} +2 -2
  14. package/dist/{chunk-OHJDH5GV.js → chunk-6NUPXDAA.js} +1 -1
  15. package/dist/{chunk-ZADIXMKT.js → chunk-7WM7K2DY.js} +1 -1
  16. package/dist/{chunk-XLJHFZRL.js → chunk-ACRRO3MB.js} +7 -7
  17. package/dist/{chunk-OLCIPTST.js → chunk-AP2K4LPI.js} +4 -4
  18. package/dist/{chunk-YPCDDQFU.js → chunk-DQ6YO7FH.js} +1 -1
  19. package/dist/{chunk-5HLA7KPK.js → chunk-E4ASIOVL.js} +1 -1
  20. package/dist/{chunk-NVDPSH72.js → chunk-EE2ZZGQV.js} +1 -1
  21. package/dist/{chunk-GWF3ZRUX.js → chunk-EN3YWO7Q.js} +1 -1
  22. package/dist/{chunk-CQRPR4WZ.js → chunk-FGXT5OXS.js} +56 -126
  23. package/dist/{chunk-3KT2IWV3.js → chunk-FVKH3PMV.js} +49 -9
  24. package/dist/{chunk-UF2FU3CM.js → chunk-JWNH4ZTF.js} +2 -2
  25. package/dist/{chunk-2G7PJAJZ.js → chunk-K5Q6T7SE.js} +1 -1
  26. package/dist/{chunk-TIRHZC2M.js → chunk-NKOM4JKY.js} +2 -2
  27. package/dist/{chunk-B44BFR2Q.js → chunk-O6DYCIVW.js} +3 -3
  28. package/dist/{chunk-YREGBU3O.js → chunk-QDVGOMSC.js} +1 -1
  29. package/dist/{chunk-5XZ6BUPH.js → chunk-QMWUPRYQ.js} +1 -1
  30. package/dist/{chunk-HMCBX3PL.js → chunk-RCRE42V6.js} +1 -1
  31. package/dist/{chunk-R2CLQJA2.js → chunk-TDAQHYM4.js} +1 -1
  32. package/dist/{chunk-SMAZA7DM.js → chunk-XFFUXXI4.js} +2 -2
  33. package/dist/{chunk-TFKROYY2.js → chunk-YEVPRO7L.js} +3 -3
  34. package/dist/{chunk-HBVHRC3A.js → chunk-YGSY2NWU.js} +2 -2
  35. package/dist/{chunk-PBIYM2Z6.js → chunk-YIBFGAYI.js} +2 -2
  36. package/dist/{chunk-HIGP4WOC.js → chunk-Z4KWHSO4.js} +3 -3
  37. package/dist/{chunk-ZGB4ZJ5E.js → chunk-ZQSANKS4.js} +1 -1
  38. package/dist/{chunk-5WCBFLES.js → chunk-ZW6L275N.js} +7 -7
  39. package/dist/{claude-launcher-YXRS4EZE.js → claude-launcher-MORG66PJ.js} +4 -4
  40. package/dist/{cli-ADIMCYPF.js → cli-XI7RUSC5.js} +90 -94
  41. package/dist/{command-YQBQDIAM.js → command-BJSHY6OB.js} +10 -10
  42. package/dist/{connect-cmd-42JHZKWN.js → connect-cmd-YAUOCX4X.js} +4 -4
  43. package/dist/{container-start-W4VEGRL5.js → container-start-QADK3YGL.js} +17 -17
  44. package/dist/{context-cleanup-YGWYIFFV.js → context-cleanup-LUBEZB3L.js} +2 -2
  45. package/dist/{context-show-cmd-LIWHRWVT.js → context-show-cmd-VHY3OBIA.js} +5 -5
  46. package/dist/{control-plane-launch-AXBWT5CC.js → control-plane-launch-QSBWTA2V.js} +5 -5
  47. package/dist/{doctor-AZZJBJYO.js → doctor-UR76MCGI.js} +11 -11
  48. package/dist/{emit-artifact-cmd-NU5JURAA.js → emit-artifact-cmd-DP2EQ54N.js} +9 -9
  49. package/dist/{emit-cmd-A4CB7BEC.js → emit-cmd-7NMNKDK7.js} +5 -5
  50. package/dist/{emit-criteria-cmd-RAU3PDEK.js → emit-criteria-cmd-TTFBN6RK.js} +6 -6
  51. package/dist/{emit-demo-cmd-524A54D5.js → emit-demo-cmd-Z7YGLEBJ.js} +10 -10
  52. package/dist/{emit-finding-cmd-LE3HFQWL.js → emit-finding-cmd-IQRD3J2X.js} +6 -6
  53. package/dist/{emit-result-cmd-XT2VEPAJ.js → emit-result-cmd-GIWB6UHH.js} +8 -8
  54. package/dist/{emit-step-cmd-LXOKBFQE.js → emit-step-cmd-PU5TTU6C.js} +6 -6
  55. package/dist/{findings-cmd-O5HUK26I.js → findings-cmd-7J5SHCUO.js} +6 -6
  56. package/dist/{fleet-readiness-VAKMSSWI.js → fleet-readiness-G63D76EX.js} +6 -6
  57. package/dist/{governing-source-FNSH4V4A.js → governing-source-DLESDP6T.js} +9 -9
  58. package/dist/{hook-fast-WENTLDMA.js → hook-fast-VQXRDS6E.js} +1 -1
  59. package/dist/index.js +4 -4
  60. package/dist/{init-RUIWHKLE.js → init-67R7LO4C.js} +10 -10
  61. package/dist/{init-LQDKX2XL.js → init-KSXU4PA7.js} +10 -10
  62. package/dist/{init-cmd-2OTTULTI.js → init-cmd-MNOVMADM.js} +14 -14
  63. package/dist/{init-update-TN2W4EN6.js → init-update-6KEXRCJH.js} +13 -13
  64. package/dist/{layout-NAPG4SX2.js → layout-7B3O3FT3.js} +3 -3
  65. package/dist/{loop-X3ANDLQU.js → loop-KUEOPBKX.js} +20 -20
  66. package/dist/{machine-IEYKRHRK.js → machine-EQEAPT76.js} +10 -10
  67. package/dist/{machine-skills-2TT3RXMJ.js → machine-skills-3FEGR376.js} +3 -3
  68. package/dist/{runner-key-QKZZTKLY.js → runner-key-ML7R33HF.js} +10 -10
  69. package/dist/{session-sender-IH44FURK.js → session-sender-A43GZQ7T.js} +9 -9
  70. package/dist/{spec-cmd-2LRTOTAO.js → spec-cmd-VVUJZSG2.js} +7 -7
  71. package/dist/{starter-pack-5D4BANFU.js → starter-pack-LEL3Q2DB.js} +4 -4
  72. package/dist/{status-6ISCZDBX.js → status-4G6K7I2C.js} +15 -15
  73. package/dist/{sync-cmd-MIID2ANV.js → sync-cmd-ZEC65ABJ.js} +8 -8
  74. package/dist/{update-steps-4M2GIB4A.js → update-steps-XLO7734I.js} +16 -16
  75. package/dist/{watch-K5UUKCPB.js → watch-QB4AMWR3.js} +8 -8
  76. package/dist/{work-claim-cmd-2LD2JQKI.js → work-claim-cmd-6W3GBHRS.js} +8 -8
  77. package/dist/{work-cmd-NR53YCXJ.js → work-cmd-LTZXOPPN.js} +6 -6
  78. package/dist/{work-comment-cmd-PC4HNM45.js → work-comment-cmd-LDZBUO6M.js} +7 -7
  79. package/dist/{work-demo-cmd-S5EJXBVH.js → work-demo-cmd-77LISWQ3.js} +6 -6
  80. package/dist/{work-logs-cmd-5F6MDBLQ.js → work-logs-cmd-FK7HE7PC.js} +6 -6
  81. package/dist/{work-open-pr-cmd-SWVFDSMY.js → work-open-pr-cmd-WVONEHZL.js} +7 -7
  82. package/dist/{work-pr-cmd-DXW4RXG4.js → work-pr-cmd-6IPXWJEH.js} +6 -6
  83. package/dist/{work-proofs-cmd-UVTSPFLL.js → work-proofs-cmd-TGIAP5IO.js} +7 -7
  84. package/dist/work-proofs-record-XPAU7N57.js +2382 -0
  85. package/dist/{work-stop-cmd-HL6FZL5X.js → work-stop-cmd-UJ45EV3A.js} +6 -6
  86. package/package.json +2 -1
  87. package/skill-pack/maintained/outerlayer-amend/SKILL.md +1 -2
  88. package/skill-pack/maintained/outerlayer-build/SKILL.md +4 -3
  89. package/skill-pack/maintained/outerlayer-build/references/agent-briefs.md +33 -28
  90. package/skill-pack/maintained/outerlayer-build/references/evidence.md +22 -20
  91. package/skill-pack/maintained/outerlayer-evidence/SKILL.md +1 -1
  92. package/dist/chunk-RT6VNM3S.js +0 -148
  93. package/dist/work-proofs-init-GNGI7PZU.js +0 -35
  94. package/dist/work-proofs-record-HTWSMEDG.js +0 -402
@@ -1,44 +1,44 @@
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-5WCBFLES.js';
4
- import './chunk-OLCIPTST.js';
5
- import './chunk-SVLFZLTE.js';
3
+ import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-ZW6L275N.js';
4
+ import './chunk-AP2K4LPI.js';
5
+ import './chunk-272AKVRP.js';
6
6
  import './chunk-KT4CN6OU.js';
7
- import './chunk-XFAJQZN2.js';
8
- import { verifiedTrackerNames, TRACKERS } from './chunk-HIGP4WOC.js';
7
+ import './chunk-4P6QGMPN.js';
8
+ import { verifiedTrackerNames, TRACKERS } from './chunk-Z4KWHSO4.js';
9
9
  import './chunk-IP7BIBXJ.js';
10
- import './chunk-OHJDH5GV.js';
11
- import './chunk-NVDPSH72.js';
10
+ import './chunk-6NUPXDAA.js';
11
+ import './chunk-EE2ZZGQV.js';
12
12
  import './chunk-MECW77XP.js';
13
13
  import './chunk-6ZFY2L2T.js';
14
- import { FIRST_VERSION_READING_AGENTS_SKILLS } from './chunk-TIRHZC2M.js';
14
+ import { FIRST_VERSION_READING_AGENTS_SKILLS } from './chunk-NKOM4JKY.js';
15
15
  import './chunk-Y5YCX6AL.js';
16
16
  import './chunk-G2JWZDFA.js';
17
17
  import { C, warnDeprecated, API_KEY_FLAG_DEPRECATION, NO_COLOR_FLAG, stripNoColor } from './chunk-ANPNT6PM.js';
18
- import './chunk-UF2FU3CM.js';
18
+ import './chunk-JWNH4ZTF.js';
19
19
  import './chunk-6RKD7YZ6.js';
20
20
  import './chunk-PJDQPF5N.js';
21
21
  import './chunk-SOI6K5DY.js';
22
22
  import './chunk-PA6CK6WQ.js';
23
23
  import './chunk-BALIE3BA.js';
24
- import { hookFiredMarkerPath, installedCliDistDir } from './chunk-SHIGGHZO.js';
24
+ import { hookFiredMarkerPath, installedCliDistDir } from './chunk-65AKMFBH.js';
25
25
  import './chunk-ZJSNLVCE.js';
26
26
  import './chunk-I7RZHMXW.js';
27
27
  import './chunk-BKO6JEZI.js';
28
28
  import './chunk-HCVLP7XA.js';
29
29
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
30
- import './chunk-HMCBX3PL.js';
31
- import './chunk-ZGB4ZJ5E.js';
30
+ import './chunk-RCRE42V6.js';
31
+ import './chunk-ZQSANKS4.js';
32
32
  import './chunk-5BHIBJDA.js';
33
33
  import './chunk-CDDED64E.js';
34
34
  import { resolveVersion, resolvePackageVersion } from './chunk-RA3O54FC.js';
35
35
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
36
36
  import { cliInvocation, packageRunnerOf } from './chunk-CRB3POP4.js';
37
37
  import { settingsPath, readSettings, SettingsParseError, listHookCandidates, PORTABLE_BIN, wrapHooks, writeSettings, unwrapHooks, REGISTERED_EVENTS, removeHooks, removeStatusline, cliBinResolvable, mergeHooks, repointWrappedHooks, AUTO_WRAP_EVENTS, mergeStatusline } from './chunk-URIZRCRY.js';
38
- import './chunk-YPCDDQFU.js';
38
+ import './chunk-DQ6YO7FH.js';
39
39
  import { cloneIsGoverned } from './chunk-YQR6E6OV.js';
40
40
  import { removeJournalHooks, removePreCommitGuardHook } from './chunk-TUSYOL2O.js';
41
- import './chunk-CQRPR4WZ.js';
41
+ import './chunk-FGXT5OXS.js';
42
42
  import './chunk-EOTMDIYC.js';
43
43
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
44
44
  import './chunk-HACGUL52.js';
@@ -3659,14 +3659,14 @@ function apiKeyOption() {
3659
3659
  return new Option("--api-key <key>", `deprecated: use \`${cliInvocation()} login\` or OUTERLAYER_API_KEY`).hideHelp();
3660
3660
  }
3661
3661
  async function installStarterPackInRepo() {
3662
- const { installStarterPack, formatStarterPackOutput } = await import('./starter-pack-5D4BANFU.js');
3662
+ const { installStarterPack, formatStarterPackOutput } = await import('./starter-pack-LEL3Q2DB.js');
3663
3663
  const cwd = process.cwd();
3664
3664
  let repoRoot = cwd;
3665
3665
  try {
3666
3666
  repoRoot = execFileSync("git", ["rev-parse", "--show-toplevel"], { cwd, encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }).trim() || cwd;
3667
3667
  } catch {
3668
3668
  }
3669
- const { declareAgentsMdLayout, isAgentsMdLayout, skillsBaseFor } = await import('./layout-NAPG4SX2.js');
3669
+ const { declareAgentsMdLayout, isAgentsMdLayout, skillsBaseFor } = await import('./layout-7B3O3FT3.js');
3670
3670
  const fresh = !isAgentsMdLayout(repoRoot) && !existsSync(join(repoRoot, ".outerlayer/skills")) && !existsSync(join(repoRoot, ".outerlayer/AGENTS.md"));
3671
3671
  const result = installStarterPack({ repoRoot, base: fresh ? ".agents/skills" : skillsBaseFor(repoRoot) });
3672
3672
  if (fresh) declareAgentsMdLayout(repoRoot);
@@ -3792,7 +3792,7 @@ ${starter.output}`),
3792
3792
  }
3793
3793
  }
3794
3794
  async function installMachineSkillsForSetup() {
3795
- const { setupMachineSkills } = await import('./machine-skills-2TT3RXMJ.js');
3795
+ const { setupMachineSkills } = await import('./machine-skills-3FEGR376.js');
3796
3796
  const result = setupMachineSkills(homeFromEnv());
3797
3797
  for (const failure of result.failures) process.stderr.write(`${C.yellow}!${C.reset} Could not write a maintained skill: ${failure}
3798
3798
  `);
@@ -3800,7 +3800,7 @@ async function installMachineSkillsForSetup() {
3800
3800
  ` : "";
3801
3801
  }
3802
3802
  async function realConnectDepsForCwd() {
3803
- const { realConnectDeps } = await import('./connect-cmd-42JHZKWN.js');
3803
+ const { realConnectDeps } = await import('./connect-cmd-YAUOCX4X.js');
3804
3804
  const { resolveRepoIdentity } = await import('./dist-ZAHCXYSG.js');
3805
3805
  return {
3806
3806
  ...realConnectDeps(),
@@ -3818,7 +3818,7 @@ function buildProgram(argv = process.argv) {
3818
3818
  const program2 = new Command();
3819
3819
  program2.name(cliInvocation()).description("OuterLayer \u2014 see what your coding agents actually do").enablePositionalOptions().version(resolveVersion()).hook("preAction", async (_root, command) => {
3820
3820
  if (command.opts().apiKey !== void 0) warnDeprecated(API_KEY_FLAG_DEPRECATION);
3821
- const { machineRefreshSkipped, refreshMachineSkills } = await import('./machine-skills-2TT3RXMJ.js');
3821
+ const { machineRefreshSkipped, refreshMachineSkills } = await import('./machine-skills-3FEGR376.js');
3822
3822
  const names = [];
3823
3823
  for (let at = command; at?.parent; at = at.parent) names.push(at.name());
3824
3824
  if (!machineRefreshSkipped(names, command._hidden === true, argv)) refreshMachineSkills(homeFromEnv());
@@ -3875,8 +3875,8 @@ build, ../outerlayer-build/SKILL.md becomes ~/.agents/skills/outerlayer-build/SK
3875
3875
  what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocation() + " doctor` reports the same\nstates under Starter files.\n"
3876
3876
  ).action(async (opts) => {
3877
3877
  if (opts.update || opts.dryRun) {
3878
- const { runInitUpdateWithFleet, formatInitUpdate, updateFlagProblem } = await import('./init-update-TN2W4EN6.js');
3879
- const { fleetReadiness } = await import('./fleet-readiness-VAKMSSWI.js');
3878
+ const { runInitUpdateWithFleet, formatInitUpdate, updateFlagProblem } = await import('./init-update-6KEXRCJH.js');
3879
+ const { fleetReadiness } = await import('./fleet-readiness-G63D76EX.js');
3880
3880
  const problem = updateFlagProblem(opts);
3881
3881
  if (problem !== void 0) {
3882
3882
  fail(problem);
@@ -3893,7 +3893,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
3893
3893
  }
3894
3894
  let starterTemplate;
3895
3895
  if (opts.template !== void 0) {
3896
- const { assertKnownTemplate, StarterPackError } = await import('./starter-pack-5D4BANFU.js');
3896
+ const { assertKnownTemplate, StarterPackError } = await import('./starter-pack-LEL3Q2DB.js');
3897
3897
  try {
3898
3898
  assertKnownTemplate(opts.template);
3899
3899
  } catch (err) {
@@ -3927,13 +3927,13 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
3927
3927
  if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
3928
3928
  `);
3929
3929
  }
3930
- const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-2OTTULTI.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
3930
+ const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-MNOVMADM.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
3931
3931
  if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
3932
3932
  else process.stdout.write(outcome.text + skillsLine + (shell?.text ?? ""));
3933
3933
  return;
3934
3934
  }
3935
3935
  await installMachineSkillsForSetup();
3936
- const { runInitCommand } = await import('./init-cmd-2OTTULTI.js');
3936
+ const { runInitCommand } = await import('./init-cmd-MNOVMADM.js');
3937
3937
  const code = await runInitCommand(
3938
3938
  { json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
3939
3939
  {
@@ -3945,7 +3945,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
3945
3945
  return { ok, text, detail };
3946
3946
  },
3947
3947
  runAgentSetup: async () => {
3948
- const { runAgentSetup } = await import('./agent-setup-FBAT5LGX.js');
3948
+ const { runAgentSetup } = await import('./agent-setup-HEJM3D3V.js');
3949
3949
  return runAgentSetup({ cwd: process.cwd(), skillsLink: opts.skillsLink !== false });
3950
3950
  },
3951
3951
  runDoctorChecks: gatherDoctorChecks,
@@ -3954,7 +3954,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
3954
3954
  shellPath: process.env.SHELL,
3955
3955
  interactive: Boolean(process.stdin.isTTY && process.stderr.isTTY) && opts.json !== true,
3956
3956
  ask: async () => {
3957
- const { promptOnTerminal } = await import('./connect-cmd-42JHZKWN.js');
3957
+ const { promptOnTerminal } = await import('./connect-cmd-YAUOCX4X.js');
3958
3958
  const answer = await promptOnTerminal({
3959
3959
  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.`,
3960
3960
  options: [
@@ -3993,7 +3993,7 @@ linked (true, false, or null when it could not be checked) and, when false,
3993
3993
  linkUrl.
3994
3994
  `
3995
3995
  ).action(async (opts) => {
3996
- const { runConnectCommand } = await import('./connect-cmd-42JHZKWN.js');
3996
+ const { runConnectCommand } = await import('./connect-cmd-YAUOCX4X.js');
3997
3997
  const code = await runConnectCommand({ factory: opts.factory, json: opts.json }, await realConnectDepsForCwd(), {
3998
3998
  stdout: process.stdout,
3999
3999
  stderr: process.stderr
@@ -4071,7 +4071,7 @@ code is 1: revoke the token on /profile/security.
4071
4071
  else fail(found.reason);
4072
4072
  return;
4073
4073
  }
4074
- const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-MIID2ANV.js');
4074
+ const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-ZEC65ABJ.js');
4075
4075
  try {
4076
4076
  const result = await runSync({
4077
4077
  url: opts.url,
@@ -4102,7 +4102,7 @@ code is 1: revoke the token on /profile/security.
4102
4102
  if (invokedCommandToken(argv) === "watch") {
4103
4103
  warnDeprecated(`\`${cliInvocation()} watch\` is now \`${cliInvocation()} daemon\`; the old name will be removed in a future release.`);
4104
4104
  }
4105
- const { runWatch } = await import('./watch-K5UUKCPB.js');
4105
+ const { runWatch } = await import('./watch-QB4AMWR3.js');
4106
4106
  await runWatch({ once: opts.once });
4107
4107
  });
4108
4108
  program2.command("hook <event>", { hidden: true }).description("capture-hook fast path, installed by `init`").action(() => {
@@ -4192,7 +4192,7 @@ code is 1: revoke the token on /profile/security.
4192
4192
  process.exitCode = await runBuildCommand({ dir: opts.dir, argv: command });
4193
4193
  });
4194
4194
  program2.command("session-sender", { hidden: true }).description("stream a runner build's sessions to its work item while the build runs").action(async () => {
4195
- const { runSessionSender } = await import('./session-sender-IH44FURK.js');
4195
+ const { runSessionSender } = await import('./session-sender-A43GZQ7T.js');
4196
4196
  try {
4197
4197
  await runSessionSender();
4198
4198
  } catch (err) {
@@ -4235,7 +4235,7 @@ async function runCli(processArgv) {
4235
4235
  await buildProgram(argv).parseAsync(argv);
4236
4236
  }
4237
4237
  async function compileContext(opts) {
4238
- const { runEmit, EmitError } = await import('./emit-cmd-A4CB7BEC.js');
4238
+ const { runEmit, EmitError } = await import('./emit-cmd-7NMNKDK7.js');
4239
4239
  try {
4240
4240
  const result = runEmit({ cwd: opts.dir, check: opts.check, json: opts.json });
4241
4241
  if (result.exitCode !== 0) process.exitCode = result.exitCode;
@@ -4288,7 +4288,7 @@ Compiling .outerlayer/ moved to \`${cliInvocation()} context emit\`.
4288
4288
  await compileContext({ dir: opts.dir, check: opts.check, json: opts.json });
4289
4289
  return;
4290
4290
  }
4291
- const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-XT2VEPAJ.js');
4291
+ const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-GIWB6UHH.js');
4292
4292
  try {
4293
4293
  const result = await runEmitResult({
4294
4294
  name,
@@ -4339,7 +4339,7 @@ everywhere, bytes and deep link untouched; a still-queued one is cancelled
4339
4339
  locally so it never uploads. One correction can retire several duplicates.
4340
4340
  `
4341
4341
  ).action(async (file, opts) => {
4342
- const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-NU5JURAA.js');
4342
+ const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-DP2EQ54N.js');
4343
4343
  let pr;
4344
4344
  if (opts.pr !== void 0) {
4345
4345
  pr = parseTrackerNumber(opts.pr);
@@ -4395,7 +4395,7 @@ its criterion, and the new record retires the old record. The id must be the ite
4395
4395
  as \`work demo --item <n> --json\` prints it.
4396
4396
  `
4397
4397
  ).action(async (manifest, opts) => {
4398
- const { runEmitDemo, EmitDemoError } = await import('./emit-demo-cmd-524A54D5.js');
4398
+ const { runEmitDemo, EmitDemoError } = await import('./emit-demo-cmd-Z7YGLEBJ.js');
4399
4399
  let item;
4400
4400
  if (opts.item !== void 0) {
4401
4401
  item = parseTrackerNumber(opts.item);
@@ -4465,7 +4465,7 @@ recent events with their ids. --find <text> searches all of them.
4465
4465
  item that session was launched for is used automatically.
4466
4466
  `
4467
4467
  ).action(async (opts) => {
4468
- const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-LE3HFQWL.js');
4468
+ const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-IQRD3J2X.js');
4469
4469
  try {
4470
4470
  refuseRemovedFindingFlags(opts);
4471
4471
  const result = await runEmitFinding({
@@ -4532,7 +4532,7 @@ the whole batch. "untimed": true records one with no time on purpose.
4532
4532
  that session was launched for is used automatically.
4533
4533
  `
4534
4534
  ).action(async (file, opts) => {
4535
- const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-LE3HFQWL.js');
4535
+ const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-IQRD3J2X.js');
4536
4536
  try {
4537
4537
  const result = await runEmitFindings({
4538
4538
  file,
@@ -4567,7 +4567,7 @@ command, the command exits 0, and \`sync\` sends it later. If the gateway refuse
4567
4567
  the step, the command prints why and exits 1.
4568
4568
  `
4569
4569
  ).action(async (name, opts) => {
4570
- const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-LXOKBFQE.js');
4570
+ const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-PU5TTU6C.js');
4571
4571
  try {
4572
4572
  await runEmitStep({
4573
4573
  name,
@@ -4610,7 +4610,7 @@ of the item, and a (proof: <kind>) annotation names its proof.
4610
4610
  ${cliInvocation()} emit criteria acceptance/412-login.md --item 412
4611
4611
  `
4612
4612
  ).action(async (file, opts) => {
4613
- const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-RAU3PDEK.js');
4613
+ const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-TTFBN6RK.js');
4614
4614
  try {
4615
4615
  const result = await runEmitCriteria({
4616
4616
  file,
@@ -4634,9 +4634,9 @@ function registerSpecCommands(program2) {
4634
4634
  const specCmd = program2.command("spec").description("Find, file and edit the issue a spec lives in, in your factory's tracker");
4635
4635
  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)");
4636
4636
  const run = async (action) => {
4637
- const { WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4637
+ const { WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4638
4638
  try {
4639
- await action(await import('./spec-cmd-2LRTOTAO.js'));
4639
+ await action(await import('./spec-cmd-VVUJZSG2.js'));
4640
4640
  } catch (err) {
4641
4641
  if (err instanceof WorkCommandError) {
4642
4642
  fail(err.message);
@@ -4671,7 +4671,7 @@ Prints each problem the item covers with its id, its reports and its result.
4671
4671
  session was launched for is used.
4672
4672
  `
4673
4673
  ).action(async (opts) => {
4674
- const { runFindingsShow, FindingsCommandError } = await import('./findings-cmd-O5HUK26I.js');
4674
+ const { runFindingsShow, FindingsCommandError } = await import('./findings-cmd-7J5SHCUO.js');
4675
4675
  try {
4676
4676
  const result = await runFindingsShow({
4677
4677
  item: opts.item,
@@ -4699,7 +4699,7 @@ Give exactly one of --fixed and --not-fixed, and a --note. Run it again for the
4699
4699
  problem to replace the earlier result. A problem the item does not cover is refused.
4700
4700
  `
4701
4701
  ).action(async (problem, opts) => {
4702
- const { runFindingsResult, FindingsCommandError } = await import('./findings-cmd-O5HUK26I.js');
4702
+ const { runFindingsResult, FindingsCommandError } = await import('./findings-cmd-7J5SHCUO.js');
4703
4703
  try {
4704
4704
  const result = await runFindingsResult({
4705
4705
  problem,
@@ -4740,7 +4740,7 @@ takes it, and prints the line that starts your session on it. That
4740
4740
  session links itself and holds the item's lease while it works.
4741
4741
  `
4742
4742
  ).action(async (opts) => {
4743
- const { runWorkBuild, WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4743
+ const { runWorkBuild, WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4744
4744
  try {
4745
4745
  await runWorkBuild(opts);
4746
4746
  } catch (err) {
@@ -4763,7 +4763,7 @@ renews that session's own 20-minute lease, unless --no-lease or
4763
4763
  --ended is given, or another worker already holds a live one.
4764
4764
  `
4765
4765
  ).action(async (number, opts) => {
4766
- const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4766
+ const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4767
4767
  try {
4768
4768
  await runWorkLinkSession({ ...opts, number, noLease: opts.lease === false, logFailures: opts.logFailures === true });
4769
4769
  } catch (err) {
@@ -4787,8 +4787,8 @@ criterion's new proof; --ready hands the thread back to a person. At
4787
4787
  most one action flag may be given.
4788
4788
  `
4789
4789
  ).action(async (opts) => {
4790
- const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-PC4HNM45.js');
4791
- const { WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4790
+ const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-LDZBUO6M.js');
4791
+ const { WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4792
4792
  try {
4793
4793
  await runWorkComment(opts);
4794
4794
  } catch (err) {
@@ -4809,8 +4809,8 @@ criterion that carries proof or a comment, each with who is waiting
4809
4809
  on whom next.
4810
4810
  `
4811
4811
  ).action(async (opts) => {
4812
- const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-PC4HNM45.js');
4813
- const { WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4812
+ const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-LDZBUO6M.js');
4813
+ const { WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4814
4814
  try {
4815
4815
  await runWorkThreads(opts);
4816
4816
  } catch (err) {
@@ -4834,8 +4834,8 @@ still running, or that an older runner released, has no log and the
4834
4834
  command exits 1.
4835
4835
  `
4836
4836
  ).action(async (opts) => {
4837
- const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-5F6MDBLQ.js');
4838
- const { WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4837
+ const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-FK7HE7PC.js');
4838
+ const { WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4839
4839
  try {
4840
4840
  await runWorkLogs(opts);
4841
4841
  } catch (err) {
@@ -4858,8 +4858,8 @@ item is not built again until a new build request. Exits 1 when no host
4858
4858
  build is running for the item.
4859
4859
  `
4860
4860
  ).action(async (opts) => {
4861
- const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-HL6FZL5X.js');
4862
- const { WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4861
+ const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-UJ45EV3A.js');
4862
+ const { WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4863
4863
  try {
4864
4864
  await runWorkStop(opts);
4865
4865
  } catch (err) {
@@ -4880,8 +4880,8 @@ Prints the item's newest live demo record: its artifact id, the commit it was re
4880
4880
  test file that recorded it. With --json, prints { "demo": null } for an item with no demo.
4881
4881
  `
4882
4882
  ).action(async (opts) => {
4883
- const { runWorkDemo, WorkDemoCommandError } = await import('./work-demo-cmd-S5EJXBVH.js');
4884
- const { WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4883
+ const { runWorkDemo, WorkDemoCommandError } = await import('./work-demo-cmd-77LISWQ3.js');
4884
+ const { WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4885
4885
  try {
4886
4886
  await runWorkDemo(opts);
4887
4887
  } catch (err) {
@@ -4902,7 +4902,7 @@ deletes anything \u2014 the item is removed from Work only once no
4902
4902
  live addition remains on it.
4903
4903
  `
4904
4904
  ).action(async (opts) => {
4905
- const { runWorkRemove, WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4905
+ const { runWorkRemove, WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4906
4906
  try {
4907
4907
  await runWorkRemove(opts);
4908
4908
  } catch (err) {
@@ -4914,7 +4914,7 @@ live addition remains on it.
4914
4914
  }
4915
4915
  });
4916
4916
  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) => {
4917
- const { runWorkStatus, WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4917
+ const { runWorkStatus, WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4918
4918
  try {
4919
4919
  await runWorkStatus(opts);
4920
4920
  } catch (err) {
@@ -4925,12 +4925,11 @@ live addition remains on it.
4925
4925
  throw err;
4926
4926
  }
4927
4927
  });
4928
- workCmd.command("proofs").description("List each proof as current, out of date or missing; write or run the recipe").option("--item <number>", "the item's number inside this factory (default: OUTERLAYER_WORK)").option("--json", "machine-readable JSON output").option("--init", "write the proof recipe and setup file from the item's criteria").option("--record", "run the recipe committed at HEAD and emit each proof that is not current").option("--comment", "with --record, comment on the general thread with each proof not current").option("--pr <number>", "the item's own pull request, when it links several in this repository").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)").addHelpText(
4928
+ workCmd.command("proofs").description("List each proof as current, out of date or missing; --record records them").option("--item <number>", "the item's number inside this factory (default: OUTERLAYER_WORK)").option("--json", "machine-readable JSON output").option("--record", "rerun the tests that name each stale proof and emit their output").option("--comment", "with --record, comment on the general thread with each proof not current").option("--pr <number>", "the item's own pull request, when it links several in this repository").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)").addHelpText(
4929
4929
  "after",
4930
4930
  `
4931
4931
  ${cliInvocation()} work proofs --item 7
4932
4932
  ${cliInvocation()} work proofs --json
4933
- ${cliInvocation()} work proofs --init
4934
4933
  ${cliInvocation()} work proofs --record --comment
4935
4934
 
4936
4935
  A proof is current when it was recorded at this checkout's HEAD, or at the head of a
@@ -4939,22 +4938,19 @@ gateway has the artifacts you just emitted. Test proofs are not listed.
4939
4938
  Exits 0 when every listed proof is current, 1 when any is out of date or missing,
4940
4939
  and 2 when it cannot tell.
4941
4940
 
4942
- --init writes .outerlayer/proofs/<item key>.yaml and, when absent, .outerlayer/proofs/setup.yaml.
4943
- It never changes a file that exists. Fill in each command, then commit both files.
4944
- --record reads both files from the HEAD commit, runs setup, runs each entry whose proofs
4945
- are not current, emits each proof at HEAD, runs teardown, then lists the proofs.
4941
+ --record reads .outerlayer-proofs.yaml from the HEAD commit and finds the test files at HEAD
4942
+ that hold the id of each proof that is not current. It runs setup, then each runner once with
4943
+ its files, then teardown. A test writes <criterion id>.<ext> under $OUTERLAYER_PROOF_OUT, and
4944
+ --record emits it at HEAD. It lists the proofs last. It stops at once if a tracked file
4945
+ differs from HEAD.
4946
4946
  `
4947
4947
  ).action(async (opts) => {
4948
- if (opts.init && opts.record) {
4949
- fail("--init and --record exclude each other. Run --init, edit and commit the recipe, then run --record.");
4950
- return;
4951
- }
4952
4948
  if (opts.comment && !opts.record) {
4953
4949
  fail("--comment needs --record.");
4954
4950
  return;
4955
4951
  }
4956
- if (opts.pr !== void 0 && !opts.init && !opts.record) {
4957
- fail("--pr needs --init or --record.");
4952
+ if (opts.pr !== void 0 && !opts.record) {
4953
+ fail("--pr needs --record.");
4958
4954
  return;
4959
4955
  }
4960
4956
  const pr = opts.pr === void 0 ? void 0 : parseTrackerNumber(opts.pr);
@@ -4962,11 +4958,11 @@ are not current, emits each proof at HEAD, runs teardown, then lists the proofs.
4962
4958
  fail(trackerNumberError("--pr", opts.pr));
4963
4959
  return;
4964
4960
  }
4965
- const { runWorkProofsCommand } = await import('./work-proofs-cmd-UVTSPFLL.js');
4961
+ const { runWorkProofsCommand } = await import('./work-proofs-cmd-TGIAP5IO.js');
4966
4962
  await runWorkProofsCommand({ ...opts, ...pr === void 0 ? {} : { pr } });
4967
4963
  });
4968
4964
  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) => {
4969
- const { runWorkList, WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
4965
+ const { runWorkList, WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
4970
4966
  try {
4971
4967
  await runWorkList(opts);
4972
4968
  } catch (err) {
@@ -4987,7 +4983,7 @@ by a different key is refused; claiming again with the same key extends
4987
4983
  it. --host is a label only.
4988
4984
  `
4989
4985
  ).action(async (opts) => {
4990
- const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-2LD2JQKI.js');
4986
+ const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-6W3GBHRS.js');
4991
4987
  try {
4992
4988
  await runWorkClaim(opts);
4993
4989
  } catch (err) {
@@ -5007,7 +5003,7 @@ Extends the live lease this API key holds. Refused with a 410 if the
5007
5003
  lease has expired, or a 403 if a different key holds it.
5008
5004
  `
5009
5005
  ).action(async (opts) => {
5010
- const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-2LD2JQKI.js');
5006
+ const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-6W3GBHRS.js');
5011
5007
  try {
5012
5008
  await runWorkRenew(opts);
5013
5009
  } catch (err) {
@@ -5039,7 +5035,7 @@ applies to a host's lease only. A later tool call in the session
5039
5035
  takes the lease again.
5040
5036
  `
5041
5037
  ).action(async (opts) => {
5042
- const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-2LD2JQKI.js');
5038
+ const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-6W3GBHRS.js');
5043
5039
  try {
5044
5040
  await runWorkRelease(opts);
5045
5041
  } catch (err) {
@@ -5066,7 +5062,7 @@ Idempotent: declaring the same pull request twice is a no-op.
5066
5062
  needs your own login; an agent session or a factory key is refused.
5067
5063
  `
5068
5064
  ).action(async (number, opts) => {
5069
- const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-DXW4RXG4.js');
5065
+ const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-6IPXWJEH.js');
5070
5066
  try {
5071
5067
  await runWorkPr({ ...opts, number });
5072
5068
  } catch (err) {
@@ -5091,8 +5087,8 @@ login, then declares the pull request on the item, as \`work pr\` does.
5091
5087
  Run it again after a change to the title or description.
5092
5088
  `
5093
5089
  ).action(async (opts) => {
5094
- const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-SWVFDSMY.js');
5095
- const { WorkCommandError } = await import('./work-cmd-NR53YCXJ.js');
5090
+ const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-WVONEHZL.js');
5091
+ const { WorkCommandError } = await import('./work-cmd-LTZXOPPN.js');
5096
5092
  try {
5097
5093
  await runWorkOpenPr(opts);
5098
5094
  } catch (err) {
@@ -5109,7 +5105,7 @@ function registerRunnerCommands(program2) {
5109
5105
  const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
5110
5106
  runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
5111
5107
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-WRHQDGVI.js');
5112
- const { start, RunnerStartError } = await import('./loop-X3ANDLQU.js');
5108
+ const { start, RunnerStartError } = await import('./loop-KUEOPBKX.js');
5113
5109
  const { RunnerAlreadyRunningError } = await import('./pidfile-5UDLYPMC.js');
5114
5110
  const configPath = opts.config ?? defaultRunnerConfigPath();
5115
5111
  try {
@@ -5128,8 +5124,8 @@ function registerRunnerCommands(program2) {
5128
5124
  "\nReads OUTERLAYER_URL, OUTERLAYER_APP_ID, OUTERLAYER_API_KEY, OUTERLAYER_RUNNER_NAME and one Claude credential\n(CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY) 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"
5129
5125
  ).action(async () => {
5130
5126
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-WRHQDGVI.js');
5131
- const { containerStart } = await import('./container-start-W4VEGRL5.js');
5132
- const { start, RunnerStartError } = await import('./loop-X3ANDLQU.js');
5127
+ const { containerStart } = await import('./container-start-QADK3YGL.js');
5128
+ const { start, RunnerStartError } = await import('./loop-KUEOPBKX.js');
5133
5129
  const { RunnerAlreadyRunningError } = await import('./pidfile-5UDLYPMC.js');
5134
5130
  try {
5135
5131
  const result = await containerStart({
@@ -5153,14 +5149,14 @@ function registerRunnerCommands(program2) {
5153
5149
  ).action(async (opts) => {
5154
5150
  const { defaultRunnerConfigPath } = await import('./config-WRHQDGVI.js');
5155
5151
  const { runnerDir } = await import('./paths-7HVTDE6J.js');
5156
- const { runUpdateSteps } = await import('./update-steps-4M2GIB4A.js');
5152
+ const { runUpdateSteps } = await import('./update-steps-XLO7734I.js');
5157
5153
  const text = await runUpdateSteps({ runnerDirPath: runnerDir(opts.config ?? defaultRunnerConfigPath()) });
5158
5154
  process.stdout.write(`${text}
5159
5155
  `);
5160
5156
  });
5161
5157
  runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
5162
5158
  const { defaultRunnerConfigPath } = await import('./config-WRHQDGVI.js');
5163
- const { runRunnerCheck } = await import('./check-HCKDHD2R.js');
5159
+ const { runRunnerCheck } = await import('./check-OOUGS65D.js');
5164
5160
  const configPath = opts.config ?? defaultRunnerConfigPath();
5165
5161
  const result = await runRunnerCheck(configPath);
5166
5162
  if (!result.ok) {
@@ -5194,7 +5190,7 @@ function registerRunnerCommands(program2) {
5194
5190
  }
5195
5191
  try {
5196
5192
  if (opts.service === true) {
5197
- const { installServiceCommand } = await import('./command-YQBQDIAM.js');
5193
+ const { installServiceCommand } = await import('./command-BJSHY6OB.js');
5198
5194
  const result2 = await installServiceCommand({
5199
5195
  configPath,
5200
5196
  print: opts.print,
@@ -5250,7 +5246,7 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
5250
5246
  return;
5251
5247
  }
5252
5248
  const { defaultRunnerConfigPath } = await import('./config-WRHQDGVI.js');
5253
- const { uninstallServiceCommand } = await import('./command-YQBQDIAM.js');
5249
+ const { uninstallServiceCommand } = await import('./command-BJSHY6OB.js');
5254
5250
  const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
5255
5251
  if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
5256
5252
  `);
@@ -5278,10 +5274,10 @@ already in claude.env is used.
5278
5274
  `
5279
5275
  ).action(async (opts) => {
5280
5276
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-WRHQDGVI.js');
5281
- const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-RUIWHKLE.js');
5282
- const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-QKZZTKLY.js');
5283
- const { detectMachine } = await import('./machine-IEYKRHRK.js');
5284
- const { chooseVm, runVmInit, VmInitError } = await import('./init-LQDKX2XL.js');
5277
+ const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-67R7LO4C.js');
5278
+ const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-ML7R33HF.js');
5279
+ const { detectMachine } = await import('./machine-EQEAPT76.js');
5280
+ const { chooseVm, runVmInit, VmInitError } = await import('./init-KSXU4PA7.js');
5285
5281
  const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-L7OPH3O3.js');
5286
5282
  const configPath = opts.config ?? defaultRunnerConfigPath();
5287
5283
  if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
@@ -5432,7 +5428,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
5432
5428
  let serviceUp = false;
5433
5429
  let restart;
5434
5430
  if (installedLayout) {
5435
- const { installServiceCommand } = await import('./command-YQBQDIAM.js');
5431
+ const { installServiceCommand } = await import('./command-BJSHY6OB.js');
5436
5432
  const service = await installServiceCommand({
5437
5433
  configPath,
5438
5434
  entryPath: process.argv[1] ?? "",
@@ -5496,7 +5492,7 @@ Next:
5496
5492
  await ensureRunnerIdentity(configPath, { log: (line) => console.error(line) }).catch((err) => {
5497
5493
  console.error(`the runner's Docker identity could not be stored: ${err instanceof Error ? err.message : String(err)}`);
5498
5494
  });
5499
- const { imageTargetFor } = await import('./governing-source-FNSH4V4A.js');
5495
+ const { imageTargetFor } = await import('./governing-source-DLESDP6T.js');
5500
5496
  const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
5501
5497
  if (!target.ok) {
5502
5498
  if (opts.json) {
@@ -5560,7 +5556,7 @@ Next:
5560
5556
  });
5561
5557
  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) => {
5562
5558
  const { defaultRunnerConfigPath } = await import('./config-WRHQDGVI.js');
5563
- const { requestStop } = await import('./loop-X3ANDLQU.js');
5559
+ const { requestStop } = await import('./loop-KUEOPBKX.js');
5564
5560
  const configPath = opts.config ?? defaultRunnerConfigPath();
5565
5561
  const { runnerImageVersion } = await import('./image-tag-ADSLWXBA.js');
5566
5562
  await requestStop(configPath, Boolean(opts.now), void 0, { image: runnerImageVersion() !== void 0 });
@@ -5568,8 +5564,8 @@ Next:
5568
5564
  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) => {
5569
5565
  const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-WRHQDGVI.js');
5570
5566
  const { jobsDir, runnerDir } = await import('./paths-7HVTDE6J.js');
5571
- const { listJobFiles, runnerProcessState } = await import('./loop-X3ANDLQU.js');
5572
- const { renderStatus } = await import('./status-6ISCZDBX.js');
5567
+ const { listJobFiles, runnerProcessState } = await import('./loop-KUEOPBKX.js');
5568
+ const { renderStatus } = await import('./status-4G6K7I2C.js');
5573
5569
  const { readHousekeepingRecord } = await import('./record-PPZEXAVA.js');
5574
5570
  const path2 = await import('path');
5575
5571
  const configPath = opts.config ?? defaultRunnerConfigPath();
@@ -5629,7 +5625,7 @@ Next:
5629
5625
  });
5630
5626
  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) => {
5631
5627
  const { defaultRunnerConfigPath } = await import('./config-WRHQDGVI.js');
5632
- const { listJobFiles } = await import('./loop-X3ANDLQU.js');
5628
+ const { listJobFiles } = await import('./loop-KUEOPBKX.js');
5633
5629
  const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-HI46FO6Z.js');
5634
5630
  const configPath = opts.config ?? defaultRunnerConfigPath();
5635
5631
  const item = parseTrackerNumber(itemArg);
@@ -5882,7 +5878,7 @@ would get, the instruction files and the names of the skills. It warns when the
5882
5878
  no \`build\`. It needs the context-read permission: a login or a factory key with it is enough.
5883
5879
  `
5884
5880
  ).action(async (opts) => {
5885
- const { runContextShow, ContextShowError } = await import('./context-show-cmd-LIWHRWVT.js');
5881
+ const { runContextShow, ContextShowError } = await import('./context-show-cmd-VHY3OBIA.js');
5886
5882
  try {
5887
5883
  const result = await runContextShow({ repo: opts.repo, json: opts.json, url: opts.url, apiKey: opts.apiKey, appId: opts.appId });
5888
5884
  process.stdout.write(result.output);