@outerlayer/cli 0.32.0-next.20261020192323 → 0.32.0-next.20261020194118

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 (25) hide show
  1. package/dist/build-info.json +1 -1
  2. package/dist/{check-IM42OERH.js → check-LKB5L6SJ.js} +7 -7
  3. package/dist/{chunk-ONBASD7N.js → chunk-4TIZUKGG.js} +2 -2
  4. package/dist/{chunk-KIGKMHGN.js → chunk-C4C34DUG.js} +1 -1
  5. package/dist/{chunk-VILNOSYL.js → chunk-ITOWHQSZ.js} +1 -1
  6. package/dist/{chunk-CWNAQN3P.js → chunk-NMF4EUVS.js} +2 -2
  7. package/dist/{chunk-LXQFFR5R.js → chunk-ORLL2A45.js} +5 -5
  8. package/dist/{chunk-A3T5EMLD.js → chunk-OYSZGHJF.js} +1 -2
  9. package/dist/{chunk-TGOKGACN.js → chunk-P7RX33YS.js} +11 -4
  10. package/dist/{chunk-MPBWMLDU.js → chunk-SXJVL7NS.js} +2 -1
  11. package/dist/{cli-27XGLDZJ.js → cli-C6PUAMNE.js} +19 -19
  12. package/dist/{command-4FSYHKJW.js → command-OUIWHVFD.js} +3 -3
  13. package/dist/{container-start-DHWE6AZT.js → container-start-7I7AVIZB.js} +4 -4
  14. package/dist/{doctor-43GRLQBJ.js → doctor-NGBSBISG.js} +5 -5
  15. package/dist/{governing-source-QESDNFMZ.js → governing-source-JSYW4RCL.js} +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/{init-UEPORNAG.js → init-5BSNNTP2.js} +4 -4
  18. package/dist/{init-TPCLCJKI.js → init-6FHIUU4M.js} +4 -4
  19. package/dist/{init-cmd-LXPYD2JM.js → init-cmd-KD2XQYAL.js} +1 -1
  20. package/dist/{loop-TU67Q3TS.js → loop-O5L6X3EM.js} +7 -7
  21. package/dist/{machine-TPWIXJ37.js → machine-2PKCFQN7.js} +3 -3
  22. package/dist/{runner-key-WBXZQ4LO.js → runner-key-SQBHTUGH.js} +4 -4
  23. package/dist/{status-NEKJ4HJP.js → status-AMA4IOL4.js} +3 -3
  24. package/package.json +1 -1
  25. package/skill-pack/maintained/outerlayer-build/SKILL.md +5 -1
@@ -1 +1 @@
1
- {"id":"2026-10-20T19:25:22.302Z+42873e1","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
1
+ {"id":"2026-10-20T19:43:21.965Z+8773b66","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { probeCredentials } from './chunk-LXQFFR5R.js';
4
- import './chunk-TGOKGACN.js';
3
+ import { probeCredentials } from './chunk-ORLL2A45.js';
4
+ import './chunk-P7RX33YS.js';
5
5
  import './chunk-3JVYMD4G.js';
6
6
  import './chunk-WHSYPR3U.js';
7
7
  import './chunk-E7R2GIAW.js';
@@ -16,16 +16,16 @@ import './chunk-KCB6V5XH.js';
16
16
  import './chunk-XKZPL3GE.js';
17
17
  import './chunk-ESVW4MJY.js';
18
18
  import './chunk-XTNMIV77.js';
19
- import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, managedProblems, managedFactsOf, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-CWNAQN3P.js';
19
+ import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, managedProblems, managedFactsOf, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-NMF4EUVS.js';
20
20
  import './chunk-YYYRBYWG.js';
21
21
  import './chunk-ZZSQYOY5.js';
22
22
  import './chunk-TBT347UY.js';
23
- import './chunk-ONBASD7N.js';
24
- import './chunk-KIGKMHGN.js';
25
- import { probeHelper, HELPER_ENV, helperSocketPath } from './chunk-A3T5EMLD.js';
23
+ import './chunk-4TIZUKGG.js';
24
+ import './chunk-C4C34DUG.js';
25
+ import { probeHelper, HELPER_ENV, helperSocketPath } from './chunk-OYSZGHJF.js';
26
26
  import './chunk-QQGZ5THT.js';
27
27
  import './chunk-HIGJTX5U.js';
28
- import './chunk-MPBWMLDU.js';
28
+ import './chunk-SXJVL7NS.js';
29
29
  import './chunk-YV7WULXQ.js';
30
30
  import './chunk-TQMI335S.js';
31
31
  import './chunk-NJS7JJYN.js';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { detectMachine, supportsContainerBuilds, reachDockerStep, describeMachineDocker, supportsMicroVmBuilds } from './chunk-KIGKMHGN.js';
4
- import { MIN_ENGINE_MAJOR } from './chunk-A3T5EMLD.js';
3
+ import { detectMachine, supportsContainerBuilds, reachDockerStep, describeMachineDocker, supportsMicroVmBuilds } from './chunk-C4C34DUG.js';
4
+ import { MIN_ENGINE_MAJOR } from './chunk-OYSZGHJF.js';
5
5
  import { hasStoredCredential, AGENT_COMMANDS, storeClaudeCredential, credentialFromStdin, isAgentName } from './chunk-NJS7JJYN.js';
6
6
  import { runnerCredentialProblem } from './chunk-P7BEZAEU.js';
7
7
  import { runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-KP6R7CV3.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { MIN_ENGINE_MAJOR } from './chunk-A3T5EMLD.js';
3
+ import { MIN_ENGINE_MAJOR } from './chunk-OYSZGHJF.js';
4
4
  import { runnerImageVersion } from './chunk-YV7WULXQ.js';
5
5
  import { firecrackerArch, MICROVM_ARCHES, guestAssetsPinned } from './chunk-SJZL5F3F.js';
6
6
  import { spawnSync } from 'child_process';
@@ -1211,7 +1211,7 @@ async function gatherDoctorChecks() {
1211
1211
  const { runnerVmCheck } = await import('./doctor-53F2PYY7.js');
1212
1212
  checks.push(runnerVmCheck(configPath, { lima: realLima(), home: homeFromEnv(), instance: runnerVm.instance }));
1213
1213
  } else if (hasRunnerBlock(configPath)) {
1214
- const { runnerHostChecks } = await import('./doctor-43GRLQBJ.js');
1214
+ const { runnerHostChecks } = await import('./doctor-NGBSBISG.js');
1215
1215
  const gateway = (() => {
1216
1216
  try {
1217
1217
  const { url, apiKey, appId } = loadRunnerConfig(configPath);
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { isPlaceholderCommand } from './chunk-ONBASD7N.js';
4
- import { describeCallFailure } from './chunk-MPBWMLDU.js';
3
+ import { isPlaceholderCommand } from './chunk-4TIZUKGG.js';
4
+ import { describeCallFailure } from './chunk-SXJVL7NS.js';
5
5
  import { checkFit } from './chunk-RQGHHEM7.js';
6
6
  import { builtinKind } from './chunk-P7BEZAEU.js';
7
7
  import { WorkCommandError, getJson } from './chunk-U4HMGT3L.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, provisionEnvironment, readProvisionOut, resolveHostBuild, workdirProblem, listenOnBroker, hostEnvironment, hostCommandEnvironment, execArgv, MICROVM_COMMAND_DIR, commandLogOffset, startMicroVmCommand, microVmCommandLine, runCommand, execCommandLine, startSender, startHostServices, finishJob, isContainerTracked, isMicroVmTracked, probeMicroVmCommand, probeCommand, appendCommandLog, judgeProbe, EXIT_CODE_FILE, isTracked, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listUnreadableJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, AttemptLogBook, microVmOomKills, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, listTrackedJobs, restartSender, serveLease, vmAlive, writeGuestGhConfig, ALREADY_RELEASED, inTeardown } from './chunk-TGOKGACN.js';
3
+ import { releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, provisionEnvironment, readProvisionOut, resolveHostBuild, workdirProblem, listenOnBroker, hostEnvironment, hostCommandEnvironment, execArgv, MICROVM_COMMAND_DIR, commandLogOffset, startMicroVmCommand, microVmCommandLine, runCommand, execCommandLine, startSender, startHostServices, finishJob, isContainerTracked, isMicroVmTracked, probeMicroVmCommand, probeCommand, appendCommandLog, judgeProbe, EXIT_CODE_FILE, isTracked, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listUnreadableJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, AttemptLogBook, microVmOomKills, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, listTrackedJobs, restartSender, serveLease, vmAlive, writeGuestGhConfig, ALREADY_RELEASED, inTeardown } from './chunk-P7RX33YS.js';
4
4
  import { decideInstalledSwitch } from './chunk-3JVYMD4G.js';
5
5
  import { fitImageBuildMemory } from './chunk-WHSYPR3U.js';
6
6
  import { fetchVersionMeta, npmVersion, npmSupportsProvenance, fetchTarballDigest, fetchProvenance, installVersion, auditSignatures } from './chunk-E7R2GIAW.js';
@@ -8,12 +8,12 @@ import { RUNNER_PROTOCOL } from './chunk-WRU3K5AN.js';
8
8
  import { writePendingUpdate } from './chunk-TZQIEUDE.js';
9
9
  import { JOB_STATE_FORMAT, readsJobState, jobStateFormatOf } from './chunk-ZVB57WI6.js';
10
10
  import { readHousekeepingRecord, writeHousekeepingRecord } from './chunk-X7UUIHGH.js';
11
- import { currentSkillCommand, formerSkillProblem, realBlockedProbes, checkBlocked } from './chunk-CWNAQN3P.js';
11
+ import { currentSkillCommand, formerSkillProblem, realBlockedProbes, checkBlocked } from './chunk-NMF4EUVS.js';
12
12
  import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
13
13
  import { writeMarker, readMarker, currentVersion, removeMarker, entryIn, versionDir, startedThroughCurrent, switchCurrent, isInLayout, cleanVersions, stagingDir } from './chunk-ZZSQYOY5.js';
14
14
  import { RepoFilter } from './chunk-TBT347UY.js';
15
- import { leaseTimeLeftMs, createContainerRuntime, withTunnelLog, LEASE_SECONDS, provisionContainer, leaseExpiresAtMs, deliverContainerHooks, lifecycleSteps, lifecycleFailureReason, prepareBranch, containerCommandExec, setUpRunnerCgroup, measureDisk, parseCpuList, ensureTunnel, keepGhConfigCurrent, filesAreCopied, gitRemoteFor, startServicesFor, createLeaseChannel } from './chunk-A3T5EMLD.js';
16
- import { describeCallFailure, retrySend, shortClaim, relativeToRunner, formatDuration, BuildTokens, classifyRefusal, refusalCode, createRunnerLog, formatClock } from './chunk-MPBWMLDU.js';
15
+ import { leaseTimeLeftMs, createContainerRuntime, withTunnelLog, LEASE_SECONDS, provisionContainer, leaseExpiresAtMs, deliverContainerHooks, lifecycleSteps, lifecycleFailureReason, prepareBranch, containerCommandExec, setUpRunnerCgroup, measureDisk, parseCpuList, ensureTunnel, keepGhConfigCurrent, filesAreCopied, gitRemoteFor, startServicesFor, createLeaseChannel } from './chunk-OYSZGHJF.js';
16
+ import { describeCallFailure, retrySend, shortClaim, relativeToRunner, formatDuration, BuildTokens, classifyRefusal, refusalCode, createRunnerLog, formatClock } from './chunk-SXJVL7NS.js';
17
17
  import { tagToPull, pullInstruction, imageTag, writeUpdateStatus } from './chunk-YV7WULXQ.js';
18
18
  import { isVersion, compareVersions, satisfiesRange } from './chunk-TQMI335S.js';
19
19
  import { isBuiltinContainer, isBuiltinVm, isBuiltinProcess, loadRunnerConfig, checkHooks, builtinKind, DEFAULT_UPDATE_MAX_WAIT_HOURS } from './chunk-P7BEZAEU.js';
@@ -2932,7 +2932,7 @@ async function start(configPath, deps = { fetchImpl: fetch }) {
2932
2932
  check: update.check ? () => update.check(configPath) : async () => {
2933
2933
  const held = heldClaudeCredential();
2934
2934
  const env = held === void 0 ? process.env : { ...process.env, [held.variable]: held.value };
2935
- return (await import('./check-IM42OERH.js')).runRunnerCheck(configPath, { fetchImpl: deps.fetchImpl, env });
2935
+ return (await import('./check-LKB5L6SJ.js')).runRunnerCheck(configPath, { fetchImpl: deps.fetchImpl, env });
2936
2936
  },
2937
2937
  now: () => (deps.now ?? (() => /* @__PURE__ */ new Date()))().getTime(),
2938
2938
  log
@@ -2,7 +2,7 @@
2
2
  import { createRequire } from 'node:module';
3
3
  import { execCapture } from './chunk-QQGZ5THT.js';
4
4
  import { GUEST_CID } from './chunk-HIGJTX5U.js';
5
- import { keepStagedContext, describeCallFailure, controlPlaneTokenFailure, refusalCode, resolveGoverningSource, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, shimScript } from './chunk-MPBWMLDU.js';
5
+ import { keepStagedContext, describeCallFailure, controlPlaneTokenFailure, refusalCode, resolveGoverningSource, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, shimScript, WORKFLOW_PERMISSION_REASON } from './chunk-SXJVL7NS.js';
6
6
  import { runnerImageVersion } from './chunk-YV7WULXQ.js';
7
7
  import { hostAllowed } from './chunk-UXYLWVTQ.js';
8
8
  import { readDefaultBranchHead, cloneRepository, buildRepositoryImage } from './chunk-Z7HAIZ6X.js';
@@ -2684,7 +2684,6 @@ var RELAY_ATTEMPTS = 20;
2684
2684
  var RELAY_WAIT_MS = 500;
2685
2685
  var BUSY_IMAGE_WAIT_MS = 5e3;
2686
2686
  var VOLUME_REMOVE_ATTEMPTS = 4;
2687
- var WORKFLOW_PERMISSION_REASON = "workflow_permission_required";
2688
2687
  function withTunnelLog(opts, log) {
2689
2688
  return { ...opts, tunnelOptions: { log, ...opts?.tunnelOptions } };
2690
2689
  }
@@ -6,10 +6,10 @@ import { zodProblem } from './chunk-I3LTIAOR.js';
6
6
  import { senderPidfile } from './chunk-JFLVUA43.js';
7
7
  import { installScrubContext } from './chunk-KCB6V5XH.js';
8
8
  import { writeDockerClientConfig } from './chunk-XTNMIV77.js';
9
- import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, AssetError, obtainImage, ensureRootfs, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, resolveAgentUser, AgentUserError, runBuildSteps, LEASE_SECONDS, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, containerSenderCommand, signalInContainer, syncInContainer, copyTranscriptsFromContainer, senderAliveScript, helperFirecrackerNote, HelperRefusal, isLiteralAddress, deleteBuildDisk, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, copyJudgeTree } from './chunk-A3T5EMLD.js';
9
+ import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, AssetError, obtainImage, ensureRootfs, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, resolveAgentUser, AgentUserError, runBuildSteps, LEASE_SECONDS, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, containerSenderCommand, signalInContainer, syncInContainer, copyTranscriptsFromContainer, senderAliveScript, helperFirecrackerNote, HelperRefusal, isLiteralAddress, deleteBuildDisk, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, copyJudgeTree } from './chunk-OYSZGHJF.js';
10
10
  import { waitForAgent, vmExecArgs } from './chunk-QQGZ5THT.js';
11
11
  import { socketPathProblem, vsockLinks, LEASE_LINK, linkVsockSockets } from './chunk-HIGJTX5U.js';
12
- import { describeCallFailure, resolveGoverningSource, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, keptContextTree } from './chunk-MPBWMLDU.js';
12
+ import { describeCallFailure, resolveGoverningSource, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, WORKFLOW_PERMISSION_REASON, keptContextTree } from './chunk-SXJVL7NS.js';
13
13
  import { isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-P7BEZAEU.js';
14
14
  import { readBranchHead, fetchCommit, diffBetween } from './chunk-Z7HAIZ6X.js';
15
15
  import { isSameProcess, startTimeOf } from './chunk-JBJTC3UU.js';
@@ -1378,6 +1378,9 @@ function decideFromEvaluation(read) {
1378
1378
  function incompleteReason(reason, judgeNotRun) {
1379
1379
  return judgeNotRun === void 0 ? reason : `the judge did not run (${judgeNotRun}) \xB7 ${reason}`;
1380
1380
  }
1381
+ function unfinishedRelease(verdictReason, learned) {
1382
+ return learned === WORKFLOW_PERMISSION_REASON ? { outcome: "failed", reason: WORKFLOW_PERMISSION_REASON } : { outcome: "incomplete", reason: verdictReason };
1383
+ }
1381
1384
  function waitMs(ms) {
1382
1385
  return new Promise((resolve) => setTimeout(resolve, ms));
1383
1386
  }
@@ -3229,8 +3232,12 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
3229
3232
  sleep: deps.sleep ?? waitMs
3230
3233
  });
3231
3234
  if (decision.outcome === "incomplete") {
3232
- outcome = "incomplete";
3233
- verdictReason = scrubReason(incompleteReason(decision.reason, job.judgeNotRun), config);
3235
+ const release2 = unfinishedRelease(
3236
+ scrubReason(incompleteReason(decision.reason, job.judgeNotRun), config),
3237
+ deps.container?.credentials.get(jobDirPath)?.reason
3238
+ );
3239
+ outcome = release2.outcome;
3240
+ verdictReason = release2.reason;
3234
3241
  log.error(`${tag} the command exited 0 but the item is not done: ${verdictReason}`);
3235
3242
  }
3236
3243
  }
@@ -107,6 +107,7 @@ var REVOKE_TIMEOUT_MS = 15e3;
107
107
  function isDue(expiresAtMs, nowMs) {
108
108
  return nowMs >= expiresAtMs - 10 * 6e4;
109
109
  }
110
+ var WORKFLOW_PERMISSION_REASON = "workflow_permission_required";
110
111
  function classifyRefusal(err) {
111
112
  if (!(err instanceof WorkCommandError)) return { kind: "retry" };
112
113
  if (err.status === 401 || err.code === "claim_expired" || err.code === "claim_not_held") return { kind: "lease_lost" };
@@ -515,4 +516,4 @@ async function imageTargetFor(input) {
515
516
  return { ok: true, repository: resolved.source.repository, pinned: { commit: resolved.source.sha, ref: resolved.source.ref } };
516
517
  }
517
518
 
518
- export { BuildTokens, classifyRefusal, commandWithShim, controlPlaneTokenFailure, createRunnerLog, describeCallFailure, formatClock, formatDuration, imageTargetFor, keepStagedContext, keptContextTree, logStamp, pinnedSourceOf, refusalCode, relativeToRunner, removeKeptContext, removeStagedContext, resolveGoverningSource, retrySend, shimScript, shortClaim, stageGovernedContext };
519
+ export { BuildTokens, WORKFLOW_PERMISSION_REASON, classifyRefusal, commandWithShim, controlPlaneTokenFailure, createRunnerLog, describeCallFailure, formatClock, formatDuration, imageTargetFor, keepStagedContext, keptContextTree, logStamp, pinnedSourceOf, refusalCode, relativeToRunner, removeKeptContext, removeStagedContext, resolveGoverningSource, retrySend, shimScript, shortClaim, stageGovernedContext };
@@ -1,6 +1,6 @@
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-VILNOSYL.js';
3
+ import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-ITOWHQSZ.js';
4
4
  import './chunk-BCWVTWS7.js';
5
5
  import './chunk-4XPAQXJF.js';
6
6
  import './chunk-KT4CN6OU.js';
@@ -3926,13 +3926,13 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
3926
3926
  if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
3927
3927
  `);
3928
3928
  }
3929
- const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-LXPYD2JM.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
3929
+ const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-KD2XQYAL.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
3930
3930
  if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
3931
3931
  else process.stdout.write(outcome.text + skillsLine + (shell?.text ?? ""));
3932
3932
  return;
3933
3933
  }
3934
3934
  await installMachineSkillsForSetup();
3935
- const { runInitCommand } = await import('./init-cmd-LXPYD2JM.js');
3935
+ const { runInitCommand } = await import('./init-cmd-KD2XQYAL.js');
3936
3936
  const code = await runInitCommand(
3937
3937
  { json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
3938
3938
  {
@@ -4978,7 +4978,7 @@ function registerRunnerCommands(program2) {
4978
4978
  const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
4979
4979
  runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
4980
4980
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-3JRFDYZL.js');
4981
- const { start, RunnerStartError } = await import('./loop-TU67Q3TS.js');
4981
+ const { start, RunnerStartError } = await import('./loop-O5L6X3EM.js');
4982
4982
  const { RunnerAlreadyRunningError } = await import('./pidfile-BMFAUQAI.js');
4983
4983
  const configPath = opts.config ?? defaultRunnerConfigPath();
4984
4984
  try {
@@ -4997,8 +4997,8 @@ function registerRunnerCommands(program2) {
4997
4997
  "\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"
4998
4998
  ).action(async () => {
4999
4999
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-3JRFDYZL.js');
5000
- const { containerStart } = await import('./container-start-DHWE6AZT.js');
5001
- const { start, RunnerStartError } = await import('./loop-TU67Q3TS.js');
5000
+ const { containerStart } = await import('./container-start-7I7AVIZB.js');
5001
+ const { start, RunnerStartError } = await import('./loop-O5L6X3EM.js');
5002
5002
  const { RunnerAlreadyRunningError } = await import('./pidfile-BMFAUQAI.js');
5003
5003
  try {
5004
5004
  const result = await containerStart({
@@ -5018,7 +5018,7 @@ function registerRunnerCommands(program2) {
5018
5018
  });
5019
5019
  runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
5020
5020
  const { defaultRunnerConfigPath } = await import('./config-3JRFDYZL.js');
5021
- const { runRunnerCheck } = await import('./check-IM42OERH.js');
5021
+ const { runRunnerCheck } = await import('./check-LKB5L6SJ.js');
5022
5022
  const configPath = opts.config ?? defaultRunnerConfigPath();
5023
5023
  const result = await runRunnerCheck(configPath);
5024
5024
  if (!result.ok) {
@@ -5052,7 +5052,7 @@ function registerRunnerCommands(program2) {
5052
5052
  }
5053
5053
  try {
5054
5054
  if (opts.service === true) {
5055
- const { installServiceCommand } = await import('./command-4FSYHKJW.js');
5055
+ const { installServiceCommand } = await import('./command-OUIWHVFD.js');
5056
5056
  const result2 = await installServiceCommand({
5057
5057
  configPath,
5058
5058
  print: opts.print,
@@ -5108,7 +5108,7 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
5108
5108
  return;
5109
5109
  }
5110
5110
  const { defaultRunnerConfigPath } = await import('./config-3JRFDYZL.js');
5111
- const { uninstallServiceCommand } = await import('./command-4FSYHKJW.js');
5111
+ const { uninstallServiceCommand } = await import('./command-OUIWHVFD.js');
5112
5112
  const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
5113
5113
  if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
5114
5114
  `);
@@ -5136,10 +5136,10 @@ already in claude.env is used.
5136
5136
  `
5137
5137
  ).action(async (opts) => {
5138
5138
  const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-3JRFDYZL.js');
5139
- const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-UEPORNAG.js');
5140
- const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-WBXZQ4LO.js');
5141
- const { detectMachine } = await import('./machine-TPWIXJ37.js');
5142
- const { chooseVm, runVmInit, VmInitError } = await import('./init-TPCLCJKI.js');
5139
+ const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-5BSNNTP2.js');
5140
+ const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-SQBHTUGH.js');
5141
+ const { detectMachine } = await import('./machine-2PKCFQN7.js');
5142
+ const { chooseVm, runVmInit, VmInitError } = await import('./init-6FHIUU4M.js');
5143
5143
  const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-66RAFIDJ.js');
5144
5144
  const configPath = opts.config ?? defaultRunnerConfigPath();
5145
5145
  if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
@@ -5290,7 +5290,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
5290
5290
  let serviceUp = false;
5291
5291
  let restart;
5292
5292
  if (installedLayout) {
5293
- const { installServiceCommand } = await import('./command-4FSYHKJW.js');
5293
+ const { installServiceCommand } = await import('./command-OUIWHVFD.js');
5294
5294
  const service = await installServiceCommand({
5295
5295
  configPath,
5296
5296
  entryPath: process.argv[1] ?? "",
@@ -5354,7 +5354,7 @@ Next:
5354
5354
  await ensureRunnerIdentity(configPath, { log: (line) => console.error(line) }).catch((err) => {
5355
5355
  console.error(`the runner's Docker identity could not be stored: ${err instanceof Error ? err.message : String(err)}`);
5356
5356
  });
5357
- const { imageTargetFor } = await import('./governing-source-QESDNFMZ.js');
5357
+ const { imageTargetFor } = await import('./governing-source-JSYW4RCL.js');
5358
5358
  const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
5359
5359
  if (!target.ok) {
5360
5360
  if (opts.json) {
@@ -5418,7 +5418,7 @@ Next:
5418
5418
  });
5419
5419
  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) => {
5420
5420
  const { defaultRunnerConfigPath } = await import('./config-3JRFDYZL.js');
5421
- const { requestStop } = await import('./loop-TU67Q3TS.js');
5421
+ const { requestStop } = await import('./loop-O5L6X3EM.js');
5422
5422
  const configPath = opts.config ?? defaultRunnerConfigPath();
5423
5423
  const { runnerImageVersion } = await import('./image-tag-OYT7UG7Y.js');
5424
5424
  await requestStop(configPath, Boolean(opts.now), void 0, { image: runnerImageVersion() !== void 0 });
@@ -5426,8 +5426,8 @@ Next:
5426
5426
  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) => {
5427
5427
  const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-3JRFDYZL.js');
5428
5428
  const { jobsDir, runnerDir } = await import('./paths-OK2EZS7W.js');
5429
- const { listJobFiles, runnerProcessState } = await import('./loop-TU67Q3TS.js');
5430
- const { renderStatus } = await import('./status-NEKJ4HJP.js');
5429
+ const { listJobFiles, runnerProcessState } = await import('./loop-O5L6X3EM.js');
5430
+ const { renderStatus } = await import('./status-AMA4IOL4.js');
5431
5431
  const { readHousekeepingRecord } = await import('./record-26AH6WDB.js');
5432
5432
  const path2 = await import('path');
5433
5433
  const configPath = opts.config ?? defaultRunnerConfigPath();
@@ -5487,7 +5487,7 @@ Next:
5487
5487
  });
5488
5488
  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) => {
5489
5489
  const { defaultRunnerConfigPath } = await import('./config-3JRFDYZL.js');
5490
- const { listJobFiles } = await import('./loop-TU67Q3TS.js');
5490
+ const { listJobFiles } = await import('./loop-O5L6X3EM.js');
5491
5491
  const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-C3RJ3ZTC.js');
5492
5492
  const configPath = opts.config ?? defaultRunnerConfigPath();
5493
5493
  const item = parseTrackerNumber(itemArg);
@@ -3,11 +3,11 @@ import { createRequire } from 'node:module';
3
3
  import { runRunnerInstall, launcherSummary, restartNote } from './chunk-77F7NGAZ.js';
4
4
  import './chunk-ZBN4JGTJ.js';
5
5
  import { currentLink, execStartCommand } from './chunk-ZZSQYOY5.js';
6
- import { detectMachine } from './chunk-KIGKMHGN.js';
7
- import { helperSocketPath, ensureFirecrackerAndJailer } from './chunk-A3T5EMLD.js';
6
+ import { detectMachine } from './chunk-C4C34DUG.js';
7
+ import { helperSocketPath, ensureFirecrackerAndJailer } from './chunk-OYSZGHJF.js';
8
8
  import './chunk-QQGZ5THT.js';
9
9
  import './chunk-HIGJTX5U.js';
10
- import './chunk-MPBWMLDU.js';
10
+ import './chunk-SXJVL7NS.js';
11
11
  import './chunk-YV7WULXQ.js';
12
12
  import './chunk-TQMI335S.js';
13
13
  import { DEFAULT_UNIT_NAME, installService, uninstallService, realTaskScheduler, UNIT_MARKER } from './chunk-RQGHHEM7.js';
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { BUILD_MEMORY_VARIABLE } from './chunk-WHSYPR3U.js';
4
- import { RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-ONBASD7N.js';
5
- import { detectMachine, supportsContainerBuilds, describeMachineDocker } from './chunk-KIGKMHGN.js';
6
- import { MIN_ENGINE_MAJOR } from './chunk-A3T5EMLD.js';
4
+ import { RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-4TIZUKGG.js';
5
+ import { detectMachine, supportsContainerBuilds, describeMachineDocker } from './chunk-C4C34DUG.js';
6
+ import { MIN_ENGINE_MAJOR } from './chunk-OYSZGHJF.js';
7
7
  import './chunk-QQGZ5THT.js';
8
8
  import './chunk-HIGJTX5U.js';
9
- import './chunk-MPBWMLDU.js';
9
+ import './chunk-SXJVL7NS.js';
10
10
  import { runnerImageVersion, IMAGE_VERSION_VARIABLE } from './chunk-YV7WULXQ.js';
11
11
  import './chunk-TQMI335S.js';
12
12
  import { isAgentName, AGENT_COMMANDS } from './chunk-NJS7JJYN.js';
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { needsClaudeCredential, claudeCredentialCheck, managedProblems, missingPermissionOf, missingPermissionFix } from './chunk-CWNAQN3P.js';
3
+ import { needsClaudeCredential, claudeCredentialCheck, managedProblems, missingPermissionOf, missingPermissionFix } from './chunk-NMF4EUVS.js';
4
4
  import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
5
5
  import { launcherCheck } from './chunk-ZBN4JGTJ.js';
6
6
  import './chunk-ZZSQYOY5.js';
7
7
  import { RepoFilter } from './chunk-TBT347UY.js';
8
- import './chunk-ONBASD7N.js';
9
- import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-KIGKMHGN.js';
10
- import { MIN_ENGINE_MAJOR, helperFirecrackerNote, probeHelper, helperSocketPath } from './chunk-A3T5EMLD.js';
8
+ import './chunk-4TIZUKGG.js';
9
+ import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-C4C34DUG.js';
10
+ import { MIN_ENGINE_MAJOR, helperFirecrackerNote, probeHelper, helperSocketPath } from './chunk-OYSZGHJF.js';
11
11
  import './chunk-QQGZ5THT.js';
12
12
  import './chunk-HIGJTX5U.js';
13
- import './chunk-MPBWMLDU.js';
13
+ import './chunk-SXJVL7NS.js';
14
14
  import { runnerImageVersion, imageAdvice, readUpdateStatus, imageTag, pullInstruction } from './chunk-YV7WULXQ.js';
15
15
  import './chunk-TQMI335S.js';
16
16
  import './chunk-NJS7JJYN.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { imageTargetFor, pinnedSourceOf, resolveGoverningSource } from './chunk-MPBWMLDU.js';
3
+ export { imageTargetFor, pinnedSourceOf, resolveGoverningSource } from './chunk-SXJVL7NS.js';
4
4
  import './chunk-U4HMGT3L.js';
5
5
  import './chunk-3DSC2FN3.js';
6
6
  import './chunk-IGIGNYZK.js';
package/dist/index.js CHANGED
@@ -26,5 +26,5 @@ if (argv[0] === "claude") {
26
26
  process.exit(await runClaudeLauncher(argv.slice(1)));
27
27
  }
28
28
  (await import('./hook-fast-UFHR6EKZ.js')).recordLinkExitFailure(argv);
29
- var { runCli } = await import('./cli-27XGLDZJ.js');
29
+ var { runCli } = await import('./cli-C6PUAMNE.js');
30
30
  await runCli(process.argv);
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, prepareRunnerInit, readConfigObject, runRunnerInit, writeRunnerInit } from './chunk-ONBASD7N.js';
4
- import './chunk-KIGKMHGN.js';
5
- import './chunk-A3T5EMLD.js';
3
+ export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, prepareRunnerInit, readConfigObject, runRunnerInit, writeRunnerInit } from './chunk-4TIZUKGG.js';
4
+ import './chunk-C4C34DUG.js';
5
+ import './chunk-OYSZGHJF.js';
6
6
  import './chunk-QQGZ5THT.js';
7
7
  import './chunk-HIGJTX5U.js';
8
- import './chunk-MPBWMLDU.js';
8
+ import './chunk-SXJVL7NS.js';
9
9
  import './chunk-YV7WULXQ.js';
10
10
  import './chunk-TQMI335S.js';
11
11
  import './chunk-NJS7JJYN.js';
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { npmSupportsProvenance } from './chunk-E7R2GIAW.js';
4
- import { RunnerInitError, readConfigObject } from './chunk-ONBASD7N.js';
5
- import './chunk-KIGKMHGN.js';
6
- import './chunk-A3T5EMLD.js';
4
+ import { RunnerInitError, readConfigObject } from './chunk-4TIZUKGG.js';
5
+ import './chunk-C4C34DUG.js';
6
+ import './chunk-OYSZGHJF.js';
7
7
  import './chunk-QQGZ5THT.js';
8
8
  import './chunk-HIGJTX5U.js';
9
- import './chunk-MPBWMLDU.js';
9
+ import './chunk-SXJVL7NS.js';
10
10
  import './chunk-YV7WULXQ.js';
11
11
  import './chunk-TQMI335S.js';
12
12
  import './chunk-NJS7JJYN.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { summarizeChecks, summaryText, renderDoctorText } from './chunk-VILNOSYL.js';
3
+ import { summarizeChecks, summaryText, renderDoctorText } from './chunk-ITOWHQSZ.js';
4
4
  import './chunk-BCWVTWS7.js';
5
5
  import { shellFunctionInstalled, removeShellFunction, installShellFunction, SHELL_FUNCTION_LINE } from './chunk-CJJDJ7AT.js';
6
6
  import './chunk-4XPAQXJF.js';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { RunnerStartError, leaseTimeLeftFor, listJobFiles, logUnusableHelper, probeBuild, probeCredentials, requestStop, runnerProcessState, runtimeOf, start, tick, watchTick } from './chunk-LXQFFR5R.js';
4
- import './chunk-TGOKGACN.js';
3
+ export { RunnerStartError, leaseTimeLeftFor, listJobFiles, logUnusableHelper, probeBuild, probeCredentials, requestStop, runnerProcessState, runtimeOf, start, tick, watchTick } from './chunk-ORLL2A45.js';
4
+ import './chunk-P7RX33YS.js';
5
5
  import './chunk-3JVYMD4G.js';
6
6
  import './chunk-WHSYPR3U.js';
7
7
  import './chunk-E7R2GIAW.js';
@@ -16,16 +16,16 @@ import './chunk-KCB6V5XH.js';
16
16
  import './chunk-XKZPL3GE.js';
17
17
  import './chunk-ESVW4MJY.js';
18
18
  import './chunk-XTNMIV77.js';
19
- import './chunk-CWNAQN3P.js';
19
+ import './chunk-NMF4EUVS.js';
20
20
  import './chunk-YYYRBYWG.js';
21
21
  import './chunk-ZZSQYOY5.js';
22
22
  import './chunk-TBT347UY.js';
23
- import './chunk-ONBASD7N.js';
24
- import './chunk-KIGKMHGN.js';
25
- import './chunk-A3T5EMLD.js';
23
+ import './chunk-4TIZUKGG.js';
24
+ import './chunk-C4C34DUG.js';
25
+ import './chunk-OYSZGHJF.js';
26
26
  import './chunk-QQGZ5THT.js';
27
27
  import './chunk-HIGJTX5U.js';
28
- import './chunk-MPBWMLDU.js';
28
+ import './chunk-SXJVL7NS.js';
29
29
  import './chunk-YV7WULXQ.js';
30
30
  import './chunk-TQMI335S.js';
31
31
  import './chunk-NJS7JJYN.js';
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-KIGKMHGN.js';
4
- import './chunk-A3T5EMLD.js';
3
+ export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-C4C34DUG.js';
4
+ import './chunk-OYSZGHJF.js';
5
5
  import './chunk-QQGZ5THT.js';
6
6
  import './chunk-HIGJTX5U.js';
7
- import './chunk-MPBWMLDU.js';
7
+ import './chunk-SXJVL7NS.js';
8
8
  import './chunk-YV7WULXQ.js';
9
9
  import './chunk-TQMI335S.js';
10
10
  import './chunk-UXYLWVTQ.js';
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { readConfigObject, RunnerInitError } from './chunk-ONBASD7N.js';
4
- import './chunk-KIGKMHGN.js';
5
- import './chunk-A3T5EMLD.js';
3
+ import { readConfigObject, RunnerInitError } from './chunk-4TIZUKGG.js';
4
+ import './chunk-C4C34DUG.js';
5
+ import './chunk-OYSZGHJF.js';
6
6
  import './chunk-QQGZ5THT.js';
7
7
  import './chunk-HIGJTX5U.js';
8
- import './chunk-MPBWMLDU.js';
8
+ import './chunk-SXJVL7NS.js';
9
9
  import './chunk-YV7WULXQ.js';
10
10
  import './chunk-TQMI335S.js';
11
11
  import './chunk-NJS7JJYN.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { isReadable, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-TGOKGACN.js';
3
+ import { isReadable, ALREADY_RELEASED, RENEW_INTERVAL_SECONDS } from './chunk-P7RX33YS.js';
4
4
  import { jobStateFormatOf } from './chunk-ZVB57WI6.js';
5
5
  import './chunk-RJYKTWUP.js';
6
6
  import './chunk-I3LTIAOR.js';
@@ -11,10 +11,10 @@ import './chunk-ESVW4MJY.js';
11
11
  import './chunk-XTNMIV77.js';
12
12
  import { formatBytes } from './chunk-YYYRBYWG.js';
13
13
  import './chunk-TBT347UY.js';
14
- import { LEASE_SECONDS } from './chunk-A3T5EMLD.js';
14
+ import { LEASE_SECONDS } from './chunk-OYSZGHJF.js';
15
15
  import './chunk-QQGZ5THT.js';
16
16
  import './chunk-HIGJTX5U.js';
17
- import { formatDuration, formatClock, relativeToRunner } from './chunk-MPBWMLDU.js';
17
+ import { formatDuration, formatClock, relativeToRunner } from './chunk-SXJVL7NS.js';
18
18
  import { pullInstruction } from './chunk-YV7WULXQ.js';
19
19
  import './chunk-TQMI335S.js';
20
20
  import './chunk-P7BEZAEU.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outerlayer/cli",
3
- "version": "0.32.0-next.20261020192323",
3
+ "version": "0.32.0-next.20261020194118",
4
4
  "description": "OuterLayer CLI — commands: init, claude, connect, doctor, login, logout, sync, daemon (alias: watch), emit, findings, work, spec, runner, hooks, mcp, context. Capture and sync coding-agent sessions, and record proof of factory work.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Magu Studios, Inc.",
@@ -279,7 +279,11 @@ Run them in order.
279
279
  3. **Implement.** Run `outerlayer emit step "Implement" --item "$OUTERLAYER_WORK"`,
280
280
  then apply the team's changes for this phase. When `OUTERLAYER_BRANCH` is set, as it is in a host's
281
281
  build, work on that branch, checking it out if it is not current, and
282
- push only to it: the host refuses a push to any other branch. Otherwise
282
+ push only to it: the host refuses a push to any other branch. When GitHub
283
+ refuses a push that changes a file under `.github/workflows/`, push it
284
+ under no other identity. Stop, and say in the final report that the
285
+ repository's default branch must set `build.workflows: allow` in
286
+ `.outerlayer/policy.yaml`. Otherwise
283
287
  branch `feat/<slug>` from the default branch, with the branch prefix setting in place of `feat/`. Spawn the implementer with the Implementer brief from
284
288
  [references/agent-briefs.md](references/agent-briefs.md), the issue, the
285
289
  drafted criteria with their ids when the build drafted them, the branch