@outerlayer/cli 0.34.0-next.20261026145838 → 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-ZJK6CPNH.js → build-UDOBVX5J.js} +7 -7
- package/dist/{build-disk-7HS4UF7O.js → build-disk-C3WIAHCL.js} +6 -6
- package/dist/build-info.json +1 -1
- package/dist/{builder-MHZKDI4H.js → builder-YNXWVH2V.js} +5 -5
- package/dist/{check-4W4QUBMP.js → check-ERYYVAEM.js} +37 -37
- package/dist/{chunk-2ILU7UAU.js → chunk-3VZTNXK5.js} +1 -1
- package/dist/{chunk-AE3OTPUU.js → chunk-4G4IH4A7.js} +102 -53
- package/dist/{chunk-4YFMNF5Y.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-7P3H4RY2.js → chunk-CNZRUVZ5.js} +102 -36
- package/dist/{chunk-PWSUNS6Y.js → chunk-E6OVLJTR.js} +98 -30
- package/dist/{chunk-WMNPKBX5.js → chunk-ELO5XEES.js} +4 -4
- package/dist/{chunk-PP6OX4OT.js → chunk-EPFFYDNX.js} +5 -5
- package/dist/{chunk-35JMYSUD.js → chunk-EUQZAH2W.js} +2 -2
- package/dist/{chunk-YZ375YBI.js → chunk-FZ4G6CMK.js} +4 -4
- package/dist/{chunk-WHDS6MEG.js → chunk-GHFI5GBF.js} +3 -3
- package/dist/{chunk-PXGU3GKY.js → chunk-GJ4KBHBD.js} +1 -1
- package/dist/{chunk-VVOSUGEF.js → chunk-H47VGSCW.js} +4 -4
- package/dist/{chunk-TFPNPS4Q.js → chunk-HOUFCUMH.js} +1 -1
- package/dist/{chunk-7JE2WFNK.js → chunk-HVPW272H.js} +3 -3
- package/dist/{chunk-M3ME6TLQ.js → chunk-HVQMIZ22.js} +4 -4
- package/dist/{chunk-7DXVL7TN.js → chunk-IO2BBKG4.js} +3 -3
- package/dist/{chunk-UONH72CJ.js → chunk-IWVGALDC.js} +2 -2
- package/dist/{chunk-ZP7GKJSM.js → chunk-JC6AQ6PC.js} +39 -6
- package/dist/{chunk-6JZXIWX7.js → chunk-JKNOJKVD.js} +34 -9
- package/dist/{chunk-GEQT3RPN.js → chunk-JSZRBQY3.js} +3 -3
- package/dist/{chunk-MOI2KDLH.js → chunk-L5VHGRQE.js} +1 -1
- package/dist/{chunk-SKVA4KWD.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-IM6IL3F4.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-CY5TCVBS.js → chunk-U6AWVO6L.js} +6 -6
- package/dist/{chunk-EMH2LNIE.js → chunk-V2VJYK46.js} +4 -4
- package/dist/{chunk-KAVZAB3E.js → chunk-VEJWLQ4G.js} +10 -10
- package/dist/{chunk-XTYYF6P7.js → chunk-VUQKGBIQ.js} +14 -7
- package/dist/{chunk-KRTD2F3I.js → chunk-VWZHOFBP.js} +3 -3
- package/dist/{chunk-3RLKILPT.js → chunk-WE4C3ODP.js} +2 -2
- package/dist/{chunk-QEIA5Q35.js → chunk-XL2MPORM.js} +4 -4
- package/dist/{chunk-VGRCZE6U.js → chunk-XSFR76J7.js} +3 -3
- package/dist/{chunk-UMYYYF7B.js → chunk-YL3RWW7X.js} +1 -1
- package/dist/{chunk-GSSVJNP2.js → chunk-Z7WMU3RA.js} +3 -2
- package/dist/{chunk-3EHDZTRT.js → chunk-ZIKZZ4LK.js} +3 -3
- package/dist/{claude-launcher-OQZNW7XJ.js → claude-launcher-6KGANL7E.js} +1 -1
- package/dist/{cli-PFWJD5QM.js → cli-LXKVCFD7.js} +112 -111
- package/dist/{command-CM22HPN5.js → command-VQPQDPCZ.js} +24 -24
- package/dist/{config-W2XWNR4C.js → config-WSZIWPP4.js} +7 -7
- package/dist/{connect-cmd-TOWE4P45.js → connect-cmd-LI34HS5Q.js} +6 -6
- package/dist/{container-start-D2OEPMUO.js → container-start-IL74XEC5.js} +30 -30
- package/dist/{context-show-cmd-5UJUWBJL.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-GA63DVME.js → docker-KZ3OQTPW.js} +5 -5
- package/dist/{doctor-GVWQBHBC.js → doctor-KPKLFIJH.js} +24 -24
- package/dist/{emit-artifact-cmd-TUOLSGHB.js → emit-artifact-cmd-BJICHW2E.js} +11 -11
- package/dist/{emit-criteria-cmd-VEUMA7MZ.js → emit-criteria-cmd-MUWPT25P.js} +8 -8
- package/dist/{emit-demo-cmd-YLEZB6FG.js → emit-demo-cmd-YQN7VKQH.js} +12 -12
- package/dist/{emit-finding-cmd-BX3FWGSX.js → emit-finding-cmd-NPBWVY44.js} +8 -8
- package/dist/{emit-result-cmd-AYXGCIPR.js → emit-result-cmd-7CJZZQGK.js} +10 -10
- package/dist/{emit-step-cmd-CU6GQ3WW.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-G4V4M3PO.js → findings-cmd-DZ4ESTHX.js} +8 -8
- package/dist/{fleet-readiness-NJYTQYTA.js → fleet-readiness-YSI4NOHT.js} +5 -5
- package/dist/{governing-source-JQV3ZKD7.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.js +4 -4
- package/dist/{init-FY3HP73H.js → init-MN3MNG7V.js} +21 -21
- package/dist/{init-3NT4YX2X.js → init-V6Y2VNKW.js} +21 -21
- package/dist/{init-cmd-RXHHEAOT.js → init-cmd-QCWLJDIF.js} +11 -11
- package/dist/{init-update-RHS6HWLI.js → init-update-GTFLPDEL.js} +9 -9
- 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-V3GED2WX.js → loop-A4CB4IFF.js} +36 -36
- package/dist/{machine-HLZLH327.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-V52JUOD5.js → runner-env-YPXWTNP3.js} +9 -9
- package/dist/{runner-identity-J4NCBSBU.js → runner-identity-XPZO3TG4.js} +5 -5
- package/dist/{runner-key-ZUHMQCHZ.js → runner-key-B5EJH25Z.js} +21 -21
- package/dist/{session-sender-XDKMK4SF.js → session-sender-XED7CKHP.js} +11 -11
- package/dist/{spec-cmd-XQV7EIJW.js → spec-cmd-TRXAGQYM.js} +9 -9
- package/dist/{status-ZJJEJ52D.js → status-6V2S63DS.js} +28 -28
- package/dist/{sync-cmd-BG2M536W.js → sync-cmd-UQVENF25.js} +10 -10
- package/dist/{update-steps-I5JLERXS.js → update-steps-CSC2QVJF.js} +29 -29
- package/dist/{watch-7A63565I.js → watch-EZGDDRTQ.js} +10 -10
- package/dist/{work-claim-cmd-OVPMBIRR.js → work-claim-cmd-YSAJ7DAK.js} +14 -14
- package/dist/{work-cmd-KVFRK24I.js → work-cmd-V5FHLWJM.js} +8 -8
- package/dist/{work-comment-cmd-GC3WAFM7.js → work-comment-cmd-KLEMDYI4.js} +9 -9
- package/dist/{work-demo-cmd-IOB5UDGQ.js → work-demo-cmd-XYRKFP4G.js} +8 -8
- package/dist/{work-logs-cmd-7II6D2JJ.js → work-logs-cmd-DOGPK7Q6.js} +8 -8
- package/dist/{work-open-pr-cmd-FYKRKCDL.js → work-open-pr-cmd-UAUEEP3V.js} +9 -9
- package/dist/{work-pr-cmd-KP3RI7TV.js → work-pr-cmd-LYWL7ZLF.js} +8 -8
- package/dist/{work-proofs-cmd-TVU6QFZN.js → work-proofs-cmd-YMLIJDJZ.js} +9 -9
- package/dist/{work-proofs-record-XANZE3K4.js → work-proofs-record-NK3ULOUQ.js} +15 -15
- package/dist/{work-stop-cmd-5V3DV3HJ.js → work-stop-cmd-MRLJEQRP.js} +8 -8
- package/package.json +1 -1
- package/dist/dist-IOPJIQWK.js +0 -7
- package/dist/find-unit-GGBRYOSO.js +0 -18
package/README.md
CHANGED
|
@@ -334,6 +334,12 @@ content:
|
|
|
334
334
|
provisions the build. The runner keeps the key in memory only, gives it to
|
|
335
335
|
the build's model traffic, and forgets it when the attempt ends. It never
|
|
336
336
|
writes the key to disk or to a log.
|
|
337
|
+
- **`outerlayer runner start` on a managed runner** also asks your gateway for
|
|
338
|
+
the factory's build settings once for each claim (`POST
|
|
339
|
+
/v1/work-items/{id}/claim/build-settings`, signed with the host key). The
|
|
340
|
+
answer holds the machine size, the hosts the factory allows and the values of
|
|
341
|
+
its build variables. The runner keeps them in memory only, passes the
|
|
342
|
+
variables to the build, and scrubs each value from what it uploads.
|
|
337
343
|
- **`outerlayer runner start` with `builtin:process` hooks** runs each build
|
|
338
344
|
as a process under the runner's own user, with no isolation, and the
|
|
339
345
|
attempt records `shared-user`. The runner clones the item's repository
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { keepHandWritten, runAgentSetup } from './chunk-
|
|
3
|
+
export { keepHandWritten, runAgentSetup } from './chunk-7FQYTM7M.js';
|
|
4
4
|
import './chunk-KPHRRCUY.js';
|
|
5
5
|
import './chunk-KT4CN6OU.js';
|
|
6
6
|
import './chunk-4P6QGMPN.js';
|
|
7
7
|
import './chunk-ANPNT6PM.js';
|
|
8
8
|
import './chunk-NKOM4JKY.js';
|
|
9
|
-
import './chunk-
|
|
9
|
+
import './chunk-5JGPTYLT.js';
|
|
10
10
|
import './chunk-JWNH4ZTF.js';
|
|
11
|
-
import './chunk-
|
|
11
|
+
import './chunk-7QAJQDHS.js';
|
|
12
12
|
import './chunk-PJDQPF5N.js';
|
|
13
|
-
import './chunk-
|
|
13
|
+
import './chunk-L5VHGRQE.js';
|
|
14
14
|
import './chunk-ZJSNLVCE.js';
|
|
15
15
|
import './chunk-BJ3KTMDH.js';
|
|
16
16
|
import './chunk-ZQSANKS4.js';
|
|
@@ -24,8 +24,8 @@ import './chunk-TUSYOL2O.js';
|
|
|
24
24
|
import './chunk-FGXT5OXS.js';
|
|
25
25
|
import './chunk-EOTMDIYC.js';
|
|
26
26
|
import './chunk-VNVZDWO3.js';
|
|
27
|
-
import './chunk-
|
|
28
|
-
import './chunk-
|
|
27
|
+
import './chunk-GJ4KBHBD.js';
|
|
28
|
+
import './chunk-SDAEXUIX.js';
|
|
29
29
|
import './chunk-MESOOLF4.js';
|
|
30
30
|
import './chunk-Z5GEFMRW.js';
|
|
31
31
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { BRIDGE_ADDRESS, BRIDGE_CIDR, CONTAINER_NO_PROXY, CONTAINER_PROXY, TUNNEL_PORT, dockerClientConfig, startBridgeForward, writeDockerClientConfig } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
export { BRIDGE_ADDRESS, BRIDGE_CIDR, CONTAINER_NO_PROXY, CONTAINER_PROXY, TUNNEL_PORT, dockerClientConfig, startBridgeForward, writeDockerClientConfig } from './chunk-CFFVCI2I.js';
|
|
4
|
+
import './chunk-SDAEXUIX.js';
|
|
5
5
|
import './chunk-MESOOLF4.js';
|
|
6
6
|
import './chunk-Z5GEFMRW.js';
|
|
7
7
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { KEY_PREFIX, TAG_HOST, buildRepositoryImage, metadataFromLabels, prepareImageBuild, writeRecord } from './chunk-
|
|
4
|
-
export { RecipeError } from './chunk-
|
|
3
|
+
export { KEY_PREFIX, TAG_HOST, buildRepositoryImage, metadataFromLabels, prepareImageBuild, writeRecord } from './chunk-H47VGSCW.js';
|
|
4
|
+
export { RecipeError } from './chunk-HVQMIZ22.js';
|
|
5
5
|
import './chunk-4UPET3R7.js';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-LQHCNXPK.js';
|
|
7
7
|
import './chunk-JBJTC3UU.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
8
|
+
import './chunk-L5VHGRQE.js';
|
|
9
|
+
import './chunk-Z7WMU3RA.js';
|
|
10
10
|
import './chunk-EOTMDIYC.js';
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
11
|
+
import './chunk-GJ4KBHBD.js';
|
|
12
|
+
import './chunk-SDAEXUIX.js';
|
|
13
13
|
import './chunk-MESOOLF4.js';
|
|
14
14
|
import './chunk-Z5GEFMRW.js';
|
|
15
15
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { DEFAULT_BUILD_DISK, DEFAULT_CACHE_DISK, DOCKER_CACHE_MS, allocatedBytes, checkDiskFit, realBuildDiskProbe, runDocker, volumeBytes } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
export { DEFAULT_BUILD_DISK, DEFAULT_CACHE_DISK, DOCKER_CACHE_MS, allocatedBytes, checkDiskFit, realBuildDiskProbe, runDocker, volumeBytes } from './chunk-IWVGALDC.js';
|
|
4
|
+
import './chunk-HVQMIZ22.js';
|
|
5
5
|
import './chunk-4UPET3R7.js';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
6
|
+
import './chunk-L5VHGRQE.js';
|
|
7
|
+
import './chunk-Z7WMU3RA.js';
|
|
8
8
|
import './chunk-EOTMDIYC.js';
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
9
|
+
import './chunk-GJ4KBHBD.js';
|
|
10
|
+
import './chunk-SDAEXUIX.js';
|
|
11
11
|
import './chunk-MESOOLF4.js';
|
|
12
12
|
import './chunk-Z5GEFMRW.js';
|
|
13
13
|
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"2026-10-
|
|
1
|
+
{"id":"2026-10-26T16:14:37.797Z+2a1ebb8","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { MIN_BUILDX_VERSION, builderName, builderSpec, buildxState, ensureBuilder, ensureFailureCount, isOutOfMemory, proxyEnvironment, trackImageBuild } from './chunk-
|
|
3
|
+
export { MIN_BUILDX_VERSION, builderName, builderSpec, buildxState, ensureBuilder, ensureFailureCount, isOutOfMemory, proxyEnvironment, trackImageBuild } from './chunk-HVQMIZ22.js';
|
|
4
4
|
import './chunk-4UPET3R7.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
5
|
+
import './chunk-L5VHGRQE.js';
|
|
6
|
+
import './chunk-Z7WMU3RA.js';
|
|
7
7
|
import './chunk-EOTMDIYC.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
8
|
+
import './chunk-GJ4KBHBD.js';
|
|
9
|
+
import './chunk-SDAEXUIX.js';
|
|
10
10
|
import './chunk-MESOOLF4.js';
|
|
11
11
|
import './chunk-Z5GEFMRW.js';
|
|
12
12
|
|
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { probeCredentials } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
3
|
+
import { probeCredentials } from './chunk-E6OVLJTR.js';
|
|
4
|
+
import './chunk-U6AWVO6L.js';
|
|
5
|
+
import './chunk-HOUFCUMH.js';
|
|
6
|
+
import './chunk-VWZHOFBP.js';
|
|
7
|
+
import './chunk-4G4IH4A7.js';
|
|
8
8
|
import './chunk-ZVB57WI6.js';
|
|
9
|
-
import './chunk-
|
|
9
|
+
import './chunk-TS3EFB7S.js';
|
|
10
10
|
import './chunk-3JVYMD4G.js';
|
|
11
11
|
import './chunk-E7R2GIAW.js';
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
12
|
+
import './chunk-MH6QLXUO.js';
|
|
13
|
+
import './chunk-P3NPTFLF.js';
|
|
14
14
|
import './chunk-I3LTIAOR.js';
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
15
|
+
import './chunk-LD3BHLK7.js';
|
|
16
|
+
import './chunk-VUQKGBIQ.js';
|
|
17
|
+
import './chunk-XSFR76J7.js';
|
|
18
18
|
import './chunk-ESVW4MJY.js';
|
|
19
|
-
import './chunk-
|
|
20
|
-
import { managedProblems, managedFactsOf } from './chunk-
|
|
21
|
-
import './chunk-
|
|
19
|
+
import './chunk-CFFVCI2I.js';
|
|
20
|
+
import { managedProblems, managedFactsOf } from './chunk-JC6AQ6PC.js';
|
|
21
|
+
import './chunk-YL3RWW7X.js';
|
|
22
22
|
import './chunk-TBT347UY.js';
|
|
23
|
-
import { findServiceUnit } from './chunk-
|
|
23
|
+
import { findServiceUnit } from './chunk-WE4C3ODP.js';
|
|
24
24
|
import './chunk-XKJOIQ2Q.js';
|
|
25
|
-
import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, HELPER_ENV, helperSocketPath, probeHelper, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-
|
|
25
|
+
import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, HELPER_ENV, helperSocketPath, probeHelper, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-CNZRUVZ5.js';
|
|
26
26
|
import './chunk-2PGI6RDE.js';
|
|
27
|
-
import './chunk-
|
|
27
|
+
import './chunk-H47VGSCW.js';
|
|
28
28
|
import './chunk-OGFGZQA3.js';
|
|
29
|
-
import './chunk-
|
|
30
|
-
import './chunk-
|
|
31
|
-
import './chunk-
|
|
32
|
-
import './chunk-
|
|
29
|
+
import './chunk-3VZTNXK5.js';
|
|
30
|
+
import './chunk-6KFJIU73.js';
|
|
31
|
+
import './chunk-EPFFYDNX.js';
|
|
32
|
+
import './chunk-SDELQEG4.js';
|
|
33
33
|
import './chunk-TQMI335S.js';
|
|
34
|
-
import './chunk-
|
|
35
|
-
import './chunk-
|
|
36
|
-
import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-
|
|
37
|
-
import './chunk-
|
|
38
|
-
import './chunk-
|
|
34
|
+
import './chunk-HVPW272H.js';
|
|
35
|
+
import './chunk-V2VJYK46.js';
|
|
36
|
+
import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-ZIKZZ4LK.js';
|
|
37
|
+
import './chunk-IWVGALDC.js';
|
|
38
|
+
import './chunk-HVQMIZ22.js';
|
|
39
39
|
import './chunk-4UPET3R7.js';
|
|
40
|
-
import './chunk-
|
|
40
|
+
import './chunk-LQHCNXPK.js';
|
|
41
41
|
import './chunk-JBJTC3UU.js';
|
|
42
42
|
import './chunk-KT4CN6OU.js';
|
|
43
43
|
import './chunk-4P6QGMPN.js';
|
|
44
|
-
import './chunk-
|
|
44
|
+
import './chunk-JKNOJKVD.js';
|
|
45
45
|
import './chunk-IP7BIBXJ.js';
|
|
46
|
-
import './chunk-
|
|
47
|
-
import './chunk-
|
|
46
|
+
import './chunk-IO2BBKG4.js';
|
|
47
|
+
import './chunk-EUQZAH2W.js';
|
|
48
48
|
import './chunk-Y5YCX6AL.js';
|
|
49
49
|
import './chunk-G2JWZDFA.js';
|
|
50
50
|
import './chunk-ANPNT6PM.js';
|
|
51
51
|
import './chunk-MECW77XP.js';
|
|
52
52
|
import './chunk-NKOM4JKY.js';
|
|
53
|
-
import './chunk-
|
|
53
|
+
import './chunk-5JGPTYLT.js';
|
|
54
54
|
import './chunk-JWNH4ZTF.js';
|
|
55
|
-
import './chunk-
|
|
55
|
+
import './chunk-7QAJQDHS.js';
|
|
56
56
|
import './chunk-PJDQPF5N.js';
|
|
57
|
-
import './chunk-
|
|
58
|
-
import './chunk-
|
|
57
|
+
import './chunk-L5VHGRQE.js';
|
|
58
|
+
import './chunk-NHEU5CON.js';
|
|
59
59
|
import './chunk-ZJSNLVCE.js';
|
|
60
60
|
import './chunk-2O5KA67H.js';
|
|
61
61
|
import './chunk-BKO6JEZI.js';
|
|
@@ -63,7 +63,7 @@ import './chunk-FGF52V4V.js';
|
|
|
63
63
|
import './chunk-HCVLP7XA.js';
|
|
64
64
|
import './chunk-BJ3KTMDH.js';
|
|
65
65
|
import './chunk-ZQSANKS4.js';
|
|
66
|
-
import './chunk-
|
|
66
|
+
import './chunk-Z7WMU3RA.js';
|
|
67
67
|
import './chunk-5BHIBJDA.js';
|
|
68
68
|
import './chunk-CDDED64E.js';
|
|
69
69
|
import './chunk-RA3O54FC.js';
|
|
@@ -77,8 +77,8 @@ import './chunk-TUSYOL2O.js';
|
|
|
77
77
|
import './chunk-FGXT5OXS.js';
|
|
78
78
|
import './chunk-EOTMDIYC.js';
|
|
79
79
|
import './chunk-VNVZDWO3.js';
|
|
80
|
-
import './chunk-
|
|
81
|
-
import { claudeEnvPath, parseRunnerEnv } from './chunk-
|
|
80
|
+
import './chunk-GJ4KBHBD.js';
|
|
81
|
+
import { claudeEnvPath, parseRunnerEnv } from './chunk-SDAEXUIX.js';
|
|
82
82
|
import './chunk-MESOOLF4.js';
|
|
83
83
|
import './chunk-Z5GEFMRW.js';
|
|
84
84
|
import { readFileSync } from 'fs';
|
|
@@ -1,35 +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-
|
|
6
|
+
import { senderPidfile } from './chunk-LD3BHLK7.js';
|
|
7
|
+
import { installScrubContext } from './chunk-VUQKGBIQ.js';
|
|
8
|
+
import { writeDockerClientConfig } from './chunk-CFFVCI2I.js';
|
|
9
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, 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-
|
|
11
|
-
import { readBranchHead, fetchCommit, diffBetween } from './chunk-
|
|
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 {
|
|
17
|
-
import {
|
|
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';
|
|
18
18
|
import { CLAUDE_CODE_VERSION, FIRECRACKER_VERSION } from './chunk-4UPET3R7.js';
|
|
19
19
|
import { isSameProcess, startTimeOf } from './chunk-JBJTC3UU.js';
|
|
20
|
-
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-
|
|
20
|
+
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-JKNOJKVD.js';
|
|
21
21
|
import { planArtifactUpload } from './chunk-MECW77XP.js';
|
|
22
22
|
import { readCloudConfig } from './chunk-PJDQPF5N.js';
|
|
23
|
-
import { signerFor } from './chunk-
|
|
23
|
+
import { signerFor } from './chunk-L5VHGRQE.js';
|
|
24
24
|
import { resolvePackRoot, AGENTS_SKILLS_BASE, OUTERLAYER_SKILLS_BASE } from './chunk-ZQSANKS4.js';
|
|
25
|
-
import { scrubText } from './chunk-
|
|
25
|
+
import { scrubText } from './chunk-Z7WMU3RA.js';
|
|
26
26
|
import { MAINTAINED_SKILLS } from './chunk-CDDED64E.js';
|
|
27
27
|
import { resolveVersion } from './chunk-RA3O54FC.js';
|
|
28
28
|
import { parsePolicy } from './chunk-FGXT5OXS.js';
|
|
29
29
|
import { CheckItemsSchema, CHECK_ITEM_REASON_MAX_LENGTH } from './chunk-EOTMDIYC.js';
|
|
30
30
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
31
|
-
import { RUNNER_FILE_MODE, runnerDir, buildDir, vsockPath, jobConsolePath } from './chunk-
|
|
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-
|
|
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';
|
|
33
33
|
import { RUNNER_WORDED_REASONS, UNKNOWN_TRACKING_REASON } from './chunk-MESOOLF4.js';
|
|
34
34
|
import { existsSync, statSync, appendFileSync, rmSync, mkdirSync, chmodSync, writeFileSync, openSync, readFileSync, closeSync, readdirSync, lstatSync, fstatSync, readSync, realpathSync } from 'fs';
|
|
35
35
|
import { join, dirname, delimiter, sep } from 'path';
|
|
@@ -193,6 +193,37 @@ var GUEST_MAVEN_DIR = `${JOB_MOUNT}/maven`;
|
|
|
193
193
|
function buildMemoryBytes(config) {
|
|
194
194
|
return parseSize(config.build?.memory ?? DEFAULT_MEMORY) ?? parseSize(DEFAULT_MEMORY);
|
|
195
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
|
+
}
|
|
196
227
|
function firstLine(text2) {
|
|
197
228
|
return text2.trim().split("\n")[0] ?? "";
|
|
198
229
|
}
|
|
@@ -327,11 +358,8 @@ async function provisionMicroVm(input) {
|
|
|
327
358
|
});
|
|
328
359
|
if (unfetched !== void 0) return fail(unfetched);
|
|
329
360
|
}
|
|
330
|
-
const limits =
|
|
331
|
-
|
|
332
|
-
memoryBytes: buildMemoryBytes(config),
|
|
333
|
-
diskBytes: parseSize(config.build?.disk ?? DEFAULT_DISK) ?? parseSize(DEFAULT_DISK)
|
|
334
|
-
};
|
|
361
|
+
const limits = machineLimits(config, jobDir);
|
|
362
|
+
const memoryText = memoryTextOf(config, jobDir, limits);
|
|
335
363
|
let buildsInBuilder = imageBuildOf(config) === "vm";
|
|
336
364
|
if (buildsInBuilder && !vm.builderDiskPinned()) {
|
|
337
365
|
if (config.managed === true) return fail(MANAGED_NO_BUILDER_DISK_REASON);
|
|
@@ -351,17 +379,7 @@ async function provisionMicroVm(input) {
|
|
|
351
379
|
deadlineMs: input.deadlineMs,
|
|
352
380
|
now: input.now,
|
|
353
381
|
guestHelper: { path: assets.helper, sha256: assets.helperSha256 },
|
|
354
|
-
...buildsInBuilder ? {
|
|
355
|
-
inBuilder: {
|
|
356
|
-
kernel: assets.kernel,
|
|
357
|
-
firecracker: assets.firecracker,
|
|
358
|
-
limits: { ...limits, cacheDiskBytes: parseSize(config.build?.cacheDisk ?? DEFAULT_CACHE_DISK) ?? parseSize(DEFAULT_CACHE_DISK) },
|
|
359
|
-
memory: config.build?.memory,
|
|
360
|
-
allowHosts: config.build?.allowHosts,
|
|
361
|
-
managed: config.managed === true,
|
|
362
|
-
timeLimitMinutes: config.timeLimitMinutes
|
|
363
|
-
}
|
|
364
|
-
} : {}
|
|
382
|
+
...buildsInBuilder ? { inBuilder: builderMachineFor(config, jobDir, assets, limits) } : {}
|
|
365
383
|
});
|
|
366
384
|
if (!obtained.ok) return obtained.aborted === true ? { ok: false, reason: obtained.reason, aborted: true } : fail(obtained.reason);
|
|
367
385
|
const { report } = obtained.built;
|
|
@@ -375,6 +393,7 @@ async function provisionMicroVm(input) {
|
|
|
375
393
|
imageId: report.imageId,
|
|
376
394
|
containerEnv: report.apply.containerEnv,
|
|
377
395
|
builtIns: true,
|
|
396
|
+
limits: recordedLimits(limits),
|
|
378
397
|
lifecycle: report.apply.lifecycle,
|
|
379
398
|
...governingSource.kind === "governed" ? { governing: { repository: governingSource.repository, ref: governingSource.ref, commit: governingSource.sha } } : {},
|
|
380
399
|
...report.docker === true ? { docker: true } : {}
|
|
@@ -387,7 +406,8 @@ async function provisionMicroVm(input) {
|
|
|
387
406
|
repositories,
|
|
388
407
|
hostEnv: runtime.hostEnv,
|
|
389
408
|
containerEnv: report.apply.containerEnv,
|
|
390
|
-
builtIns: true
|
|
409
|
+
builtIns: true,
|
|
410
|
+
factoryVariables: factoryVariablesOf(config, jobDir)
|
|
391
411
|
};
|
|
392
412
|
const env = buildEnvironment(envInput);
|
|
393
413
|
if (env.skippedTokenVariables.length > 0) {
|
|
@@ -406,7 +426,7 @@ async function provisionMicroVm(input) {
|
|
|
406
426
|
let why = reason;
|
|
407
427
|
if (!aborted && (state.cgroup !== void 0 || state.jailed !== void 0)) {
|
|
408
428
|
try {
|
|
409
|
-
if (await microVmOomKills(runtime, state) > 0) why = outOfMemoryReason(
|
|
429
|
+
if (await microVmOomKills(runtime, state) > 0) why = outOfMemoryReason(memoryText);
|
|
410
430
|
} catch (err) {
|
|
411
431
|
log.error(`${tag} could not read the build's memory events: ${describeCallFailure(err)} \xB7 continuing`);
|
|
412
432
|
}
|
|
@@ -425,7 +445,7 @@ async function provisionMicroVm(input) {
|
|
|
425
445
|
imageConfig = { env: madeInBuilder.env, user: madeInBuilder.user };
|
|
426
446
|
} else {
|
|
427
447
|
try {
|
|
428
|
-
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 });
|
|
429
449
|
imageConfig = await vm.rootfs.imageConfig(report.imageId);
|
|
430
450
|
} catch (err) {
|
|
431
451
|
return bail(`the image could not be converted to a root disk: ${describeCallFailure(err)}`);
|
|
@@ -678,7 +698,8 @@ function vmExecFor(input, argv) {
|
|
|
678
698
|
containerEnv: state.containerEnv ?? {},
|
|
679
699
|
builtIns: state.builtIns === true,
|
|
680
700
|
identity: input.job.commitIdentity,
|
|
681
|
-
imageEnv: state.imageEnv
|
|
701
|
+
imageEnv: state.imageEnv,
|
|
702
|
+
factoryVariables: factoryVariablesOf(input.config, input.jobDir)
|
|
682
703
|
});
|
|
683
704
|
const options = {
|
|
684
705
|
socket: state.vsockPath,
|
|
@@ -707,7 +728,8 @@ async function startMicroVmCommand(input) {
|
|
|
707
728
|
containerEnv: state.containerEnv ?? {},
|
|
708
729
|
builtIns: state.builtIns === true,
|
|
709
730
|
identity: input.job.commitIdentity,
|
|
710
|
-
imageEnv: state.imageEnv
|
|
731
|
+
imageEnv: state.imageEnv,
|
|
732
|
+
factoryVariables: factoryVariablesOf(input.config, input.jobDir)
|
|
711
733
|
});
|
|
712
734
|
const started = await input.runtime.vm.exec(state.vsockPath, {
|
|
713
735
|
argv: ["/bin/sh", "-c", commandWithShim(input.job, input.cmdline)],
|
|
@@ -749,7 +771,8 @@ async function syncInMicroVm(input) {
|
|
|
749
771
|
containerEnv: state.containerEnv ?? {},
|
|
750
772
|
builtIns: state.builtIns === true,
|
|
751
773
|
identity: job.commitIdentity,
|
|
752
|
-
imageEnv: state.imageEnv
|
|
774
|
+
imageEnv: state.imageEnv,
|
|
775
|
+
factoryVariables: factoryVariablesOf(input.config, input.jobDir)
|
|
753
776
|
});
|
|
754
777
|
const result = await runtime.vm.exec(state.vsockPath, {
|
|
755
778
|
argv: ["outerlayer", "sync"],
|
|
@@ -873,6 +896,7 @@ async function startCheckMicroVm(input) {
|
|
|
873
896
|
const { config, runtime, job, jobDir, tokens, log } = input;
|
|
874
897
|
const { vm } = runtime;
|
|
875
898
|
const tag = `#${job.item}`;
|
|
899
|
+
const limits = machineLimits(config, jobDir);
|
|
876
900
|
const built = job.microvm;
|
|
877
901
|
const repository = built?.repository ?? job.repository;
|
|
878
902
|
if (built === void 0 || built.imageId === void 0 || repository === void 0 || job.branch === void 0) {
|
|
@@ -922,7 +946,7 @@ async function startCheckMicroVm(input) {
|
|
|
922
946
|
state.rootfs = built.rootfs;
|
|
923
947
|
} else {
|
|
924
948
|
try {
|
|
925
|
-
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 });
|
|
926
950
|
} catch (err) {
|
|
927
951
|
return fail(`the image could not be converted to a root disk: ${describeCallFailure(err)}`);
|
|
928
952
|
}
|
|
@@ -940,16 +964,11 @@ async function startCheckMicroVm(input) {
|
|
|
940
964
|
log: (line) => log.line(`${tag} ${line}`),
|
|
941
965
|
readOnly: true
|
|
942
966
|
});
|
|
943
|
-
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));
|
|
944
968
|
} catch (err) {
|
|
945
969
|
return fail(`the tunnel could not start: ${describeCallFailure(err)}`);
|
|
946
970
|
}
|
|
947
971
|
if (abandoned()) return fail(ABANDONED);
|
|
948
|
-
const limits = {
|
|
949
|
-
cpus: config.build?.cpus ?? DEFAULT_CPUS,
|
|
950
|
-
memoryBytes: buildMemoryBytes(config),
|
|
951
|
-
diskBytes: parseSize(config.build?.disk ?? DEFAULT_DISK) ?? parseSize(DEFAULT_DISK)
|
|
952
|
-
};
|
|
953
972
|
const links = vsockLinks({ destinations: config.build?.destinations?.length ?? 0, builtIns: false });
|
|
954
973
|
const configPath = join(buildDir2, "vm.json");
|
|
955
974
|
const helper = await helperFor(runtime, (line) => log.line(`${tag} ${line}`), config.managed === true);
|
|
@@ -1009,7 +1028,16 @@ async function startCheckMicroVm(input) {
|
|
|
1009
1028
|
const failed = await boot();
|
|
1010
1029
|
if (failed !== void 0) return fail(failed);
|
|
1011
1030
|
if (abandoned()) return fail(ABANDONED);
|
|
1012
|
-
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
|
+
});
|
|
1013
1041
|
const evalInput = { dir: join(checksDir, EVAL_INPUT_NAME), delivered: false };
|
|
1014
1042
|
const deliverEvalInput = async () => {
|
|
1015
1043
|
await unpackIntoGuest(runtime, state, evalInput.dir, EVAL_INPUT_DIR, { readOnly: true });
|
|
@@ -2650,7 +2678,7 @@ function mergeScrubConfig(a, b) {
|
|
|
2650
2678
|
function releaseScrub(config, home) {
|
|
2651
2679
|
const merged = mergeScrubConfig(config.scrub, readCloudConfig(home).scrub);
|
|
2652
2680
|
const secrets = [...headerVariables(config.build?.destinations), ...CLAUDE_CREDENTIAL_VARIABLES].map((name) => process.env[name] ?? "");
|
|
2653
|
-
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);
|
|
2654
2682
|
return { literals: [...scrubList(merged?.literals), ...secrets, ...held], patterns: scrubList(merged?.patterns) };
|
|
2655
2683
|
}
|
|
2656
2684
|
function transcriptScrub(config, secrets) {
|
|
@@ -2927,6 +2955,15 @@ function readTunnelRecord(path) {
|
|
|
2927
2955
|
return void 0;
|
|
2928
2956
|
}
|
|
2929
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
|
+
}
|
|
2930
2967
|
async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
2931
2968
|
const spawnFn = deps.spawnFn ?? spawn;
|
|
2932
2969
|
const now = deps.now ?? (() => /* @__PURE__ */ new Date());
|
|
@@ -2935,6 +2972,7 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
2935
2972
|
const logPath = join(jobDirPath, "command.log");
|
|
2936
2973
|
const tag = `#${job.item}`;
|
|
2937
2974
|
deps.attemptLogs?.open(job.item, jobDirPath);
|
|
2975
|
+
const valuesNotHeld = (job.managedVariables?.length ?? 0) > 0 && managedBuildSettingsFor(jobDirPath) === void 0;
|
|
2938
2976
|
if (job.sender !== void 0) {
|
|
2939
2977
|
await stopSender({ job, deps: { spawnFn, runtime: deps.container, log } });
|
|
2940
2978
|
delete job.sender;
|
|
@@ -2978,6 +3016,10 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
2978
3016
|
writeJobFile(jobFilePath, job);
|
|
2979
3017
|
}
|
|
2980
3018
|
const uploadSessions = async (workdir) => {
|
|
3019
|
+
if (valuesNotHeld) {
|
|
3020
|
+
log.error(`${tag} sync skipped: ${VALUES_NOT_HELD}`);
|
|
3021
|
+
return;
|
|
3022
|
+
}
|
|
2981
3023
|
if (job.container === void 0 && job.microvm === void 0 && job.build?.exec === void 0 && workdirProblem(workdir) !== void 0) {
|
|
2982
3024
|
log.line(`${tag} sync skipped: workdir ${workdir} is gone`);
|
|
2983
3025
|
} else if (job.itemKey === void 0) {
|
|
@@ -3036,7 +3078,8 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
3036
3078
|
log.error(`${tag} removing an earlier attempt's check environment failed: ${describeCallFailure(err)} \xB7 continuing`);
|
|
3037
3079
|
}
|
|
3038
3080
|
}
|
|
3039
|
-
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) {
|
|
3040
3083
|
setStage(job, jobDirPath, "judge");
|
|
3041
3084
|
job.judgeRan = true;
|
|
3042
3085
|
writeJobFile(jobFilePath, job);
|
|
@@ -3051,7 +3094,7 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
3051
3094
|
log.error(`${tag} the host's judge stopped: ${describeCallFailure(err)} \xB7 continuing`);
|
|
3052
3095
|
}
|
|
3053
3096
|
}
|
|
3054
|
-
if (outcome === "ok" && !job.cleanupRan && job.checksRan !== true) {
|
|
3097
|
+
if (outcome === "ok" && !job.cleanupRan && job.checksRan !== true && !valuesNotHeld) {
|
|
3055
3098
|
setStage(job, jobDirPath, "checks");
|
|
3056
3099
|
job.checksRan = true;
|
|
3057
3100
|
writeJobFile(jobFilePath, job);
|
|
@@ -3265,12 +3308,17 @@ async function finishJob(job, jobDirPath, outcome, config, deps, ending) {
|
|
|
3265
3308
|
writeJobFile(jobFilePath, job);
|
|
3266
3309
|
}
|
|
3267
3310
|
const sentAtMs = now().getTime();
|
|
3268
|
-
const runnerLog =
|
|
3311
|
+
const runnerLog = valuesNotHeld ? `The runner sends no log for this attempt: ${VALUES_NOT_HELD}.
|
|
3312
|
+
` : releaseLogFor(jobDirPath, job, config);
|
|
3269
3313
|
const detail = outcome === void 0 ? { log: runnerLog } : { stage: job.endStage, exitCode: job.endExitCode, reason: job.reason, environment: job.environment, log: runnerLog };
|
|
3270
3314
|
const release = await retrySend(() => releaseLease(config, job.item, outcome, detail, deps.fetchImpl), {
|
|
3271
3315
|
now: deps.now,
|
|
3272
3316
|
sleep: deps.sleep
|
|
3273
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);
|
|
3274
3322
|
const alreadyReleased = release.ok && wasAlreadyReleased(release.value, outcome, sentAtMs);
|
|
3275
3323
|
const endedAt = now();
|
|
3276
3324
|
job.outcome = outcome;
|
|
@@ -3323,13 +3371,14 @@ async function retryFailedReleases(jobsDirPath, config, deps) {
|
|
|
3323
3371
|
if (!job || job.releaseFailed === void 0 || job.releaseFailed === ALREADY_RELEASED || isUnfinished(job)) {
|
|
3324
3372
|
continue;
|
|
3325
3373
|
}
|
|
3326
|
-
const runnerLog = releaseLogFor(dirPath, job, config);
|
|
3374
|
+
const runnerLog = readScrubbedReleaseLog(dirPath) ?? releaseLogFor(dirPath, job, config);
|
|
3327
3375
|
const detail = job.outcome === void 0 ? { log: runnerLog } : { stage: job.endStage, exitCode: job.endExitCode, reason: job.reason, environment: job.environment, log: runnerLog };
|
|
3328
3376
|
const release = await retrySend(() => releaseLease(config, job.item, job.outcome, detail, deps.fetchImpl), {
|
|
3329
3377
|
now: deps.now,
|
|
3330
3378
|
sleep: deps.sleep
|
|
3331
3379
|
});
|
|
3332
3380
|
if (release.ok || !release.retryable) {
|
|
3381
|
+
rmSync(join(dirPath, SCRUBBED_RELEASE_LOG), { force: true });
|
|
3333
3382
|
job.releaseFailed = void 0;
|
|
3334
3383
|
writeJobFile(jobFilePath, job);
|
|
3335
3384
|
} else {
|
|
@@ -3452,7 +3501,7 @@ function launchFor(config, job, jobDir, deps) {
|
|
|
3452
3501
|
if (job.microvm !== void 0) {
|
|
3453
3502
|
const runtime = deps.runtime ?? createContainerRuntime();
|
|
3454
3503
|
const cli = deps.cliPath ?? join(runtime.cliBuild().distDir, "index.js");
|
|
3455
|
-
return { ...microVmSenderCommand({ job, runtime, config, cli }), cwd: jobDir };
|
|
3504
|
+
return { ...microVmSenderCommand({ job, jobDir, runtime, config, cli }), cwd: jobDir };
|
|
3456
3505
|
}
|
|
3457
3506
|
if (job.container !== void 0) {
|
|
3458
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';
|