@outerlayer/cli 0.34.0-next.20261027013606 → 0.34.0-next.20261027121359
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.
- package/dist/{agent-setup-2A6P2SYL.js → agent-setup-UPRMGVB7.js} +6 -6
- package/dist/{bridge-F5FBQSPZ.js → bridge-GVZUP3NU.js} +2 -2
- package/dist/{build-YSOVDTAN.js → build-ZDYL7ZGP.js} +7 -7
- package/dist/{build-disk-RZ7AZKTY.js → build-disk-WMIRA4RD.js} +5 -5
- package/dist/build-info.json +1 -1
- package/dist/{builder-MQIL24HI.js → builder-XTAHDFV5.js} +4 -4
- package/dist/{check-JD3GVQFP.js → check-FAG4QKIX.js} +36 -36
- package/dist/{chunk-MYLOOVRJ.js → chunk-3NMDGGZS.js} +2 -2
- package/dist/{chunk-DM4EEV73.js → chunk-4IB5WUY2.js} +6 -6
- package/dist/{chunk-77VBS2RT.js → chunk-66TKWWTX.js} +5 -5
- package/dist/{chunk-P3NPTFLF.js → chunk-6SJ3DJDH.js} +3 -3
- package/dist/{chunk-AHAYHJNN.js → chunk-ARPPH7VS.js} +164 -26
- package/dist/{chunk-QRJIBTNQ.js → chunk-B7LPFCIN.js} +5 -5
- package/dist/{chunk-CCHSD7RS.js → chunk-CHDWAWQA.js} +1 -1
- package/dist/{chunk-HOUFCUMH.js → chunk-DUG3JXAT.js} +1 -1
- package/dist/{chunk-WYR4INK3.js → chunk-FRETDGET.js} +2 -2
- package/dist/{chunk-SDELQEG4.js → chunk-HO4XRLAZ.js} +1 -1
- package/dist/{chunk-GJ4KBHBD.js → chunk-I2GHZ2VA.js} +1 -1
- package/dist/{chunk-YL3RWW7X.js → chunk-J2X5CTYY.js} +1 -1
- package/dist/{chunk-FQGC22IP.js → chunk-JKOONI3H.js} +2 -2
- package/dist/{chunk-L5VHGRQE.js → chunk-KDSKFXPE.js} +1 -1
- package/dist/{chunk-EBVK3QBO.js → chunk-KFXPH7SJ.js} +2 -2
- package/dist/{chunk-QWXBWOVV.js → chunk-L4DCIEVT.js} +3 -3
- package/dist/{chunk-O7QPHJWN.js → chunk-L7RPNSAA.js} +1 -1
- package/dist/{chunk-MN3PP45X.js → chunk-LHUZVM3L.js} +1 -1
- package/dist/{chunk-EP3WBNMC.js → chunk-LTMFHECB.js} +20 -20
- package/dist/{chunk-7PCA37ZS.js → chunk-LUYTNCMS.js} +3 -3
- package/dist/{chunk-25XBOX3K.js → chunk-LXOBWRVC.js} +2 -2
- package/dist/{chunk-66LH5QAV.js → chunk-M6YTST7G.js} +2 -2
- package/dist/{chunk-72CJOYN6.js → chunk-N752ZNZ5.js} +1 -1
- package/dist/{chunk-QABXXQ67.js → chunk-NGZBVN6F.js} +5 -5
- package/dist/{chunk-TS3EFB7S.js → chunk-PBZODW5X.js} +1 -1
- package/dist/{chunk-RR3VDM7M.js → chunk-Q3ATWA2U.js} +3 -3
- package/dist/{chunk-7DK2FOZ4.js → chunk-QBBZGVZJ.js} +2 -2
- package/dist/{chunk-JA2ARVY6.js → chunk-QTAADTIO.js} +1 -1
- package/dist/{chunk-6KFJIU73.js → chunk-RMJSYOSV.js} +1 -1
- package/dist/{chunk-DEJCZ43H.js → chunk-RO2NZJHZ.js} +82 -6
- package/dist/{chunk-7X2G463B.js → chunk-SGT7YU3X.js} +5 -5
- package/dist/{chunk-FQOUIYBL.js → chunk-SJY6A6EH.js} +24 -18
- package/dist/{chunk-7QAJQDHS.js → chunk-T375XV3H.js} +1 -1
- package/dist/{chunk-BLSEHKZ4.js → chunk-TS2YACAQ.js} +2 -2
- package/dist/{chunk-7GY3DVIL.js → chunk-UC4OSOQS.js} +48 -2
- package/dist/{chunk-MPNASRYB.js → chunk-UDRBQI5J.js} +10 -10
- package/dist/{chunk-7QF2EXAN.js → chunk-UXGWAAGQ.js} +4 -4
- package/dist/{chunk-GR7ZVGNI.js → chunk-UYWGR35C.js} +3 -3
- package/dist/{chunk-LQHCNXPK.js → chunk-W5EKMK37.js} +1 -1
- package/dist/{chunk-JM3YQ4LC.js → chunk-W774NREK.js} +3 -3
- package/dist/{chunk-GK6OYFMU.js → chunk-WS5E73JO.js} +5 -5
- package/dist/{chunk-VUJURIPJ.js → chunk-XEJ5USHY.js} +13 -5
- package/dist/{chunk-Q2KGDDUX.js → chunk-XSUM3E67.js} +3 -3
- package/dist/{chunk-CFFVCI2I.js → chunk-XZGURZHF.js} +1 -1
- package/dist/{chunk-WBTPI5MP.js → chunk-YGX72FUQ.js} +2 -2
- package/dist/{chunk-OKGHWCSK.js → chunk-YIBHQR3B.js} +2 -2
- package/dist/{chunk-SDAEXUIX.js → chunk-Z7THNFUU.js} +1 -0
- package/dist/{chunk-3VZTNXK5.js → chunk-ZV6GOXYA.js} +1 -1
- package/dist/{claude-launcher-EO3ALKBS.js → claude-launcher-SGZSOGKZ.js} +1 -1
- package/dist/{cli-3BAUWQCS.js → cli-6QN7TH6U.js} +110 -110
- package/dist/{command-UVGNJILP.js → command-6T6RI5XY.js} +24 -24
- package/dist/{config-NGCQD6SN.js → config-CWYMIXTV.js} +6 -6
- package/dist/{connect-cmd-65YBQRSY.js → connect-cmd-MY6SR4OK.js} +5 -5
- package/dist/{container-start-YBENDAOQ.js → container-start-FDXR4QND.js} +30 -30
- package/dist/{context-show-cmd-S5SEBOI2.js → context-show-cmd-WRTV3ACH.js} +6 -6
- package/dist/{control-plane-launch-BDSUP4DK.js → control-plane-launch-UM4IHOJQ.js} +5 -5
- package/dist/{demo-record-cmd-C2C4P2EQ.js → demo-record-cmd-XBWTORVM.js} +2 -2
- package/dist/{demo-voice-cmd-RWTRJUAX.js → demo-voice-cmd-FLU4GDKS.js} +11 -11
- package/dist/{docker-TRGA5QRL.js → docker-IUPWQ2RK.js} +4 -4
- package/dist/{doctor-QENPDYBD.js → doctor-5VNZ2BLY.js} +28 -26
- package/dist/{emit-artifact-cmd-56C6DBUP.js → emit-artifact-cmd-RDXIWRFU.js} +10 -10
- package/dist/{emit-criteria-cmd-HRCWXD3W.js → emit-criteria-cmd-EDJOWGKL.js} +7 -7
- package/dist/{emit-demo-cmd-QMRDQGB6.js → emit-demo-cmd-W3BXFFU3.js} +11 -11
- package/dist/{emit-finding-cmd-6MVFN4BO.js → emit-finding-cmd-TMZIOQIP.js} +7 -7
- package/dist/{emit-result-cmd-E3YYBXRY.js → emit-result-cmd-P55JBD2W.js} +9 -9
- package/dist/{emit-step-cmd-DM4CRYYI.js → emit-step-cmd-Y7LKI7L3.js} +7 -7
- package/dist/{exec-client-LXHTMVIB.js → exec-client-FB3OBHOJ.js} +3 -3
- package/dist/{find-unit-IOCVYPNW.js → find-unit-R4I5GJCH.js} +8 -8
- package/dist/{findings-cmd-K2OYBTUH.js → findings-cmd-D64BYS7Z.js} +7 -7
- package/dist/{fleet-readiness-VIAVQYRP.js → fleet-readiness-75KQEZ6E.js} +5 -5
- package/dist/{governing-source-MQA2SDJT.js → governing-source-YYEU46PP.js} +9 -9
- package/dist/{guest-init-WWL2WL7R.js → guest-init-SGF6ZVZN.js} +4 -4
- package/dist/{hook-fast-KXAQ22LZ.js → hook-fast-XX5HZOCR.js} +1 -1
- package/dist/{host-checks-UNEQTQ6L.js → host-checks-VKBAGGWH.js} +28 -28
- package/dist/{pending-UWFDVFOA.js → host-key-CNCHVNDC.js} +3 -3
- package/dist/{image-tag-BTXKIH73.js → image-tag-MRWNQGXA.js} +3 -3
- package/dist/index.js +4 -4
- package/dist/{init-6UEOOD2J.js → init-B5S5LMIL.js} +21 -21
- package/dist/{init-JR62PVKC.js → init-BB2TLXVB.js} +21 -21
- package/dist/{init-cmd-34YWWGQZ.js → init-cmd-I2Z4VZSG.js} +10 -10
- package/dist/{init-update-JMVLGBDE.js → init-update-TIZILQXL.js} +8 -8
- package/dist/{install-cmd-RGO7NWKP.js → install-cmd-X4OHS36T.js} +5 -5
- package/dist/{logs-LEVH6VAI.js → logs-BPEOYWRW.js} +2 -2
- package/dist/{loop-WHK6EVUE.js → loop-XULUT5HL.js} +35 -35
- package/dist/{machine-ZZOQ7LLV.js → machine-UYFUUSEQ.js} +21 -21
- package/dist/{mcp-serve-cmd-4O5INM77.js → mcp-serve-cmd-NCPWJJDZ.js} +4 -4
- package/dist/{paths-AQ47ZRHK.js → paths-WXGOFVCF.js} +2 -2
- package/dist/{host-key-TSOKVSZX.js → pending-GEDI4K7P.js} +3 -3
- package/dist/{pidfile-PCG2H5T4.js → pidfile-MYLBUG2I.js} +3 -3
- package/dist/{record-SVCNFCGQ.js → record-Y2JIOP56.js} +3 -3
- package/dist/{runner-env-DH7YA4BU.js → runner-env-Y2PBG7TR.js} +8 -8
- package/dist/{runner-identity-GLL56XY7.js → runner-identity-PL442M57.js} +4 -4
- package/dist/{runner-key-4ASVLQGM.js → runner-key-L6LXC4QA.js} +21 -21
- package/dist/{session-sender-KLOMLL7X.js → session-sender-AXROAZSC.js} +10 -10
- package/dist/{spec-cmd-MX5QFW32.js → spec-cmd-JG4QLGGJ.js} +8 -8
- package/dist/{status-7YP2C2QK.js → status-VOGNQ3NG.js} +28 -28
- package/dist/{sync-cmd-CO4DFMHU.js → sync-cmd-B3KQZJZO.js} +9 -9
- package/dist/{update-steps-J54P3SBL.js → update-steps-RSYFLNTL.js} +29 -29
- package/dist/{watch-GU62YVQY.js → watch-IHZRBUYV.js} +9 -9
- package/dist/{work-claim-cmd-JF5GGDFZ.js → work-claim-cmd-YEMHNW3H.js} +12 -12
- package/dist/{work-cmd-VR7PPSP6.js → work-cmd-OWZS3ZXL.js} +7 -7
- package/dist/{work-comment-cmd-HVZF72B4.js → work-comment-cmd-ESBYAE4K.js} +8 -8
- package/dist/{work-demo-cmd-EDGNM5VJ.js → work-demo-cmd-FT3FQWM7.js} +7 -7
- package/dist/{work-logs-cmd-ZZVAHX36.js → work-logs-cmd-K6NTURGR.js} +7 -7
- package/dist/{work-open-pr-cmd-AQWZRJHZ.js → work-open-pr-cmd-NGD4Z2TO.js} +8 -8
- package/dist/{work-pr-cmd-UJ7VWCJN.js → work-pr-cmd-274YUPQB.js} +7 -7
- package/dist/{work-proofs-cmd-DTFQ3FSB.js → work-proofs-cmd-JLSQHVKO.js} +8 -8
- package/dist/{work-proofs-record-XG544MGV.js → work-proofs-record-AYUWUFBE.js} +14 -14
- package/dist/{work-stop-cmd-SAT4XVM2.js → work-stop-cmd-VQLLLJ3H.js} +7 -7
- package/package.json +1 -1
|
@@ -2,26 +2,26 @@
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { itemsSentence, criteriaOf, hostItemsOf, loadCitationFinder, MAX_TEST_FILE_BYTES, MAX_TEST_FILES, criterionInputs, planCriteria, parseJudgeAnswer, inCriteriaOrder, oneLineReason, judgedItems } from './chunk-6CK2OC4Q.js';
|
|
4
4
|
import { readsJobState, READ_JOB_STATE_FORMATS, jobStateFormatOf } from './chunk-ZVB57WI6.js';
|
|
5
|
-
import { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD } from './chunk-
|
|
5
|
+
import { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD } from './chunk-6SJ3DJDH.js';
|
|
6
6
|
import { zodProblem } from './chunk-I3LTIAOR.js';
|
|
7
|
-
import { senderPidfile } from './chunk-
|
|
8
|
-
import { installScrubContext } from './chunk-
|
|
9
|
-
import { writeDockerClientConfig } from './chunk-
|
|
7
|
+
import { senderPidfile } from './chunk-YGX72FUQ.js';
|
|
8
|
+
import { installScrubContext } from './chunk-B7LPFCIN.js';
|
|
9
|
+
import { writeDockerClientConfig } from './chunk-XZGURZHF.js';
|
|
10
10
|
import { upgradedStarterText } from './chunk-TZMDRHWB.js';
|
|
11
|
-
import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, hasClaudeCredential, AssetError, obtainImage, ensureRootfs, makeBuildsDirPrivate, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, startJailedInto, resolveAgentUser, AgentUserError, runBuildSteps, createContainerRuntime, containerSenderCommand, hostCommandEnvironment, execArgv, signalInContainer, startHostServices, LEASE_SECONDS, managedBuildSettingsFor, stopContainer, cleanupContainer, outOfMemoryReason, closeHostBuild, dropManagedClaudeKey, dropManagedBuildSettings, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, syncInContainer, copyTranscriptsFromContainer, MANAGED_UNJAILED_REASON, senderAliveScript, managedMachineLimits, withFactoryHosts, helperFirecrackerNote, managedClaudeKeyValues, managedBuildSettingValues, stopJailed, deleteBuildDisk, managedClaudeKeyFor, ROOT_DISK_ID_PREFIX, copyTranscripts, containerJudgeEnvironment, senderSignalScript, copyJudgeTree } from './chunk-
|
|
12
|
-
import { fetchCommit, readBranchHead, diffBetween } from './chunk-
|
|
13
|
-
import { waitForAgent, vmExecArgs } from './chunk-
|
|
14
|
-
import { socketPathProblem, vsockLinks, LEASE_LINK, linkVsockSockets } from './chunk-
|
|
15
|
-
import { describeCallFailure, resolveGoverningSource, prefetchGovernedContext, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, keptContextTree, WORKFLOW_PERMISSION_REASON } from './chunk-
|
|
16
|
-
import { imageBuildOf, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-
|
|
17
|
-
import { formatBytes, DEFAULT_CACHE_DISK, allocatedBytes } from './chunk-
|
|
18
|
-
import { HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, writeJobFile, readJobFile, parseSize, childEnvironment, withAnswerProtocol, judgeCommand, MAX_REPORT_BYTES, JUDGE_MAX_TURNS, JUDGE_DIR, COMMAND_DIR, MAX_ITEMS_BYTES } from './chunk-
|
|
11
|
+
import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, hasClaudeCredential, AssetError, obtainImage, ensureRootfs, makeBuildsDirPrivate, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, startJailedInto, resolveAgentUser, AgentUserError, runBuildSteps, createContainerRuntime, containerSenderCommand, hostCommandEnvironment, execArgv, signalInContainer, startHostServices, LEASE_SECONDS, managedBuildSettingsFor, stopContainer, cleanupContainer, outOfMemoryReason, closeHostBuild, dropManagedClaudeKey, dropManagedBuildSettings, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, syncInContainer, copyTranscriptsFromContainer, MANAGED_UNJAILED_REASON, senderAliveScript, managedMachineLimits, withFactoryHosts, helperFirecrackerNote, managedClaudeKeyValues, managedBuildSettingValues, stopJailed, deleteBuildDisk, managedClaudeKeyFor, ROOT_DISK_ID_PREFIX, copyTranscripts, containerJudgeEnvironment, senderSignalScript, copyJudgeTree } from './chunk-ARPPH7VS.js';
|
|
12
|
+
import { fetchCommit, readBranchHead, diffBetween } from './chunk-SGT7YU3X.js';
|
|
13
|
+
import { waitForAgent, vmExecArgs } from './chunk-ZV6GOXYA.js';
|
|
14
|
+
import { socketPathProblem, vsockLinks, LEASE_LINK, linkVsockSockets } from './chunk-RMJSYOSV.js';
|
|
15
|
+
import { describeCallFailure, resolveGoverningSource, prefetchGovernedContext, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, keptContextTree, WORKFLOW_PERMISSION_REASON } from './chunk-66TKWWTX.js';
|
|
16
|
+
import { imageBuildOf, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, egressSummary, DEFAULT_CHECK_TIME_LIMIT_MINUTES, optionalEgress } from './chunk-RO2NZJHZ.js';
|
|
17
|
+
import { formatBytes, DEFAULT_CACHE_DISK, allocatedBytes } from './chunk-TS2YACAQ.js';
|
|
18
|
+
import { HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, writeJobFile, readJobFile, parseSize, childEnvironment, withAnswerProtocol, judgeCommand, MAX_REPORT_BYTES, JUDGE_MAX_TURNS, JUDGE_DIR, COMMAND_DIR, MAX_ITEMS_BYTES } from './chunk-UYWGR35C.js';
|
|
19
19
|
import { CLAUDE_CODE_VERSION, FIRECRACKER_VERSION } from './chunk-QUOITPN7.js';
|
|
20
20
|
import { isSameProcess, startTimeOf } from './chunk-JBJTC3UU.js';
|
|
21
|
-
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-
|
|
21
|
+
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-NGZBVN6F.js';
|
|
22
22
|
import { planArtifactUpload } from './chunk-IXPH4EXK.js';
|
|
23
23
|
import { readCloudConfig } from './chunk-PJDQPF5N.js';
|
|
24
|
-
import { signerFor } from './chunk-
|
|
24
|
+
import { signerFor } from './chunk-KDSKFXPE.js';
|
|
25
25
|
import { AGENTS_SKILLS_BASE, OUTERLAYER_SKILLS_BASE, resolvePackRoot } from './chunk-OVNF4LLC.js';
|
|
26
26
|
import { scrubText } from './chunk-OOD5NDQA.js';
|
|
27
27
|
import { MAINTAINED_SKILLS } from './chunk-CDDED64E.js';
|
|
@@ -29,8 +29,8 @@ import { resolveVersion } from './chunk-RA3O54FC.js';
|
|
|
29
29
|
import { parsePolicy } from './chunk-XFJ7YOPD.js';
|
|
30
30
|
import { CheckItemsSchema } from './chunk-DINRXUQA.js';
|
|
31
31
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
32
|
-
import { RUNNER_FILE_MODE, runnerDir, buildDir, vsockPath, jobConsolePath } from './chunk-
|
|
33
|
-
import { JOB_MOUNT, repositoriesOf, primaryOf, buildEnvironment, CHECKOUT_DIR, claudeCredential, AGENT_CREDENTIAL_MISSING, sharedUserEnvironment, headerVariables, authorEnvironment, withTunnelRecord, commitIdentityRecord, RELAY_PORT, repositoryPath, lifecycleWorkdir, CHECK_ITEMS_FILE, fdName, buildMavenSettingsXml, CLAUDE_CREDENTIAL_VARIABLES, currentClaudeCredential, removedClaudeCredentialValues, managedClaudeCredential, checkEnvironment, MAVEN_SETTINGS_FILE, EVAL_INPUT_DIR } from './chunk-
|
|
32
|
+
import { RUNNER_FILE_MODE, runnerDir, buildDir, vsockPath, jobConsolePath } from './chunk-I2GHZ2VA.js';
|
|
33
|
+
import { JOB_MOUNT, repositoriesOf, primaryOf, buildEnvironment, CHECKOUT_DIR, claudeCredential, AGENT_CREDENTIAL_MISSING, sharedUserEnvironment, headerVariables, authorEnvironment, withTunnelRecord, commitIdentityRecord, RELAY_PORT, repositoryPath, lifecycleWorkdir, CHECK_ITEMS_FILE, fdName, buildMavenSettingsXml, CLAUDE_CREDENTIAL_VARIABLES, currentClaudeCredential, removedClaudeCredentialValues, managedClaudeCredential, checkEnvironment, MAVEN_SETTINGS_FILE, EVAL_INPUT_DIR } from './chunk-Z7THNFUU.js';
|
|
34
34
|
import { RUNNER_WORDED_REASONS, UNKNOWN_TRACKING_REASON } from './chunk-MESOOLF4.js';
|
|
35
35
|
import { randomBytes, createHash } from 'crypto';
|
|
36
36
|
import { rmSync, existsSync, statSync, appendFileSync, mkdirSync, chmodSync, writeFileSync, openSync, closeSync, readFileSync, readdirSync, lstatSync, realpathSync, fstatSync, readSync } from 'fs';
|
|
@@ -217,6 +217,7 @@ function builderMachineFor(config, jobDir, assets, limits) {
|
|
|
217
217
|
limits: { ...limits, cacheDiskBytes: parseSize(config.build?.cacheDisk ?? DEFAULT_CACHE_DISK) ?? parseSize(DEFAULT_CACHE_DISK) },
|
|
218
218
|
memory: memoryTextOf(config, jobDir, limits),
|
|
219
219
|
allowHosts: withFactoryHosts(config.build?.allowHosts, managedBuildSettingsFor(jobDir)),
|
|
220
|
+
...optionalEgress(config),
|
|
220
221
|
managed: config.managed === true,
|
|
221
222
|
timeLimitMinutes: config.timeLimitMinutes
|
|
222
223
|
};
|
|
@@ -2297,6 +2298,7 @@ function scrubTunnelRecord(record, config) {
|
|
|
2297
2298
|
refusalsMore: record.refusalsMore,
|
|
2298
2299
|
refusals: record.refusals.map((r) => ({ ...r, host: scrubText(r.host) })),
|
|
2299
2300
|
destinations: (record.destinations ?? []).map((name) => scrubText(name)),
|
|
2301
|
+
...record.egress === void 0 ? {} : { egress: record.egress },
|
|
2300
2302
|
...record.routes === void 0 ? {} : { routes: Object.fromEntries(Object.entries(record.routes).map(([name, counts]) => [scrubText(name), counts])) }
|
|
2301
2303
|
};
|
|
2302
2304
|
}
|
|
@@ -2909,15 +2911,19 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
2909
2911
|
);
|
|
2910
2912
|
} else if (release.ok) {
|
|
2911
2913
|
log.line(
|
|
2912
|
-
outcome === void 0 ? `${tag} released \xB7 not attempted (provision exit 75) \xB7 ${total}` : `${tag} released \xB7 outcome ${outcome} \xB7 ${total}`
|
|
2914
|
+
outcome === void 0 ? `${tag} released \xB7 not attempted (provision exit 75) \xB7 ${total}` : `${tag} released \xB7 outcome ${outcome} \xB7 ${total}${egressText(tunnelRecord)}`
|
|
2913
2915
|
);
|
|
2914
2916
|
} else {
|
|
2915
2917
|
log.error(
|
|
2916
|
-
`${tag} release failed after ${release.attempts} attempt(s): ${release.reason}; the lease expires at ${formatClock(leaseExpiry(job, endedAt), endedAt)}`
|
|
2918
|
+
`${tag} release failed after ${release.attempts} attempt(s): ${release.reason}; the lease expires at ${formatClock(leaseExpiry(job, endedAt), endedAt)}${egressText(tunnelRecord)}`
|
|
2917
2919
|
);
|
|
2918
2920
|
}
|
|
2919
2921
|
return job;
|
|
2920
2922
|
}
|
|
2923
|
+
function egressText(record) {
|
|
2924
|
+
if (record === void 0) return "";
|
|
2925
|
+
return record.egress === void 0 ? " \xB7 tunnel counts not recorded" : ` \xB7 ${egressSummary(record.egress)}`;
|
|
2926
|
+
}
|
|
2921
2927
|
function readLogState(logPath) {
|
|
2922
2928
|
try {
|
|
2923
2929
|
const stats = statSync(logPath);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { readCloudConfigStrict, readCloudConfig, cloudConfigPath } from './chunk-PJDQPF5N.js';
|
|
4
|
-
import { signRunnerRequest, signerFor } from './chunk-
|
|
4
|
+
import { signRunnerRequest, signerFor } from './chunk-KDSKFXPE.js';
|
|
5
5
|
import { readRepoConnection, findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
6
6
|
import { PLAIN_VERSION, recordCliVersion, removeRecordedVersion } from './chunk-5BHIBJDA.js';
|
|
7
7
|
import { resolvePackageVersion } from './chunk-RA3O54FC.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { parseSize, BUILD_LABEL, RUNNER_LABEL, runnerLabelValue } from './chunk-
|
|
4
|
-
import { buildsDir, rootfsDir, runnerDir, imagesDir, builderCacheDiskPath } from './chunk-
|
|
3
|
+
import { parseSize, BUILD_LABEL, RUNNER_LABEL, runnerLabelValue } from './chunk-UYWGR35C.js';
|
|
4
|
+
import { buildsDir, rootfsDir, runnerDir, imagesDir, builderCacheDiskPath } from './chunk-I2GHZ2VA.js';
|
|
5
5
|
import { spawnSync } from 'child_process';
|
|
6
6
|
import { statfsSync, statSync, existsSync, readdirSync } from 'fs';
|
|
7
7
|
import { dirname, join } from 'path';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { GH_VERSION, VOICE_PACK_FILES, VOICE_PACK_VERSION, FFMPEG_STATIC, FFMPEG_BUILD_TAG, GH_SHA256, TINI_SHA256, TINI_VERSION, HEADLESS_SHELL_REVISION, HEADLESS_SHELL_BASE_URL, PLAYWRIGHT_FFMPEG_BASE_URL, PLAYWRIGHT_FFMPEG_REVISION, HEADLESS_SHELL, PLAYWRIGHT_FFMPEG, PLAYWRIGHT_VERSION } from './chunk-QUOITPN7.js';
|
|
4
|
-
import { PROXY_WARNING_FLAG } from './chunk-
|
|
4
|
+
import { PROXY_WARNING_FLAG } from './chunk-Z7THNFUU.js';
|
|
5
5
|
import { RELAY_ID, RELAY_USER } from './chunk-MESOOLF4.js';
|
|
6
6
|
|
|
7
7
|
createRequire(import.meta.url);
|
|
@@ -19,6 +19,13 @@ var IMAGE_BROWSER = {
|
|
|
19
19
|
playwright: "/opt/outerlayer/browser/playwright",
|
|
20
20
|
fontConfig: "/opt/outerlayer/browser/fonts.conf"
|
|
21
21
|
};
|
|
22
|
+
var FALLBACK_BIN = "/opt/outerlayer/fallback/bin";
|
|
23
|
+
var IMAGE_GIT = "/opt/outerlayer/git";
|
|
24
|
+
var CA_BUNDLE = "/opt/outerlayer/certs/ca-certificates.crt";
|
|
25
|
+
function findCaBundle() {
|
|
26
|
+
const bundles = ["/etc/ssl/certs/ca-certificates.crt", "/etc/pki/tls/certs/ca-bundle.crt", "/etc/ssl/ca-bundle.pem", "/etc/ssl/cert.pem", CA_BUNDLE];
|
|
27
|
+
return `for ca in ${bundles.join(" ")}; do [ -f "$ca" ] && break; done`;
|
|
28
|
+
}
|
|
22
29
|
function plain(name, value, allowed) {
|
|
23
30
|
if (!allowed.test(value)) throw new Error(`${name} holds a character a Dockerfile line cannot carry safely: ${JSON.stringify(value)}`);
|
|
24
31
|
return value;
|
|
@@ -106,6 +113,7 @@ function toolsDockerfile(parts) {
|
|
|
106
113
|
" && chmod 0755 /out/usr/local/bin/espeak-ng \\",
|
|
107
114
|
" && chmod -R a+rX /out",
|
|
108
115
|
...browserStage({ nodeImage, fetched, download, stream }),
|
|
116
|
+
...gitStage(nodeImage),
|
|
109
117
|
`FROM ${recipeImage} AS recipe`,
|
|
110
118
|
`FROM ${nodeImage} AS stage`,
|
|
111
119
|
"ARG TARGETARCH",
|
|
@@ -148,7 +156,10 @@ function toolsDockerfile(parts) {
|
|
|
148
156
|
...fetched ? [] : [` && ${download} https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_linux_$TARGETARCH.tar.gz /tmp/gh.tgz \\`],
|
|
149
157
|
' && echo "$gh_sha /tmp/gh.tgz" | sha256sum -c - \\',
|
|
150
158
|
" && tar -xzf /tmp/gh.tgz -C /tmp \\",
|
|
151
|
-
` && install -m 0755 /tmp/gh_${GH_VERSION}_linux_$TARGETARCH/bin/gh /out/
|
|
159
|
+
` && install -D -m 0755 /tmp/gh_${GH_VERSION}_linux_$TARGETARCH/bin/gh /out/opt/outerlayer/gh/gh \\`,
|
|
160
|
+
// gh checks GitHub's certificate against the system's CA certificates, which a slim recipe image does not have.
|
|
161
|
+
` && printf '%s\\n' '#!/bin/sh' '${findCaBundle()}' 'SSL_CERT_FILE="\${SSL_CERT_FILE:-$ca}"' 'export SSL_CERT_FILE' 'exec /opt/outerlayer/gh/gh "$@"' > /out/usr/local/bin/gh \\`,
|
|
162
|
+
" && chmod 0755 /out/usr/local/bin/gh",
|
|
152
163
|
"COPY --from=recipe /etc/passwd /tmp/recipe-passwd",
|
|
153
164
|
"COPY --from=recipe /etc/group /tmp/recipe-group",
|
|
154
165
|
`RUN uid=$(awk -F: 'BEGIN{m=1499} $3>=1500 && $3<60000 && $3>m{m=$3} END{print m+1}' /tmp/recipe-passwd) \\`,
|
|
@@ -169,17 +180,52 @@ function toolsDockerfile(parts) {
|
|
|
169
180
|
"COPY --from=voice /out/ /",
|
|
170
181
|
"COPY --from=media /out/ /",
|
|
171
182
|
"COPY --from=browser /out/ /",
|
|
183
|
+
"COPY --from=git /out/ /",
|
|
172
184
|
"ENV DISABLE_AUTOUPDATER=1",
|
|
185
|
+
// Last, so a recipe's own git comes first. A recipe image that sets no PATH gets the one Docker gives a container.
|
|
186
|
+
`ENV PATH=\${PATH:-/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin}:${FALLBACK_BIN}`,
|
|
173
187
|
// espeak-ng's audio library makes a private pulse-* folder for the user who runs it, in the temp folder unless XDG_RUNTIME_DIR names another.
|
|
174
188
|
// Made here, as root, it would ship in the image where the build user cannot read it, and the runner's disk check fails on it.
|
|
175
189
|
"RUN check=$(mktemp -d /tmp/ol-check.XXXXXX) \\",
|
|
176
190
|
" && outerlayer --version && claude --version && gh --version && ffmpeg -version && ffprobe -version \\",
|
|
177
191
|
' && XDG_RUNTIME_DIR="$check" espeak-ng --version \\',
|
|
192
|
+
` && git --version && ${FALLBACK_BIN}/git --version \\`,
|
|
178
193
|
` && ${IMAGE_BROWSER.playwright}/chromium_headless_shell-${HEADLESS_SHELL_REVISION}/chrome-headless-shell-linux*/chrome-headless-shell --version \\`,
|
|
179
194
|
' && rm -rf "$check"',
|
|
180
195
|
""
|
|
181
196
|
].join("\n");
|
|
182
197
|
}
|
|
198
|
+
function gitStage(nodeImage) {
|
|
199
|
+
const lib = `${IMAGE_GIT}/lib`;
|
|
200
|
+
const wrapper = [
|
|
201
|
+
"#!/bin/sh",
|
|
202
|
+
findCaBundle(),
|
|
203
|
+
'GIT_SSL_CAINFO="${GIT_SSL_CAINFO:-$ca}"',
|
|
204
|
+
`GIT_EXEC_PATH=${IMAGE_GIT}/git-core`,
|
|
205
|
+
`GIT_TEMPLATE_DIR="\${GIT_TEMPLATE_DIR:-${IMAGE_GIT}/templates}"`,
|
|
206
|
+
"export GIT_SSL_CAINFO GIT_EXEC_PATH GIT_TEMPLATE_DIR",
|
|
207
|
+
`exec ${IMAGE_GIT}/git-core/git "$@"`
|
|
208
|
+
];
|
|
209
|
+
return [
|
|
210
|
+
`FROM ${nodeImage} AS git`,
|
|
211
|
+
"RUN apt-get update \\",
|
|
212
|
+
" && apt-get install -y --no-install-recommends git ca-certificates patchelf \\",
|
|
213
|
+
" && rm -rf /var/lib/apt/lists/*",
|
|
214
|
+
"RUN set -eu \\",
|
|
215
|
+
` && mkdir -p /out${lib} /out/opt/outerlayer/certs /out${FALLBACK_BIN} \\`,
|
|
216
|
+
` && cp -a /usr/lib/git-core /out${IMAGE_GIT}/git-core \\`,
|
|
217
|
+
` && cp -a /usr/share/git-core/templates /out${IMAGE_GIT}/templates \\`,
|
|
218
|
+
` && programs=$(find /out${IMAGE_GIT}/git-core -type f -exec sh -c 'head -c 4 "$1" | grep -q ELF' _ {} \\; -print) \\`,
|
|
219
|
+
` && if ldd $programs | grep 'not found'; then echo "git needs a library this stage does not install" >&2; exit 1; fi \\`,
|
|
220
|
+
` && cp -L $(for file in $programs; do ldd "$file" | awk '$3 ~ /^\\// {print $3}'; done | sort -u) /out${lib}/ \\`,
|
|
221
|
+
` && cp -L $(ldd /usr/lib/git-core/git | awk '$1 ~ /ld-linux/ {print $1}') /out${lib}/ld.so \\`,
|
|
222
|
+
` && for file in $programs; do patchelf --set-interpreter ${lib}/ld.so --force-rpath --set-rpath ${lib} "$file"; done \\`,
|
|
223
|
+
` && cp -L /etc/ssl/certs/ca-certificates.crt /out${CA_BUNDLE} \\`,
|
|
224
|
+
` && printf '%s\\n' ${wrapper.map((line) => `'${line}'`).join(" ")} > /out${FALLBACK_BIN}/git \\`,
|
|
225
|
+
` && chmod 0755 /out${FALLBACK_BIN}/git \\`,
|
|
226
|
+
" && chmod -R a+rX /out"
|
|
227
|
+
];
|
|
228
|
+
}
|
|
183
229
|
function browserStage(parts) {
|
|
184
230
|
const { fetched } = parts;
|
|
185
231
|
const libraries = [
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { checkStarterFiles, contextIsGoverned } from './chunk-TZMDRHWB.js';
|
|
4
|
-
import { resolveCredentials, getJson, WorkCommandError } from './chunk-
|
|
5
|
-
import { isLinkedRepository } from './chunk-
|
|
4
|
+
import { resolveCredentials, getJson, WorkCommandError } from './chunk-NGZBVN6F.js';
|
|
5
|
+
import { isLinkedRepository } from './chunk-L7RPNSAA.js';
|
|
6
6
|
import { C } from './chunk-ANPNT6PM.js';
|
|
7
|
-
import { fleetCheck, checkBuildSkill, checkMachineSkills, checkCommittedMaintainedSkills, checkMaintainedReferences, checkIgnoredSkillFolders } from './chunk-
|
|
7
|
+
import { fleetCheck, checkBuildSkill, checkMachineSkills, checkCommittedMaintainedSkills, checkMaintainedReferences, checkIgnoredSkillFolders } from './chunk-QTAADTIO.js';
|
|
8
8
|
import { sanitizeTerminal } from './chunk-IXPH4EXK.js';
|
|
9
9
|
import { checkFormerSkillNames } from './chunk-LMYRR5MO.js';
|
|
10
|
-
import { resolveGatewayCredentials, defaultFetch } from './chunk-
|
|
11
|
-
import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-
|
|
10
|
+
import { resolveGatewayCredentials, defaultFetch } from './chunk-T375XV3H.js';
|
|
11
|
+
import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-CHDWAWQA.js';
|
|
12
12
|
import { readStatuslineState, STATE_FRESH_MS } from './chunk-I7RZHMXW.js';
|
|
13
13
|
import { hookCommandEscapesControlPlane, CONTROL_PLANE_DIR_VARIABLE } from './chunk-HCVLP7XA.js';
|
|
14
14
|
import { findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
@@ -1195,8 +1195,8 @@ function doctorExitCode(checks) {
|
|
|
1195
1195
|
|
|
1196
1196
|
// src/doctor-report.ts
|
|
1197
1197
|
async function gatherDoctorChecks() {
|
|
1198
|
-
const { DEFAULT_BUILD_DISK, DEFAULT_CACHE_DISK } = await import('./build-disk-
|
|
1199
|
-
const { defaultRunnerConfigPath, hasRunnerBlock, loadRunnerConfig, runnerVmOf } = await import('./config-
|
|
1198
|
+
const { DEFAULT_BUILD_DISK, DEFAULT_CACHE_DISK } = await import('./build-disk-WMIRA4RD.js');
|
|
1199
|
+
const { defaultRunnerConfigPath, hasRunnerBlock, loadRunnerConfig, runnerVmOf } = await import('./config-CWYMIXTV.js');
|
|
1200
1200
|
const configPath = defaultRunnerConfigPath();
|
|
1201
1201
|
const runnerHost = hasRunnerBlock(configPath);
|
|
1202
1202
|
const hooks = (() => {
|
|
@@ -1217,7 +1217,7 @@ async function gatherDoctorChecks() {
|
|
|
1217
1217
|
const { runnerVmCheck } = await import('./doctor-53F2PYY7.js');
|
|
1218
1218
|
checks.push(runnerVmCheck(configPath, { lima: realLima(), home: homeFromEnv(), instance: runnerVm.instance }));
|
|
1219
1219
|
} else if (hasRunnerBlock(configPath)) {
|
|
1220
|
-
const { runnerHostChecks } = await import('./doctor-
|
|
1220
|
+
const { runnerHostChecks } = await import('./doctor-5VNZ2BLY.js');
|
|
1221
1221
|
const gateway = (() => {
|
|
1222
1222
|
try {
|
|
1223
1223
|
const { url, apiKey, appId } = loadRunnerConfig(configPath);
|
|
@@ -1236,7 +1236,7 @@ async function gatherDoctorChecks() {
|
|
|
1236
1236
|
const runner = (() => {
|
|
1237
1237
|
try {
|
|
1238
1238
|
const { concurrency, build, housekeeping, managed } = loadRunnerConfig(configPath);
|
|
1239
|
-
return { concurrency, buildMemory: build?.memory ?? "8g", buildDisk: build?.disk ?? DEFAULT_BUILD_DISK, cacheDisk: build?.cacheDisk ?? DEFAULT_CACHE_DISK, minFreeDisk: housekeeping?.minFreeDisk, allowHosts: build?.allowHosts, ...build?.imageBuild === void 0 ? {} : { imageBuild: build.imageBuild }, ...managed === true ? { managed } : {} };
|
|
1239
|
+
return { concurrency, buildMemory: build?.memory ?? "8g", buildDisk: build?.disk ?? DEFAULT_BUILD_DISK, cacheDisk: build?.cacheDisk ?? DEFAULT_CACHE_DISK, minFreeDisk: housekeeping?.minFreeDisk, allowHosts: build?.allowHosts, ...build?.egress === void 0 ? {} : { egress: build.egress }, ...build?.imageBuild === void 0 ? {} : { imageBuild: build.imageBuild }, ...managed === true ? { managed } : {} };
|
|
1240
1240
|
} catch {
|
|
1241
1241
|
return void 0;
|
|
1242
1242
|
}
|
|
@@ -1244,7 +1244,7 @@ async function gatherDoctorChecks() {
|
|
|
1244
1244
|
const service = await (async () => {
|
|
1245
1245
|
const { existsSync: existsSync3 } = await import('fs');
|
|
1246
1246
|
if (process.platform !== "linux" || !existsSync3("/run/systemd/system")) return void 0;
|
|
1247
|
-
const { inspectRunnerService } = await import('./find-unit-
|
|
1247
|
+
const { inspectRunnerService } = await import('./find-unit-R4I5GJCH.js');
|
|
1248
1248
|
return inspectRunnerService(configPath);
|
|
1249
1249
|
})();
|
|
1250
1250
|
checks.push(...await runnerHostChecks({ configPath, hooks, gateway, repos, runner, service }));
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { builtinKind, keepsHostBuilder } from './chunk-
|
|
4
|
-
import { parseSize } from './chunk-
|
|
5
|
-
import { runnerDir } from './chunk-
|
|
6
|
-
import { FD_SLOTS_PER_BUILD, FD_STORE_ENV, BUILD_SLICE_MEMORY_ENV, CLAUDE_CREDENTIAL_ID, CLAUDE_ENV_FILE, credentialLineIn, withoutCredentialLines } from './chunk-
|
|
3
|
+
import { builtinKind, keepsHostBuilder } from './chunk-RO2NZJHZ.js';
|
|
4
|
+
import { parseSize } from './chunk-UYWGR35C.js';
|
|
5
|
+
import { runnerDir } from './chunk-I2GHZ2VA.js';
|
|
6
|
+
import { FD_SLOTS_PER_BUILD, FD_STORE_ENV, BUILD_SLICE_MEMORY_ENV, CLAUDE_CREDENTIAL_ID, CLAUDE_ENV_FILE, credentialLineIn, withoutCredentialLines } from './chunk-Z7THNFUU.js';
|
|
7
7
|
import { existsSync, readFileSync, writeFileSync, chmodSync, renameSync } from 'fs';
|
|
8
8
|
import { dirname, join } from 'path';
|
|
9
9
|
import { spawnSync } from 'child_process';
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { resolveDevcontainerCli, devcontainerBuildInvocation, RecipeError } from './chunk-HDLON3RJ.js';
|
|
4
4
|
import { BUILDKIT_IMAGE } from './chunk-QUOITPN7.js';
|
|
5
|
-
import { ensureHostKey } from './chunk-
|
|
5
|
+
import { ensureHostKey } from './chunk-KDSKFXPE.js';
|
|
6
6
|
import { compareVersions } from './chunk-OOD5NDQA.js';
|
|
7
|
-
import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, runnerDir, jobsDir } from './chunk-
|
|
8
|
-
import { CLAUDE_PORT, JOB_MOUNT, GATEWAY_PORT, GATEWAY_SOCKET, CLAUDE_SOCKET, RELAY_PORT, DESTINATION_BASE_PORT } from './chunk-
|
|
7
|
+
import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, runnerDir, jobsDir } from './chunk-I2GHZ2VA.js';
|
|
8
|
+
import { CLAUDE_PORT, JOB_MOUNT, GATEWAY_PORT, GATEWAY_SOCKET, CLAUDE_SOCKET, RELAY_PORT, DESTINATION_BASE_PORT } from './chunk-Z7THNFUU.js';
|
|
9
9
|
import { JOIN_DIR, RELAY_ID, JOIN_SOCKET, TARGET_GATEWAY, TARGET_CLAUDE, destinationTarget, RELAY_USER } from './chunk-MESOOLF4.js';
|
|
10
10
|
import { createHash } from 'crypto';
|
|
11
11
|
import { mkdirSync, createWriteStream, rmSync, existsSync, readFileSync, chmodSync, writeFileSync, realpathSync, readdirSync, renameSync } from 'fs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { isSameProcess } from './chunk-JBJTC3UU.js';
|
|
4
|
-
import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-
|
|
4
|
+
import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-I2GHZ2VA.js';
|
|
5
5
|
import { existsSync, readFileSync, mkdirSync, writeFileSync, rmSync } from 'fs';
|
|
6
6
|
import { dirname } from 'path';
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { stripTerminalControls } from './chunk-
|
|
4
|
-
import { tagToPull, imageTag, pullInstruction, readUpdateStatus, runnerImageVersion } from './chunk-
|
|
3
|
+
import { stripTerminalControls } from './chunk-SJY6A6EH.js';
|
|
4
|
+
import { tagToPull, imageTag, pullInstruction, readUpdateStatus, runnerImageVersion } from './chunk-HO4XRLAZ.js';
|
|
5
5
|
import { readFileSync } from 'fs';
|
|
6
6
|
|
|
7
7
|
createRequire(import.meta.url);
|
|
@@ -55,7 +55,7 @@ function envNamesOf(row, imageEnv) {
|
|
|
55
55
|
return [...new Set(names)].sort();
|
|
56
56
|
}
|
|
57
57
|
async function readOwnContainer(deps = {}) {
|
|
58
|
-
const run = deps.run ?? (await import('./docker-
|
|
58
|
+
const run = deps.run ?? (await import('./docker-IUPWQ2RK.js')).spawnRun;
|
|
59
59
|
const ids = candidateIds(deps.env ?? process.env, deps.readFile ?? ((path) => readFileSync(path, "utf8")));
|
|
60
60
|
if (ids.length === 0) return { ok: false, reason: "the runner cannot tell which container it runs in: HOSTNAME is empty and /proc/self/mountinfo names none" };
|
|
61
61
|
let problem = "";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { criteriaOf, loadCitationFinder, hostItemsOf, MAX_TEST_FILE_BYTES, MAX_TEST_FILES, criterionInputs, NO_CITING_TEST_REASON, NO_VERDICT_REASON, planCriteria } from './chunk-6CK2OC4Q.js';
|
|
4
|
-
import { WorkCommandError, resolveCredentials, getJson } from './chunk-
|
|
4
|
+
import { WorkCommandError, resolveCredentials, getJson } from './chunk-NGZBVN6F.js';
|
|
5
5
|
import { C } from './chunk-ANPNT6PM.js';
|
|
6
6
|
import { sanitizeTerminal } from './chunk-IXPH4EXK.js';
|
|
7
|
-
import { defaultFetch } from './chunk-
|
|
7
|
+
import { defaultFetch } from './chunk-T375XV3H.js';
|
|
8
8
|
import { resolveRepoIdentity } from './chunk-OOD5NDQA.js';
|
|
9
9
|
import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
|
|
10
10
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
@@ -167,14 +167,14 @@ function governingDir(cwd) {
|
|
|
167
167
|
async function testProofMode(cwd) {
|
|
168
168
|
const dir = governingDir(cwd);
|
|
169
169
|
if (dir === void 0) return "any";
|
|
170
|
-
const { testProofIn } = await import('./host-checks-
|
|
170
|
+
const { testProofIn } = await import('./host-checks-VKBAGGWH.js');
|
|
171
171
|
return testProofIn(dir);
|
|
172
172
|
}
|
|
173
173
|
async function judgeCheckName(cwd) {
|
|
174
174
|
const dir = governingDir(cwd);
|
|
175
175
|
if (dir === void 0) return {};
|
|
176
176
|
if (!existsSync(dir)) return { note: `the governed context at ${dir} is not readable` };
|
|
177
|
-
const { checksIn, isJudgeCheck } = await import('./host-checks-
|
|
177
|
+
const { checksIn, isJudgeCheck } = await import('./host-checks-VKBAGGWH.js');
|
|
178
178
|
const quiet = { line: () => void 0, error: () => void 0 };
|
|
179
179
|
const check = checksIn(dir, quiet, "").checks.find((c) => isJudgeCheck(c) && c.judge.subjects === "criteria");
|
|
180
180
|
return check === void 0 ? {} : { name: check.name };
|
|
@@ -314,7 +314,7 @@ async function runWorkProofs(opts) {
|
|
|
314
314
|
async function runWorkProofsCommand(opts) {
|
|
315
315
|
try {
|
|
316
316
|
if (opts.record) {
|
|
317
|
-
const { runWorkProofsRecord } = await import('./work-proofs-record-
|
|
317
|
+
const { runWorkProofsRecord } = await import('./work-proofs-record-AYUWUFBE.js');
|
|
318
318
|
const result2 = await runWorkProofsRecord(opts);
|
|
319
319
|
process.exitCode = result2.exitCode;
|
|
320
320
|
return;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { placeholderQueues, placeholderProblem } from './chunk-
|
|
4
|
-
import { checkFit, RUNNER_RESERVE_BYTES } from './chunk-
|
|
5
|
-
import { builtinKind, imageBuildOf, keepsHostBuilder } from './chunk-
|
|
6
|
-
import { realBuildDiskProbe, checkDiskFit, DEFAULT_CACHE_DISK, DEFAULT_BUILD_DISK } from './chunk-
|
|
3
|
+
import { placeholderQueues, placeholderProblem } from './chunk-ARPPH7VS.js';
|
|
4
|
+
import { checkFit, RUNNER_RESERVE_BYTES } from './chunk-UXGWAAGQ.js';
|
|
5
|
+
import { builtinKind, EGRESS_SWITCHABLE_KEYS, imageBuildOf, keepsHostBuilder } from './chunk-RO2NZJHZ.js';
|
|
6
|
+
import { realBuildDiskProbe, checkDiskFit, DEFAULT_CACHE_DISK, DEFAULT_BUILD_DISK } from './chunk-TS2YACAQ.js';
|
|
7
7
|
import { builderDiskPinned } from './chunk-QUOITPN7.js';
|
|
8
|
-
import { BUILD_SLICE_MEMORY_ENV, FORWARDED_CLAUDE_CREDENTIAL_VARIABLES, claudeCredentialVariablesSet, claudeCredential, claudeEnvPath, parseRunnerEnv } from './chunk-
|
|
8
|
+
import { BUILD_SLICE_MEMORY_ENV, FORWARDED_CLAUDE_CREDENTIAL_VARIABLES, claudeCredentialVariablesSet, claudeCredential, claudeEnvPath, parseRunnerEnv } from './chunk-Z7THNFUU.js';
|
|
9
9
|
import { closeSync, openSync, constants, readFileSync } from 'fs';
|
|
10
10
|
import { join, dirname } from 'path';
|
|
11
11
|
import { totalmem } from 'os';
|
|
@@ -56,6 +56,13 @@ function managedProblems(facts) {
|
|
|
56
56
|
reason: "runner.build.allowHosts is not set, and a managed runner needs it so that a build reaches only the public hosts it lists. List the hosts your builds need; an empty list allows none"
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
+
const off = EGRESS_SWITCHABLE_KEYS.filter((key) => facts.egress?.[key] === 0);
|
|
60
|
+
if (off.length > 0) {
|
|
61
|
+
problems.push({
|
|
62
|
+
condition: "egress",
|
|
63
|
+
reason: `${off.map((key) => `runner.build.egress.${key}`).join(" and ")} ${off.length === 1 ? "is" : "are"} 0, which turns ${off.length === 1 ? "that limit" : "those limits"} off. A managed runner limits how fast a build opens connections and sends bytes, because every organization on the host shares one address. Remove ${off.length === 1 ? "the key" : "the keys"} to use the default, or set a value above 0`
|
|
64
|
+
});
|
|
65
|
+
}
|
|
59
66
|
if (builtinKind(facts.provision) === "vm") {
|
|
60
67
|
if (facts.imageBuild === "host") {
|
|
61
68
|
problems.push({
|
|
@@ -92,6 +99,7 @@ function managedFactsOf(config, probes) {
|
|
|
92
99
|
jailer: probes.jailer ?? "unknown",
|
|
93
100
|
credentials: /* @__PURE__ */ new Set([...claudeCredentialVariablesSet(probes.env), ...credentialsInFiles(config.configPath)]),
|
|
94
101
|
allowHosts: config.build?.allowHosts,
|
|
102
|
+
egress: config.build?.egress,
|
|
95
103
|
imageBuild: imageBuildOf(config),
|
|
96
104
|
builderDiskPinned: probes.builderDiskPinned ?? builderDiskPinned()
|
|
97
105
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { DEFAULT_UNIT_NAME } from './chunk-
|
|
4
|
-
import { RUNNER_FILE_MODE } from './chunk-
|
|
5
|
-
import { claudeEnvPath, withoutCredentialLines, parseRunnerEnv } from './chunk-
|
|
3
|
+
import { DEFAULT_UNIT_NAME } from './chunk-UXGWAAGQ.js';
|
|
4
|
+
import { RUNNER_FILE_MODE } from './chunk-I2GHZ2VA.js';
|
|
5
|
+
import { claudeEnvPath, withoutCredentialLines, parseRunnerEnv } from './chunk-Z7THNFUU.js';
|
|
6
6
|
import { existsSync, readFileSync, writeFileSync, renameSync, rmSync } from 'fs';
|
|
7
7
|
import { join, dirname } from 'path';
|
|
8
8
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { RELAY_PORT, BUILD_HOME } from './chunk-
|
|
3
|
+
import { RELAY_PORT, BUILD_HOME } from './chunk-Z7THNFUU.js';
|
|
4
4
|
import { createServer, connect } from 'net';
|
|
5
5
|
|
|
6
6
|
createRequire(import.meta.url);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { LiveUploader } from './chunk-
|
|
4
|
-
import { spoolDir } from './chunk-
|
|
3
|
+
import { LiveUploader } from './chunk-B7LPFCIN.js';
|
|
4
|
+
import { spoolDir } from './chunk-CHDWAWQA.js';
|
|
5
5
|
import { CaptureDaemon } from './chunk-OOD5NDQA.js';
|
|
6
6
|
import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
|
|
7
7
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
@@ -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-
|
|
4
|
-
import { resolveGatewayCredentials } from './chunk-
|
|
3
|
+
import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-L7RPNSAA.js';
|
|
4
|
+
import { resolveGatewayCredentials } from './chunk-T375XV3H.js';
|
|
5
5
|
import { readCloudConfig } from './chunk-PJDQPF5N.js';
|
|
6
6
|
import { findGitDirs, readRepoConnection } from './chunk-BJ3KTMDH.js';
|
|
7
7
|
import { resolveRepoIdentity } from './chunk-OOD5NDQA.js';
|
|
@@ -618,6 +618,7 @@ async function startBuildServices(input) {
|
|
|
618
618
|
...streamed ? { socket: false } : {},
|
|
619
619
|
...streamed ? {} : listenOnFor("tunnel.sock"),
|
|
620
620
|
...input.allowHosts === void 0 ? {} : { allowHosts: input.allowHosts },
|
|
621
|
+
...input.egress === void 0 ? {} : { egress: input.egress },
|
|
621
622
|
recordPath: join(input.jobDir, "tunnel.json")
|
|
622
623
|
});
|
|
623
624
|
const servers = [];
|
|
@@ -252,7 +252,7 @@ async function runClaudeLauncher(args, deps = {}) {
|
|
|
252
252
|
return 1;
|
|
253
253
|
}
|
|
254
254
|
} else {
|
|
255
|
-
const { resolveLaunchPlane } = await import('./control-plane-launch-
|
|
255
|
+
const { resolveLaunchPlane } = await import('./control-plane-launch-UM4IHOJQ.js');
|
|
256
256
|
const plane = env[GOVERNANCE_VARIABLE] === "self" ? { kind: "none" } : await resolveLaunchPlane({ cwd, env, home, fetchImpl: deps.fetchImpl, stderr });
|
|
257
257
|
if (plane.kind === "none") {
|
|
258
258
|
const own2 = ownSkillsDirFor(cwd, home, [], stderr);
|