@outerlayer/cli 0.34.0-next.20261024231715 → 0.34.0-next.20261025133402
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-HEJM3D3V.js → agent-setup-UXUWLV7O.js} +6 -6
- package/dist/{bridge-NBCXFTT4.js → bridge-OWCSVCXL.js} +2 -2
- package/dist/{build-LSU25G3M.js → build-4HFDZTUX.js} +4 -4
- package/dist/{build-disk-LEZ6LAM3.js → build-disk-5ZQHYBO3.js} +6 -6
- package/dist/build-info.json +1 -1
- package/dist/{builder-I32JOQII.js → builder-54GLXGFV.js} +5 -5
- package/dist/{check-OOUGS65D.js → check-4TQZZOIQ.js} +37 -37
- package/dist/{chunk-L26V6ILJ.js → chunk-2RBIW2PD.js} +1 -1
- package/dist/{chunk-MZBQTVFG.js → chunk-36T6W5RA.js} +1 -1
- package/dist/{chunk-6NUPXDAA.js → chunk-3M6UYJSR.js} +3 -3
- package/dist/{chunk-ZVLSYWDF.js → chunk-3NFZN7H6.js} +3 -3
- package/dist/{chunk-272AKVRP.js → chunk-3RAAYBSG.js} +1 -1
- package/dist/{chunk-3CKMB2UK.js → chunk-4XYC2663.js} +3 -3
- package/dist/{chunk-GH246BGV.js → chunk-56ZHWIR2.js} +1 -1
- package/dist/{chunk-6LBSAW6I.js → chunk-75KZUBHD.js} +1 -1
- package/dist/{chunk-AMEM2ZLL.js → chunk-AABYHGVO.js} +4 -4
- package/dist/{chunk-6ZFY2L2T.js → chunk-AJYZNISW.js} +416 -20
- package/dist/{chunk-62LXQM7U.js → chunk-AVLLJW5D.js} +5 -5
- package/dist/{chunk-FVKH3PMV.js → chunk-BTG5NZHN.js} +4 -4
- package/dist/{chunk-QDVGOMSC.js → chunk-BUF6DSSM.js} +3 -3
- package/dist/{chunk-ZW6L275N.js → chunk-CCISO7EQ.js} +10 -10
- package/dist/{chunk-65AKMFBH.js → chunk-CXQCBAKO.js} +1 -1
- package/dist/{chunk-NBZ7XBT6.js → chunk-DUPM5LVJ.js} +1 -1
- package/dist/{chunk-5HZGLLNW.js → chunk-E34FRRSW.js} +4 -4
- package/dist/{chunk-F5UL23I2.js → chunk-ENFBYN4A.js} +1 -1
- package/dist/{chunk-2JB4GD34.js → chunk-EZ7L5IZU.js} +3 -3
- package/dist/{chunk-HVRQQOMH.js → chunk-HAEDLXHA.js} +3 -3
- package/dist/{chunk-5THSC6BD.js → chunk-IHY457PB.js} +1 -1
- package/dist/{chunk-Z4KWHSO4.js → chunk-IW6Z337K.js} +6 -6
- package/dist/{chunk-Z5IW4DHH.js → chunk-J246WRLZ.js} +1 -1
- package/dist/{chunk-5QBUX5YZ.js → chunk-JEOPIRUR.js} +1 -1
- package/dist/{chunk-TDAQHYM4.js → chunk-JZD2NTRH.js} +3 -3
- package/dist/{chunk-XFFUXXI4.js → chunk-KDLQGTN6.js} +3 -3
- package/dist/{chunk-QMWUPRYQ.js → chunk-LMICI7AY.js} +3 -3
- package/dist/{chunk-43I7PXDP.js → chunk-MPDLZCXM.js} +4 -4
- package/dist/{chunk-PA6CK6WQ.js → chunk-N7LAEN3T.js} +1 -1
- package/dist/{chunk-57L2YAJA.js → chunk-NW5PDZYA.js} +1 -1
- package/dist/{chunk-3IH6K7KG.js → chunk-O5G6VQGZ.js} +4 -4
- package/dist/{chunk-DA3PLB5N.js → chunk-PAK5P2ND.js} +1 -1
- package/dist/{chunk-YEVPRO7L.js → chunk-POGPX7LI.js} +71 -36
- package/dist/{chunk-K5Q6T7SE.js → chunk-PSXVAOEB.js} +3 -3
- package/dist/{chunk-O6DYCIVW.js → chunk-QOUR4CQ7.js} +2 -2
- package/dist/{chunk-ACRRO3MB.js → chunk-RNVBSRZZ.js} +21 -20
- package/dist/{chunk-7WM7K2DY.js → chunk-SMMNU65K.js} +28 -15
- package/dist/{chunk-DXJTBU7A.js → chunk-T7N3BAOO.js} +3 -3
- package/dist/{chunk-6RKD7YZ6.js → chunk-TVGLNHEB.js} +1 -1
- package/dist/{chunk-EN3YWO7Q.js → chunk-TVOZOOIW.js} +3 -3
- package/dist/{chunk-ZYKFYNES.js → chunk-UC2DKBMS.js} +2 -2
- package/dist/{chunk-YGSY2NWU.js → chunk-WIK5KUGK.js} +5 -5
- package/dist/{chunk-EE2ZZGQV.js → chunk-XA6PGME5.js} +2 -2
- package/dist/{chunk-SOI6K5DY.js → chunk-XLJLR7EK.js} +1 -1
- package/dist/{chunk-BALIE3BA.js → chunk-YOBQIXX6.js} +10 -6
- package/dist/{chunk-E4ASIOVL.js → chunk-Z76GVJGQ.js} +3 -3
- package/dist/{chunk-YIBFGAYI.js → chunk-ZV2JJPDS.js} +6 -6
- package/dist/{chunk-4Y54SQXH.js → chunk-ZWLEUSJW.js} +70 -25
- package/dist/{claude-launcher-MORG66PJ.js → claude-launcher-JEB5BN7Q.js} +1 -1
- package/dist/{cli-XI7RUSC5.js → cli-DY3EGPUB.js} +109 -109
- package/dist/{command-BJSHY6OB.js → command-ZAXYAZCI.js} +24 -24
- package/dist/{config-WRHQDGVI.js → config-UN3X6AP2.js} +7 -7
- package/dist/{connect-cmd-YAUOCX4X.js → connect-cmd-TWM4FEKD.js} +6 -6
- package/dist/{container-start-QADK3YGL.js → container-start-JUNBJ7MU.js} +30 -30
- package/dist/{context-show-cmd-VHY3OBIA.js → context-show-cmd-K5LRMDEO.js} +7 -7
- package/dist/{control-plane-launch-QSBWTA2V.js → control-plane-launch-LHOV2FPA.js} +5 -5
- package/dist/{dist-ZAHCXYSG.js → dist-QGN5R4Y2.js} +1 -1
- package/dist/{docker-DJ73SZRC.js → docker-YZKRM7IP.js} +5 -5
- package/dist/{doctor-UR76MCGI.js → doctor-YOAF7QPL.js} +26 -26
- package/dist/{emit-artifact-cmd-DP2EQ54N.js → emit-artifact-cmd-SCF2FKKS.js} +11 -11
- package/dist/{emit-criteria-cmd-TTFBN6RK.js → emit-criteria-cmd-B6CKUWTW.js} +8 -8
- package/dist/{emit-demo-cmd-Z7YGLEBJ.js → emit-demo-cmd-BNWRETMJ.js} +12 -12
- package/dist/{emit-finding-cmd-IQRD3J2X.js → emit-finding-cmd-TPSHNZNE.js} +8 -8
- package/dist/{emit-result-cmd-GIWB6UHH.js → emit-result-cmd-J5DXIC2Q.js} +10 -10
- package/dist/{emit-step-cmd-PU5TTU6C.js → emit-step-cmd-NPH46KAO.js} +8 -8
- package/dist/{exec-client-7PT4W7JR.js → exec-client-ANW4KGMN.js} +3 -3
- package/dist/{findings-cmd-7J5SHCUO.js → findings-cmd-4FJDCFL3.js} +8 -8
- package/dist/{fleet-readiness-G63D76EX.js → fleet-readiness-OK6534T6.js} +5 -5
- package/dist/{governing-source-DLESDP6T.js → governing-source-GNKTNM32.js} +10 -10
- package/dist/{guest-init-J3F3AEEY.js → guest-init-C6M7YT3U.js} +4 -4
- package/dist/{hook-fast-VQXRDS6E.js → hook-fast-LVTJWAG3.js} +1 -1
- package/dist/{pending-5HZACM2V.js → host-key-DUGGHAGR.js} +3 -3
- package/dist/{image-tag-ADSLWXBA.js → image-tag-53DJPMSZ.js} +3 -3
- package/dist/index.js +4 -4
- package/dist/{init-67R7LO4C.js → init-JGYMAOD5.js} +21 -21
- package/dist/{init-KSXU4PA7.js → init-RAJKTSPJ.js} +21 -21
- package/dist/{init-cmd-MNOVMADM.js → init-cmd-IB3KTYCV.js} +11 -11
- package/dist/{init-update-6KEXRCJH.js → init-update-VPWSWDY7.js} +9 -9
- package/dist/{install-OCBERTPQ.js → install-QJWJFIWB.js} +8 -8
- package/dist/{install-cmd-FV7IZ7XF.js → install-cmd-NP7GULCD.js} +5 -5
- package/dist/{logs-HI46FO6Z.js → logs-V6AES5FE.js} +2 -2
- package/dist/{loop-KUEOPBKX.js → loop-ZGDZMVFN.js} +36 -36
- package/dist/{machine-EQEAPT76.js → machine-LJ3VMGS3.js} +21 -21
- package/dist/{mcp-serve-cmd-7ABBV2QE.js → mcp-serve-cmd-DHGCAMJS.js} +4 -4
- package/dist/{paths-7HVTDE6J.js → paths-DMKAJVA5.js} +2 -2
- package/dist/{host-key-UERIQRE6.js → pending-B55JZFOV.js} +3 -3
- package/dist/{pidfile-5UDLYPMC.js → pidfile-XCTXBGA3.js} +3 -3
- package/dist/{record-PPZEXAVA.js → record-RQLGRYWG.js} +3 -3
- package/dist/{runner-env-L7OPH3O3.js → runner-env-AUG2OIP4.js} +9 -9
- package/dist/{runner-identity-VASV2AEQ.js → runner-identity-BQA4SBU6.js} +5 -5
- package/dist/{runner-key-ML7R33HF.js → runner-key-ZIF7M7YN.js} +21 -21
- package/dist/{session-sender-A43GZQ7T.js → session-sender-VQ4LHJ5K.js} +11 -11
- package/dist/{spec-cmd-VVUJZSG2.js → spec-cmd-PXM4FJ2O.js} +9 -9
- package/dist/{status-4G6K7I2C.js → status-27EFD2WE.js} +28 -28
- package/dist/{sync-cmd-ZEC65ABJ.js → sync-cmd-VAV7TR2A.js} +10 -10
- package/dist/{update-steps-XLO7734I.js → update-steps-7YLAFW3E.js} +29 -29
- package/dist/{watch-QB4AMWR3.js → watch-42XJSTTB.js} +10 -10
- package/dist/{work-claim-cmd-6W3GBHRS.js → work-claim-cmd-HSG4OHFI.js} +14 -14
- package/dist/{work-cmd-LTZXOPPN.js → work-cmd-KCBU3RSD.js} +8 -8
- package/dist/{work-comment-cmd-LDZBUO6M.js → work-comment-cmd-QIP2OUJC.js} +9 -9
- package/dist/{work-demo-cmd-77LISWQ3.js → work-demo-cmd-6IKAG6ES.js} +8 -8
- package/dist/{work-logs-cmd-FK7HE7PC.js → work-logs-cmd-RMKJA4AI.js} +8 -8
- package/dist/{work-open-pr-cmd-WVONEHZL.js → work-open-pr-cmd-IAVLUUWW.js} +9 -9
- package/dist/{work-pr-cmd-6IPXWJEH.js → work-pr-cmd-3U7SVQII.js} +8 -8
- package/dist/{work-proofs-cmd-TGIAP5IO.js → work-proofs-cmd-6ZY6ZNNE.js} +9 -9
- package/dist/{work-proofs-record-XPAU7N57.js → work-proofs-record-54GBEUJP.js} +15 -15
- package/dist/{work-stop-cmd-UJ45EV3A.js → work-stop-cmd-LH5XY4YL.js} +8 -8
- package/package.json +1 -1
- package/skill-pack/maintained/outerlayer-build/SKILL.md +11 -8
- package/skill-pack/shipped.json +2 -0
- package/skill-pack/template/spec/SKILL.md +3 -1
- package/skill-pack/template/writing-specs/SKILL.md +4 -3
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { TUNNEL_PORT, BRIDGE_ADDRESS, BRIDGE_CIDR } from './chunk-
|
|
3
|
+
import { TUNNEL_PORT, BRIDGE_ADDRESS, BRIDGE_CIDR } from './chunk-75KZUBHD.js';
|
|
4
4
|
import { startTimeOf } from './chunk-JBJTC3UU.js';
|
|
5
|
-
import { EXEC_PORT } from './chunk-
|
|
6
|
-
import { RELAY_PORT } from './chunk-
|
|
5
|
+
import { EXEC_PORT } from './chunk-2RBIW2PD.js';
|
|
6
|
+
import { RELAY_PORT } from './chunk-YOBQIXX6.js';
|
|
7
7
|
import { spawn, spawnSync } from 'child_process';
|
|
8
8
|
import { symlinkSync, lstatSync, writeFileSync, chmodSync, mkdirSync, existsSync } from 'fs';
|
|
9
9
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { detectActiveSession } from './chunk-IP7BIBXJ.js';
|
|
4
|
-
import { autoConnect } from './chunk-
|
|
5
|
-
import { workPageUrl } from './chunk-
|
|
4
|
+
import { autoConnect } from './chunk-3M6UYJSR.js';
|
|
5
|
+
import { workPageUrl } from './chunk-XA6PGME5.js';
|
|
6
6
|
import { sanitizeTerminal } from './chunk-MECW77XP.js';
|
|
7
|
-
import { resolveRepoIdentity } from './chunk-
|
|
7
|
+
import { resolveRepoIdentity } from './chunk-AJYZNISW.js';
|
|
8
8
|
import { C } from './chunk-ANPNT6PM.js';
|
|
9
|
-
import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-
|
|
10
|
-
import { signRunnerRequest } from './chunk-
|
|
9
|
+
import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-TVGLNHEB.js';
|
|
10
|
+
import { signRunnerRequest } from './chunk-XLJLR7EK.js';
|
|
11
11
|
import { readRepoConnection } from './chunk-BJ3KTMDH.js';
|
|
12
12
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
13
13
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
@@ -446,7 +446,7 @@ async function runWorkLinkSession(opts) {
|
|
|
446
446
|
return await linkSession(opts);
|
|
447
447
|
} catch (err) {
|
|
448
448
|
if (opts.logFailures) {
|
|
449
|
-
const { logHookError } = await import('./hook-fast-
|
|
449
|
+
const { logHookError } = await import('./hook-fast-LVTJWAG3.js');
|
|
450
450
|
const reason = err instanceof Error ? err.message : String(err);
|
|
451
451
|
logHookError(opts.home ?? homeFromEnv(opts.env ?? process.env), new Error(`work link-session #${opts.number} failed: ${reason}`));
|
|
452
452
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { currentLink } from './chunk-
|
|
3
|
+
import { currentLink } from './chunk-DUPM5LVJ.js';
|
|
4
4
|
import { readFileSync, statSync, chmodSync, mkdirSync, writeFileSync, renameSync, rmSync, existsSync, lstatSync, accessSync, constants, realpathSync } from 'fs';
|
|
5
5
|
import { randomBytes } from 'crypto';
|
|
6
6
|
import { join, dirname, delimiter, resolve } from 'path';
|
|
@@ -5,7 +5,7 @@ import { addStdioMcpEntryIfAbsent, addDocsMcpEntryIfAbsent, DOCS_MCP_SERVER_NAME
|
|
|
5
5
|
import { installStarterPack } from './chunk-4P6QGMPN.js';
|
|
6
6
|
import { AGENTS_MD_LAYOUT, declareAgentsMdLayout, linkClaudeSkills, SKILLS_LINK_PATH, describeSkillsLink, isAgentsMdLayout, holdsTodaysLayoutSources, discoverOuterlayerPaths } from './chunk-NKOM4JKY.js';
|
|
7
7
|
import { C } from './chunk-ANPNT6PM.js';
|
|
8
|
-
import { resolveGitCommonDir, defaultGitRunner } from './chunk-
|
|
8
|
+
import { resolveGitCommonDir, defaultGitRunner } from './chunk-QOUR4CQ7.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,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { detectActiveSession } from './chunk-IP7BIBXJ.js';
|
|
4
|
-
import { autoConnect } from './chunk-
|
|
5
|
-
import { resolveRepoIdentity } from './chunk-
|
|
4
|
+
import { autoConnect } from './chunk-3M6UYJSR.js';
|
|
5
|
+
import { resolveRepoIdentity } from './chunk-AJYZNISW.js';
|
|
6
6
|
import { C } from './chunk-ANPNT6PM.js';
|
|
7
|
-
import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-
|
|
7
|
+
import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-TVGLNHEB.js';
|
|
8
8
|
import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
|
|
9
9
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
10
10
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { LiveUploader } from './chunk-
|
|
4
|
-
import { CaptureDaemon } from './chunk-
|
|
5
|
-
import { spoolDir } from './chunk-
|
|
3
|
+
import { LiveUploader } from './chunk-WIK5KUGK.js';
|
|
4
|
+
import { CaptureDaemon } from './chunk-AJYZNISW.js';
|
|
5
|
+
import { spoolDir } from './chunk-CXQCBAKO.js';
|
|
6
6
|
import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
|
|
7
7
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
8
8
|
import { mkdirSync, writeFileSync, rmSync } from 'fs';
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
4
4
|
import { detectActiveSession } from './chunk-IP7BIBXJ.js';
|
|
5
|
-
import { autoConnect } from './chunk-
|
|
5
|
+
import { autoConnect } from './chunk-3M6UYJSR.js';
|
|
6
6
|
import { acquireSpoolLockAt } from './chunk-MECW77XP.js';
|
|
7
|
-
import { resolveRepoIdentity } from './chunk-
|
|
7
|
+
import { resolveRepoIdentity } from './chunk-AJYZNISW.js';
|
|
8
8
|
import { C } from './chunk-ANPNT6PM.js';
|
|
9
|
-
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-
|
|
9
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-TVGLNHEB.js';
|
|
10
10
|
import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
|
|
11
11
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
12
12
|
import { StepNameSchema, StepBodySchema } from './chunk-EOTMDIYC.js';
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { RecipeError } from './chunk-3Z3MPR55.js';
|
|
4
4
|
import { BUILDKIT_IMAGE } from './chunk-ES4ULBAL.js';
|
|
5
|
-
import { compareVersions } from './chunk-
|
|
6
|
-
import { ensureHostKey } from './chunk-
|
|
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-
|
|
5
|
+
import { compareVersions } from './chunk-AJYZNISW.js';
|
|
6
|
+
import { ensureHostKey } from './chunk-XLJLR7EK.js';
|
|
7
|
+
import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, runnerDir, jobsDir } from './chunk-N7LAEN3T.js';
|
|
8
|
+
import { CLAUDE_PORT, JOB_MOUNT, GATEWAY_PORT, GATEWAY_SOCKET, CLAUDE_SOCKET, RELAY_PORT, DESTINATION_BASE_PORT } from './chunk-YOBQIXX6.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 { existsSync, mkdirSync, createWriteStream, rmSync, readFileSync, chmodSync, writeFileSync, realpathSync, readdirSync, renameSync } from 'fs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-
|
|
3
|
+
import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-N7LAEN3T.js';
|
|
4
4
|
import { readFileSync, mkdirSync, writeFileSync, renameSync } from 'fs';
|
|
5
5
|
import { join } from 'path';
|
|
6
6
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { readNewestDemo } from './chunk-ER6KQCVJ.js';
|
|
4
|
-
import { runEmitArtifact } from './chunk-
|
|
4
|
+
import { runEmitArtifact } from './chunk-E34FRRSW.js';
|
|
5
5
|
import { VoiceDownloadError, downloadPinned, sha256OfFile } from './chunk-2PGI6RDE.js';
|
|
6
6
|
import { VOICE_PACK_FILES, VOICE_PACK_VERSION } from './chunk-ES4ULBAL.js';
|
|
7
7
|
import { detectActiveSession } from './chunk-IP7BIBXJ.js';
|
|
8
|
-
import { autoConnect } from './chunk-
|
|
9
|
-
import { resolveRepoIdentity } from './chunk-
|
|
8
|
+
import { autoConnect } from './chunk-3M6UYJSR.js';
|
|
9
|
+
import { resolveRepoIdentity } from './chunk-AJYZNISW.js';
|
|
10
10
|
import { C } from './chunk-ANPNT6PM.js';
|
|
11
|
-
import { defaultFetch, resolveGatewayCredentials } from './chunk-
|
|
11
|
+
import { defaultFetch, resolveGatewayCredentials } from './chunk-TVGLNHEB.js';
|
|
12
12
|
import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
|
|
13
13
|
import { ARTIFACT_MAX_BYTES, ARTIFACT_MAX_CAPTION_LENGTH, DEMO_RECORD_MEDIA_TYPE, ARTIFACT_MAX_REPLACES_TARGETS, DemoManifestSchema, ARTIFACT_KINDS } from './chunk-EOTMDIYC.js';
|
|
14
14
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { sha256OfFile, downloadPinned, VoiceDownloadError } from './chunk-2PGI6RDE.js';
|
|
4
|
-
import { hasStoredCredential, AGENT_COMMANDS, storeClaudeCredential, credentialFromStdin, isAgentName } from './chunk-
|
|
5
|
-
import { readDefaultBranchHead, cloneRepository, buildRepositoryImage, prepareImageBuild, KEY_PREFIX, FETCHED_DIR, toolsDockerfile, TAG_HOST, metadataFromLabels, writeRecord, FETCHED_FFMPEG, FETCHED_GH, FETCHED_TINI, FETCHED_VOICE_DIR } from './chunk-
|
|
4
|
+
import { hasStoredCredential, AGENT_COMMANDS, storeClaudeCredential, credentialFromStdin, isAgentName } from './chunk-EZ7L5IZU.js';
|
|
5
|
+
import { readDefaultBranchHead, cloneRepository, buildRepositoryImage, prepareImageBuild, KEY_PREFIX, FETCHED_DIR, toolsDockerfile, TAG_HOST, metadataFromLabels, writeRecord, FETCHED_FFMPEG, FETCHED_GH, FETCHED_TINI, FETCHED_VOICE_DIR } from './chunk-3NFZN7H6.js';
|
|
6
6
|
import { startTimeOf, isSameProcess } from './chunk-JBJTC3UU.js';
|
|
7
7
|
import { currentCliBuild } from './chunk-OGFGZQA3.js';
|
|
8
|
-
import { runExec, execCapture, waitForAgent } from './chunk-
|
|
9
|
-
import { GUEST_CID, linkVsockSockets } from './chunk-
|
|
10
|
-
import { describeCallFailure, keepStagedContext, controlPlaneTokenFailure, refusalCode, resolveGoverningSource, prefetchGovernedContext, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, shimScript, WORKFLOW_PERMISSION_REASON } from './chunk-
|
|
11
|
-
import { runnerImageVersion } from './chunk-
|
|
12
|
-
import { runnerCredentialProblem, builtinKind, hostAllowed } from './chunk-
|
|
13
|
-
import { formatBytes, allocatedBytes } from './chunk-
|
|
14
|
-
import { createDockerHost, builderSpec, runnerLabelValue, RUNNER_LABEL, BUILD_LABEL, prepareRunArgs, containerRunArgs, HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, containerExecArgs, childEnvironment, readDu, JUDGE_DIR, MAX_ITEMS_BYTES, JUDGE_ITEMS, MAX_REPORT_BYTES, JUDGE_REPORT, spawnRun } from './chunk-
|
|
8
|
+
import { runExec, execCapture, waitForAgent } from './chunk-IHY457PB.js';
|
|
9
|
+
import { GUEST_CID, linkVsockSockets } from './chunk-2RBIW2PD.js';
|
|
10
|
+
import { retrySend, describeCallFailure, keepStagedContext, controlPlaneTokenFailure, refusalCode, resolveGoverningSource, prefetchGovernedContext, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, shimScript, WORKFLOW_PERMISSION_REASON } from './chunk-AVLLJW5D.js';
|
|
11
|
+
import { runnerImageVersion } from './chunk-36T6W5RA.js';
|
|
12
|
+
import { runnerCredentialProblem, builtinKind, hostAllowed } from './chunk-4XYC2663.js';
|
|
13
|
+
import { formatBytes, allocatedBytes } from './chunk-UC2DKBMS.js';
|
|
14
|
+
import { createDockerHost, builderSpec, runnerLabelValue, RUNNER_LABEL, BUILD_LABEL, prepareRunArgs, containerRunArgs, HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, containerExecArgs, childEnvironment, readDu, JUDGE_DIR, MAX_ITEMS_BYTES, JUDGE_ITEMS, MAX_REPORT_BYTES, JUDGE_REPORT, spawnRun } from './chunk-MPDLZCXM.js';
|
|
15
15
|
import { RecipeError, DOCKER_FEATURE, writeSanitizedRecipe, classifyProperties } from './chunk-3Z3MPR55.js';
|
|
16
16
|
import { firecrackerArch, MICROVM_ARCHES, FIRECRACKER_VERSION, hostHelperPinned, CLAUDE_CODE_VERSION, guestAssetsPinned, GUEST_HELPER_SHA256, GUEST_ASSETS_BASE_URL, GUEST_KERNEL_SHA256, JAILER_BINARY_SHA256, FIRECRACKER_BINARY_SHA256, FIRECRACKER_SHA256, GUEST_ASSETS_VERSION, BUILDER_DISK_VERSION, builderDiskPinned, FFMPEG_STATIC, FFMPEG_BUILD_TAG, GH_SHA256, GH_VERSION, TINI_SHA256, TINI_VERSION, VOICE_PACK_FILES, BUILDER_DISK_SHA256, BUILDER_DISK_BASE_URL, DEFAULT_BASE_IMAGE } from './chunk-ES4ULBAL.js';
|
|
17
|
-
import { WorkCommandError, getJson } from './chunk-
|
|
17
|
+
import { postJson, WorkCommandError, getJson } from './chunk-IW6Z337K.js';
|
|
18
18
|
import { sanitizeTerminal } from './chunk-MECW77XP.js';
|
|
19
|
-
import { setCustomScrubbers, setLocalIdentity, setRepoRoot, parseTranscript, scrubDeep, scrubText } from './chunk-
|
|
20
|
-
import { signerFor } from './chunk-
|
|
21
|
-
import { vmAssetsDir, RUNNER_DIR_MODE, rootfsPathFor, diskTemplatesDir, RUNNER_FILE_MODE, buildsDir, buildDir, runnerDir, deliveryDir, ghConfigDir, runnerDirOfBuild, spoolDir, mirrorDir, SHIM_DIR, vsockPath, builderCacheDiskPath, builderConsolePath } from './chunk-
|
|
22
|
-
import { parseIsolation, proxyEnvironment, withProxyWarningHidden, containerLocalAddress, destinationEnvironment,
|
|
19
|
+
import { setCustomScrubbers, setLocalIdentity, setRepoRoot, parseTranscript, scrubDeep, scrubText } from './chunk-AJYZNISW.js';
|
|
20
|
+
import { signerFor } from './chunk-XLJLR7EK.js';
|
|
21
|
+
import { vmAssetsDir, RUNNER_DIR_MODE, rootfsPathFor, diskTemplatesDir, RUNNER_FILE_MODE, buildsDir, buildDir, runnerDir, deliveryDir, ghConfigDir, runnerDirOfBuild, spoolDir, mirrorDir, SHIM_DIR, vsockPath, builderCacheDiskPath, builderConsolePath } from './chunk-N7LAEN3T.js';
|
|
22
|
+
import { claudeCredential, parseIsolation, proxyEnvironment, withProxyWarningHidden, containerLocalAddress, destinationEnvironment, CLAUDE_CREDENTIAL_VARIABLES, builtInEnvironment, withHooksPath, startBuildServices, BUILT_IN_NAMES, repositoriesOf, primaryOf, RELAY_PORT, repositoryPath, CHECKOUT_DIR, lifecycleWorkdir, buildEnvironment, writeBuildMavenSettings, checkEnvironment, AGENT_CREDENTIAL_MISSING, mavenSettingsXml, namesGlobalSettings, MAVEN_NO_PROXY_NOTE, mavenArgs, MAVEN_SPACE_NOTE, writeMavenSettings, checkoutPath, JOB_MOUNT } from './chunk-YOBQIXX6.js';
|
|
23
23
|
import { sharedSkillNames, skillConflictMessage } from './chunk-FGF52V4V.js';
|
|
24
24
|
import { versionAtLeast, MINIMUM_CLAUDE_VERSION } from './chunk-HCVLP7XA.js';
|
|
25
25
|
import { orderSessions, extractFacts, sessionsToTimeline } from './chunk-FGXT5OXS.js';
|
|
@@ -41,6 +41,41 @@ import { pipeline, finished } from 'stream/promises';
|
|
|
41
41
|
import { createGunzip, gunzipSync, constants as constants$1 } from 'zlib';
|
|
42
42
|
|
|
43
43
|
createRequire(import.meta.url);
|
|
44
|
+
|
|
45
|
+
// src/runner/managed-claude-key.ts
|
|
46
|
+
var FETCH_RETRY_WINDOW_MS = 3e4;
|
|
47
|
+
var ADOPTED_FETCH_RETRY_WINDOW_MS = 3e5;
|
|
48
|
+
async function fetchManagedClaudeKey(config, item, deps = {}) {
|
|
49
|
+
const fetchImpl = deps.fetchImpl ?? fetch;
|
|
50
|
+
const outcome = await retrySend(
|
|
51
|
+
async () => postJson(config.url, `/v1/work-items/${item}/claim/anthropic-key`, config.apiKey, config.appId, {}, fetchImpl, void 0, await signerFor(config.configPath)),
|
|
52
|
+
{ now: deps.now, sleep: deps.sleep, windowMs: deps.windowMs ?? FETCH_RETRY_WINDOW_MS }
|
|
53
|
+
);
|
|
54
|
+
if (!outcome.ok) return { ok: false, code: outcome.code, reason: outcome.message ?? outcome.reason, retryable: outcome.retryable };
|
|
55
|
+
const apiKey = outcome.value.data.apiKey;
|
|
56
|
+
if (typeof apiKey !== "string" || apiKey === "") {
|
|
57
|
+
return { ok: false, code: "malformed_key_response", reason: "the gateway's answer carried no Anthropic key", retryable: false };
|
|
58
|
+
}
|
|
59
|
+
return { ok: true, apiKey };
|
|
60
|
+
}
|
|
61
|
+
var held = /* @__PURE__ */ new Map();
|
|
62
|
+
var everHeld = /* @__PURE__ */ new Set();
|
|
63
|
+
function holdManagedClaudeKey(jobDir, apiKey) {
|
|
64
|
+
held.set(jobDir, apiKey);
|
|
65
|
+
everHeld.add(apiKey);
|
|
66
|
+
}
|
|
67
|
+
function managedClaudeKeyFor(jobDir) {
|
|
68
|
+
return held.get(jobDir);
|
|
69
|
+
}
|
|
70
|
+
function dropManagedClaudeKey(jobDir) {
|
|
71
|
+
held.delete(jobDir);
|
|
72
|
+
}
|
|
73
|
+
function managedClaudeKeyValues() {
|
|
74
|
+
return [...everHeld];
|
|
75
|
+
}
|
|
76
|
+
function hasClaudeCredential(config, hostEnv, jobDir) {
|
|
77
|
+
return config.managed === true ? managedClaudeKeyFor(jobDir) !== void 0 : claudeCredential(hostEnv) !== void 0;
|
|
78
|
+
}
|
|
44
79
|
var AssetError = class extends Error {
|
|
45
80
|
constructor(file, message) {
|
|
46
81
|
super(message);
|
|
@@ -2454,8 +2489,8 @@ function claudeCredentialCheck(env, options = {}) {
|
|
|
2454
2489
|
}
|
|
2455
2490
|
return { name, status: "pass", detail: `${variables[0]} is set in the claude.env or runner.env of the service ${unit}` };
|
|
2456
2491
|
}
|
|
2457
|
-
const
|
|
2458
|
-
if (
|
|
2492
|
+
const held2 = claudeCredential(env, { ignoreHeld: options.ignoreHeld === true });
|
|
2493
|
+
if (held2 === void 0) {
|
|
2459
2494
|
return {
|
|
2460
2495
|
name,
|
|
2461
2496
|
status: "fail",
|
|
@@ -2464,7 +2499,7 @@ function claudeCredentialCheck(env, options = {}) {
|
|
|
2464
2499
|
};
|
|
2465
2500
|
}
|
|
2466
2501
|
const sameVariables = options.shell === true ? "; the runner must be started with the same variable" : "";
|
|
2467
|
-
return { name, status: "pass", detail: `${
|
|
2502
|
+
return { name, status: "pass", detail: `${held2.variable} is set${sameVariables}` };
|
|
2468
2503
|
}
|
|
2469
2504
|
function missingPermissionOf(err) {
|
|
2470
2505
|
if (!(err instanceof WorkCommandError) || err.status !== 403) return void 0;
|
|
@@ -2762,10 +2797,10 @@ async function runBuildSteps(input) {
|
|
|
2762
2797
|
if (staged.kind === "refused") return { ok: false, reason: staged.reason };
|
|
2763
2798
|
let controlPlane;
|
|
2764
2799
|
if (input.requireBuildSkill === true && !(staged.kind === "staged" && stagedHasBuildSkill(staged))) {
|
|
2765
|
-
const
|
|
2766
|
-
if (
|
|
2800
|
+
const held2 = await checkoutHasBuildSkill(input);
|
|
2801
|
+
if (held2 !== true) {
|
|
2767
2802
|
if (staged.kind === "staged") input.removeStagedContext();
|
|
2768
|
-
if (
|
|
2803
|
+
if (held2 !== false) return { ok: false, reason: held2.failed };
|
|
2769
2804
|
return { ok: false, reason: missingBuildSkillReason(staged.kind === "staged" ? { repository: staged.repository, commit: staged.sha } : void 0) };
|
|
2770
2805
|
}
|
|
2771
2806
|
}
|
|
@@ -3629,17 +3664,17 @@ async function drain(req) {
|
|
|
3629
3664
|
}
|
|
3630
3665
|
function readPrefix(req, gzip) {
|
|
3631
3666
|
return new Promise((resolve2, reject) => {
|
|
3632
|
-
const
|
|
3667
|
+
const held2 = [];
|
|
3633
3668
|
const finish = (section) => {
|
|
3634
3669
|
req.off("data", onData);
|
|
3635
3670
|
req.off("end", onEnd);
|
|
3636
3671
|
req.off("error", reject);
|
|
3637
3672
|
req.pause();
|
|
3638
|
-
resolve2({ held, section });
|
|
3673
|
+
resolve2({ held: held2, section });
|
|
3639
3674
|
};
|
|
3640
3675
|
const onData = (chunk) => {
|
|
3641
|
-
|
|
3642
|
-
const section = readCommandSection(Buffer.concat(
|
|
3676
|
+
held2.push(chunk);
|
|
3677
|
+
const section = readCommandSection(Buffer.concat(held2), gzip);
|
|
3643
3678
|
if (section.kind !== "need-more") finish(section);
|
|
3644
3679
|
};
|
|
3645
3680
|
const onEnd = () => finish({ kind: "need-more" });
|
|
@@ -3727,7 +3762,7 @@ function createGitRemote(options) {
|
|
|
3727
3762
|
async function push(req, res, route, target) {
|
|
3728
3763
|
const encoding = req.headers["content-encoding"];
|
|
3729
3764
|
const gzip = encoding === "gzip";
|
|
3730
|
-
const { held, section } = await readPrefix(req, gzip);
|
|
3765
|
+
const { held: held2, section } = await readPrefix(req, gzip);
|
|
3731
3766
|
const refuse = async (reason) => {
|
|
3732
3767
|
log(`push refused: ${reason}`);
|
|
3733
3768
|
await drain(req);
|
|
@@ -3757,7 +3792,7 @@ function createGitRemote(options) {
|
|
|
3757
3792
|
const file = createWriteStream(bodyPath);
|
|
3758
3793
|
const cap = options.maxPushBytes ?? 2 * 1024 ** 3;
|
|
3759
3794
|
let size = 0;
|
|
3760
|
-
for (const chunk of
|
|
3795
|
+
for (const chunk of held2) {
|
|
3761
3796
|
size += chunk.length;
|
|
3762
3797
|
file.write(chunk);
|
|
3763
3798
|
}
|
|
@@ -3803,7 +3838,7 @@ function createGitRemote(options) {
|
|
|
3803
3838
|
createReadStream(spooled).pipe(upstream);
|
|
3804
3839
|
return;
|
|
3805
3840
|
}
|
|
3806
|
-
for (const chunk of
|
|
3841
|
+
for (const chunk of held2) upstream.write(chunk);
|
|
3807
3842
|
req.pipe(upstream);
|
|
3808
3843
|
}
|
|
3809
3844
|
});
|
|
@@ -3914,27 +3949,27 @@ function usableCpus(deps = {}) {
|
|
|
3914
3949
|
}
|
|
3915
3950
|
function createCpuAllocator(cores) {
|
|
3916
3951
|
const usable = [...new Set(cores)].sort((a, b) => a - b);
|
|
3917
|
-
const
|
|
3952
|
+
const held2 = /* @__PURE__ */ new Map();
|
|
3918
3953
|
const holders = (core) => {
|
|
3919
3954
|
let count = 0;
|
|
3920
|
-
for (const set of
|
|
3955
|
+
for (const set of held2.values()) if (set.includes(core)) count++;
|
|
3921
3956
|
return count;
|
|
3922
3957
|
};
|
|
3923
3958
|
return {
|
|
3924
3959
|
acquire(buildId, cpus) {
|
|
3925
|
-
const existing =
|
|
3960
|
+
const existing = held2.get(buildId);
|
|
3926
3961
|
if (existing !== void 0) return existing;
|
|
3927
3962
|
const wanted = Math.min(Math.ceil(cpus), usable.length);
|
|
3928
3963
|
const ranked = usable.map((core) => ({ core, count: holders(core) })).sort((a, b) => a.count - b.count);
|
|
3929
3964
|
const chosen = ranked.slice(0, wanted).map(({ core }) => core).sort((a, b) => a - b);
|
|
3930
|
-
|
|
3965
|
+
held2.set(buildId, chosen);
|
|
3931
3966
|
return chosen;
|
|
3932
3967
|
},
|
|
3933
3968
|
hold(buildId, set) {
|
|
3934
|
-
|
|
3969
|
+
held2.set(buildId, [...set]);
|
|
3935
3970
|
},
|
|
3936
3971
|
release(buildId) {
|
|
3937
|
-
|
|
3972
|
+
held2.delete(buildId);
|
|
3938
3973
|
}
|
|
3939
3974
|
};
|
|
3940
3975
|
}
|
|
@@ -4189,7 +4224,7 @@ async function provisionContainer(input) {
|
|
|
4189
4224
|
const tag = `#${item.number}`;
|
|
4190
4225
|
const logPath = join(jobDir, "provision.log");
|
|
4191
4226
|
const fail = (reason) => ({ ok: false, reason });
|
|
4192
|
-
if (
|
|
4227
|
+
if (!hasClaudeCredential(config, runtime.hostEnv, jobDir)) return fail(AGENT_CREDENTIAL_MISSING);
|
|
4193
4228
|
const repositories = repositoriesOf({ repositories: input.repositories, repository: item.specRepository, branch: input.branch });
|
|
4194
4229
|
const primary = primaryOf(repositories);
|
|
4195
4230
|
if (primary === void 0) return fail("the work item names no repository to clone");
|
|
@@ -4541,7 +4576,7 @@ async function startServicesFor(runtime, config, buildDir2, jobDir, itemKey, bui
|
|
|
4541
4576
|
...lease === void 0 ? {} : { lease },
|
|
4542
4577
|
...inherit === void 0 ? {} : { inherit },
|
|
4543
4578
|
...routeLog === void 0 ? {} : { log: routeLog },
|
|
4544
|
-
...builtIns ? { builtIns: { gatewayUrl: config.url, itemKey, claudeUpstream: runtime.claudeUpstream } } : {},
|
|
4579
|
+
...builtIns ? { builtIns: { gatewayUrl: config.url, itemKey, claudeUpstream: runtime.claudeUpstream, claudeApiKey: managedClaudeKeyFor(jobDir) } } : {},
|
|
4545
4580
|
hostEnv: runtime.hostEnv,
|
|
4546
4581
|
destinationOptions: runtime.destinationOptions
|
|
4547
4582
|
});
|
|
@@ -4964,4 +4999,4 @@ function describeMachineDocker(machine) {
|
|
|
4964
4999
|
return `Docker Engine ${version ?? "of no known version"}, older than the ${MIN_ENGINE_MAJOR} that container builds need`;
|
|
4965
5000
|
}
|
|
4966
5001
|
|
|
4967
|
-
export { ADDED_USER, AgentUserError, AssetError, DeliveryFailure, EVAL_INPUT_NAME, GH_CONFIG_YML, HELPER_ENV, LEASE_SECONDS, MANAGED_UNJAILED_REASON, MIN_ENGINE_MAJOR, PLACEHOLDER_MARKER, ROOT_DISK_ID_PREFIX, RunnerInitError, attemptNote, claimPermissionProblem, claudeCredentialCheck, cleanupContainer, closeHostBuild, containerCommandExec, containerJudgeEnvironment, containerSenderCommand, copyJudgeTree, copyTranscripts, copyTranscriptsFromContainer, createBuildDisk, createContainerRuntime, createLeaseChannel, currentSkillCommand, decideHostBuildSkill, deleteBuildDisk, deliverContainerHooks, deliverExecMaven, describeMachineDocker, detectMachine, ensureFirecrackerAndJailer, ensureRootfs, ensureTunnel, execArgv, execCommandLine, filesAreCopied, formerSkillProblem, formerSkillQueues, ghHostsYml, gitRemoteFor, helperFirecrackerNote, helperSocketPath, hostCommandEnvironment, hostEnvironment, isPlaceholderCommand, keepGhConfigCurrent, leaseExpiresAtMs, leaseTimeLeftMs, lifecycleFailureReason, lifecycleSteps, listenOnBroker, machineConfig, makeBuildsDirPrivate, measureDisk, microVmArchSupported, microVmAssetsPinned, missingPermissionFix, missingPermissionOf, needsBuildSkill, needsClaudeCredential, obtainImage, outOfMemoryReason, parseCpuList, permissionModeProblem, permissionModeProblems, placeholderProblem, placeholderQueues, prepareBranch, prepareRunnerInit, probeHelper, provisionContainer, provisionEnvironment, reachDockerStep, readConfigObject, resolveAgentUser, resolveHostBuild, runBuildSteps, runRunnerInit, runWithSpawn, senderAliveScript, senderSignalScript, setUpRunnerCgroup, shellQuote, signalInContainer, startCheckContainer, startHostServices, startJailedInto, startServicesFor, stopContainer, stopJailed, supportsContainerBuilds, supportsMicroVmBuilds, sweepImageBuilders, syncInContainer, withTunnelLog, writeEvalInput, writeRunnerInit };
|
|
5002
|
+
export { ADDED_USER, ADOPTED_FETCH_RETRY_WINDOW_MS, AgentUserError, AssetError, DeliveryFailure, EVAL_INPUT_NAME, GH_CONFIG_YML, HELPER_ENV, LEASE_SECONDS, MANAGED_UNJAILED_REASON, MIN_ENGINE_MAJOR, PLACEHOLDER_MARKER, ROOT_DISK_ID_PREFIX, RunnerInitError, attemptNote, claimPermissionProblem, claudeCredentialCheck, cleanupContainer, closeHostBuild, containerCommandExec, containerJudgeEnvironment, containerSenderCommand, copyJudgeTree, copyTranscripts, copyTranscriptsFromContainer, createBuildDisk, createContainerRuntime, createLeaseChannel, currentSkillCommand, decideHostBuildSkill, deleteBuildDisk, deliverContainerHooks, deliverExecMaven, describeMachineDocker, detectMachine, dropManagedClaudeKey, ensureFirecrackerAndJailer, ensureRootfs, ensureTunnel, execArgv, execCommandLine, fetchManagedClaudeKey, filesAreCopied, formerSkillProblem, formerSkillQueues, ghHostsYml, gitRemoteFor, hasClaudeCredential, helperFirecrackerNote, helperSocketPath, holdManagedClaudeKey, hostCommandEnvironment, hostEnvironment, isPlaceholderCommand, keepGhConfigCurrent, leaseExpiresAtMs, leaseTimeLeftMs, lifecycleFailureReason, lifecycleSteps, listenOnBroker, machineConfig, makeBuildsDirPrivate, managedClaudeKeyFor, managedClaudeKeyValues, measureDisk, microVmArchSupported, microVmAssetsPinned, missingPermissionFix, missingPermissionOf, needsBuildSkill, needsClaudeCredential, obtainImage, outOfMemoryReason, parseCpuList, permissionModeProblem, permissionModeProblems, placeholderProblem, placeholderQueues, prepareBranch, prepareRunnerInit, probeHelper, provisionContainer, provisionEnvironment, reachDockerStep, readConfigObject, resolveAgentUser, resolveHostBuild, runBuildSteps, runRunnerInit, runWithSpawn, senderAliveScript, senderSignalScript, setUpRunnerCgroup, shellQuote, signalInContainer, startCheckContainer, startHostServices, startJailedInto, startServicesFor, stopContainer, stopJailed, supportsContainerBuilds, supportsMicroVmBuilds, sweepImageBuilders, syncInContainer, withTunnelLog, writeEvalInput, writeRunnerInit };
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
4
4
|
import { detectActiveSession } from './chunk-IP7BIBXJ.js';
|
|
5
|
-
import { autoConnect } from './chunk-
|
|
6
|
-
import { resolveRepoIdentity } from './chunk-
|
|
5
|
+
import { autoConnect } from './chunk-3M6UYJSR.js';
|
|
6
|
+
import { resolveRepoIdentity } from './chunk-AJYZNISW.js';
|
|
7
7
|
import { C } from './chunk-ANPNT6PM.js';
|
|
8
|
-
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-
|
|
8
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-TVGLNHEB.js';
|
|
9
9
|
import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
|
|
10
10
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
11
11
|
import { CriteriaListSchema } from './chunk-EOTMDIYC.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
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-
|
|
5
|
-
import { withTokenHeader } from './chunk-
|
|
4
|
+
import { defaultFetch, resolveGatewayCredentials } from './chunk-TVGLNHEB.js';
|
|
5
|
+
import { withTokenHeader } from './chunk-YOBQIXX6.js';
|
|
6
6
|
import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
|
|
7
7
|
import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-ZQSANKS4.js';
|
|
8
8
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
@@ -1,28 +1,28 @@
|
|
|
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-
|
|
5
|
-
import { writeDockerClientConfig } from './chunk-
|
|
4
|
+
import { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD } from './chunk-HAEDLXHA.js';
|
|
5
|
+
import { writeDockerClientConfig } from './chunk-75KZUBHD.js';
|
|
6
6
|
import { zodProblem } from './chunk-I3LTIAOR.js';
|
|
7
|
-
import { senderPidfile } from './chunk-
|
|
8
|
-
import { installScrubContext } from './chunk-
|
|
9
|
-
import { ADDED_USER, shellQuote, GH_CONFIG_YML, ghHostsYml, AssetError, obtainImage, ensureRootfs, makeBuildsDirPrivate, gitRemoteFor, startServicesFor, createLeaseChannel, createBuildDisk, machineConfig, startJailedInto, resolveAgentUser, AgentUserError, runBuildSteps, startHostServices, LEASE_SECONDS, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, closeHostBuild, containerSenderCommand, hostCommandEnvironment, execArgv, signalInContainer, syncInContainer, copyTranscriptsFromContainer, MANAGED_UNJAILED_REASON, senderAliveScript, helperFirecrackerNote, stopJailed, deleteBuildDisk, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, ROOT_DISK_ID_PREFIX, copyJudgeTree } from './chunk-
|
|
10
|
-
import { readBranchHead, fetchCommit, diffBetween } from './chunk-
|
|
7
|
+
import { senderPidfile } from './chunk-KDLQGTN6.js';
|
|
8
|
+
import { installScrubContext } from './chunk-WIK5KUGK.js';
|
|
9
|
+
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, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, closeHostBuild, dropManagedClaudeKey, containerSenderCommand, hostCommandEnvironment, execArgv, signalInContainer, syncInContainer, copyTranscriptsFromContainer, MANAGED_UNJAILED_REASON, senderAliveScript, helperFirecrackerNote, managedClaudeKeyValues, stopJailed, deleteBuildDisk, managedClaudeKeyFor, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, DeliveryFailure, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript, containerJudgeEnvironment, ROOT_DISK_ID_PREFIX, copyJudgeTree } from './chunk-POGPX7LI.js';
|
|
10
|
+
import { readBranchHead, fetchCommit, diffBetween } from './chunk-3NFZN7H6.js';
|
|
11
11
|
import { isSameProcess, startTimeOf } from './chunk-JBJTC3UU.js';
|
|
12
|
-
import { waitForAgent, vmExecArgs } from './chunk-
|
|
13
|
-
import { socketPathProblem, vsockLinks, LEASE_LINK, linkVsockSockets } from './chunk-
|
|
14
|
-
import { describeCallFailure, resolveGoverningSource, prefetchGovernedContext, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, WORKFLOW_PERMISSION_REASON, keptContextTree } from './chunk-
|
|
15
|
-
import { imageBuildOf, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-
|
|
16
|
-
import { DEFAULT_CACHE_DISK, formatBytes, allocatedBytes } from './chunk-
|
|
17
|
-
import { parseSize, HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, writeJobFile, readJobFile, childEnvironment, withAnswerProtocol, judgeCommand, MAX_REPORT_BYTES, JUDGE_MAX_TURNS, JUDGE_DIR, COMMAND_DIR, MAX_ITEMS_BYTES } from './chunk-
|
|
12
|
+
import { waitForAgent, vmExecArgs } from './chunk-IHY457PB.js';
|
|
13
|
+
import { socketPathProblem, vsockLinks, LEASE_LINK, linkVsockSockets } from './chunk-2RBIW2PD.js';
|
|
14
|
+
import { describeCallFailure, resolveGoverningSource, prefetchGovernedContext, refusalCode, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, logStamp, createRunnerLog, removeKeptContext, formatDuration, retrySend, formatClock, WORKFLOW_PERMISSION_REASON, keptContextTree } from './chunk-AVLLJW5D.js';
|
|
15
|
+
import { imageBuildOf, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-4XYC2663.js';
|
|
16
|
+
import { DEFAULT_CACHE_DISK, formatBytes, allocatedBytes } from './chunk-UC2DKBMS.js';
|
|
17
|
+
import { parseSize, HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, writeJobFile, readJobFile, childEnvironment, withAnswerProtocol, judgeCommand, MAX_REPORT_BYTES, JUDGE_MAX_TURNS, JUDGE_DIR, COMMAND_DIR, MAX_ITEMS_BYTES } from './chunk-MPDLZCXM.js';
|
|
18
18
|
import { CLAUDE_CODE_VERSION, FIRECRACKER_VERSION } from './chunk-ES4ULBAL.js';
|
|
19
|
-
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-
|
|
19
|
+
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-IW6Z337K.js';
|
|
20
20
|
import { planArtifactUpload } from './chunk-MECW77XP.js';
|
|
21
|
-
import { scrubText } from './chunk-
|
|
21
|
+
import { scrubText } from './chunk-AJYZNISW.js';
|
|
22
22
|
import { readCloudConfig } from './chunk-PJDQPF5N.js';
|
|
23
|
-
import { signerFor } from './chunk-
|
|
24
|
-
import { RUNNER_FILE_MODE, runnerDir, buildDir, vsockPath, jobConsolePath } from './chunk-
|
|
25
|
-
import { JOB_MOUNT,
|
|
23
|
+
import { signerFor } from './chunk-XLJLR7EK.js';
|
|
24
|
+
import { RUNNER_FILE_MODE, runnerDir, buildDir, vsockPath, jobConsolePath } from './chunk-N7LAEN3T.js';
|
|
25
|
+
import { JOB_MOUNT, repositoriesOf, primaryOf, buildEnvironment, CHECKOUT_DIR, claudeCredential, AGENT_CREDENTIAL_MISSING, sharedUserEnvironment, headerVariables, authorEnvironment, withTunnelRecord, commitIdentityRecord, buildMavenSettingsXml, CLAUDE_CREDENTIAL_VARIABLES, currentClaudeCredential, removedClaudeCredentialValues, managedClaudeCredential, RELAY_PORT, repositoryPath, lifecycleWorkdir, CHECK_ITEMS_FILE, MAVEN_SETTINGS_FILE, checkEnvironment, EVAL_INPUT_DIR } from './chunk-YOBQIXX6.js';
|
|
26
26
|
import { resolvePackRoot } from './chunk-ZQSANKS4.js';
|
|
27
27
|
import { MAINTAINED_SKILLS } from './chunk-CDDED64E.js';
|
|
28
28
|
import { resolveVersion } from './chunk-RA3O54FC.js';
|
|
@@ -297,7 +297,7 @@ async function provisionMicroVm(input) {
|
|
|
297
297
|
const tag = `#${item.number}`;
|
|
298
298
|
const logPath = join(jobDir, "provision.log");
|
|
299
299
|
const fail = (reason) => ({ ok: false, reason });
|
|
300
|
-
if (
|
|
300
|
+
if (!hasClaudeCredential(config, runtime.hostEnv, jobDir)) return fail(AGENT_CREDENTIAL_MISSING);
|
|
301
301
|
const repositories = repositoriesOf({ repositories: input.repositories, repository: item.specRepository, branch: input.branch });
|
|
302
302
|
const primary = primaryOf(repositories);
|
|
303
303
|
if (primary === void 0) return fail("the work item names no repository to clone");
|
|
@@ -2238,7 +2238,7 @@ async function runJudge(input) {
|
|
|
2238
2238
|
const brief = check.judge.text;
|
|
2239
2239
|
if (brief === void 0) return await fail(check, `the brief ${check.judge.brief} is not in the definitions repository`);
|
|
2240
2240
|
if (tokens === void 0) return await fail(check, "the build's repository tokens are no longer held, so the branch cannot be fetched");
|
|
2241
|
-
const credential = claudeCredential(runtime.hostEnv);
|
|
2241
|
+
const credential = config.managed === true && managedClaudeKeyFor(jobDir) !== void 0 ? managedClaudeCredential() : claudeCredential(runtime.hostEnv);
|
|
2242
2242
|
if (credential === void 0) return await fail(check, "the host holds no Claude credential for the judge");
|
|
2243
2243
|
const branch = job.branch;
|
|
2244
2244
|
if (branch === void 0) return await fail(check, "the build pushed no branch: the claim names none");
|
|
@@ -2635,7 +2635,7 @@ function mergeScrubConfig(a, b) {
|
|
|
2635
2635
|
function releaseScrub(config, home) {
|
|
2636
2636
|
const merged = mergeScrubConfig(config.scrub, readCloudConfig(home).scrub);
|
|
2637
2637
|
const secrets = [...headerVariables(config.build?.destinations), ...CLAUDE_CREDENTIAL_VARIABLES].map((name) => process.env[name] ?? "");
|
|
2638
|
-
const held = [currentClaudeCredential(process.env)?.value, ...removedClaudeCredentialValues()].filter((value) => value !== void 0);
|
|
2638
|
+
const held = [currentClaudeCredential(process.env)?.value, ...removedClaudeCredentialValues(), ...managedClaudeKeyValues()].filter((value) => value !== void 0);
|
|
2639
2639
|
return { literals: [...scrubList(merged?.literals), ...secrets, ...held], patterns: scrubList(merged?.patterns) };
|
|
2640
2640
|
}
|
|
2641
2641
|
function transcriptScrub(config, secrets) {
|
|
@@ -3222,6 +3222,7 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
3222
3222
|
await held.revokeAll();
|
|
3223
3223
|
deps.container.credentials.delete(jobDirPath);
|
|
3224
3224
|
}
|
|
3225
|
+
dropManagedClaudeKey(jobDirPath);
|
|
3225
3226
|
if (outcome !== void 0) {
|
|
3226
3227
|
const fromHook = readReasonLine(jobDirPath, config);
|
|
3227
3228
|
if (verdictReason !== void 0) {
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { placeholderQueues, placeholderProblem } from './chunk-
|
|
4
|
-
import { checkFit } from './chunk-
|
|
5
|
-
import { builtinKind, imageBuildOf } from './chunk-
|
|
6
|
-
import { realBuildDiskProbe, checkDiskFit, DEFAULT_CACHE_DISK, DEFAULT_BUILD_DISK } from './chunk-
|
|
3
|
+
import { placeholderQueues, placeholderProblem } from './chunk-POGPX7LI.js';
|
|
4
|
+
import { checkFit } from './chunk-AABYHGVO.js';
|
|
5
|
+
import { builtinKind, imageBuildOf } from './chunk-4XYC2663.js';
|
|
6
|
+
import { realBuildDiskProbe, checkDiskFit, DEFAULT_CACHE_DISK, DEFAULT_BUILD_DISK } from './chunk-UC2DKBMS.js';
|
|
7
7
|
import { builderDiskPinned } from './chunk-ES4ULBAL.js';
|
|
8
|
-
import { claudeCredentialVariablesSet, claudeCredential } from './chunk-
|
|
9
|
-
import {
|
|
8
|
+
import { FORWARDED_CLAUDE_CREDENTIAL_VARIABLES, claudeCredentialVariablesSet, claudeCredential, claudeEnvPath } from './chunk-YOBQIXX6.js';
|
|
9
|
+
import { parseRunnerEnv } from './chunk-HACGUL52.js';
|
|
10
|
+
import { closeSync, openSync, constants, readFileSync } from 'fs';
|
|
11
|
+
import { join, dirname } from 'path';
|
|
10
12
|
import { totalmem } from 'os';
|
|
11
13
|
|
|
12
14
|
createRequire(import.meta.url);
|
|
@@ -38,15 +40,11 @@ function managedProblems(facts) {
|
|
|
38
40
|
const advice = problem.includes("pins no helper") || problem.includes("runner install") ? "" : ". Run `outerlayer runner install --service --replace` to install the root helper, then restart the service";
|
|
39
41
|
problems.push({ condition: "jailer", reason: `builds would run without the jailer, which a managed runner does not allow: ${problem}${advice}` });
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
const held = FORWARDED_CLAUDE_CREDENTIAL_VARIABLES.filter((variable) => facts.credentials.has(variable));
|
|
44
|
+
if (held.length > 0) {
|
|
42
45
|
problems.push({
|
|
43
46
|
condition: "credential",
|
|
44
|
-
reason: "
|
|
45
|
-
});
|
|
46
|
-
} else if (!facts.credentials.has("ANTHROPIC_API_KEY")) {
|
|
47
|
-
problems.push({
|
|
48
|
-
condition: "credential",
|
|
49
|
-
reason: "there is no Claude credential in the runner's environment, and a managed runner needs ANTHROPIC_API_KEY. Store ANTHROPIC_API_KEY with `outerlayer runner init --agent claude`, which writes the claude.env beside the config, then restart the service"
|
|
47
|
+
reason: `a managed runner holds no Claude credential of its own: it gets the factory's Anthropic API key from each claim. ${held.join(" and ")} ${held.length === 1 ? "is" : "are"} set in the runner's environment, runner.env or claude.env. Remove ${held.length === 1 ? "it" : "them"} from the environment and from the runner.env and claude.env beside the config, then restart the service`
|
|
50
48
|
});
|
|
51
49
|
}
|
|
52
50
|
if (facts.allowHosts === void 0) {
|
|
@@ -70,11 +68,26 @@ function managedProblems(facts) {
|
|
|
70
68
|
}
|
|
71
69
|
return problems;
|
|
72
70
|
}
|
|
71
|
+
function credentialsInFiles(configPath) {
|
|
72
|
+
const found = /* @__PURE__ */ new Set();
|
|
73
|
+
if (configPath === void 0) return found;
|
|
74
|
+
for (const path of [join(dirname(configPath), "runner.env"), claudeEnvPath(configPath)]) {
|
|
75
|
+
let text;
|
|
76
|
+
try {
|
|
77
|
+
text = readFileSync(path, "utf8");
|
|
78
|
+
} catch {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const values = parseRunnerEnv(text);
|
|
82
|
+
for (const variable of FORWARDED_CLAUDE_CREDENTIAL_VARIABLES) if ((values[variable] ?? "").trim() !== "") found.add(variable);
|
|
83
|
+
}
|
|
84
|
+
return found;
|
|
85
|
+
}
|
|
73
86
|
function managedFactsOf(config, probes) {
|
|
74
87
|
return {
|
|
75
88
|
provision: config.hooks.provision,
|
|
76
89
|
jailer: probes.jailer ?? "unknown",
|
|
77
|
-
credentials: claudeCredentialVariablesSet(probes.env),
|
|
90
|
+
credentials: /* @__PURE__ */ new Set([...claudeCredentialVariablesSet(probes.env), ...credentialsInFiles(config.configPath)]),
|
|
78
91
|
allowHosts: config.build?.allowHosts,
|
|
79
92
|
imageBuild: imageBuildOf(config),
|
|
80
93
|
builderDiskPinned: probes.builderDiskPinned ?? builderDiskPinned()
|
|
@@ -132,7 +145,7 @@ function checkBlockedWithSlots(config, probes) {
|
|
|
132
145
|
}
|
|
133
146
|
if (builder !== "usable") return { blocked: { reason: `${builder.problem}. The runner takes work again once its image builder works` }, slots };
|
|
134
147
|
}
|
|
135
|
-
if (kind !== "own" && claudeCredential(probes.env) === void 0) {
|
|
148
|
+
if (kind !== "own" && config.managed !== true && claudeCredential(probes.env) === void 0) {
|
|
136
149
|
return {
|
|
137
150
|
slots,
|
|
138
151
|
blocked: {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { launcherPath, writeLauncher, LauncherWriteError, pathNotes } from './chunk-
|
|
4
|
-
import { currentVersion, currentLink, isInLayout, packageRootIn, versionDir, switchCurrent, execStartLine } from './chunk-
|
|
3
|
+
import { launcherPath, writeLauncher, LauncherWriteError, pathNotes } from './chunk-J246WRLZ.js';
|
|
4
|
+
import { currentVersion, currentLink, isInLayout, packageRootIn, versionDir, switchCurrent, execStartLine } from './chunk-DUPM5LVJ.js';
|
|
5
5
|
import { compareVersions } from './chunk-TQMI335S.js';
|
|
6
|
-
import { RUNNER_DIR_MODE } from './chunk-
|
|
6
|
+
import { RUNNER_DIR_MODE } from './chunk-N7LAEN3T.js';
|
|
7
7
|
import { realpathSync, readFileSync, mkdirSync, rmSync, cpSync, existsSync } from 'fs';
|
|
8
8
|
import { dirname, sep, join } from 'path';
|
|
9
9
|
|