@outerlayer/cli 0.34.0-next.20261025224117 → 0.34.0-next.20261026161241
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/README.md +6 -0
- package/dist/{agent-setup-FNDKCPUP.js → agent-setup-WOEZELVB.js} +6 -6
- package/dist/{bridge-YJBB4YA3.js → bridge-F5FBQSPZ.js} +2 -2
- package/dist/{build-B4OKU4MV.js → build-UDOBVX5J.js} +7 -7
- package/dist/{build-disk-ZL46AEN3.js → build-disk-C3WIAHCL.js} +6 -6
- package/dist/build-info.json +1 -1
- package/dist/{builder-XFPWE74N.js → builder-YNXWVH2V.js} +5 -5
- package/dist/{check-YOSEXQPQ.js → check-ERYYVAEM.js} +41 -37
- package/dist/{chunk-2ILU7UAU.js → chunk-3VZTNXK5.js} +1 -1
- package/dist/{chunk-DJO6GI7B.js → chunk-4G4IH4A7.js} +126 -61
- package/dist/{chunk-NW26E4YU.js → chunk-4J2FF5HZ.js} +3 -3
- package/dist/{chunk-CAQCDYKF.js → chunk-5JGPTYLT.js} +2 -2
- package/dist/{chunk-OGPEHSNW.js → chunk-6KFJIU73.js} +1 -1
- package/dist/{chunk-3EJBI5JW.js → chunk-7FQYTM7M.js} +1 -1
- package/dist/{chunk-3N77LUQI.js → chunk-7QAJQDHS.js} +1 -1
- package/dist/{chunk-SI6WDF3U.js → chunk-CFFVCI2I.js} +1 -1
- package/dist/{chunk-ZVGSCE2Q.js → chunk-CNZRUVZ5.js} +102 -36
- package/dist/{chunk-RLPIRL33.js → chunk-E6OVLJTR.js} +98 -30
- package/dist/{chunk-PFHTT4PP.js → chunk-ELO5XEES.js} +4 -4
- package/dist/{chunk-RFVIQLNB.js → chunk-EPFFYDNX.js} +5 -5
- package/dist/{chunk-FVCHHSHB.js → chunk-EUQZAH2W.js} +2 -2
- package/dist/{chunk-6OLVVAOK.js → chunk-FZ4G6CMK.js} +4 -4
- package/dist/{chunk-QQP3S5FU.js → chunk-GHFI5GBF.js} +3 -3
- package/dist/{chunk-PXGU3GKY.js → chunk-GJ4KBHBD.js} +1 -1
- package/dist/{chunk-UO4FQAOX.js → chunk-H47VGSCW.js} +4 -4
- package/dist/{chunk-TFPNPS4Q.js → chunk-HOUFCUMH.js} +1 -1
- package/dist/{chunk-OQLF3MQQ.js → chunk-HVPW272H.js} +3 -3
- package/dist/{chunk-5AFPP3GZ.js → chunk-HVQMIZ22.js} +4 -4
- package/dist/{chunk-AVPLEFQR.js → chunk-IO2BBKG4.js} +3 -3
- package/dist/{chunk-KM2HLQE3.js → chunk-IWVGALDC.js} +2 -2
- package/dist/{chunk-SMWRIAGH.js → chunk-JC6AQ6PC.js} +39 -6
- package/dist/{chunk-UN3SQTVL.js → chunk-JKNOJKVD.js} +34 -9
- package/dist/{chunk-BHSSGVOY.js → chunk-JSZRBQY3.js} +3 -3
- package/dist/{chunk-MOI2KDLH.js → chunk-L5VHGRQE.js} +1 -1
- package/dist/{chunk-JBCOUY4M.js → chunk-LD3BHLK7.js} +3 -3
- package/dist/{chunk-YNMVVQOQ.js → chunk-LQHCNXPK.js} +1 -1
- package/dist/{chunk-YHKU2NOZ.js → chunk-LTYBHCL4.js} +1 -1
- package/dist/{chunk-PAK5P2ND.js → chunk-MH6QLXUO.js} +1 -1
- package/dist/{chunk-OS7DJOQJ.js → chunk-MN3PP45X.js} +1 -1
- package/dist/{chunk-25GRRBTH.js → chunk-NHEU5CON.js} +1 -1
- package/dist/{chunk-K2UAQWYO.js → chunk-OQT7RT5I.js} +3 -3
- package/dist/{chunk-63IVRRIO.js → chunk-P3NPTFLF.js} +3 -3
- package/dist/{chunk-GC5PVMIJ.js → chunk-RR3VDM7M.js} +3 -3
- package/dist/{chunk-G4W4B33M.js → chunk-SDAEXUIX.js} +25 -10
- package/dist/{chunk-SYVRBBLW.js → chunk-SDELQEG4.js} +1 -1
- package/dist/{chunk-FDJPDZSR.js → chunk-TS3EFB7S.js} +1 -1
- package/dist/{chunk-6P4YL4CO.js → chunk-U6AWVO6L.js} +6 -6
- package/dist/{chunk-INOUUSYI.js → chunk-V2VJYK46.js} +4 -4
- package/dist/{chunk-YV7BP62T.js → chunk-VEJWLQ4G.js} +11 -11
- package/dist/{chunk-QANM5COC.js → chunk-VUQKGBIQ.js} +14 -7
- package/dist/{chunk-XJXBQQR4.js → chunk-VWZHOFBP.js} +3 -3
- package/dist/{chunk-SUOZYOWO.js → chunk-WE4C3ODP.js} +2 -2
- package/dist/{chunk-AP2K4LPI.js → chunk-XKJOIQ2Q.js} +27 -3
- package/dist/{chunk-TBKV4L2W.js → chunk-XL2MPORM.js} +4 -4
- package/dist/{chunk-EGVHFHY4.js → chunk-XSFR76J7.js} +3 -3
- package/dist/{chunk-UMYYYF7B.js → chunk-YL3RWW7X.js} +1 -1
- package/dist/{chunk-AJYZNISW.js → chunk-Z7WMU3RA.js} +8 -7
- package/dist/{chunk-2D6CKNR7.js → chunk-ZIKZZ4LK.js} +3 -3
- package/dist/{claude-launcher-OQZNW7XJ.js → claude-launcher-6KGANL7E.js} +1 -1
- package/dist/{cli-NKT5FAP3.js → cli-LXKVCFD7.js} +113 -112
- package/dist/{command-BC2NOUA5.js → command-VQPQDPCZ.js} +24 -24
- package/dist/{config-QASNKYM6.js → config-WSZIWPP4.js} +7 -7
- package/dist/{connect-cmd-MEDWMW3L.js → connect-cmd-LI34HS5Q.js} +6 -6
- package/dist/{container-start-3GFLLV4Q.js → container-start-IL74XEC5.js} +34 -30
- package/dist/{context-show-cmd-VSFCG663.js → context-show-cmd-X27GMOT6.js} +7 -7
- package/dist/{control-plane-launch-XBGHM7DB.js → control-plane-launch-74EIIB5Z.js} +5 -5
- package/dist/dist-HVXLUMRV.js +7 -0
- package/dist/{docker-TAC6G4VU.js → docker-KZ3OQTPW.js} +5 -5
- package/dist/{doctor-Z4OA5JJK.js → doctor-KPKLFIJH.js} +24 -24
- package/dist/{emit-artifact-cmd-L4REOPWX.js → emit-artifact-cmd-BJICHW2E.js} +11 -11
- package/dist/{emit-criteria-cmd-QVFOQARC.js → emit-criteria-cmd-MUWPT25P.js} +8 -8
- package/dist/{emit-demo-cmd-L4B6OOTV.js → emit-demo-cmd-YQN7VKQH.js} +12 -12
- package/dist/{emit-finding-cmd-YXFCIWMU.js → emit-finding-cmd-NPBWVY44.js} +8 -8
- package/dist/{emit-result-cmd-NI4LCTUM.js → emit-result-cmd-7CJZZQGK.js} +10 -10
- package/dist/{emit-step-cmd-HWAUCZZB.js → emit-step-cmd-ZPLHZAMA.js} +8 -8
- package/dist/{exec-client-QB4OZRGM.js → exec-client-LXHTMVIB.js} +3 -3
- package/dist/find-unit-UKH6JH4S.js +18 -0
- package/dist/{findings-cmd-O2IBO25E.js → findings-cmd-DZ4ESTHX.js} +8 -8
- package/dist/{fleet-readiness-NJYTQYTA.js → fleet-readiness-YSI4NOHT.js} +5 -5
- package/dist/{governing-source-JCI7VDQ6.js → governing-source-JPRMOB3O.js} +10 -10
- package/dist/{guest-init-IF5LXGUL.js → guest-init-WWL2WL7R.js} +4 -4
- package/dist/{hook-fast-GPUL7T77.js → hook-fast-6EW2MGA2.js} +1 -1
- package/dist/{pending-ERXWVLLG.js → host-key-TSOKVSZX.js} +3 -3
- package/dist/{image-tag-SEMBVB5D.js → image-tag-BTXKIH73.js} +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/{init-43LJRRQO.js → init-MN3MNG7V.js} +21 -21
- package/dist/{init-3KP2CDZJ.js → init-V6Y2VNKW.js} +21 -21
- package/dist/{init-cmd-FN7CSVLZ.js → init-cmd-QCWLJDIF.js} +12 -12
- package/dist/{init-update-TTMFFNMB.js → init-update-GTFLPDEL.js} +11 -10
- package/dist/{install-cmd-5H6M2KJ7.js → install-cmd-RGO7NWKP.js} +5 -5
- package/dist/{logs-6CMB3DO6.js → logs-LEVH6VAI.js} +2 -2
- package/dist/{loop-5MVKWHNV.js → loop-A4CB4IFF.js} +40 -36
- package/dist/{machine-APH6CXPC.js → machine-XG54XYYZ.js} +21 -21
- package/dist/{mcp-serve-cmd-MWGIN6YL.js → mcp-serve-cmd-4O5INM77.js} +4 -4
- package/dist/{paths-T2DEBI62.js → paths-AQ47ZRHK.js} +2 -2
- package/dist/{host-key-5RU322O3.js → pending-UWFDVFOA.js} +3 -3
- package/dist/{pidfile-EAD2OEM7.js → pidfile-PCG2H5T4.js} +3 -3
- package/dist/{record-IMXQNHPB.js → record-SVCNFCGQ.js} +3 -3
- package/dist/{runner-env-BJPUHAKZ.js → runner-env-YPXWTNP3.js} +9 -9
- package/dist/{runner-identity-ZCPPC2BJ.js → runner-identity-XPZO3TG4.js} +5 -5
- package/dist/{runner-key-WY6KFIRA.js → runner-key-B5EJH25Z.js} +21 -21
- package/dist/{session-sender-5T7BXPKC.js → session-sender-XED7CKHP.js} +11 -11
- package/dist/{spec-cmd-4ABYAFNZ.js → spec-cmd-TRXAGQYM.js} +9 -9
- package/dist/{status-U3Y6HJJI.js → status-6V2S63DS.js} +32 -28
- package/dist/{sync-cmd-34CGNA6T.js → sync-cmd-UQVENF25.js} +10 -10
- package/dist/{update-steps-ROLDDTPM.js → update-steps-CSC2QVJF.js} +33 -29
- package/dist/{watch-6HU7LCUY.js → watch-EZGDDRTQ.js} +10 -10
- package/dist/{work-claim-cmd-5QKLHSCR.js → work-claim-cmd-YSAJ7DAK.js} +14 -14
- package/dist/{work-cmd-3MKUIE2C.js → work-cmd-V5FHLWJM.js} +8 -8
- package/dist/{work-comment-cmd-ESC3DSHI.js → work-comment-cmd-KLEMDYI4.js} +9 -9
- package/dist/{work-demo-cmd-7S23DGYO.js → work-demo-cmd-XYRKFP4G.js} +8 -8
- package/dist/{work-logs-cmd-46UPNN7Q.js → work-logs-cmd-DOGPK7Q6.js} +8 -8
- package/dist/{work-open-pr-cmd-JNGTGLIP.js → work-open-pr-cmd-UAUEEP3V.js} +9 -9
- package/dist/{work-pr-cmd-2J2LKETD.js → work-pr-cmd-LYWL7ZLF.js} +8 -8
- package/dist/{work-proofs-cmd-HRWTHYSS.js → work-proofs-cmd-YMLIJDJZ.js} +9 -9
- package/dist/{work-proofs-record-6OKAT3IC.js → work-proofs-record-NK3ULOUQ.js} +15 -15
- package/dist/{work-stop-cmd-Y22XIVQ6.js → work-stop-cmd-MRLJEQRP.js} +8 -8
- package/package.json +2 -2
- package/dist/dist-QGN5R4Y2.js +0 -7
- package/dist/find-unit-4UR647S4.js +0 -18
|
@@ -1,34 +1,35 @@
|
|
|
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 { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD } from './chunk-
|
|
4
|
+
import { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD } from './chunk-P3NPTFLF.js';
|
|
5
5
|
import { zodProblem } from './chunk-I3LTIAOR.js';
|
|
6
|
-
import { senderPidfile } from './chunk-
|
|
7
|
-
import { installScrubContext } from './chunk-
|
|
8
|
-
import { writeDockerClientConfig } from './chunk-
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
6
|
+
import { senderPidfile } from './chunk-LD3BHLK7.js';
|
|
7
|
+
import { installScrubContext } from './chunk-VUQKGBIQ.js';
|
|
8
|
+
import { writeDockerClientConfig } from './chunk-CFFVCI2I.js';
|
|
9
|
+
import { upgradedStarterText } from './chunk-XKJOIQ2Q.js';
|
|
10
|
+
import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, hasClaudeCredential, AssetError, obtainImage, ensureRootfs, makeBuildsDirPrivate, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, startJailedInto, resolveAgentUser, AgentUserError, runBuildSteps, startHostServices, LEASE_SECONDS, managedBuildSettingsFor, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, closeHostBuild, dropManagedClaudeKey, dropManagedBuildSettings, containerSenderCommand, hostCommandEnvironment, execArgv, signalInContainer, syncInContainer, copyTranscriptsFromContainer, MANAGED_UNJAILED_REASON, senderAliveScript, managedMachineLimits, withFactoryHosts, helperFirecrackerNote, managedClaudeKeyValues, managedBuildSettingValues, stopJailed, deleteBuildDisk, managedClaudeKeyFor, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, ROOT_DISK_ID_PREFIX, copyJudgeTree } from './chunk-CNZRUVZ5.js';
|
|
11
|
+
import { readBranchHead, fetchCommit, diffBetween } from './chunk-H47VGSCW.js';
|
|
12
|
+
import { waitForAgent, vmExecArgs } from './chunk-3VZTNXK5.js';
|
|
13
|
+
import { socketPathProblem, vsockLinks, LEASE_LINK, linkVsockSockets } from './chunk-6KFJIU73.js';
|
|
14
|
+
import { describeCallFailure, resolveGoverningSource, prefetchGovernedContext, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, WORKFLOW_PERMISSION_REASON, keptContextTree } from './chunk-EPFFYDNX.js';
|
|
15
|
+
import { imageBuildOf, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-ZIKZZ4LK.js';
|
|
16
|
+
import { formatBytes, DEFAULT_CACHE_DISK, allocatedBytes } from './chunk-IWVGALDC.js';
|
|
17
|
+
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-HVQMIZ22.js';
|
|
17
18
|
import { CLAUDE_CODE_VERSION, FIRECRACKER_VERSION } from './chunk-4UPET3R7.js';
|
|
18
19
|
import { isSameProcess, startTimeOf } from './chunk-JBJTC3UU.js';
|
|
19
|
-
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-
|
|
20
|
+
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-JKNOJKVD.js';
|
|
20
21
|
import { planArtifactUpload } from './chunk-MECW77XP.js';
|
|
21
22
|
import { readCloudConfig } from './chunk-PJDQPF5N.js';
|
|
22
|
-
import { signerFor } from './chunk-
|
|
23
|
-
import { resolvePackRoot } from './chunk-ZQSANKS4.js';
|
|
24
|
-
import { scrubText } from './chunk-
|
|
23
|
+
import { signerFor } from './chunk-L5VHGRQE.js';
|
|
24
|
+
import { resolvePackRoot, AGENTS_SKILLS_BASE, OUTERLAYER_SKILLS_BASE } from './chunk-ZQSANKS4.js';
|
|
25
|
+
import { scrubText } from './chunk-Z7WMU3RA.js';
|
|
25
26
|
import { MAINTAINED_SKILLS } from './chunk-CDDED64E.js';
|
|
26
27
|
import { resolveVersion } from './chunk-RA3O54FC.js';
|
|
27
28
|
import { parsePolicy } from './chunk-FGXT5OXS.js';
|
|
28
29
|
import { CheckItemsSchema, CHECK_ITEM_REASON_MAX_LENGTH } from './chunk-EOTMDIYC.js';
|
|
29
30
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
30
|
-
import { RUNNER_FILE_MODE, runnerDir, buildDir, vsockPath, jobConsolePath } from './chunk-
|
|
31
|
-
import { JOB_MOUNT, repositoriesOf, primaryOf, buildEnvironment, CHECKOUT_DIR, claudeCredential, AGENT_CREDENTIAL_MISSING, sharedUserEnvironment, headerVariables, authorEnvironment, withTunnelRecord, commitIdentityRecord, fdName, buildMavenSettingsXml, CLAUDE_CREDENTIAL_VARIABLES, currentClaudeCredential, removedClaudeCredentialValues, managedClaudeCredential, RELAY_PORT, repositoryPath, lifecycleWorkdir, CHECK_ITEMS_FILE, MAVEN_SETTINGS_FILE, checkEnvironment, EVAL_INPUT_DIR } from './chunk-
|
|
31
|
+
import { RUNNER_FILE_MODE, runnerDir, buildDir, vsockPath, jobConsolePath } from './chunk-GJ4KBHBD.js';
|
|
32
|
+
import { JOB_MOUNT, repositoriesOf, primaryOf, buildEnvironment, CHECKOUT_DIR, claudeCredential, AGENT_CREDENTIAL_MISSING, sharedUserEnvironment, headerVariables, authorEnvironment, withTunnelRecord, commitIdentityRecord, fdName, buildMavenSettingsXml, CLAUDE_CREDENTIAL_VARIABLES, currentClaudeCredential, removedClaudeCredentialValues, managedClaudeCredential, RELAY_PORT, repositoryPath, lifecycleWorkdir, CHECK_ITEMS_FILE, MAVEN_SETTINGS_FILE, checkEnvironment, EVAL_INPUT_DIR } from './chunk-SDAEXUIX.js';
|
|
32
33
|
import { RUNNER_WORDED_REASONS, UNKNOWN_TRACKING_REASON } from './chunk-MESOOLF4.js';
|
|
33
34
|
import { existsSync, statSync, appendFileSync, rmSync, mkdirSync, chmodSync, writeFileSync, openSync, readFileSync, closeSync, readdirSync, lstatSync, fstatSync, readSync, realpathSync } from 'fs';
|
|
34
35
|
import { join, dirname, delimiter, sep } from 'path';
|
|
@@ -192,6 +193,37 @@ var GUEST_MAVEN_DIR = `${JOB_MOUNT}/maven`;
|
|
|
192
193
|
function buildMemoryBytes(config) {
|
|
193
194
|
return parseSize(config.build?.memory ?? DEFAULT_MEMORY) ?? parseSize(DEFAULT_MEMORY);
|
|
194
195
|
}
|
|
196
|
+
function machineLimits(config, jobDir) {
|
|
197
|
+
const settings = managedBuildSettingsFor(jobDir);
|
|
198
|
+
if (settings !== void 0) return managedMachineLimits(settings);
|
|
199
|
+
return {
|
|
200
|
+
cpus: config.build?.cpus ?? DEFAULT_CPUS,
|
|
201
|
+
memoryBytes: buildMemoryBytes(config),
|
|
202
|
+
diskBytes: parseSize(config.build?.disk ?? DEFAULT_DISK) ?? parseSize(DEFAULT_DISK)
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function recordedLimits(limits) {
|
|
206
|
+
return { memoryBytes: limits.memoryBytes, diskBytes: limits.diskBytes };
|
|
207
|
+
}
|
|
208
|
+
function memoryTextOf(config, jobDir, limits) {
|
|
209
|
+
return managedBuildSettingsFor(jobDir) === void 0 ? config.build?.memory : `${limits.memoryBytes / 1024 ** 3}g`;
|
|
210
|
+
}
|
|
211
|
+
function builderMachineFor(config, jobDir, assets, limits) {
|
|
212
|
+
return {
|
|
213
|
+
kernel: assets.kernel,
|
|
214
|
+
firecracker: assets.firecracker,
|
|
215
|
+
limits: { ...limits, cacheDiskBytes: parseSize(config.build?.cacheDisk ?? DEFAULT_CACHE_DISK) ?? parseSize(DEFAULT_CACHE_DISK) },
|
|
216
|
+
memory: memoryTextOf(config, jobDir, limits),
|
|
217
|
+
allowHosts: withFactoryHosts(config.build?.allowHosts, managedBuildSettingsFor(jobDir)),
|
|
218
|
+
managed: config.managed === true,
|
|
219
|
+
timeLimitMinutes: config.timeLimitMinutes
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function factoryVariablesOf(config, jobDir) {
|
|
223
|
+
const held = managedBuildSettingsFor(jobDir)?.variables;
|
|
224
|
+
if (held !== void 0) return held;
|
|
225
|
+
return config.managed === true ? [] : void 0;
|
|
226
|
+
}
|
|
195
227
|
function firstLine(text2) {
|
|
196
228
|
return text2.trim().split("\n")[0] ?? "";
|
|
197
229
|
}
|
|
@@ -326,11 +358,8 @@ async function provisionMicroVm(input) {
|
|
|
326
358
|
});
|
|
327
359
|
if (unfetched !== void 0) return fail(unfetched);
|
|
328
360
|
}
|
|
329
|
-
const limits =
|
|
330
|
-
|
|
331
|
-
memoryBytes: buildMemoryBytes(config),
|
|
332
|
-
diskBytes: parseSize(config.build?.disk ?? DEFAULT_DISK) ?? parseSize(DEFAULT_DISK)
|
|
333
|
-
};
|
|
361
|
+
const limits = machineLimits(config, jobDir);
|
|
362
|
+
const memoryText = memoryTextOf(config, jobDir, limits);
|
|
334
363
|
let buildsInBuilder = imageBuildOf(config) === "vm";
|
|
335
364
|
if (buildsInBuilder && !vm.builderDiskPinned()) {
|
|
336
365
|
if (config.managed === true) return fail(MANAGED_NO_BUILDER_DISK_REASON);
|
|
@@ -350,17 +379,7 @@ async function provisionMicroVm(input) {
|
|
|
350
379
|
deadlineMs: input.deadlineMs,
|
|
351
380
|
now: input.now,
|
|
352
381
|
guestHelper: { path: assets.helper, sha256: assets.helperSha256 },
|
|
353
|
-
...buildsInBuilder ? {
|
|
354
|
-
inBuilder: {
|
|
355
|
-
kernel: assets.kernel,
|
|
356
|
-
firecracker: assets.firecracker,
|
|
357
|
-
limits: { ...limits, cacheDiskBytes: parseSize(config.build?.cacheDisk ?? DEFAULT_CACHE_DISK) ?? parseSize(DEFAULT_CACHE_DISK) },
|
|
358
|
-
memory: config.build?.memory,
|
|
359
|
-
allowHosts: config.build?.allowHosts,
|
|
360
|
-
managed: config.managed === true,
|
|
361
|
-
timeLimitMinutes: config.timeLimitMinutes
|
|
362
|
-
}
|
|
363
|
-
} : {}
|
|
382
|
+
...buildsInBuilder ? { inBuilder: builderMachineFor(config, jobDir, assets, limits) } : {}
|
|
364
383
|
});
|
|
365
384
|
if (!obtained.ok) return obtained.aborted === true ? { ok: false, reason: obtained.reason, aborted: true } : fail(obtained.reason);
|
|
366
385
|
const { report } = obtained.built;
|
|
@@ -374,6 +393,7 @@ async function provisionMicroVm(input) {
|
|
|
374
393
|
imageId: report.imageId,
|
|
375
394
|
containerEnv: report.apply.containerEnv,
|
|
376
395
|
builtIns: true,
|
|
396
|
+
limits: recordedLimits(limits),
|
|
377
397
|
lifecycle: report.apply.lifecycle,
|
|
378
398
|
...governingSource.kind === "governed" ? { governing: { repository: governingSource.repository, ref: governingSource.ref, commit: governingSource.sha } } : {},
|
|
379
399
|
...report.docker === true ? { docker: true } : {}
|
|
@@ -386,7 +406,8 @@ async function provisionMicroVm(input) {
|
|
|
386
406
|
repositories,
|
|
387
407
|
hostEnv: runtime.hostEnv,
|
|
388
408
|
containerEnv: report.apply.containerEnv,
|
|
389
|
-
builtIns: true
|
|
409
|
+
builtIns: true,
|
|
410
|
+
factoryVariables: factoryVariablesOf(config, jobDir)
|
|
390
411
|
};
|
|
391
412
|
const env = buildEnvironment(envInput);
|
|
392
413
|
if (env.skippedTokenVariables.length > 0) {
|
|
@@ -405,7 +426,7 @@ async function provisionMicroVm(input) {
|
|
|
405
426
|
let why = reason;
|
|
406
427
|
if (!aborted && (state.cgroup !== void 0 || state.jailed !== void 0)) {
|
|
407
428
|
try {
|
|
408
|
-
if (await microVmOomKills(runtime, state) > 0) why = outOfMemoryReason(
|
|
429
|
+
if (await microVmOomKills(runtime, state) > 0) why = outOfMemoryReason(memoryText);
|
|
409
430
|
} catch (err) {
|
|
410
431
|
log.error(`${tag} could not read the build's memory events: ${describeCallFailure(err)} \xB7 continuing`);
|
|
411
432
|
}
|
|
@@ -424,7 +445,7 @@ async function provisionMicroVm(input) {
|
|
|
424
445
|
imageConfig = { env: madeInBuilder.env, user: madeInBuilder.user };
|
|
425
446
|
} else {
|
|
426
447
|
try {
|
|
427
|
-
state.rootfs = await ensureRootfs({ host: vm.rootfs, runnerDir: runnerDirPath, imageId: report.imageId, memoryBytes:
|
|
448
|
+
state.rootfs = await ensureRootfs({ host: vm.rootfs, runnerDir: runnerDirPath, imageId: report.imageId, memoryBytes: limits.memoryBytes });
|
|
428
449
|
imageConfig = await vm.rootfs.imageConfig(report.imageId);
|
|
429
450
|
} catch (err) {
|
|
430
451
|
return bail(`the image could not be converted to a root disk: ${describeCallFailure(err)}`);
|
|
@@ -677,7 +698,8 @@ function vmExecFor(input, argv) {
|
|
|
677
698
|
containerEnv: state.containerEnv ?? {},
|
|
678
699
|
builtIns: state.builtIns === true,
|
|
679
700
|
identity: input.job.commitIdentity,
|
|
680
|
-
imageEnv: state.imageEnv
|
|
701
|
+
imageEnv: state.imageEnv,
|
|
702
|
+
factoryVariables: factoryVariablesOf(input.config, input.jobDir)
|
|
681
703
|
});
|
|
682
704
|
const options = {
|
|
683
705
|
socket: state.vsockPath,
|
|
@@ -706,7 +728,8 @@ async function startMicroVmCommand(input) {
|
|
|
706
728
|
containerEnv: state.containerEnv ?? {},
|
|
707
729
|
builtIns: state.builtIns === true,
|
|
708
730
|
identity: input.job.commitIdentity,
|
|
709
|
-
imageEnv: state.imageEnv
|
|
731
|
+
imageEnv: state.imageEnv,
|
|
732
|
+
factoryVariables: factoryVariablesOf(input.config, input.jobDir)
|
|
710
733
|
});
|
|
711
734
|
const started = await input.runtime.vm.exec(state.vsockPath, {
|
|
712
735
|
argv: ["/bin/sh", "-c", commandWithShim(input.job, input.cmdline)],
|
|
@@ -748,7 +771,8 @@ async function syncInMicroVm(input) {
|
|
|
748
771
|
containerEnv: state.containerEnv ?? {},
|
|
749
772
|
builtIns: state.builtIns === true,
|
|
750
773
|
identity: job.commitIdentity,
|
|
751
|
-
imageEnv: state.imageEnv
|
|
774
|
+
imageEnv: state.imageEnv,
|
|
775
|
+
factoryVariables: factoryVariablesOf(input.config, input.jobDir)
|
|
752
776
|
});
|
|
753
777
|
const result = await runtime.vm.exec(state.vsockPath, {
|
|
754
778
|
argv: ["outerlayer", "sync"],
|
|
@@ -872,6 +896,7 @@ async function startCheckMicroVm(input) {
|
|
|
872
896
|
const { config, runtime, job, jobDir, tokens, log } = input;
|
|
873
897
|
const { vm } = runtime;
|
|
874
898
|
const tag = `#${job.item}`;
|
|
899
|
+
const limits = machineLimits(config, jobDir);
|
|
875
900
|
const built = job.microvm;
|
|
876
901
|
const repository = built?.repository ?? job.repository;
|
|
877
902
|
if (built === void 0 || built.imageId === void 0 || repository === void 0 || job.branch === void 0) {
|
|
@@ -921,7 +946,7 @@ async function startCheckMicroVm(input) {
|
|
|
921
946
|
state.rootfs = built.rootfs;
|
|
922
947
|
} else {
|
|
923
948
|
try {
|
|
924
|
-
state.rootfs = await ensureRootfs({ host: vm.rootfs, runnerDir: runnerDirPath, imageId: built.imageId, memoryBytes:
|
|
949
|
+
state.rootfs = await ensureRootfs({ host: vm.rootfs, runnerDir: runnerDirPath, imageId: built.imageId, memoryBytes: limits.memoryBytes });
|
|
925
950
|
} catch (err) {
|
|
926
951
|
return fail(`the image could not be converted to a root disk: ${describeCallFailure(err)}`);
|
|
927
952
|
}
|
|
@@ -939,16 +964,11 @@ async function startCheckMicroVm(input) {
|
|
|
939
964
|
log: (line) => log.line(`${tag} ${line}`),
|
|
940
965
|
readOnly: true
|
|
941
966
|
});
|
|
942
|
-
runtime.tunnels.set(buildId, await startServicesFor(runtime, config, buildDir2, checksDir, void 0, false, gitRemote));
|
|
967
|
+
runtime.tunnels.set(buildId, await startServicesFor(runtime, config, buildDir2, checksDir, void 0, false, gitRemote, "socket", void 0, void 0, void 0, jobDir));
|
|
943
968
|
} catch (err) {
|
|
944
969
|
return fail(`the tunnel could not start: ${describeCallFailure(err)}`);
|
|
945
970
|
}
|
|
946
971
|
if (abandoned()) return fail(ABANDONED);
|
|
947
|
-
const limits = {
|
|
948
|
-
cpus: config.build?.cpus ?? DEFAULT_CPUS,
|
|
949
|
-
memoryBytes: buildMemoryBytes(config),
|
|
950
|
-
diskBytes: parseSize(config.build?.disk ?? DEFAULT_DISK) ?? parseSize(DEFAULT_DISK)
|
|
951
|
-
};
|
|
952
972
|
const links = vsockLinks({ destinations: config.build?.destinations?.length ?? 0, builtIns: false });
|
|
953
973
|
const configPath = join(buildDir2, "vm.json");
|
|
954
974
|
const helper = await helperFor(runtime, (line) => log.line(`${tag} ${line}`), config.managed === true);
|
|
@@ -1008,7 +1028,16 @@ async function startCheckMicroVm(input) {
|
|
|
1008
1028
|
const failed = await boot();
|
|
1009
1029
|
if (failed !== void 0) return fail(failed);
|
|
1010
1030
|
if (abandoned()) return fail(ABANDONED);
|
|
1011
|
-
const env = checkEnvironment({
|
|
1031
|
+
const env = checkEnvironment({
|
|
1032
|
+
config,
|
|
1033
|
+
item: job.item,
|
|
1034
|
+
repository,
|
|
1035
|
+
hostEnv: runtime.hostEnv,
|
|
1036
|
+
containerEnv: built.containerEnv ?? {},
|
|
1037
|
+
imageEnv: built.imageEnv,
|
|
1038
|
+
// The checks of a managed build get its factory's variables, as its command did, and none of the runner's own.
|
|
1039
|
+
factoryVariables: factoryVariablesOf(config, jobDir)
|
|
1040
|
+
});
|
|
1012
1041
|
const evalInput = { dir: join(checksDir, EVAL_INPUT_NAME), delivered: false };
|
|
1013
1042
|
const deliverEvalInput = async () => {
|
|
1014
1043
|
await unpackIntoGuest(runtime, state, evalInput.dir, EVAL_INPUT_DIR, { readOnly: true });
|
|
@@ -1653,9 +1682,18 @@ function validatorFilesIn(root) {
|
|
|
1653
1682
|
}
|
|
1654
1683
|
return files;
|
|
1655
1684
|
}
|
|
1685
|
+
var CRITERIA_CHECK = "acceptance-criteria";
|
|
1686
|
+
function asHostReads(file, base, log, tag) {
|
|
1687
|
+
const upgraded = upgradedStarterText(file.path, file.content, { base });
|
|
1688
|
+
if (upgraded === void 0) return file;
|
|
1689
|
+
log.line(`${tag} ${file.path} is an unedited copy an earlier release wrote, so it is read as this CLI writes it`);
|
|
1690
|
+
return { path: file.path, content: upgraded };
|
|
1691
|
+
}
|
|
1656
1692
|
function checksIn(root, log, tag) {
|
|
1657
|
-
const
|
|
1658
|
-
const
|
|
1693
|
+
const base = existsSync(join(root, AGENTS_SKILLS_BASE)) ? AGENTS_SKILLS_BASE : OUTERLAYER_SKILLS_BASE;
|
|
1694
|
+
const policyText = readInside(root, POLICY_FILE);
|
|
1695
|
+
const policy = policyText === void 0 ? null : asHostReads({ path: POLICY_FILE, content: policyText }, base, log, tag);
|
|
1696
|
+
const loaded = parsePolicy(policy, validatorFilesIn(root).map((file) => asHostReads(file, base, log, tag)));
|
|
1659
1697
|
for (const problem of loaded.problems) log.error(`${tag} ${problem.file}: ${problem.problem}`);
|
|
1660
1698
|
const hostChecks = loaded.customs.filter((def) => def.runWhere === "host" && def.level !== "off" && def.declaresEmit !== null);
|
|
1661
1699
|
const checks = [];
|
|
@@ -1663,7 +1701,8 @@ function checksIn(root, log, tag) {
|
|
|
1663
1701
|
if (def.judge !== void 0) checks.push({ name: def.declaresEmit, judge: { brief: def.judge.brief, text: readBrief(root, def.judge.brief), subjects: def.judge.subjects } });
|
|
1664
1702
|
else if (def.command !== void 0) checks.push({ name: def.declaresEmit, command: def.command });
|
|
1665
1703
|
}
|
|
1666
|
-
|
|
1704
|
+
const unrecorded = loaded.customs.filter((def) => def.level !== "off" && def.declaresEmit === CRITERIA_CHECK && !checks.some((check) => check.name === CRITERIA_CHECK)).map((def) => def.id);
|
|
1705
|
+
return { checks, unrecorded };
|
|
1667
1706
|
}
|
|
1668
1707
|
async function readDefinitions(input, repository, scratch, token, tokens) {
|
|
1669
1708
|
const { config, job, deps } = input;
|
|
@@ -1672,7 +1711,7 @@ async function readDefinitions(input, repository, scratch, token, tokens) {
|
|
|
1672
1711
|
const controlPlaneUrl = (controlPlane) => deps.runtime.remoteFor?.(controlPlane) ?? `${deps.runtime.github.gitUrl}/${controlPlane}.git`;
|
|
1673
1712
|
const governing = (job.container ?? job.microvm)?.governing;
|
|
1674
1713
|
const kept = keptContextTree(input.jobDir, governing);
|
|
1675
|
-
if (kept !== void 0) return { ok: true,
|
|
1714
|
+
if (kept !== void 0) return { ok: true, ...checksIn(kept, deps.log, tag) };
|
|
1676
1715
|
const staged = await stage({
|
|
1677
1716
|
config,
|
|
1678
1717
|
repository,
|
|
@@ -1688,18 +1727,20 @@ async function readDefinitions(input, repository, scratch, token, tokens) {
|
|
|
1688
1727
|
if (staged.kind === "refused") return { ok: false, reason: staged.reason };
|
|
1689
1728
|
if (staged.kind === "staged") {
|
|
1690
1729
|
try {
|
|
1691
|
-
return { ok: true,
|
|
1730
|
+
return { ok: true, ...checksIn(join(staged.dir, "tree"), deps.log, tag) };
|
|
1692
1731
|
} finally {
|
|
1693
1732
|
rmSync(staged.dir, { recursive: true, force: true });
|
|
1694
1733
|
}
|
|
1695
1734
|
}
|
|
1696
1735
|
const repo = join(scratch, "repo");
|
|
1697
1736
|
const remote = deps.runtime.remoteFor?.(repository) ?? `${deps.runtime.github.gitUrl}/${repository}.git`;
|
|
1698
|
-
const
|
|
1737
|
+
const started = (job.container ?? job.microvm)?.startCommit;
|
|
1738
|
+
const commit = started !== void 0 && started !== "" ? started : job.environment?.recipe?.sourceCommit ?? await deps.runtime.readHead(remote, scratch);
|
|
1699
1739
|
if (commit === void 0) return { ok: false, reason: "the repository's default branch could not be read" };
|
|
1700
1740
|
const fetched = await (deps.fetchCommit ?? fetchCommit)({ remote, dir: repo, commit, token });
|
|
1701
1741
|
if (!fetched.ok) return { ok: false, reason: fetched.reason };
|
|
1702
|
-
|
|
1742
|
+
deps.log.line(`${tag} check definitions read at ${commit.slice(0, 12)}`);
|
|
1743
|
+
return { ok: true, ...checksIn(repo, deps.log, tag) };
|
|
1703
1744
|
}
|
|
1704
1745
|
function timeoutAfter(ms, sleep) {
|
|
1705
1746
|
if (sleep !== void 0) return { done: sleep(ms).then(() => "timeout"), cancel: () => void 0 };
|
|
@@ -2205,6 +2246,9 @@ async function runJudge(input) {
|
|
|
2205
2246
|
for (const name of passed.value) await record2(name, "fail", `the definitions could not be read: ${definitions.reason}`, { idTag: "judge-unread" });
|
|
2206
2247
|
return;
|
|
2207
2248
|
}
|
|
2249
|
+
for (const id of definitions.unrecorded) {
|
|
2250
|
+
log.line(`${tag} judge not run for ${id}: the check is not run.where: host with a judge or a command, so this host records no result for it`);
|
|
2251
|
+
}
|
|
2208
2252
|
const checks = definitions.checks.filter(isJudgeCheck);
|
|
2209
2253
|
if (checks.length === 0) {
|
|
2210
2254
|
rmSync(scratch, { recursive: true, force: true });
|
|
@@ -2634,7 +2678,7 @@ function mergeScrubConfig(a, b) {
|
|
|
2634
2678
|
function releaseScrub(config, home) {
|
|
2635
2679
|
const merged = mergeScrubConfig(config.scrub, readCloudConfig(home).scrub);
|
|
2636
2680
|
const secrets = [...headerVariables(config.build?.destinations), ...CLAUDE_CREDENTIAL_VARIABLES].map((name) => process.env[name] ?? "");
|
|
2637
|
-
const held = [currentClaudeCredential(process.env)?.value, ...removedClaudeCredentialValues(), ...managedClaudeKeyValues()].filter((value) => value !== void 0);
|
|
2681
|
+
const held = [currentClaudeCredential(process.env)?.value, ...removedClaudeCredentialValues(), ...managedClaudeKeyValues(), ...managedBuildSettingValues()].filter((value) => value !== void 0);
|
|
2638
2682
|
return { literals: [...scrubList(merged?.literals), ...secrets, ...held], patterns: scrubList(merged?.patterns) };
|
|
2639
2683
|
}
|
|
2640
2684
|
function transcriptScrub(config, secrets) {
|
|
@@ -2911,6 +2955,15 @@ function readTunnelRecord(path) {
|
|
|
2911
2955
|
return void 0;
|
|
2912
2956
|
}
|
|
2913
2957
|
}
|
|
2958
|
+
var VALUES_NOT_HELD = "the runner restarted and could not read this build's variables from its factory again, so it cannot remove their values from what it uploads";
|
|
2959
|
+
var SCRUBBED_RELEASE_LOG = "release-log.txt";
|
|
2960
|
+
function readScrubbedReleaseLog(jobDirPath) {
|
|
2961
|
+
try {
|
|
2962
|
+
return readFileSync(join(jobDirPath, SCRUBBED_RELEASE_LOG), "utf8");
|
|
2963
|
+
} catch {
|
|
2964
|
+
return void 0;
|
|
2965
|
+
}
|
|
2966
|
+
}
|
|
2914
2967
|
async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
2915
2968
|
const spawnFn = deps.spawnFn ?? spawn;
|
|
2916
2969
|
const now = deps.now ?? (() => /* @__PURE__ */ new Date());
|
|
@@ -2919,6 +2972,7 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
2919
2972
|
const logPath = join(jobDirPath, "command.log");
|
|
2920
2973
|
const tag = `#${job.item}`;
|
|
2921
2974
|
deps.attemptLogs?.open(job.item, jobDirPath);
|
|
2975
|
+
const valuesNotHeld = (job.managedVariables?.length ?? 0) > 0 && managedBuildSettingsFor(jobDirPath) === void 0;
|
|
2922
2976
|
if (job.sender !== void 0) {
|
|
2923
2977
|
await stopSender({ job, deps: { spawnFn, runtime: deps.container, log } });
|
|
2924
2978
|
delete job.sender;
|
|
@@ -2962,6 +3016,10 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
2962
3016
|
writeJobFile(jobFilePath, job);
|
|
2963
3017
|
}
|
|
2964
3018
|
const uploadSessions = async (workdir) => {
|
|
3019
|
+
if (valuesNotHeld) {
|
|
3020
|
+
log.error(`${tag} sync skipped: ${VALUES_NOT_HELD}`);
|
|
3021
|
+
return;
|
|
3022
|
+
}
|
|
2965
3023
|
if (job.container === void 0 && job.microvm === void 0 && job.build?.exec === void 0 && workdirProblem(workdir) !== void 0) {
|
|
2966
3024
|
log.line(`${tag} sync skipped: workdir ${workdir} is gone`);
|
|
2967
3025
|
} else if (job.itemKey === void 0) {
|
|
@@ -3020,7 +3078,8 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
3020
3078
|
log.error(`${tag} removing an earlier attempt's check environment failed: ${describeCallFailure(err)} \xB7 continuing`);
|
|
3021
3079
|
}
|
|
3022
3080
|
}
|
|
3023
|
-
if (outcome === "ok" && !job.cleanupRan
|
|
3081
|
+
if (valuesNotHeld && outcome === "ok" && !job.cleanupRan) log.error(`${tag} the host's judge and checks skipped: ${VALUES_NOT_HELD}`);
|
|
3082
|
+
if (outcome === "ok" && !job.cleanupRan && job.judgeRan !== true && !valuesNotHeld) {
|
|
3024
3083
|
setStage(job, jobDirPath, "judge");
|
|
3025
3084
|
job.judgeRan = true;
|
|
3026
3085
|
writeJobFile(jobFilePath, job);
|
|
@@ -3035,7 +3094,7 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
3035
3094
|
log.error(`${tag} the host's judge stopped: ${describeCallFailure(err)} \xB7 continuing`);
|
|
3036
3095
|
}
|
|
3037
3096
|
}
|
|
3038
|
-
if (outcome === "ok" && !job.cleanupRan && job.checksRan !== true) {
|
|
3097
|
+
if (outcome === "ok" && !job.cleanupRan && job.checksRan !== true && !valuesNotHeld) {
|
|
3039
3098
|
setStage(job, jobDirPath, "checks");
|
|
3040
3099
|
job.checksRan = true;
|
|
3041
3100
|
writeJobFile(jobFilePath, job);
|
|
@@ -3249,12 +3308,17 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
3249
3308
|
writeJobFile(jobFilePath, job);
|
|
3250
3309
|
}
|
|
3251
3310
|
const sentAtMs = now().getTime();
|
|
3252
|
-
const runnerLog =
|
|
3311
|
+
const runnerLog = valuesNotHeld ? `The runner sends no log for this attempt: ${VALUES_NOT_HELD}.
|
|
3312
|
+
` : releaseLogFor(jobDirPath, job, config);
|
|
3253
3313
|
const detail = outcome === void 0 ? { log: runnerLog } : { stage: job.endStage, exitCode: job.endExitCode, reason: job.reason, environment: job.environment, log: runnerLog };
|
|
3254
3314
|
const release = await retrySend(() => releaseLease(config, job.item, outcome, detail, deps.fetchImpl), {
|
|
3255
3315
|
now: deps.now,
|
|
3256
3316
|
sleep: deps.sleep
|
|
3257
3317
|
});
|
|
3318
|
+
if (!release.ok && release.retryable && job.managedVariables !== void 0 && runnerLog !== void 0) {
|
|
3319
|
+
writeFileSync(join(jobDirPath, SCRUBBED_RELEASE_LOG), runnerLog, { mode: RUNNER_FILE_MODE });
|
|
3320
|
+
}
|
|
3321
|
+
dropManagedBuildSettings(jobDirPath);
|
|
3258
3322
|
const alreadyReleased = release.ok && wasAlreadyReleased(release.value, outcome, sentAtMs);
|
|
3259
3323
|
const endedAt = now();
|
|
3260
3324
|
job.outcome = outcome;
|
|
@@ -3307,13 +3371,14 @@ async function retryFailedReleases(jobsDirPath, config, deps) {
|
|
|
3307
3371
|
if (!job || job.releaseFailed === void 0 || job.releaseFailed === ALREADY_RELEASED || isUnfinished(job)) {
|
|
3308
3372
|
continue;
|
|
3309
3373
|
}
|
|
3310
|
-
const runnerLog = releaseLogFor(dirPath, job, config);
|
|
3374
|
+
const runnerLog = readScrubbedReleaseLog(dirPath) ?? releaseLogFor(dirPath, job, config);
|
|
3311
3375
|
const detail = job.outcome === void 0 ? { log: runnerLog } : { stage: job.endStage, exitCode: job.endExitCode, reason: job.reason, environment: job.environment, log: runnerLog };
|
|
3312
3376
|
const release = await retrySend(() => releaseLease(config, job.item, job.outcome, detail, deps.fetchImpl), {
|
|
3313
3377
|
now: deps.now,
|
|
3314
3378
|
sleep: deps.sleep
|
|
3315
3379
|
});
|
|
3316
3380
|
if (release.ok || !release.retryable) {
|
|
3381
|
+
rmSync(join(dirPath, SCRUBBED_RELEASE_LOG), { force: true });
|
|
3317
3382
|
job.releaseFailed = void 0;
|
|
3318
3383
|
writeJobFile(jobFilePath, job);
|
|
3319
3384
|
} else {
|
|
@@ -3436,7 +3501,7 @@ function launchFor(config, job, jobDir, deps) {
|
|
|
3436
3501
|
if (job.microvm !== void 0) {
|
|
3437
3502
|
const runtime = deps.runtime ?? createContainerRuntime();
|
|
3438
3503
|
const cli = deps.cliPath ?? join(runtime.cliBuild().distDir, "index.js");
|
|
3439
|
-
return { ...microVmSenderCommand({ job, runtime, config, cli }), cwd: jobDir };
|
|
3504
|
+
return { ...microVmSenderCommand({ job, jobDir, runtime, config, cli }), cwd: jobDir };
|
|
3440
3505
|
}
|
|
3441
3506
|
if (job.container !== void 0) {
|
|
3442
3507
|
return { ...containerSenderCommand({ job, runtime: deps.runtime ?? createContainerRuntime(), config }), cwd: jobDir };
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
4
4
|
import { detectActiveSession, transcriptPathForSession } from './chunk-IP7BIBXJ.js';
|
|
5
|
-
import { autoConnect } from './chunk-
|
|
5
|
+
import { autoConnect } from './chunk-IO2BBKG4.js';
|
|
6
6
|
import { C } from './chunk-ANPNT6PM.js';
|
|
7
|
-
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-
|
|
7
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-7QAJQDHS.js';
|
|
8
8
|
import { readLatestProvenanceForSession } from './chunk-ZJSNLVCE.js';
|
|
9
|
-
import { resolveRepoIdentity, defaultProjectsDir, findTranscripts, sessionIdFromPath, scrubText } from './chunk-
|
|
9
|
+
import { resolveRepoIdentity, defaultProjectsDir, findTranscripts, sessionIdFromPath, scrubText } from './chunk-Z7WMU3RA.js';
|
|
10
10
|
import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
|
|
11
11
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
12
12
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { removeRetiredSkills } from './chunk-JWNH4ZTF.js';
|
|
4
|
-
import { defaultFetch, resolveGatewayCredentials } from './chunk-
|
|
4
|
+
import { defaultFetch, resolveGatewayCredentials } from './chunk-7QAJQDHS.js';
|
|
5
5
|
import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
|
|
6
6
|
import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-ZQSANKS4.js';
|
|
7
7
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
8
8
|
import { writeDegraded, writeSourceCache, SOURCE_CACHE_TTL_RETRY_MS, writeContextManifest, SOURCE_CACHE_TTL_SUCCESS_MS, readSourceCache, isSourceCacheFresh, clearDegraded } from './chunk-YQR6E6OV.js';
|
|
9
9
|
import { normalizeRepoName, parseOuterlayerConfig, classifyTree, emitTree } from './chunk-FGXT5OXS.js';
|
|
10
10
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
11
|
-
import { withTokenHeader } from './chunk-
|
|
11
|
+
import { withTokenHeader } from './chunk-SDAEXUIX.js';
|
|
12
12
|
import { execFileSync } from 'child_process';
|
|
13
13
|
import { existsSync, mkdirSync, writeFileSync, chmodSync, lstatSync, readFileSync, copyFileSync } from 'fs';
|
|
14
14
|
import { isAbsolute, join, dirname } from 'path';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { RELAY_PORT, GATEWAY_SOCKET, GATEWAY_PORT, CLAUDE_SOCKET, CLAUDE_PORT, DESTINATION_BASE_PORT } from './chunk-
|
|
3
|
+
import { RELAY_PORT, GATEWAY_SOCKET, GATEWAY_PORT, CLAUDE_SOCKET, CLAUDE_PORT, DESTINATION_BASE_PORT } from './chunk-SDAEXUIX.js';
|
|
4
4
|
import { symlinkSync, unlinkSync } from 'fs';
|
|
5
5
|
import { join } from 'path';
|
|
6
6
|
|
|
@@ -5,7 +5,7 @@ import { addStdioMcpEntryIfAbsent, addDocsMcpEntryIfAbsent, DOCS_MCP_SERVER_NAME
|
|
|
5
5
|
import { installStarterPack } from './chunk-4P6QGMPN.js';
|
|
6
6
|
import { C } from './chunk-ANPNT6PM.js';
|
|
7
7
|
import { AGENTS_MD_LAYOUT, declareAgentsMdLayout, linkClaudeSkills, SKILLS_LINK_PATH, describeSkillsLink, isAgentsMdLayout, holdsTodaysLayoutSources, discoverOuterlayerPaths } from './chunk-NKOM4JKY.js';
|
|
8
|
-
import { resolveGitCommonDir, defaultGitRunner } from './chunk-
|
|
8
|
+
import { resolveGitCommonDir, defaultGitRunner } from './chunk-5JGPTYLT.js';
|
|
9
9
|
import { loadTemplateFiles, loadMaintainedFiles, skillDir, AGENTS_SKILLS_BASE } from './chunk-ZQSANKS4.js';
|
|
10
10
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
11
11
|
import { linkedAgentsPath } from './chunk-DQ6YO7FH.js';
|
|
@@ -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-L5VHGRQE.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,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-SDAEXUIX.js';
|
|
4
4
|
import { createServer, connect } from 'net';
|
|
5
5
|
|
|
6
6
|
createRequire(import.meta.url);
|