@outerlayer/cli 0.26.0 → 0.26.1

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 (59) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{agent-setup-YHFZB2BC.js → agent-setup-PZYQWN4H.js} +3 -3
  3. package/dist/build-info.json +1 -1
  4. package/dist/{check-FAGTKWHT.js → check-3CBJVXZD.js} +16 -16
  5. package/dist/{chunk-H3AEZIYB.js → chunk-6M4LNO22.js} +1 -1
  6. package/dist/{chunk-6S3UEBLB.js → chunk-7NKVMAP6.js} +1 -1
  7. package/dist/{chunk-TI33WRBT.js → chunk-BMWIUSTZ.js} +3 -3
  8. package/dist/{chunk-WVM6PM2N.js → chunk-D7V33CAH.js} +3 -3
  9. package/dist/{chunk-P7UQZFNY.js → chunk-EORWWFPA.js} +2 -2
  10. package/dist/{chunk-4QKHBDEN.js → chunk-GAWZ7ATV.js} +5 -5
  11. package/dist/{chunk-XK7FRM5J.js → chunk-GQOT37HL.js} +5 -5
  12. package/dist/{chunk-FQCLEH34.js → chunk-HXFRJKMU.js} +2 -2
  13. package/dist/{chunk-XBCJI6SV.js → chunk-IIFMFX6J.js} +2 -2
  14. package/dist/{chunk-6WZKI6LQ.js → chunk-ILL2CWOU.js} +2 -2
  15. package/dist/{chunk-ARMZI56S.js → chunk-JUTN2HUP.js} +2 -2
  16. package/dist/{chunk-ITP76BST.js → chunk-PNHNKMA3.js} +3 -3
  17. package/dist/{chunk-C3AMVSMS.js → chunk-QIIMZC7W.js} +1 -1
  18. package/dist/{chunk-GJZEUQ6D.js → chunk-QRZLUUNN.js} +13 -0
  19. package/dist/{chunk-DVAAATJP.js → chunk-TBJ7KO2A.js} +7 -7
  20. package/dist/{chunk-G2T4HCGT.js → chunk-TEVO3RUV.js} +1 -1
  21. package/dist/{chunk-CLUUAX6O.js → chunk-TPAF24PK.js} +2 -2
  22. package/dist/{chunk-D4UDE2AP.js → chunk-W3NVHOCS.js} +1 -1
  23. package/dist/{chunk-DZUANBKP.js → chunk-XPKI5OMT.js} +4 -4
  24. package/dist/{claude-launcher-FXFXYW2E.js → claude-launcher-O2U6P6ZD.js} +1 -1
  25. package/dist/{cli-CD4UNXBY.js → cli-7HVTFJZO.js} +60 -60
  26. package/dist/{command-A54TSZWD.js → command-2Q5UDZUO.js} +8 -8
  27. package/dist/{connect-cmd-HAFFAVEO.js → connect-cmd-2JHSLBXK.js} +2 -2
  28. package/dist/{container-start-NRPEMKKE.js → container-start-SCCR2PRD.js} +9 -9
  29. package/dist/{control-plane-launch-FRK5IZXC.js → control-plane-launch-654RV5PO.js} +2 -2
  30. package/dist/{doctor-AXJQQBKY.js → doctor-3QA5Y5HG.js} +10 -10
  31. package/dist/{emit-artifact-cmd-Y2GMWCSD.js → emit-artifact-cmd-SFUSDWZM.js} +6 -6
  32. package/dist/{emit-criteria-cmd-LI7OLHEC.js → emit-criteria-cmd-VMZIRJCQ.js} +3 -3
  33. package/dist/{emit-finding-cmd-3LU7C356.js → emit-finding-cmd-KMJNYQI7.js} +3 -3
  34. package/dist/{emit-result-cmd-NKAKRBW2.js → emit-result-cmd-NEICBIDU.js} +6 -6
  35. package/dist/{emit-step-cmd-JQ23TRF5.js → emit-step-cmd-AUHA3EXY.js} +4 -4
  36. package/dist/{governing-source-73APROH6.js → governing-source-J5DF65X5.js} +6 -6
  37. package/dist/{hook-fast-GD7F2EBL.js → hook-fast-REXH5P6R.js} +1 -1
  38. package/dist/index.js +4 -4
  39. package/dist/{init-5WVPLO3G.js → init-NEUTUGEQ.js} +9 -9
  40. package/dist/{init-IFQCZKY6.js → init-UMON3HZK.js} +9 -9
  41. package/dist/{init-cmd-KNYXSA6O.js → init-cmd-54DMRBNO.js} +6 -6
  42. package/dist/{init-update-HTHYQOHU.js → init-update-FJDKY4SJ.js} +4 -4
  43. package/dist/{loop-HTWKPG3J.js → loop-6JKW5QR5.js} +16 -16
  44. package/dist/{machine-AYYL2WXW.js → machine-XF55O56X.js} +8 -8
  45. package/dist/{mcp-serve-cmd-QBFQN553.js → mcp-serve-cmd-U5N5DK3H.js} +1 -1
  46. package/dist/{runner-key-3HAVHQZI.js → runner-key-FUNSJ564.js} +9 -9
  47. package/dist/{session-sender-535VA2CA.js → session-sender-P5GVOIUY.js} +7 -7
  48. package/dist/{spec-cmd-KERLZ6GJ.js → spec-cmd-HMFW552G.js} +4 -4
  49. package/dist/{status-IAXWRX7B.js → status-ULZVKQ7G.js} +12 -12
  50. package/dist/{sync-cmd-EIRKU5FA.js → sync-cmd-VCLCOME6.js} +6 -6
  51. package/dist/{watch-SMF5CW5T.js → watch-SVGL24OX.js} +6 -6
  52. package/dist/{work-claim-cmd-JCUBRZKN.js → work-claim-cmd-WQF5RTCT.js} +6 -6
  53. package/dist/{work-cmd-C3CFJZYD.js → work-cmd-TGSNYPSG.js} +4 -4
  54. package/dist/{work-comment-cmd-NDE3O7PN.js → work-comment-cmd-O3FVX6M4.js} +4 -4
  55. package/dist/{work-logs-cmd-KUGBBJAO.js → work-logs-cmd-2RMJFVNZ.js} +4 -4
  56. package/dist/{work-open-pr-cmd-TFIGKPRL.js → work-open-pr-cmd-5EP7BKRE.js} +5 -5
  57. package/dist/{work-pr-cmd-KKCLXRJL.js → work-pr-cmd-DKTBEFHO.js} +4 -4
  58. package/dist/{work-stop-cmd-QUEDBM4Q.js → work-stop-cmd-TNJYBLMN.js} +4 -4
  59. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @outerlayer/cli
2
2
 
3
+ ## 0.26.1
4
+
5
+ ### Patch Changes
6
+
7
+ - a5a32a4: Pin a saved credential to its own gateway. A login or API key stored in the
8
+ config file is now sent only to the gateway address it was created for. If
9
+ `OUTERLAYER_URL` or `--url` names a different host and no key is supplied for
10
+ that call, the command refuses instead of sending the saved credential — and
11
+ the session transcripts a sync carries with it — to a host you did not choose.
12
+ To reach a different gateway, pass its own key: `--url <addr> --api-key <key>`,
13
+ or set `OUTERLAYER_API_KEY` beside `OUTERLAYER_URL`.
14
+
3
15
  ## 0.26.0
4
16
 
5
17
  ### Minor Changes
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { keepHandWritten, runAgentSetup } from './chunk-H3AEZIYB.js';
3
+ export { keepHandWritten, runAgentSetup } from './chunk-6M4LNO22.js';
4
4
  import './chunk-WX2WEERU.js';
5
5
  import './chunk-VJBFQP3H.js';
6
- import './chunk-D4UDE2AP.js';
6
+ import './chunk-W3NVHOCS.js';
7
7
  import './chunk-MQ743JX3.js';
8
- import './chunk-GJZEUQ6D.js';
8
+ import './chunk-QRZLUUNN.js';
9
9
  import './chunk-ZJSNLVCE.js';
10
10
  import './chunk-BJ3KTMDH.js';
11
11
  import './chunk-YVZJ6GKF.js';
@@ -1 +1 @@
1
- {"id":"2026-10-16T14:55:16.789Z+b8b6796","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
1
+ {"id":"2026-10-16T15:29:16.974Z+c2e9a47","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
@@ -1,26 +1,26 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { probeCredentials } from './chunk-DVAAATJP.js';
4
- import './chunk-4QKHBDEN.js';
3
+ import { probeCredentials } from './chunk-TBJ7KO2A.js';
4
+ import './chunk-GAWZ7ATV.js';
5
5
  import './chunk-TKL74NLB.js';
6
6
  import './chunk-ZVB57WI6.js';
7
7
  import './chunk-6FAP657M.js';
8
8
  import './chunk-3JVYMD4G.js';
9
9
  import './chunk-YETTWTAY.js';
10
10
  import './chunk-TPKYTORP.js';
11
- import './chunk-XBCJI6SV.js';
11
+ import './chunk-IIFMFX6J.js';
12
12
  import './chunk-2N72GPS2.js';
13
13
  import './chunk-UNF7MWEL.js';
14
- import './chunk-ITP76BST.js';
15
- import './chunk-P7UQZFNY.js';
14
+ import './chunk-PNHNKMA3.js';
15
+ import './chunk-EORWWFPA.js';
16
16
  import './chunk-ESVW4MJY.js';
17
- import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-TI33WRBT.js';
17
+ import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-BMWIUSTZ.js';
18
18
  import './chunk-4IFKLYMM.js';
19
19
  import './chunk-YYYRBYWG.js';
20
20
  import './chunk-TBT347UY.js';
21
- import './chunk-ARMZI56S.js';
22
- import './chunk-6S3UEBLB.js';
23
- import './chunk-6WZKI6LQ.js';
21
+ import './chunk-JUTN2HUP.js';
22
+ import './chunk-7NKVMAP6.js';
23
+ import './chunk-ILL2CWOU.js';
24
24
  import './chunk-665QWBNW.js';
25
25
  import './chunk-TQMI335S.js';
26
26
  import './chunk-5PMQDQFV.js';
@@ -34,20 +34,20 @@ import './chunk-7I6GZSN3.js';
34
34
  import './chunk-4R24DSL2.js';
35
35
  import './chunk-HPOEVC2V.js';
36
36
  import './chunk-XGJUNNXL.js';
37
- import './chunk-WVM6PM2N.js';
38
- import './chunk-DZUANBKP.js';
39
- import './chunk-FQCLEH34.js';
40
- import './chunk-G2T4HCGT.js';
37
+ import './chunk-D7V33CAH.js';
38
+ import './chunk-XPKI5OMT.js';
39
+ import './chunk-HXFRJKMU.js';
40
+ import './chunk-TEVO3RUV.js';
41
41
  import './chunk-BUP5N3X6.js';
42
42
  import './chunk-XSPA5ODY.js';
43
43
  import './chunk-GOSFARMS.js';
44
44
  import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-JWRX5ZTT.js';
45
45
  import './chunk-UXYLWVTQ.js';
46
46
  import './chunk-7RQ73DLO.js';
47
- import './chunk-D4UDE2AP.js';
47
+ import './chunk-W3NVHOCS.js';
48
48
  import './chunk-MQ743JX3.js';
49
- import './chunk-GJZEUQ6D.js';
50
- import './chunk-C3AMVSMS.js';
49
+ import './chunk-QRZLUUNN.js';
50
+ import './chunk-QIIMZC7W.js';
51
51
  import './chunk-ZJSNLVCE.js';
52
52
  import './chunk-DYEFPYME.js';
53
53
  import './chunk-BKO6JEZI.js';
@@ -2,7 +2,7 @@
2
2
  import { createRequire } from 'node:module';
3
3
  import { runEmit } from './chunk-WX2WEERU.js';
4
4
  import { installStarterPack } from './chunk-VJBFQP3H.js';
5
- import { resolveGitCommonDir, defaultGitRunner } from './chunk-D4UDE2AP.js';
5
+ import { resolveGitCommonDir, defaultGitRunner } from './chunk-W3NVHOCS.js';
6
6
  import { addStdioMcpEntryIfAbsent, addDocsMcpEntryIfAbsent, DOCS_MCP_SERVER_NAME } from './chunk-YVZJ6GKF.js';
7
7
  import { C } from './chunk-ANPNT6PM.js';
8
8
  import { AGENTS_MD_LAYOUT, declareAgentsMdLayout, linkClaudeSkills, SKILLS_LINK_PATH, describeSkillsLink, isAgentsMdLayout, holdsTodaysLayoutSources, discoverOuterlayerPaths } from './chunk-JKNYTNYD.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-6WZKI6LQ.js';
3
+ import { MIN_ENGINE_MAJOR } from './chunk-ILL2CWOU.js';
4
4
  import { runnerImageVersion } from './chunk-665QWBNW.js';
5
5
  import { firecrackerArch, MICROVM_ARCHES, guestAssetsPinned } from './chunk-4R24DSL2.js';
6
6
  import { spawnSync } from 'child_process';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { isPlaceholderCommand } from './chunk-ARMZI56S.js';
4
- import { describeCallFailure } from './chunk-WVM6PM2N.js';
5
- import { WorkCommandError, getJson } from './chunk-DZUANBKP.js';
3
+ import { isPlaceholderCommand } from './chunk-JUTN2HUP.js';
4
+ import { describeCallFailure } from './chunk-D7V33CAH.js';
5
+ import { WorkCommandError, getJson } from './chunk-XPKI5OMT.js';
6
6
  import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
7
7
  import { builtinKind } from './chunk-JWRX5ZTT.js';
8
8
  import { signerFor } from './chunk-F6DIHHBS.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { WorkCommandError, postJson } from './chunk-DZUANBKP.js';
4
- import { defaultGitRunner, materializeContext, isStagingWriteFault, lookupGoverningSource } from './chunk-D4UDE2AP.js';
5
- import { signingFetchFor } from './chunk-GJZEUQ6D.js';
3
+ import { WorkCommandError, postJson } from './chunk-XPKI5OMT.js';
4
+ import { defaultGitRunner, materializeContext, isStagingWriteFault, lookupGoverningSource } from './chunk-W3NVHOCS.js';
5
+ import { signingFetchFor } from './chunk-QRZLUUNN.js';
6
6
  import { unsupportedLayout, layoutRefusalReason, composeDelivery } from './chunk-VPEGE3QZ.js';
7
7
  import { SHIM_SCRIPT, GOVERNANCE_VARIABLE } from './chunk-HCVLP7XA.js';
8
8
  import { readDegraded, readContextManifest, readSourceCache } from './chunk-YQR6E6OV.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
4
- import { autoConnect, detectActiveSession } from './chunk-FQCLEH34.js';
4
+ import { autoConnect, detectActiveSession } from './chunk-HXFRJKMU.js';
5
5
  import { acquireSpoolLockAt } from './chunk-BUP5N3X6.js';
6
- import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-GJZEUQ6D.js';
6
+ import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-QRZLUUNN.js';
7
7
  import { resolveRepoIdentity } from './chunk-QE3UQAHK.js';
8
8
  import { C } from './chunk-ANPNT6PM.js';
9
9
  import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { readsJobState, READ_JOB_STATE_FORMATS, jobStateFormatOf } from './chunk-ZVB57WI6.js';
4
- import { senderPidfile } from './chunk-XBCJI6SV.js';
4
+ import { senderPidfile } from './chunk-IIFMFX6J.js';
5
5
  import { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD } from './chunk-2N72GPS2.js';
6
6
  import { writeDockerClientConfig } from './chunk-UNF7MWEL.js';
7
- import { installScrubContext } from './chunk-ITP76BST.js';
8
- import { ADDED_USER, AssetError, obtainImage, ensureRootfs, gitRemoteFor, startServicesFor, createBuildDisk, machineConfig, resolveAgentUser, AgentUserError, runBuildSteps, shellQuote, LEASE_SECONDS, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, containerSenderCommand, signalInContainer, syncInContainer, copyTranscriptsFromContainer, senderAliveScript, helperFirecrackerNote, HelperRefusal, GH_CONFIG_YML, ghHostsYml, isLiteralAddress, deleteBuildDisk, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, copyJudgeTree } from './chunk-6WZKI6LQ.js';
7
+ import { installScrubContext } from './chunk-PNHNKMA3.js';
8
+ import { ADDED_USER, AssetError, obtainImage, ensureRootfs, gitRemoteFor, startServicesFor, createBuildDisk, machineConfig, resolveAgentUser, AgentUserError, runBuildSteps, shellQuote, LEASE_SECONDS, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, containerSenderCommand, signalInContainer, syncInContainer, copyTranscriptsFromContainer, senderAliveScript, helperFirecrackerNote, HelperRefusal, GH_CONFIG_YML, ghHostsYml, isLiteralAddress, deleteBuildDisk, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, copyJudgeTree } from './chunk-ILL2CWOU.js';
9
9
  import { readBranchHead, fetchCommit, diffBetween } from './chunk-AINUN2TT.js';
10
10
  import { isSameProcess, startTimeOf } from './chunk-JBJTC3UU.js';
11
11
  import { HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, writeJobFile, readJobFile, COMMAND_DIR, childEnvironment, judgeCommand, JUDGE_MAX_TURNS, MAX_REPORT_BYTES, JUDGE_DIR } from './chunk-7I6GZSN3.js';
12
12
  import { CLAUDE_CODE_VERSION, FIRECRACKER_VERSION } from './chunk-4R24DSL2.js';
13
13
  import { waitForAgent, vmExecArgs } from './chunk-HPOEVC2V.js';
14
14
  import { socketPathProblem, vsockLinks, linkVsockSockets } from './chunk-XGJUNNXL.js';
15
- import { describeCallFailure, resolveGoverningSource, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, formatDuration, retrySend, formatClock } from './chunk-WVM6PM2N.js';
16
- import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-DZUANBKP.js';
15
+ import { describeCallFailure, resolveGoverningSource, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, formatDuration, retrySend, formatClock } from './chunk-D7V33CAH.js';
16
+ import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-XPKI5OMT.js';
17
17
  import { planArtifactUpload } from './chunk-BUP5N3X6.js';
18
18
  import { isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-JWRX5ZTT.js';
19
19
  import { parseSize } from './chunk-7RQ73DLO.js';
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { checkStarterFiles, contextIsGoverned, checkBuildSkill } from './chunk-XFGL53GU.js';
4
- import { resolveCredentials, getJson, WorkCommandError } from './chunk-DZUANBKP.js';
5
- import { isLinkedRepository } from './chunk-G2T4HCGT.js';
4
+ import { resolveCredentials, getJson, WorkCommandError } from './chunk-XPKI5OMT.js';
5
+ import { isLinkedRepository } from './chunk-TEVO3RUV.js';
6
6
  import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
7
7
  import { checkFormerSkillNames } from './chunk-MQ743JX3.js';
8
- import { resolveGatewayCredentials, defaultFetch } from './chunk-GJZEUQ6D.js';
9
- import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-C3AMVSMS.js';
8
+ import { resolveGatewayCredentials, defaultFetch } from './chunk-QRZLUUNN.js';
9
+ import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-QIIMZC7W.js';
10
10
  import { readStatuslineState, STATE_FRESH_MS } from './chunk-DXDF43YG.js';
11
11
  import { hookCommandEscapesControlPlane, CONTROL_PLANE_DIR_VARIABLE } from './chunk-HCVLP7XA.js';
12
12
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
@@ -1186,7 +1186,7 @@ async function gatherDoctorChecks() {
1186
1186
  const { runnerVmCheck } = await import('./doctor-53F2PYY7.js');
1187
1187
  checks.push(runnerVmCheck(configPath, { lima: realLima(), home: homeFromEnv(), instance: runnerVm.instance }));
1188
1188
  } else if (hasRunnerBlock(configPath)) {
1189
- const { runnerHostChecks } = await import('./doctor-AXJQQBKY.js');
1189
+ const { runnerHostChecks } = await import('./doctor-3QA5Y5HG.js');
1190
1190
  const hooks = (() => {
1191
1191
  try {
1192
1192
  return loadRunnerConfig(configPath).hooks;
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-G2T4HCGT.js';
4
- import { resolveGatewayCredentials } from './chunk-GJZEUQ6D.js';
3
+ import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-TEVO3RUV.js';
4
+ import { resolveGatewayCredentials } from './chunk-QRZLUUNN.js';
5
5
  import { findGitDirs, readRepoConnection } from './chunk-BJ3KTMDH.js';
6
6
  import { resolveRepoIdentity } from './chunk-QE3UQAHK.js';
7
7
  import { cliInvocation } from './chunk-CRB3POP4.js';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LiveUploader } from './chunk-ITP76BST.js';
4
- import { spoolDir } from './chunk-C3AMVSMS.js';
3
+ import { LiveUploader } from './chunk-PNHNKMA3.js';
4
+ import { spoolDir } from './chunk-QIIMZC7W.js';
5
5
  import { CaptureDaemon } from './chunk-QE3UQAHK.js';
6
6
  import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
7
7
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -8,8 +8,8 @@ import { createDockerHost, builderSpec, runnerLabelValue, RUNNER_LABEL, BUILD_LA
8
8
  import { FIRECRACKER_VERSION, hostHelperPinned, firecrackerArch, MICROVM_ARCHES, RecipeError, DOCKER_FEATURE, CLAUDE_CODE_VERSION, GUEST_HELPER_SHA256, GUEST_ASSETS_BASE_URL, GUEST_KERNEL_SHA256, JAILER_BINARY_SHA256, FIRECRACKER_BINARY_SHA256, FIRECRACKER_SHA256, GUEST_ASSETS_VERSION, DEFAULT_BASE_IMAGE } from './chunk-4R24DSL2.js';
9
9
  import { execCapture } from './chunk-HPOEVC2V.js';
10
10
  import { GUEST_CID } from './chunk-XGJUNNXL.js';
11
- import { describeCallFailure, controlPlaneTokenFailure, refusalCode, resolveGoverningSource, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, shimScript } from './chunk-WVM6PM2N.js';
12
- import { WorkCommandError } from './chunk-DZUANBKP.js';
11
+ import { describeCallFailure, controlPlaneTokenFailure, refusalCode, resolveGoverningSource, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, shimScript } from './chunk-D7V33CAH.js';
12
+ import { WorkCommandError } from './chunk-XPKI5OMT.js';
13
13
  import { hostAllowed } from './chunk-UXYLWVTQ.js';
14
14
  import { parseDuKilobytes } from './chunk-7RQ73DLO.js';
15
15
  import { sharedSkillNames, skillConflictMessage } from './chunk-VPEGE3QZ.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-6S3UEBLB.js';
4
- import { MIN_ENGINE_MAJOR } from './chunk-6WZKI6LQ.js';
3
+ import { detectMachine, supportsContainerBuilds, reachDockerStep, describeMachineDocker, supportsMicroVmBuilds } from './chunk-7NKVMAP6.js';
4
+ import { MIN_ENGINE_MAJOR } from './chunk-ILL2CWOU.js';
5
5
  import { hasStoredCredential, AGENT_COMMANDS, storeClaudeCredential, credentialFromStdin, isAgentName } from './chunk-5PMQDQFV.js';
6
6
  import { runnerCredentialProblem } from './chunk-JWRX5ZTT.js';
7
7
  import { runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-L4CW6LZQ.js';
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { uploadSpooledSteps } from './chunk-P7UQZFNY.js';
3
+ import { uploadSpooledSteps } from './chunk-EORWWFPA.js';
4
4
  import { LaunchFilter } from './chunk-ESVW4MJY.js';
5
5
  import { RepoFilter } from './chunk-TBT347UY.js';
6
6
  import { migrateLegacyArtifactSidecars, planArtifactUpload, artifactsStatePath, sanitizeTerminal, acquireArtifactSpoolLock, artifactBlobsDir, resolveArtifactTurnIndex, isArtifactTombstoned, ARTIFACT_RETRY_MAX_AGE_MS, writeArtifactSpoolState, reclaimUnneededArtifactBlobs, neededArtifactShas } from './chunk-BUP5N3X6.js';
7
- import { cliFetch, resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-GJZEUQ6D.js';
8
- import { writeSyncStatus, spoolDir } from './chunk-C3AMVSMS.js';
7
+ import { cliFetch, resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-QRZLUUNN.js';
8
+ import { writeSyncStatus, spoolDir } from './chunk-QIIMZC7W.js';
9
9
  import { readLatestProvenanceForSession, readContextProvenance } from './chunk-ZJSNLVCE.js';
10
10
  import { hookExecSpoolPath } from './chunk-DYEFPYME.js';
11
11
  import { applyReportedCost } from './chunk-BKO6JEZI.js';
@@ -628,7 +628,7 @@ async function missingControlPlane(cwd, sessionId, home, env) {
628
628
  cleanupEarlierCopies(dirs);
629
629
  }
630
630
  if (!contextPossiblyGoverned(cwd, home)) return void 0;
631
- const { governanceOf } = await import('./control-plane-launch-FRK5IZXC.js');
631
+ const { governanceOf } = await import('./control-plane-launch-654RV5PO.js');
632
632
  if (await governanceOf({ cwd, env, home }) !== "governed") return void 0;
633
633
  recordMissingContext(dirs, sessionId, home);
634
634
  const launcher = `${cliInvocation()} claude`;
@@ -13,7 +13,15 @@ createRequire(import.meta.url);
13
13
  var MISSING_HELP = `Run \`${cliInvocation()} login\` to sign in, or set OUTERLAYER_URL / OUTERLAYER_API_KEY / OUTERLAYER_APP_ID. Mint a key in the dashboard: Settings \u2192 API keys.`;
14
14
  var NO_FACTORY_MESSAGE = `you are logged in, but no factory is chosen for this repository. Run \`${cliInvocation()} connect\` to choose one, or pass --app-id / set OUTERLAYER_APP_ID.`;
15
15
  var NO_FACTORY_OUTSIDE_REPOSITORY_MESSAGE = "you are logged in, but this directory is not in a git repository, so no factory is chosen. Pass --app-id / set OUTERLAYER_APP_ID, or run this from inside a connected repository.";
16
+ var ORIGIN_MISMATCH_MESSAGE = "the gateway address is not the one your saved credential belongs to. A saved login or key is only sent to the address it was created for, so nothing can redirect it \u2014 or the session transcripts a sync carries with it \u2014 to a host set through OUTERLAYER_URL or --url. To call a different gateway, pass its own key too: --url <addr> --api-key <key>, or set OUTERLAYER_API_KEY beside OUTERLAYER_URL.";
16
17
  var LOGIN_TOKEN_PREFIX = "olu_";
18
+ function sameOrigin(a, b) {
19
+ try {
20
+ return new URL(a).origin === new URL(b).origin;
21
+ } catch {
22
+ return false;
23
+ }
24
+ }
17
25
  function unauthorizedMessage(credential) {
18
26
  return credential.startsWith(LOGIN_TOKEN_PREFIX) ? `not authorized \u2014 the login is expired or was revoked. Run \`${cliInvocation()} login\` to sign in again.` : "not authorized \u2014 the API key is unknown, expired, or bound to a different factory. Mint a fresh key: dashboard \u2192 Settings \u2192 API keys.";
19
27
  }
@@ -26,6 +34,11 @@ function resolveGatewayCredentials(sources = {}) {
26
34
  const credential = key ?? config.accountToken;
27
35
  const cwd = sources.cwd ?? process.cwd();
28
36
  const appId = sources.appId ?? (env.OUTERLAYER_APP_ID || void 0) ?? (kind === "key" ? config.appId : readRepoConnection(cwd)?.appId);
37
+ const suppliedKey = sources.apiKey !== void 0 || Boolean(env.OUTERLAYER_API_KEY);
38
+ const savedCredential = credential != null && !suppliedKey && (credential === config.apiKey || credential === config.accountToken);
39
+ if (savedCredential && url && config.url && !sameOrigin(url, config.url)) {
40
+ return { ok: false, message: ORIGIN_MISMATCH_MESSAGE, url, credential, appId, kind };
41
+ }
29
42
  if (credential && url && !appId && kind === "login") {
30
43
  const message = findGitDirs(cwd) === void 0 ? NO_FACTORY_OUTSIDE_REPOSITORY_MESSAGE : NO_FACTORY_MESSAGE;
31
44
  return { ok: false, message, url, credential, appId, kind };
@@ -1,25 +1,25 @@
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, microVmCommandLine, runCommand, commandLogOffset, execCommandLine, startSender, startHostServices, finishJob, isContainerTracked, probeCommand, appendCommandLog, judgeProbe, EXIT_CODE_FILE, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listUnreadableJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, AttemptLogBook, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, listTrackedJobs, restartSender, ALREADY_RELEASED, inTeardown } from './chunk-4QKHBDEN.js';
3
+ import { releaseLease, isUnfinished, setStage, jobEnv, runHook, describeHookEnd, provisionMicroVm, deliverCommitHooks, provisionProcess, provisionEnvironment, readProvisionOut, resolveHostBuild, workdirProblem, listenOnBroker, hostEnvironment, hostCommandEnvironment, execArgv, microVmCommandLine, runCommand, commandLogOffset, execCommandLine, startSender, startHostServices, finishJob, isContainerTracked, probeCommand, appendCommandLog, judgeProbe, EXIT_CODE_FILE, isGroupAlive, outcomeFromExitCode, isTimedOut, readCpuUsec, isIdle, stopOrphanedMicroVms, unfinishedJobs, listUnreadableJobs, listAdoptableJobs, retryFailedReleases, recoverLostJobs, hookLimitsFor, AttemptLogBook, needsRenew, renewLease, RENEW_INTERVAL_SECONDS, listTrackedJobs, restartSender, ALREADY_RELEASED, inTeardown } from './chunk-GAWZ7ATV.js';
4
4
  import { writePendingUpdate } from './chunk-TKL74NLB.js';
5
5
  import { JOB_STATE_FORMAT, readsJobState, jobStateFormatOf } from './chunk-ZVB57WI6.js';
6
6
  import { readHousekeepingRecord, writeHousekeepingRecord } from './chunk-6FAP657M.js';
7
7
  import { decideInstalledSwitch } from './chunk-3JVYMD4G.js';
8
8
  import { fetchVersionMeta, npmVersion, npmSupportsProvenance, fetchTarballDigest, fetchProvenance, installVersion, auditSignatures } from './chunk-YETTWTAY.js';
9
9
  import { RUNNER_PROTOCOL } from './chunk-TPKYTORP.js';
10
- import { currentSkillCommand, formerSkillProblem, placeholderQueues, placeholderProblem } from './chunk-TI33WRBT.js';
10
+ import { currentSkillCommand, formerSkillProblem, placeholderQueues, placeholderProblem } from './chunk-BMWIUSTZ.js';
11
11
  import { writeMarker, readMarker, currentVersion, removeMarker, entryIn, versionDir, startedThroughCurrent, switchCurrent, isInLayout, cleanVersions, stagingDir } from './chunk-4IFKLYMM.js';
12
12
  import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
13
13
  import { RepoFilter } from './chunk-TBT347UY.js';
14
- import { LEASE_SECONDS, provisionContainer, leaseExpiresAtMs, deliverContainerHooks, lifecycleSteps, lifecycleFailureReason, prepareBranch, containerCommandExec, measureDisk, setUpRunnerCgroup, createContainerRuntime, parseCpuList, ensureTunnel, keepGhConfigCurrent, filesAreCopied } from './chunk-6WZKI6LQ.js';
14
+ import { LEASE_SECONDS, provisionContainer, leaseExpiresAtMs, deliverContainerHooks, lifecycleSteps, lifecycleFailureReason, prepareBranch, containerCommandExec, measureDisk, setUpRunnerCgroup, createContainerRuntime, parseCpuList, ensureTunnel, keepGhConfigCurrent, filesAreCopied } from './chunk-ILL2CWOU.js';
15
15
  import { tagToPull, pullInstruction, imageTag, writeUpdateStatus } from './chunk-665QWBNW.js';
16
16
  import { isVersion, compareVersions, satisfiesRange } from './chunk-TQMI335S.js';
17
17
  import { checkFit } from './chunk-MLD2NA7N.js';
18
18
  import { claimPidFile, readPidFile, releasePidFile } from './chunk-PYSKSROG.js';
19
19
  import { startTimeOf, isSameProcess } from './chunk-JBJTC3UU.js';
20
20
  import { writeJobFile, ensureRunnerIdentity, readJobFile, builderName, runnerLabelValue, ensureFailureCount, builderSpec, ensureBuilder, spawnRun, BUILD_LABEL, RUNNER_LABEL, readJobFileChecked } from './chunk-7I6GZSN3.js';
21
- import { describeCallFailure, retrySend, shortClaim, relativeToRunner, formatDuration, BuildTokens, classifyRefusal, refusalCode, createRunnerLog, formatClock } from './chunk-WVM6PM2N.js';
22
- import { isSignatureRefusal, WorkCommandError, getJson, postJson } from './chunk-DZUANBKP.js';
21
+ import { describeCallFailure, retrySend, shortClaim, relativeToRunner, formatDuration, BuildTokens, classifyRefusal, refusalCode, createRunnerLog, formatClock } from './chunk-D7V33CAH.js';
22
+ import { isSignatureRefusal, WorkCommandError, getJson, postJson } from './chunk-XPKI5OMT.js';
23
23
  import { isBuiltinContainer, isBuiltinVm, isBuiltinProcess, loadRunnerConfig, checkHooks, builtinKind, DEFAULT_UPDATE_MAX_WAIT_HOURS } from './chunk-JWRX5ZTT.js';
24
24
  import { exceedsDisk } from './chunk-7RQ73DLO.js';
25
25
  import { resolveVersion } from './chunk-RA3O54FC.js';
@@ -1746,7 +1746,7 @@ var CLAIM_REFUSAL_CODES = new Set(
1746
1746
  "pull_request_from_fork pull_request_on_default_branch pull_request_ambiguous pull_request_repository_not_connected repository_not_reachable branch_claimed_elsewhere".split(" ")
1747
1747
  );
1748
1748
  async function tryClaimAndStart(state, item, queue) {
1749
- const { postJson: postJson2 } = await import('./work-cmd-C3CFJZYD.js');
1749
+ const { postJson: postJson2 } = await import('./work-cmd-TGSNYPSG.js');
1750
1750
  const log = logOf(state);
1751
1751
  const hostKey = await loadHostKey(state.config.configPath);
1752
1752
  const claim = await retrySend(
@@ -2730,7 +2730,7 @@ async function start(configPath, deps = { fetchImpl: fetch }) {
2730
2730
  const outcome = await onStartUnderMarker({
2731
2731
  configPath,
2732
2732
  own: ownVersionOf(deps),
2733
- check: update.check ? () => update.check(configPath) : async () => (await import('./check-FAGTKWHT.js')).runRunnerCheck(configPath, { fetchImpl: deps.fetchImpl }),
2733
+ check: update.check ? () => update.check(configPath) : async () => (await import('./check-3CBJVXZD.js')).runRunnerCheck(configPath, { fetchImpl: deps.fetchImpl }),
2734
2734
  now: () => (deps.now ?? (() => /* @__PURE__ */ new Date()))().getTime(),
2735
2735
  log
2736
2736
  });
@@ -2,7 +2,7 @@
2
2
  import { createRequire } from 'node:module';
3
3
  import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
4
4
  import { DEFAULT_DASHBOARD } from './chunk-XSPA5ODY.js';
5
- import { cliFetch, resolveGatewayCredentials } from './chunk-GJZEUQ6D.js';
5
+ import { cliFetch, resolveGatewayCredentials } from './chunk-QRZLUUNN.js';
6
6
  import { writeRepoConnection, findGitDirs, readRepoConnection } from './chunk-BJ3KTMDH.js';
7
7
  import { remoteLookupFailed } from './chunk-QE3UQAHK.js';
8
8
  import { readCloudConfig } from './chunk-EABW6AJQ.js';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { autoConnect, detectActiveSession } from './chunk-FQCLEH34.js';
4
- import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-GJZEUQ6D.js';
3
+ import { autoConnect, detectActiveSession } from './chunk-HXFRJKMU.js';
4
+ import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-QRZLUUNN.js';
5
5
  import { resolveRepoIdentity } from './chunk-QE3UQAHK.js';
6
6
  import { C } from './chunk-ANPNT6PM.js';
7
7
  import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { removeRetiredSkills } from './chunk-MQ743JX3.js';
4
- import { defaultFetch, resolveGatewayCredentials } from './chunk-GJZEUQ6D.js';
4
+ import { defaultFetch, resolveGatewayCredentials } from './chunk-QRZLUUNN.js';
5
5
  import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
6
6
  import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-HBISTTG3.js';
7
7
  import { cliInvocation } from './chunk-CRB3POP4.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { detectActiveSession, autoConnect } from './chunk-FQCLEH34.js';
4
- import { workPageUrl } from './chunk-G2T4HCGT.js';
3
+ import { detectActiveSession, autoConnect } from './chunk-HXFRJKMU.js';
4
+ import { workPageUrl } from './chunk-TEVO3RUV.js';
5
5
  import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
6
- import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-GJZEUQ6D.js';
6
+ import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-QRZLUUNN.js';
7
7
  import { readRepoConnection } from './chunk-BJ3KTMDH.js';
8
8
  import { resolveRepoIdentity } from './chunk-QE3UQAHK.js';
9
9
  import { C } from './chunk-ANPNT6PM.js';
@@ -428,7 +428,7 @@ async function runWorkLinkSession(opts) {
428
428
  return await linkSession(opts);
429
429
  } catch (err) {
430
430
  if (opts.logFailures) {
431
- const { logHookError } = await import('./hook-fast-GD7F2EBL.js');
431
+ const { logHookError } = await import('./hook-fast-REXH5P6R.js');
432
432
  const reason = err instanceof Error ? err.message : String(err);
433
433
  logHookError(opts.home ?? homeFromEnv(opts.env ?? process.env), new Error(`work link-session #${opts.number} failed: ${reason}`));
434
434
  }
@@ -236,7 +236,7 @@ async function runClaudeLauncher(args, deps = {}) {
236
236
  return 1;
237
237
  }
238
238
  } else {
239
- const { resolveLaunchPlane } = await import('./control-plane-launch-FRK5IZXC.js');
239
+ const { resolveLaunchPlane } = await import('./control-plane-launch-654RV5PO.js');
240
240
  const plane = env[GOVERNANCE_VARIABLE] === "self" ? { kind: "none" } : await resolveLaunchPlane({ cwd, env, home, fetchImpl: deps.fetchImpl, stderr });
241
241
  if (plane.kind === "none") {
242
242
  const own2 = ownSkillsDirFor(cwd, home, [], stderr);