@outerlayer/cli 0.11.0 → 0.13.0
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/CHANGELOG.md +23 -0
- package/README.md +16 -7
- package/dist/{agent-setup-YEFN74Y4.js → agent-setup-QE6PSCEZ.js} +8 -8
- package/dist/build-info.json +1 -1
- package/dist/{builder-PP436VGZ.js → builder-UUS4ORDH.js} +3 -3
- package/dist/{check-YDXOLVJ5.js → check-63IDCEEV.js} +31 -30
- package/dist/{chunk-XR3BJN33.js → chunk-22RMZBGW.js} +20 -1
- package/dist/{chunk-TB7EP24C.js → chunk-2M63GG56.js} +1 -1
- package/dist/{chunk-Y6P5XX2B.js → chunk-3D4OYFCD.js} +4 -4
- package/dist/{chunk-2GBCTEN4.js → chunk-3KTA5UU2.js} +1 -1
- package/dist/{chunk-USO2DKBD.js → chunk-4KSQKQXE.js} +8 -2
- package/dist/{chunk-UES67HLJ.js → chunk-4QVZCVWT.js} +5 -5
- package/dist/{chunk-I263FZ3A.js → chunk-6S3H3J6H.js} +3 -3
- package/dist/{chunk-BHOBM3IZ.js → chunk-C6IV5BV7.js} +10 -10
- package/dist/{chunk-VDI5POCC.js → chunk-CNFVHDHG.js} +1 -1
- package/dist/{chunk-EOWWTFUU.js → chunk-DPKX26LT.js} +92 -16
- package/dist/{chunk-SUMWRA7K.js → chunk-DXQ5MHCO.js} +1 -1
- package/dist/{chunk-ZQ5JGHUO.js → chunk-EFZLAYPE.js} +2 -2
- package/dist/{chunk-RWQWPZB4.js → chunk-GI4XXD4I.js} +3 -3
- package/dist/{chunk-YU5GL7QS.js → chunk-HDTVTA6I.js} +2 -2
- package/dist/{chunk-BFESLKPP.js → chunk-IP7BIBXJ.js} +19 -1
- package/dist/{chunk-YT35WGIP.js → chunk-J5M7BSJQ.js} +99 -7
- package/dist/{chunk-IU4NZROR.js → chunk-JXYVA45C.js} +1 -1
- package/dist/{chunk-BMX3L7CR.js → chunk-LCEXHCHD.js} +1 -1
- package/dist/{chunk-7C4T5BGN.js → chunk-MJXXRX4M.js} +54 -12
- package/dist/{chunk-E5DC4VZL.js → chunk-MZN7AQOB.js} +8 -8
- package/dist/{chunk-CJGQQZWB.js → chunk-NX57IBNK.js} +1 -1
- package/dist/{chunk-DTDZXDQ3.js → chunk-P4MM66C6.js} +31 -18
- package/dist/{chunk-BEZSECPA.js → chunk-P6FX4D43.js} +1 -1
- package/dist/{chunk-A56PYPDF.js → chunk-R7OQTKWT.js} +2 -1
- package/dist/{chunk-TFIOXPZT.js → chunk-RLYZLUQ7.js} +67 -5
- package/dist/chunk-RMWLBUCJ.js +50 -0
- package/dist/{chunk-4HMXH2OA.js → chunk-SFFHGX3G.js} +1 -1
- package/dist/{chunk-3YFCWYBU.js → chunk-SVEP7PVH.js} +14 -14
- package/dist/chunk-T5VPP6H7.js +65 -0
- package/dist/{chunk-BGWTYRSS.js → chunk-TCIW27FM.js} +1 -1
- package/dist/{chunk-R7BJYFD2.js → chunk-TOPDNXHZ.js} +5 -5
- package/dist/{chunk-HKUH5AR2.js → chunk-XJKL4BNU.js} +3 -3
- package/dist/{cli-RQZXTOEI.js → cli-WSBIAVZU.js} +176 -88
- package/dist/{command-U6UGIBVT.js → command-N7BAB4XJ.js} +21 -22
- package/dist/{config-MKBX2ZQD.js → config-N3C6DFQA.js} +1 -1
- package/dist/{connect-cmd-5MIUNYAY.js → connect-cmd-FGYRLLXL.js} +5 -5
- package/dist/{context-adopt-A77G67CP.js → context-adopt-B3PWGFHL.js} +5 -5
- package/dist/{context-materialize-KQZYATQZ.js → context-materialize-7S6NLLRO.js} +5 -5
- package/dist/{dist-3M3ZMEZF.js → dist-LKDWQWZ7.js} +2 -2
- package/dist/{docker-WVRRMK6R.js → docker-BZ55BMBJ.js} +4 -4
- package/dist/{doctor-ZF4PYWVN.js → doctor-3H25Q7WT.js} +23 -20
- package/dist/{emit-artifact-cmd-VKPW577P.js → emit-artifact-cmd-IQCRXOH7.js} +9 -9
- package/dist/{emit-cmd-SU62J2PB.js → emit-cmd-KDSM5VAO.js} +4 -4
- package/dist/{emit-criteria-cmd-U2TL6FYY.js → emit-criteria-cmd-EYUXME26.js} +7 -7
- package/dist/emit-finding-cmd-P4RKBPBB.js +465 -0
- package/dist/{emit-result-cmd-GKBVPMU4.js → emit-result-cmd-6XYENU6H.js} +9 -9
- package/dist/{hook-fast-AQCAQIA6.js → hook-fast-PXWKQPN6.js} +1 -1
- package/dist/{import-capture-cmd-5NJVL2HN.js → import-capture-cmd-2BKM5I2N.js} +3 -3
- package/dist/{import-ruler-cmd-TUK3MRPC.js → import-ruler-cmd-IXR7YK47.js} +2 -2
- package/dist/index.js +3 -3
- package/dist/{init-PUY2BUHH.js → init-2LWVS4AH.js} +21 -17
- package/dist/{init-M5IBAGVE.js → init-ZL7ORPTF.js} +53 -32
- package/dist/{init-cmd-NPNR23UL.js → init-cmd-JXOBCOIB.js} +16 -14
- package/dist/{install-HKOVISUP.js → install-HDBIPHTX.js} +2 -4
- package/dist/{login-browser-7XGSV7MA.js → login-browser-QZCS3WW6.js} +2 -1
- package/dist/{loop-3FNROLW7.js → loop-XOAE6ZIY.js} +32 -30
- package/dist/{machine-RWDDJRWB.js → machine-G6PY2J2J.js} +16 -16
- package/dist/{mcp-install-cmd-XZARXNYT.js → mcp-install-cmd-VXVIH7PH.js} +1 -1
- package/dist/runner-env-XTC53CHN.js +15 -0
- package/dist/runner-key-TDTLNAKJ.js +154 -0
- package/dist/{session-sender-E3UHGSNV.js → session-sender-XVGZFWRK.js} +7 -7
- package/dist/{starter-pack-I35VNYAR.js → starter-pack-B7JPGEDO.js} +4 -4
- package/dist/{status-2OW5AKWL.js → status-MRTPG34B.js} +22 -22
- package/dist/{sync-cmd-ULKXCHO2.js → sync-cmd-UBUZMMDN.js} +6 -6
- package/dist/{watch-IU6NHB4K.js → watch-STNPEWD6.js} +6 -6
- package/dist/{work-claim-cmd-LXXSNEGF.js → work-claim-cmd-CWGYEIJE.js} +11 -11
- package/dist/{work-cmd-ZJY3NA2G.js → work-cmd-X7NMJDFL.js} +8 -8
- package/dist/{work-comment-cmd-34FTLPUO.js → work-comment-cmd-FI2TMAYQ.js} +8 -8
- package/dist/{work-open-pr-cmd-YZAENDP6.js → work-open-pr-cmd-OVHJ5I5H.js} +9 -9
- package/dist/{work-pr-cmd-EXTOGBJC.js → work-pr-cmd-Y5TDMQ4O.js} +8 -8
- package/package.json +1 -1
- package/skill-pack/maintained/reporting-findings/SKILL.md +84 -5
- package/skill-pack/template/build/SKILL.md +60 -33
- package/skill-pack/template/build/references/agent-briefs.md +4 -2
- package/skill-pack/template/build/references/release.md +1 -1
- package/skill-pack/template/build/references/review-loop.md +6 -2
- package/skill-pack/template/build/scripts/record-criteria.mjs +109 -143
- package/skill-pack/validators/code-review.yaml +4 -2
- package/dist/chunk-FBTE2A2X.js +0 -38
- package/dist/chunk-JKIWMRFH.js +0 -27
- package/dist/chunk-T6OIJQRT.js +0 -31
- package/dist/emit-finding-cmd-TMOOKHPD.js +0 -251
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @outerlayer/cli
|
|
2
2
|
|
|
3
|
+
## 0.13.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 76222d4: The starter `/build` skill no longer parses fixed shapes out of an issue. The agent reads the issue's acceptance criteria in any form and keeps their text as written. `record-criteria.mjs` now takes the agent's file with `--criteria-file`. It keeps the issue's ids when every criterion has one that fits the id grammar, and otherwise numbers them `AC-<item>-NN`. A partly numbered list is now numbered and recorded, not skipped. When an issue has no criteria, the build drafts them from the description and runs the script with `--drafted`, which records the list with `drafted: true`. `outerlayer emit criteria` reads an optional top-level `"drafted": true` from its file and sends it with the list.
|
|
8
|
+
- 07677fd: `outerlayer runner init` creates the runner's API key from your login when the config file has none. It uses the Runner preset, names the key after the machine (`--key-name` to override), creates it on the factory `--app-id` names, and checks it before any VM or service step. On a Mac with `--vm`, the key goes straight into the VM and is never written on the Mac. A login that cannot create keys gets a refusal naming the pasted-key path, which still works as before.
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- b831165: Fix rough edges a first-time user meets. `init` writes an MCP server entry that runs through npx, so it starts without a global install, and `doctor` warns when the entry's command is not on PATH. `init` marks a connection whose repository still needs linking with `!` and names the factory by its slug. `login` suggests `init` in a repository that is not set up. `doctor` warns when a factory has no connected repository, stops listing one Claude Code install twice, and says the first hook run creates the spool. `work build` names the item and the issue separately, prints the item's page, and honours NO_COLOR and non-terminal output. A runner keeps the build's item key in its own owner-only file instead of `job.json`. The starter build skill uses the branch a host allows, and the code review check says the report's link can take a minute to appear. `runner init`, `runner check` and `runner start` refuse an empty or blank runner key or factory id, or one still holding a `<...>` placeholder, naming the field and the config file.
|
|
13
|
+
- 836d0e0: A validator file can no longer declare `artifact`, `finding` or `findings` as its emit name, the same as `criteria`. Each is an `outerlayer emit` subcommand, so `outerlayer emit <name>` ran the subcommand and the check could never be recorded. A file that declares one now fails to load with a policy error naming the subcommand.
|
|
14
|
+
|
|
15
|
+
## 0.12.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- c6622d4: Findings join factory-level problems. `outerlayer emit finding` takes `--cause`, `--detail`, `--suggestion`, `--command`, `--error`, `--test` and `--symbol`. When no key matches a known problem, it stores nothing, lists the closest problems and exits with code 3. Run it again with `--problem <id> --link-reason <text>` or `--new`. It prints your recent session events so `--started-at` and `--ended-at` can record the time a problem cost. The finding batch moves to `schemaVersion: 3`; the gateway refuses version 2.
|
|
20
|
+
- d0141dc: `outerlayer runner init --agent claude` leaves a host ready to build. It writes commands that start Claude Code, reads Claude's credential from stdin (a token from `claude setup-token` or an Anthropic API key, told apart by how they start), and stores it in the `runner.env` beside the config with mode 600, keeping every other line. The service starts, or restarts, with the credential loaded. With `--vm`, all of this happens inside the VM. Without `--agent`, `runner init` writes the placeholder commands as before.
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- c5542d9: `outerlayer init` now ends with "Add an issue on the Work page and choose Build locally, or Build if a host runs for this factory." A new factory has no host, so the line no longer tells everyone to press Build.
|
|
25
|
+
|
|
3
26
|
## 0.11.0
|
|
4
27
|
|
|
5
28
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -142,9 +142,14 @@ content:
|
|
|
142
142
|
request it makes with the host key, the way the runner does. The signature
|
|
143
143
|
covers the request's method, path, query and body, and adds nothing else
|
|
144
144
|
to it.
|
|
145
|
-
- **`outerlayer runner init`** makes no network call
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
- **`outerlayer runner init`** makes no network call when the config file
|
|
146
|
+
already holds a runner key. With no key there and a saved login, it
|
|
147
|
+
creates one: `POST /v1/api-keys` with your login's token, sending the key's
|
|
148
|
+
name (this machine's name, or `--key-name`), the Runner preset's
|
|
149
|
+
permissions and the factory id. It then checks the new key, unsigned, with
|
|
150
|
+
`GET /v1/runner/host-key`. `runner init --vm` on a Mac also runs `limactl`,
|
|
151
|
+
and Lima downloads a Linux VM image. Inside the VM, `apt` downloads Node and
|
|
152
|
+
`npm` downloads this CLI. Your runner key goes to the VM on the standard
|
|
148
153
|
input of a `limactl shell` command and is never a file or an argument on the
|
|
149
154
|
Mac.
|
|
150
155
|
- **`outerlayer login`**, with no key on stdin, signs in to your account by
|
|
@@ -297,7 +302,11 @@ content:
|
|
|
297
302
|
- **`outerlayer emit finding`** and **`outerlayer emit findings <file>`** send
|
|
298
303
|
one finding, or a whole batch of them, for a work item — a problem an agent
|
|
299
304
|
hit in the factory. The anchoring is the same as `emit <name>` (`--item`, or
|
|
300
|
-
the recorded session's own item).
|
|
305
|
+
the recorded session's own item). `emit finding` also reads the recording
|
|
306
|
+
session's local transcript, only to print its recent events (an id, a time
|
|
307
|
+
and a one-line summary scrubbed of secrets) and to look up the time of the
|
|
308
|
+
events you name with `--started-at` and `--ended-at`. The transcript itself
|
|
309
|
+
is never sent; only the two event ids and their times are.
|
|
301
310
|
- **`outerlayer emit criteria <file>`** sends the acceptance criteria of a work
|
|
302
311
|
item as one list (`POST /v1/criteria`): each criterion's id, text and
|
|
303
312
|
declared proof kind, from the JSON file you name. The anchoring is the same
|
|
@@ -368,8 +377,8 @@ before it gives up.
|
|
|
368
377
|
| `outerlayer emit <name> --result <pass\|fail> [--link <url>] [--body <text>\|--body-file <path>] --item <number>` | Record one named check's outcome on a work item. A check that ran carries the run URL as its proof (`--link`); a judgment you are making yourself carries one sentence (`--body`, or `--body-file` to read it from a file — `-` reads standard input). A `fail` needs at least one of the two; a `pass` needs neither. `--item` names the work item by the number printed when the item was created — always required, in or out of a recorded session; a session records checks on its own item like any other, stored as the session's, but cannot clear a person's fail. Prints the recorded check's id. Who recorded it comes from your API key, never from what you send. |
|
|
369
378
|
| `outerlayer work comment --item <n> [--criterion <id>] --body <text> [--artifact <id>] [--pass\|--fail\|--attach\|--ready]` | Post one comment on a work item's general thread, or on one acceptance criterion's own thread with `--criterion`. `--pass`/`--fail` need a person's own credential and apply to the whole item, so they work on the general thread only and the gateway refuses them with `--criterion`; `--attach` makes the named artifact that criterion's current proof; `--ready` hands a thread back to a person. The detected session id rides along automatically, only ever narrowing what the comment may do. |
|
|
370
379
|
| `outerlayer work threads --item <n>` | Read a work item's threads back — the general thread first, then one per criterion with proof or a comment, each with its `waitingOn`. |
|
|
371
|
-
| `outerlayer emit finding --id <id> --category <context\|flaky-test\|tooling\|environment\|defect\|other> --title <text> --file <path> --where <label> [--line <n>] [--item <number>] …` | Record one problem you hit in the factory. `--category` is one of `context` (an instruction that is wrong, broken or missing), `flaky-test`, `tooling`, `environment`, `defect` (a bug outside your own change) or `other`. A `context` finding also needs `--rule-path` and `--rule-relation` (`wrong`, `broken` or `missing`), and `--rule-quote` unless the relation is `missing`. Findings are informational; nothing reads one to pass or fail the work. `--item` names the work item; without it, inside a recorded session, the item that session was launched for is used automatically. Re-emitting the same `--id` on the item replaces that finding. |
|
|
372
|
-
| `outerlayer emit findings <file> [--item <number>]` | Record a whole batch at once, read from a JSON file (`-` for standard input) with `"schemaVersion":
|
|
380
|
+
| `outerlayer emit finding --id <id> --category <context\|flaky-test\|tooling\|environment\|defect\|other> --title <text> --file <path> --where <label> [--line <n>] [--item <number>] [--cause <text>] [--detail <text>] [--suggestion <text>] [--command <text>] [--error <text>] [--test <name>] [--symbol <name>] [--started-at <event> --ended-at <event>] [--problem <id> … --link-reason <text> \| --new] …` | Record one problem you hit in the factory. `--category` is one of `context` (an instruction that is wrong, broken or missing), `flaky-test`, `tooling`, `environment`, `defect` (a bug outside your own change) or `other`. A `context` finding also needs `--rule-path` and `--rule-relation` (`wrong`, `broken` or `missing`), and `--rule-quote` unless the relation is `missing`. `--cause`, `--detail`, `--suggestion`, `--command`, `--error` (the first error line), `--test` and `--symbol` carry what a fix needs. Every finding joins a factory-level problem: when a key of the finding matches a known problem it joins that problem; otherwise nothing is stored, the closest problems are printed, and the command exits with code 3. Run it again with `--problem <id> --link-reason <text>` (repeat `--problem` for each problem the finding reports) or with `--new`. Without `--started-at`, it prints the session's recent events with ids and times; name the event where you hit the problem and the one where you got past it with `--started-at` and `--ended-at`. Findings are informational; nothing reads one to pass or fail the work. `--item` names the work item; without it, inside a recorded session, the item that session was launched for is used automatically. Re-emitting the same `--id` on the item replaces that finding and keeps its problems. |
|
|
381
|
+
| `outerlayer emit findings <file> [--item <number>]` | Record a whole batch at once, read from a JSON file (`-` for standard input) with `"schemaVersion": 3` — the same shape and validation as `emit finding`, one record per id. A finding's `startedAt` and `endedAt` may be event ids. The findings that match a key are stored; those that need a choice are listed with their candidates and not stored, and the exit code is 3. Anchored the same way: `--item`, else a recorded session's own item. |
|
|
373
382
|
| `outerlayer emit criteria <file> [--item <number>]` | Record a work item's acceptance criteria as one list, read from a JSON file (`-` for standard input): `{"criteria": [{"id": "AC-1", "text": "Given …", "proof": null}]}`. An `id` is 1 to 64 characters of `A-Z a-z 0-9 . _ : -`, the same id `emit artifact --for` binds evidence to. `proof` is `video`, `screenshot`, `report`, `log`, `test`, `file` or `null` (any bound artifact proves it). The list holds 1 to 200 criteria, each `text` at most 2,000 characters, with no id twice. It is validated before anything is sent. This list is the only source for the item's Criteria tab. Once an item has a list, only a person can replace it: run the command outside an agent session, with your own login. Anchored the same way as `emit findings`: `--item`, else a recorded session's own item. |
|
|
374
383
|
| `outerlayer mcp install [--transport stdio\|http] [--url] [--name] [--command]` | Write (or update) an `mcpServers` entry in `.mcp.json` for the OuterLayer gateway. Default `stdio`: the client spawns `outerlayer mcp serve`, which reads the API key from `~/.outerlayer/config.json` (or `OUTERLAYER_API_KEY`) each time it connects, so a reconnect picks up a newly saved or rotated key. `--transport http` writes a direct `POST /v1/mcp` entry referencing `${OUTERLAYER_API_KEY}`, resolved by the client from the environment it was launched with. Never writes an API key. Pass `--url`/`--app-id` for self-host. |
|
|
375
384
|
| `outerlayer mcp serve [--url] [--app-id]` | Stdio MCP server bridging stdin/stdout JSON-RPC to the gateway's `POST /v1/mcp`. What the stdio `.mcp.json` entry runs; exits 1 with a clear message when no API key is configured. |
|
|
@@ -382,7 +391,7 @@ before it gives up.
|
|
|
382
391
|
| `outerlayer work claim --item <n>\|--issue <n> --kind implement\|amend [--repo] [--host] [--seconds]` | Records a lease for this host (default: its own hostname), so two hosts never build the same item at once. The lease belongs to the runner key that claimed it: a live lease held by a different key is refused, even under the same host name, and claiming again with the same key extends it. The first claim creates the host key (`host-key.pem` beside the config file) and binds the runner key to it; from then on every request made with that key is signed. Lease length defaults to 900 seconds, the server's own cap. |
|
|
383
392
|
| `outerlayer work renew --item <n>\|--issue <n> [--repo] [--host] [--seconds]` | Extends this host's own live lease. Refused if the lease has expired, or if a different runner key holds it (403 `claim_not_held`). |
|
|
384
393
|
| `outerlayer work release --item <n>\|--issue <n> [--repo] [--host] [--session-id] [--outcome]` | Marks the lease this API key holds released, optionally recording how the attempt ended. Releasing an already-released lease is a no-op that returns the recorded release time and outcome. Run inside a session with no `--host`, it releases that session's own lease instead (`--session-id` names the session when it cannot be detected), so the item's review opens without ending the session. |
|
|
385
|
-
| `outerlayer runner init [--vm\|--no-vm] [--config <path>]` | Writes a `runner` block with defaults, keeping every key the config already had. It names `builtin:vm` on a Linux machine where the user can use `/dev/kvm` and Docker Engine can build images once the guest kernel and helper are published (not yet), `builtin:container` on that machine until then, `builtin:container` on any other machine with Docker Engine, and `builtin:process` on one without, and writes no hook script. Refuses rather than overwriting an existing block. On macOS it asks whether to create a Linux VM with Lima, installs Docker Engine and the runner in it, and starts both at login; `--vm` answers yes and `--no-vm` answers no, and a run with no terminal answers no. The runner key and the host key then live only in the VM: the Mac's config loses `apiKey` and `runner` and gains a `runnerVm` note, which `outerlayer doctor` reads. |
|
|
394
|
+
| `outerlayer runner init [--vm\|--no-vm] [--app-id <id>] [--key-name <name>] [--config <path>]` | Writes a `runner` block with defaults, keeping every key the config already had. With no `apiKey` in the config and a saved login, it first creates a runner key from the login with the Runner preset, named after the machine or `--key-name`, on the factory `--app-id` names, and checks it before anything else changes. It names `builtin:vm` on a Linux machine where the user can use `/dev/kvm` and Docker Engine can build images once the guest kernel and helper are published (not yet), `builtin:container` on that machine until then, `builtin:container` on any other machine with Docker Engine, and `builtin:process` on one without, and writes no hook script. Refuses rather than overwriting an existing block. On macOS it asks whether to create a Linux VM with Lima, installs Docker Engine and the runner in it, and starts both at login; `--vm` answers yes and `--no-vm` answers no, and a run with no terminal answers no. The runner key and the host key then live only in the VM: the Mac's config loses `apiKey` and `runner` and gains a `runnerVm` note, which `outerlayer doctor` reads. |
|
|
386
395
|
| `outerlayer runner check [--config <path>]` | Validates the config, the hooks and the key, prints the settings the runner would use, and exits non-zero on a problem. Takes no work and writes no pid file. |
|
|
387
396
|
| `outerlayer runner start [--config <path>]` | Runs the loop: claim work, run it, sync, clean up, report, release with an outcome. Repeat. Reads the `runner` block from the config file (default `~/.outerlayer/config.json`). Refuses to start on a bad config, an unrunnable hook, or a refused key. |
|
|
388
397
|
| `outerlayer runner image --repository <owner/name> [--remote <url>] [--config <path>] [--json]` | Builds the image a repository's builds run in. Fetches the head of the default branch into the runner's cache, builds its `.devcontainer/devcontainer.json` with the devcontainer CLI, ignores every setting that reaches the host or widens the container's privileges, and adds this CLI and a pinned Claude Code. Reuses the image until the recipe or the tools change, keeps the newest three, and writes `recipe.json` beside the image record. Refuses a Compose recipe (`recipe_needs_docker`) and a repository with only named configurations (`recipe_ambiguous`). |
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { runEmit } from './chunk-HDTVTA6I.js';
|
|
4
|
+
import { addStdioMcpEntryIfAbsent, addDocsMcpEntryIfAbsent, DOCS_MCP_SERVER_NAME } from './chunk-R7OQTKWT.js';
|
|
5
|
+
import { installStarterPack } from './chunk-DXQ5MHCO.js';
|
|
6
6
|
import { C } from './chunk-YRYMNBGQ.js';
|
|
7
|
-
import { resolveGitCommonDir, defaultGitRunner } from './chunk-
|
|
7
|
+
import { resolveGitCommonDir, defaultGitRunner } from './chunk-GI4XXD4I.js';
|
|
8
8
|
import './chunk-ZJSNLVCE.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { generatedHeaderSource } from './chunk-
|
|
9
|
+
import { loadTemplateFiles, loadMaintainedFiles, skillDir } from './chunk-TCIW27FM.js';
|
|
10
|
+
import { pinExists, readContextManifest } from './chunk-LCEXHCHD.js';
|
|
11
|
+
import { generatedHeaderSource } from './chunk-2M63GG56.js';
|
|
12
12
|
import './chunk-YO4PSLVB.js';
|
|
13
13
|
import './chunk-PLMTLGYH.js';
|
|
14
|
-
import './chunk-
|
|
14
|
+
import './chunk-J5M7BSJQ.js';
|
|
15
15
|
import './chunk-EABW6AJQ.js';
|
|
16
16
|
import './chunk-BYT5O5RV.js';
|
|
17
17
|
import './chunk-RA3O54FC.js';
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"2026-10-
|
|
1
|
+
{"id":"2026-10-08T17:26:49.421Z+36ec792","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
|
|
@@ -1,11 +1,11 @@
|
|
|
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-NX57IBNK.js';
|
|
4
4
|
import './chunk-CX22S5BA.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-JXYVA45C.js';
|
|
6
6
|
import './chunk-7RQ73DLO.js';
|
|
7
7
|
import './chunk-4Q7OMKAT.js';
|
|
8
|
-
import './chunk-
|
|
8
|
+
import './chunk-J5M7BSJQ.js';
|
|
9
9
|
import './chunk-BYT5O5RV.js';
|
|
10
10
|
import './chunk-ZM2IMMYN.js';
|
|
11
11
|
import './chunk-Z5GEFMRW.js';
|
|
@@ -1,68 +1,69 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { probeCredentials } from './chunk-
|
|
3
|
+
import { probeCredentials } from './chunk-SVEP7PVH.js';
|
|
4
|
+
import './chunk-C6IV5BV7.js';
|
|
5
|
+
import './chunk-O765JR4W.js';
|
|
4
6
|
import './chunk-UGP76IZ5.js';
|
|
5
7
|
import './chunk-3JVYMD4G.js';
|
|
6
|
-
import './chunk-I2UOAV7X.js';
|
|
7
8
|
import './chunk-YETTWTAY.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
9
|
+
import './chunk-RMWLBUCJ.js';
|
|
10
|
+
import './chunk-I2UOAV7X.js';
|
|
10
11
|
import './chunk-FI5UYJMQ.js';
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-HYZRY4KZ.js';
|
|
14
|
-
import './chunk-Y6P5XX2B.js';
|
|
12
|
+
import './chunk-XJKL4BNU.js';
|
|
13
|
+
import './chunk-3D4OYFCD.js';
|
|
15
14
|
import './chunk-HHJDN6AU.js';
|
|
16
|
-
import
|
|
17
|
-
import './chunk-
|
|
15
|
+
import './chunk-HYZRY4KZ.js';
|
|
16
|
+
import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem } from './chunk-TOPDNXHZ.js';
|
|
18
17
|
import './chunk-YYYRBYWG.js';
|
|
18
|
+
import './chunk-TI7B7UEO.js';
|
|
19
19
|
import './chunk-TBT347UY.js';
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
20
|
+
import './chunk-MJXXRX4M.js';
|
|
21
|
+
import './chunk-P6FX4D43.js';
|
|
22
|
+
import './chunk-MZN7AQOB.js';
|
|
23
|
+
import './chunk-T5VPP6H7.js';
|
|
24
|
+
import './chunk-RLYZLUQ7.js';
|
|
23
25
|
import { parseRunnerEnv } from './chunk-6MZSX4M7.js';
|
|
24
|
-
import './chunk-JKIWMRFH.js';
|
|
25
26
|
import './chunk-3FMPZPJQ.js';
|
|
26
27
|
import './chunk-N5FOE5PS.js';
|
|
27
28
|
import './chunk-OGFGZQA3.js';
|
|
28
|
-
import './chunk-
|
|
29
|
+
import './chunk-3KTA5UU2.js';
|
|
29
30
|
import './chunk-QOZKPLVJ.js';
|
|
30
|
-
import './chunk-
|
|
31
|
+
import './chunk-NX57IBNK.js';
|
|
31
32
|
import './chunk-CX22S5BA.js';
|
|
32
33
|
import './chunk-QKFB4K7X.js';
|
|
33
34
|
import './chunk-RSNSZ2LJ.js';
|
|
34
35
|
import './chunk-F7CU5ABH.js';
|
|
35
36
|
import './chunk-BKO6JEZI.js';
|
|
36
|
-
import './chunk-
|
|
37
|
-
import './chunk-
|
|
38
|
-
import './chunk-
|
|
39
|
-
import './chunk-
|
|
40
|
-
import './chunk-
|
|
41
|
-
import './chunk-
|
|
42
|
-
import './chunk-
|
|
37
|
+
import './chunk-P4MM66C6.js';
|
|
38
|
+
import './chunk-EFZLAYPE.js';
|
|
39
|
+
import './chunk-IP7BIBXJ.js';
|
|
40
|
+
import './chunk-4QVZCVWT.js';
|
|
41
|
+
import './chunk-CNFVHDHG.js';
|
|
42
|
+
import './chunk-JXYVA45C.js';
|
|
43
|
+
import './chunk-4KSQKQXE.js';
|
|
43
44
|
import './chunk-N6LURUEF.js';
|
|
44
45
|
import './chunk-YRYMNBGQ.js';
|
|
45
|
-
import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-
|
|
46
|
+
import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-22RMZBGW.js';
|
|
46
47
|
import './chunk-UXYLWVTQ.js';
|
|
47
48
|
import './chunk-7RQ73DLO.js';
|
|
48
49
|
import './chunk-4Q7OMKAT.js';
|
|
49
50
|
import './chunk-GQD22KKN.js';
|
|
50
51
|
import './chunk-WZBHBH3J.js';
|
|
51
52
|
import './chunk-5QRP3MVS.js';
|
|
52
|
-
import './chunk-
|
|
53
|
+
import './chunk-GI4XXD4I.js';
|
|
53
54
|
import './chunk-ZJSNLVCE.js';
|
|
54
|
-
import './chunk-
|
|
55
|
-
import './chunk-
|
|
56
|
-
import './chunk-
|
|
55
|
+
import './chunk-TCIW27FM.js';
|
|
56
|
+
import './chunk-LCEXHCHD.js';
|
|
57
|
+
import './chunk-2M63GG56.js';
|
|
57
58
|
import './chunk-YO4PSLVB.js';
|
|
58
59
|
import './chunk-PLMTLGYH.js';
|
|
59
|
-
import './chunk-
|
|
60
|
+
import './chunk-J5M7BSJQ.js';
|
|
60
61
|
import './chunk-EABW6AJQ.js';
|
|
61
62
|
import './chunk-BYT5O5RV.js';
|
|
62
63
|
import './chunk-RA3O54FC.js';
|
|
63
64
|
import './chunk-V7NIVOFD.js';
|
|
64
65
|
import './chunk-ZM2IMMYN.js';
|
|
65
|
-
import './chunk-
|
|
66
|
+
import './chunk-SFFHGX3G.js';
|
|
66
67
|
import './chunk-XCCLFVXM.js';
|
|
67
68
|
import './chunk-BJ3KTMDH.js';
|
|
68
69
|
import './chunk-VNVZDWO3.js';
|
|
@@ -47,6 +47,23 @@ function defaultRunnerConfigPath(home = homeFromEnv()) {
|
|
|
47
47
|
function fail(configPath, key, reason) {
|
|
48
48
|
throw new RunnerConfigError(`${configPath}: ${key} ${reason}`);
|
|
49
49
|
}
|
|
50
|
+
var PLACEHOLDER = /[<>]/;
|
|
51
|
+
function runnerCredentialProblem(config) {
|
|
52
|
+
for (const field of ["url", "apiKey", "appId"]) {
|
|
53
|
+
const value = config[field];
|
|
54
|
+
if (value === void 0) return { field, reason: "is missing" };
|
|
55
|
+
if (typeof value !== "string") return { field, reason: "is not text" };
|
|
56
|
+
if (value.trim() === "") return { field, reason: "is empty" };
|
|
57
|
+
}
|
|
58
|
+
if (PLACEHOLDER.test(config.apiKey)) {
|
|
59
|
+
return { field: "apiKey", reason: "is still a <...> placeholder. Put the factory's runner key there: an API key made with the Runner preset" };
|
|
60
|
+
}
|
|
61
|
+
const appId = config.appId;
|
|
62
|
+
if (PLACEHOLDER.test(appId)) {
|
|
63
|
+
return { field: "appId", reason: `is still the placeholder ${JSON.stringify(appId)}. Put the Factory Id from the factory's Settings \u2192 General there` };
|
|
64
|
+
}
|
|
65
|
+
return void 0;
|
|
66
|
+
}
|
|
50
67
|
function readConfigFile(configPath) {
|
|
51
68
|
if (!existsSync(configPath)) return {};
|
|
52
69
|
const text = readFileSync(configPath, "utf8");
|
|
@@ -171,6 +188,8 @@ function loadRunnerConfig(configPath) {
|
|
|
171
188
|
if (!config.url || !config.apiKey || !config.appId) {
|
|
172
189
|
fail(configPath, "url/apiKey/appId", "missing \u2014 pipe a factory key into `outerlayer login` for this config file first; a runner uses a factory key, never a person's login");
|
|
173
190
|
}
|
|
191
|
+
const credentialProblem = runnerCredentialProblem(config);
|
|
192
|
+
if (credentialProblem !== void 0) fail(configPath, credentialProblem.field, credentialProblem.reason);
|
|
174
193
|
const runner = config.runner;
|
|
175
194
|
if (!runner) {
|
|
176
195
|
fail(configPath, "runner", "block is missing");
|
|
@@ -379,4 +398,4 @@ function resolveBuild(configPath, block) {
|
|
|
379
398
|
};
|
|
380
399
|
}
|
|
381
400
|
|
|
382
|
-
export { DEFAULT_CHECK_TIME_LIMIT_MINUTES, DEFAULT_UPDATE_MAX_WAIT_HOURS, RunnerConfigError, builtinKind, checkHooks, defaultRunnerConfigPath, hasRunnerBlock, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, loadRunnerConfig, resolveBuild, resolveHousekeeping, runnerVmOf };
|
|
401
|
+
export { DEFAULT_CHECK_TIME_LIMIT_MINUTES, DEFAULT_UPDATE_MAX_WAIT_HOURS, RunnerConfigError, builtinKind, checkHooks, defaultRunnerConfigPath, hasRunnerBlock, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, loadRunnerConfig, resolveBuild, resolveHousekeeping, runnerCredentialProblem, runnerVmOf };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { RESERVED_EMIT_NAMES, ARTIFACT_KINDS, ArtifactCriterionIdSchema } from './chunk-
|
|
3
|
+
import { RESERVED_EMIT_NAMES, ARTIFACT_KINDS, ArtifactCriterionIdSchema } from './chunk-J5M7BSJQ.js';
|
|
4
4
|
import { __commonJS, __require, __toESM } from './chunk-Z5GEFMRW.js';
|
|
5
5
|
|
|
6
6
|
createRequire(import.meta.url);
|
|
@@ -4,17 +4,17 @@ import { LaunchFilter } from './chunk-HHJDN6AU.js';
|
|
|
4
4
|
import { RepoFilter } from './chunk-TBT347UY.js';
|
|
5
5
|
import { hookExecSpoolPath } from './chunk-F7CU5ABH.js';
|
|
6
6
|
import { applyReportedCost } from './chunk-BKO6JEZI.js';
|
|
7
|
-
import { migrateLegacyArtifactSidecars, planArtifactUpload, artifactsStatePath, sanitizeTerminal, acquireArtifactSpoolLock, artifactBlobsDir, resolveArtifactTurnIndex, isArtifactTombstoned, ARTIFACT_RETRY_MAX_AGE_MS, writeArtifactSpoolState, reclaimUnneededArtifactBlobs, neededArtifactShas } from './chunk-
|
|
8
|
-
import { setCustomScrubbers, setLocalIdentity, tailTranscript, enrichSessionRepo, scanAll, setRepoRoot, resolveRepoIdentity, sessionIdFromPath, scrubDeep, SOURCE_ADAPTERS } from './chunk-
|
|
7
|
+
import { migrateLegacyArtifactSidecars, planArtifactUpload, artifactsStatePath, sanitizeTerminal, acquireArtifactSpoolLock, artifactBlobsDir, resolveArtifactTurnIndex, isArtifactTombstoned, ARTIFACT_RETRY_MAX_AGE_MS, writeArtifactSpoolState, reclaimUnneededArtifactBlobs, neededArtifactShas } from './chunk-CNFVHDHG.js';
|
|
8
|
+
import { setCustomScrubbers, setLocalIdentity, tailTranscript, enrichSessionRepo, scanAll, setRepoRoot, resolveRepoIdentity, sessionIdFromPath, scrubDeep, SOURCE_ADAPTERS } from './chunk-JXYVA45C.js';
|
|
9
9
|
import { C } from './chunk-YRYMNBGQ.js';
|
|
10
10
|
import { readLaunchSpoolState, launchStatusIsDecisive, launchedItemsBySession, launchesPath } from './chunk-GQD22KKN.js';
|
|
11
11
|
import { readLatestProvenanceForSession, readContextProvenance } from './chunk-ZJSNLVCE.js';
|
|
12
12
|
import { defaultFetch } from './chunk-YO4PSLVB.js';
|
|
13
13
|
import { resolveGatewayCredentials, unauthorizedMessage } from './chunk-PLMTLGYH.js';
|
|
14
|
-
import { CAPTURE_TIERS, inferArtifactKind, bannedPathsForTier, downconvertSession, isHumanUserTurn, turnCountBound, EVENT_TYPES } from './chunk-
|
|
14
|
+
import { CAPTURE_TIERS, inferArtifactKind, bannedPathsForTier, downconvertSession, isHumanUserTurn, turnCountBound, EVENT_TYPES } from './chunk-J5M7BSJQ.js';
|
|
15
15
|
import { readCloudConfig, cloudConfigPath, writeCloudConfig } from './chunk-EABW6AJQ.js';
|
|
16
16
|
import { signerFor, signRunnerRequest } from './chunk-V7NIVOFD.js';
|
|
17
|
-
import { writeSyncStatus, spoolDir } from './chunk-
|
|
17
|
+
import { writeSyncStatus, spoolDir } from './chunk-SFFHGX3G.js';
|
|
18
18
|
import { removeJournalHooks } from './chunk-XCCLFVXM.js';
|
|
19
19
|
import { readRepoConnection, findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
20
20
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { RecipeError } from './chunk-QOZKPLVJ.js';
|
|
4
|
-
import { trackImageBuild, isOutOfMemory, ensureBuilder } from './chunk-
|
|
4
|
+
import { trackImageBuild, isOutOfMemory, ensureBuilder } from './chunk-NX57IBNK.js';
|
|
5
5
|
import { spawn } from 'child_process';
|
|
6
6
|
import { existsSync, mkdirSync, createWriteStream, rmSync, readFileSync } from 'fs';
|
|
7
7
|
import { join, dirname } from 'path';
|
|
@@ -3,6 +3,7 @@ import { createRequire } from 'node:module';
|
|
|
3
3
|
import { revokeTokenOnDashboard } from './chunk-N6LURUEF.js';
|
|
4
4
|
import { C } from './chunk-YRYMNBGQ.js';
|
|
5
5
|
import { readCloudConfig, writeCloudConfig, cloudConfigPath } from './chunk-EABW6AJQ.js';
|
|
6
|
+
import { findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
6
7
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
7
8
|
import { generateKeyPairSync, privateDecrypt, constants, createPrivateKey } from 'crypto';
|
|
8
9
|
import { spawn } from 'child_process';
|
|
@@ -269,14 +270,19 @@ async function finishApproved(flags, deps, home, dashboard, approved, privateKey
|
|
|
269
270
|
}
|
|
270
271
|
deps.stdout.write(
|
|
271
272
|
`${C.green}\u2713${C.reset} Logged in as ${approved.email}. Saved the login to ${path}
|
|
272
|
-
|
|
273
|
-
`
|
|
273
|
+
` + nextAfterLogin(deps.cwd ?? process.cwd())
|
|
274
274
|
);
|
|
275
275
|
if (before.apiKey) {
|
|
276
276
|
deps.stdout.write("A factory key is also saved on this machine, so commands here keep using the key, not this login.\n");
|
|
277
277
|
}
|
|
278
278
|
return 0;
|
|
279
279
|
}
|
|
280
|
+
function nextAfterLogin(cwd) {
|
|
281
|
+
const dirs = findGitDirs(cwd);
|
|
282
|
+
if (dirs === void 0) return "Next: in your repository, run `outerlayer init --factory <org>/<factory>`.\n";
|
|
283
|
+
if (existsSync(join(dirs.repoRoot, ".outerlayer"))) return "Next: run `outerlayer connect` to choose a factory.\n";
|
|
284
|
+
return "Next: run `outerlayer init --factory <org>/<factory>` to set up this repository.\n";
|
|
285
|
+
}
|
|
280
286
|
function fail(deps, message) {
|
|
281
287
|
deps.stderr.write(`${C.red}\u2717${C.reset} ${message}
|
|
282
288
|
`);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { sanitizeTerminal } from './chunk-
|
|
4
|
-
import { remoteLookupFailed } from './chunk-
|
|
5
|
-
import { DEFAULT_DASHBOARD } from './chunk-
|
|
3
|
+
import { sanitizeTerminal } from './chunk-CNFVHDHG.js';
|
|
4
|
+
import { remoteLookupFailed } from './chunk-JXYVA45C.js';
|
|
5
|
+
import { DEFAULT_DASHBOARD } from './chunk-4KSQKQXE.js';
|
|
6
6
|
import { resolveGatewayCredentials } from './chunk-PLMTLGYH.js';
|
|
7
7
|
import { readCloudConfig } from './chunk-EABW6AJQ.js';
|
|
8
8
|
import { writeRepoConnection, findGitDirs, readRepoConnection } from './chunk-BJ3KTMDH.js';
|
|
@@ -181,7 +181,7 @@ function saveFactoryConnection(gitCommonDir, saved, factory, now) {
|
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
183
|
function connectedLine(repository, factory, reason) {
|
|
184
|
-
return `Connected ${repository} to factory "${factory.displayName}" in ${factory.organization.displayName} (${REASON_TEXT[reason]}).`;
|
|
184
|
+
return `Connected ${repository} to factory "${factory.displayName}" (${slug(factory)}) in ${factory.organization.displayName} (${REASON_TEXT[reason]}).`;
|
|
185
185
|
}
|
|
186
186
|
function autoConnectedLine(repository, factory, reason) {
|
|
187
187
|
return `Using factory "${factory.displayName}" in ${factory.organization.displayName} for ${repository} (${REASON_TEXT[reason]}); saved for this checkout.`;
|
|
@@ -310,4 +310,4 @@ ${COMMIT_LINE}
|
|
|
310
310
|
return r.code;
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
export { COMMIT_LINE, autoConnectedLine, fetchFactories, isLinkedRepository, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory };
|
|
313
|
+
export { COMMIT_LINE, autoConnectedLine, fetchFactories, isLinkedRepository, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory, workPageUrl };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { autoConnect } from './chunk-
|
|
4
|
-
import { detectActiveSession } from './chunk-
|
|
5
|
-
import { resolveRepoIdentity } from './chunk-
|
|
3
|
+
import { autoConnect } from './chunk-EFZLAYPE.js';
|
|
4
|
+
import { detectActiveSession } from './chunk-IP7BIBXJ.js';
|
|
5
|
+
import { resolveRepoIdentity } from './chunk-JXYVA45C.js';
|
|
6
6
|
import { parseWorkItemEnv } from './chunk-GQD22KKN.js';
|
|
7
7
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
8
8
|
import { defaultFetch } from './chunk-YO4PSLVB.js';
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { writeJobFile, readJobFile } from './chunk-
|
|
4
|
-
import { senderPidfile } from './chunk-
|
|
3
|
+
import { writeJobFile, readJobFile } from './chunk-RMWLBUCJ.js';
|
|
4
|
+
import { senderPidfile } from './chunk-XJKL4BNU.js';
|
|
5
|
+
import { installScrubContext } from './chunk-3D4OYFCD.js';
|
|
5
6
|
import { DOCKERD_LOG } from './chunk-HYZRY4KZ.js';
|
|
6
|
-
import {
|
|
7
|
-
import { AssetError, describeCallFailure, obtainImage, ensureRootfs, gitRemoteFor, startServicesFor, createBuildDisk, machineConfig, refusalCode, resolveAgentUser, AgentUserError, runBuildSteps, removeStagedContext, stageGovernedContext, shellQuote, createRunnerLog, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, formatDuration, retrySend, formatClock, containerSenderCommand, syncInContainer, copyTranscriptsFromContainer, GH_CONFIG_YML, ghHostsYml, ADDED_USER, isLiteralAddress, signalInContainer, deleteBuildDisk, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript } from './chunk-E5DC4VZL.js';
|
|
7
|
+
import { AssetError, describeCallFailure, obtainImage, ensureRootfs, gitRemoteFor, startServicesFor, createBuildDisk, machineConfig, refusalCode, resolveAgentUser, AgentUserError, runBuildSteps, removeStagedContext, stageGovernedContext, shellQuote, createRunnerLog, createContainerRuntime, stopContainer, cleanupContainer, outOfMemoryReason, formatDuration, retrySend, formatClock, containerSenderCommand, syncInContainer, copyTranscriptsFromContainer, GH_CONFIG_YML, ghHostsYml, ADDED_USER, isLiteralAddress, signalInContainer, deleteBuildDisk, startCheckContainer, lifecycleSteps, lifecycleFailureReason, writeEvalInput, EVAL_INPUT_NAME, copyTranscripts, senderSignalScript } from './chunk-MZN7AQOB.js';
|
|
8
8
|
import { readBranchHead, diffBetween, fetchCommit } from './chunk-3FMPZPJQ.js';
|
|
9
9
|
import { isSameProcess, startTimeOf } from './chunk-N5FOE5PS.js';
|
|
10
|
-
import { childEnvironment } from './chunk-
|
|
10
|
+
import { childEnvironment } from './chunk-3KTA5UU2.js';
|
|
11
11
|
import { CLAUDE_CODE_VERSION } from './chunk-CX22S5BA.js';
|
|
12
12
|
import { waitForAgent, vmExecArgs } from './chunk-QKFB4K7X.js';
|
|
13
13
|
import { socketPathProblem, vsockLinks, linkVsockSockets } from './chunk-RSNSZ2LJ.js';
|
|
14
|
-
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-
|
|
15
|
-
import { planArtifactUpload } from './chunk-
|
|
16
|
-
import { scrubText } from './chunk-
|
|
17
|
-
import { isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-
|
|
14
|
+
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-P4MM66C6.js';
|
|
15
|
+
import { planArtifactUpload } from './chunk-CNFVHDHG.js';
|
|
16
|
+
import { scrubText } from './chunk-JXYVA45C.js';
|
|
17
|
+
import { isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-22RMZBGW.js';
|
|
18
18
|
import { parseSize } from './chunk-7RQ73DLO.js';
|
|
19
19
|
import { claudeCredential, repositoriesOf, primaryOf, buildEnvironment, JOB_MOUNT, CHECKOUT_DIR, parseIsolation, proxyEnvironment, containerLocalAddress, destinationEnvironment, CLAUDE_CREDENTIAL_VARIABLES, builtInEnvironment, startBuildServices, BUILT_IN_NAMES, AGENT_CREDENTIAL_MISSING, sharedUserEnvironment, headerVariables, withTunnelRecord, RELAY_PORT, checkEnvironment, EVAL_INPUT_DIR } from './chunk-4Q7OMKAT.js';
|
|
20
|
-
import { parsePolicy } from './chunk-
|
|
20
|
+
import { parsePolicy } from './chunk-2M63GG56.js';
|
|
21
21
|
import { readCloudConfig } from './chunk-EABW6AJQ.js';
|
|
22
22
|
import { withHooksPath, authorEnvironment, commitIdentityRecord } from './chunk-BYT5O5RV.js';
|
|
23
23
|
import { resolveVersion } from './chunk-RA3O54FC.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { ArtifactTombstoneRecordSchema, ArtifactSpoolRecordSchema } from './chunk-
|
|
3
|
+
import { ArtifactTombstoneRecordSchema, ArtifactSpoolRecordSchema } from './chunk-J5M7BSJQ.js';
|
|
4
4
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
5
5
|
import { mkdirSync, appendFileSync, writeFileSync, renameSync, unlinkSync, existsSync, readdirSync, readFileSync, statSync } from 'fs';
|
|
6
6
|
import { join, dirname } from 'path';
|