@outerlayer/cli 0.13.0 → 0.14.1
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 +19 -0
- package/dist/agent-setup-CN2HUBEJ.js +26 -0
- package/dist/{build-LELVCWHV.js → build-BG2YENGK.js} +2 -2
- package/dist/build-info.json +1 -1
- package/dist/{builder-UUS4ORDH.js → builder-2D3WSOOY.js} +4 -4
- package/dist/{check-63IDCEEV.js → check-SRGR36KI.js} +30 -30
- package/dist/{chunk-GI4XXD4I.js → chunk-3NLOVYJQ.js} +4 -4
- package/dist/{chunk-C6IV5BV7.js → chunk-4OGPT6I2.js} +11 -11
- package/dist/{chunk-DXQ5MHCO.js → chunk-FOJGZYFC.js} +11 -5
- package/dist/{chunk-HDTVTA6I.js → chunk-HFKKFTXU.js} +11 -15
- package/dist/{chunk-DPKX26LT.js → chunk-HFKQIZXL.js} +9 -6
- package/dist/{chunk-6S3H3J6H.js → chunk-JJEGKEFV.js} +5 -7
- package/dist/{chunk-P6FX4D43.js → chunk-JYIEHQIF.js} +1 -1
- package/dist/{chunk-XJKL4BNU.js → chunk-KFRM23WD.js} +2 -2
- package/dist/{chunk-3KTA5UU2.js → chunk-KMDLFI4P.js} +1 -1
- package/dist/{chunk-3D4OYFCD.js → chunk-MSASO5O4.js} +42 -6
- package/dist/chunk-MTF3PHVZ.js +161 -0
- package/dist/{chunk-SVEP7PVH.js → chunk-NHDVD7DU.js} +9 -9
- package/dist/{chunk-EFZLAYPE.js → chunk-NPQWKGUA.js} +1 -1
- package/dist/{chunk-SFFHGX3G.js → chunk-PQUM37BK.js} +1 -1
- package/dist/{chunk-MJXXRX4M.js → chunk-Q2UK3C4P.js} +2 -2
- package/dist/{chunk-MZN7AQOB.js → chunk-RBKIH5ST.js} +11 -11
- package/dist/{chunk-TOPDNXHZ.js → chunk-SMHOCDCI.js} +4 -4
- package/dist/{chunk-P4MM66C6.js → chunk-SWHQ4LUM.js} +4 -4
- package/dist/{agent-setup-QE6PSCEZ.js → chunk-SXWS25JC.js} +6 -19
- package/dist/{chunk-CNFVHDHG.js → chunk-WUYTWNMA.js} +3 -1
- package/dist/{chunk-R7OQTKWT.js → chunk-XCK2YAY5.js} +12 -3
- package/dist/{chunk-4QVZCVWT.js → chunk-YDSMROTB.js} +1 -1
- package/dist/{chunk-TCIW27FM.js → chunk-ZA5CHAFY.js} +1 -1
- package/dist/{cli-WSBIAVZU.js → cli-UW2H3UUW.js} +79 -62
- package/dist/{command-N7BAB4XJ.js → command-5LD7G2QQ.js} +22 -22
- package/dist/{connect-cmd-FGYRLLXL.js → connect-cmd-JUAW6MU4.js} +2 -2
- package/dist/{context-adopt-B3PWGFHL.js → context-adopt-PJUMW2EZ.js} +5 -5
- package/dist/{context-materialize-7S6NLLRO.js → context-materialize-FDHYKNDT.js} +5 -5
- package/dist/{docker-BZ55BMBJ.js → docker-4J77Q2BF.js} +5 -5
- package/dist/{doctor-3H25Q7WT.js → doctor-H7REBSLQ.js} +24 -24
- package/dist/{emit-artifact-cmd-IQCRXOH7.js → emit-artifact-cmd-FOGNJXVR.js} +15 -18
- package/dist/{emit-cmd-KDSM5VAO.js → emit-cmd-ZEYWLC2C.js} +3 -2
- package/dist/{emit-criteria-cmd-EYUXME26.js → emit-criteria-cmd-HBP6XS5C.js} +5 -8
- package/dist/{emit-finding-cmd-P4RKBPBB.js → emit-finding-cmd-DLI4MKMN.js} +5 -8
- package/dist/{emit-result-cmd-6XYENU6H.js → emit-result-cmd-MUSL7GQA.js} +9 -12
- package/dist/{hook-fast-PXWKQPN6.js → hook-fast-WYQD6D7T.js} +1 -1
- package/dist/{import-capture-cmd-2BKM5I2N.js → import-capture-cmd-6QVCOIHK.js} +8 -11
- package/dist/{import-ruler-cmd-IXR7YK47.js → import-ruler-cmd-KLRGRBCP.js} +5 -8
- package/dist/index.js +3 -3
- package/dist/{init-2LWVS4AH.js → init-NTXA3SN7.js} +23 -23
- package/dist/{init-ZL7ORPTF.js → init-UBXK6MF7.js} +23 -23
- package/dist/{init-cmd-JXOBCOIB.js → init-cmd-NARDUPIG.js} +13 -8
- package/dist/init-update-O5YYFGF4.js +165 -0
- package/dist/{loop-XOAE6ZIY.js → loop-SW2M5VDD.js} +30 -30
- package/dist/{machine-G6PY2J2J.js → machine-U66FKVDP.js} +21 -21
- package/dist/mcp-install-cmd-FDTPQQS6.js +9 -0
- package/dist/{runner-key-TDTLNAKJ.js → runner-key-3JSMDRJA.js} +23 -23
- package/dist/{session-sender-XVGZFWRK.js → session-sender-4M247XSV.js} +5 -5
- package/dist/{starter-pack-B7JPGEDO.js → starter-pack-IB4UUIX3.js} +2 -2
- package/dist/{status-MRTPG34B.js → status-STZYPU3W.js} +26 -26
- package/dist/{sync-cmd-UBUZMMDN.js → sync-cmd-UWD5JOFU.js} +4 -4
- package/dist/{watch-STNPEWD6.js → watch-DBNB7R6X.js} +4 -4
- package/dist/{work-claim-cmd-CWGYEIJE.js → work-claim-cmd-LY4U6QHN.js} +11 -11
- package/dist/{work-cmd-X7NMJDFL.js → work-cmd-RVRQ32EH.js} +4 -4
- package/dist/{work-comment-cmd-FI2TMAYQ.js → work-comment-cmd-FFUM4TJU.js} +7 -10
- package/dist/{work-open-pr-cmd-OVHJ5I5H.js → work-open-pr-cmd-HLDWP4T2.js} +7 -10
- package/dist/{work-pr-cmd-Y5TDMQ4O.js → work-pr-cmd-L77K32WK.js} +4 -4
- package/package.json +1 -1
- package/skill-pack/maintained/emitting-evidence/SKILL.md +8 -2
- package/skill-pack/shipped.json +75 -0
- package/skill-pack/template/build/SKILL.md +8 -3
- package/skill-pack/template/build/references/release.md +42 -11
- package/skill-pack/template/build/references/review-loop.md +1 -1
- package/skill-pack/template/build/scripts/criterion-citations.mjs +184 -0
- package/skill-pack/template/spec/SKILL.md +33 -22
- package/skill-pack/template/writing-specs/SKILL.md +36 -3
- package/skill-pack/template/writing-specs/references/agents-snippet.md +57 -0
- package/skill-pack/template/writing-tests/SKILL.md +117 -0
- package/skill-pack/validators/acceptance-criteria.yaml +35 -0
- package/dist/mcp-install-cmd-VXVIH7PH.js +0 -9
- package/dist/{chunk-NX57IBNK.js → chunk-4NPZVMJU.js} +2 -2
- package/dist/{chunk-3FMPZPJQ.js → chunk-R7PF5OOU.js} +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @outerlayer/cli
|
|
2
2
|
|
|
3
|
+
## 0.14.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f47136a: The starter `/build` skill now links each criterion to the tests that cite it, so the work item's Criteria tab lists them instead of "No tests found". A new script, `criterion-citations.mjs`, runs on the criteria judge's report before it is emitted. It finds tests that name a criterion's id in a title or a comment, whatever the id's form. `outerlayer init --update` adds the script to repositories set up earlier.
|
|
8
|
+
|
|
9
|
+
## 0.14.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 4921c80: `outerlayer init --update` brings the files `init` wrote once up to the installed CLI's version: the template skills, `.outerlayer/policy.yaml`, the `code-review.yaml` and `acceptance-criteria.yaml` checks in `.outerlayer/validators/`, and the `outerlayer` and `outerlayer-docs` MCP entries. A file still equal to what an earlier release wrote is replaced, a missing one is written, and a file you edited is never touched. It then runs `outerlayer context emit` and leaves the changes uncommitted. `--dry-run` prints the plan, with a command to compare each edited file. `outerlayer doctor` adds a **Starter files** check that reports each file as current, outdated, edited or missing. An `outerlayer` MCP entry an earlier `init` wrote is reported there, not by the **MCP server** check. The quickstart no longer says the MCP server needs a global install.
|
|
14
|
+
- 23aa007: The starter skills `outerlayer init` installs gain three practices. `/spec` decides a docs verdict and a structural verdict for every issue, each with a one-line reason, and `writing-specs` defines both. A new `writing-tests` template holds a language-neutral test standard: strong assertions, the right seam, a criterion id in a comment above its test, and an optional mutation check. `writing-specs/references/agents-snippet.md` holds optional writing rules to paste into an instructions file. The `writing-specs` frontmatter now parses as YAML, so tools that read it see its description.
|
|
15
|
+
- 789f55f: `outerlayer sync` prints a line for each artifact it uploads, with its file name, caption and dashboard link, so an agent can pass the link straight to `outerlayer emit code-review --link`. `sync --json` lists them under `uploadedArtifacts`, and the spool state records each artifact's server id and link against its client id. `outerlayer emit artifact` prints the link when it uploads at once, and inside a session says the next `sync` prints it.
|
|
16
|
+
- ef97624: `outerlayer init` writes a second check, `.outerlayer/validators/acceptance-criteria.yaml`, only when it is missing. The starter `/build` skill records its criteria judge's verdict on that check, so every pull request it opens has a row for it. The build records pass only when the judge found every criterion it judged satisfied, and fail when it found one unmet. When there is no criterion to judge, it records nothing, so the row reads "not proven".
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- 0e6256b: `work comment`, `work threads`, `work pr`, `work open-pr`, `emit result`, `emit artifact`, `emit criteria`, `emit finding`, `context emit`, `import capture` and `import ruler` no longer print ANSI color codes when output is piped or `NO_COLOR` is set. They follow the same color rules as the rest of the CLI, including `--no-color` and `FORCE_COLOR`. Output on a terminal is unchanged.
|
|
21
|
+
|
|
3
22
|
## 0.13.0
|
|
4
23
|
|
|
5
24
|
### Minor Changes
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
export { keepHandWritten, runAgentSetup } from './chunk-SXWS25JC.js';
|
|
4
|
+
import './chunk-HFKKFTXU.js';
|
|
5
|
+
import './chunk-XCK2YAY5.js';
|
|
6
|
+
import './chunk-FOJGZYFC.js';
|
|
7
|
+
import './chunk-YRYMNBGQ.js';
|
|
8
|
+
import './chunk-3NLOVYJQ.js';
|
|
9
|
+
import './chunk-LCEXHCHD.js';
|
|
10
|
+
import './chunk-ZJSNLVCE.js';
|
|
11
|
+
import './chunk-YO4PSLVB.js';
|
|
12
|
+
import './chunk-BYT5O5RV.js';
|
|
13
|
+
import './chunk-ZA5CHAFY.js';
|
|
14
|
+
import './chunk-2M63GG56.js';
|
|
15
|
+
import './chunk-PLMTLGYH.js';
|
|
16
|
+
import './chunk-J5M7BSJQ.js';
|
|
17
|
+
import './chunk-EABW6AJQ.js';
|
|
18
|
+
import './chunk-RA3O54FC.js';
|
|
19
|
+
import './chunk-V7NIVOFD.js';
|
|
20
|
+
import './chunk-ZM2IMMYN.js';
|
|
21
|
+
import './chunk-XCCLFVXM.js';
|
|
22
|
+
import './chunk-BJ3KTMDH.js';
|
|
23
|
+
import './chunk-VNVZDWO3.js';
|
|
24
|
+
import './chunk-Z5GEFMRW.js';
|
|
25
|
+
|
|
26
|
+
createRequire(import.meta.url);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { buildRepositoryImage } from './chunk-
|
|
4
|
-
import './chunk-N5FOE5PS.js';
|
|
3
|
+
export { buildRepositoryImage } from './chunk-R7PF5OOU.js';
|
|
5
4
|
export { RecipeError } from './chunk-QOZKPLVJ.js';
|
|
5
|
+
import './chunk-N5FOE5PS.js';
|
|
6
6
|
import './chunk-CX22S5BA.js';
|
|
7
7
|
import './chunk-BYT5O5RV.js';
|
|
8
8
|
import './chunk-ZM2IMMYN.js';
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"2026-10-
|
|
1
|
+
{"id":"2026-10-09T00:29:08.046Z+2d52691","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-
|
|
4
|
-
import './chunk-CX22S5BA.js';
|
|
5
|
-
import './chunk-JXYVA45C.js';
|
|
3
|
+
export { MIN_BUILDX_VERSION, builderName, builderSpec, buildxState, ensureBuilder, ensureFailureCount, isOutOfMemory, proxyEnvironment, trackImageBuild } from './chunk-4NPZVMJU.js';
|
|
6
4
|
import './chunk-7RQ73DLO.js';
|
|
7
5
|
import './chunk-4Q7OMKAT.js';
|
|
8
|
-
import './chunk-
|
|
6
|
+
import './chunk-CX22S5BA.js';
|
|
7
|
+
import './chunk-JXYVA45C.js';
|
|
9
8
|
import './chunk-BYT5O5RV.js';
|
|
9
|
+
import './chunk-J5M7BSJQ.js';
|
|
10
10
|
import './chunk-ZM2IMMYN.js';
|
|
11
11
|
import './chunk-Z5GEFMRW.js';
|
|
12
12
|
|
|
@@ -1,69 +1,69 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { probeCredentials } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
import { probeCredentials } from './chunk-NHDVD7DU.js';
|
|
4
|
+
import './chunk-4OGPT6I2.js';
|
|
5
5
|
import './chunk-O765JR4W.js';
|
|
6
6
|
import './chunk-UGP76IZ5.js';
|
|
7
7
|
import './chunk-3JVYMD4G.js';
|
|
8
8
|
import './chunk-YETTWTAY.js';
|
|
9
9
|
import './chunk-RMWLBUCJ.js';
|
|
10
10
|
import './chunk-I2UOAV7X.js';
|
|
11
|
+
import './chunk-HYZRY4KZ.js';
|
|
11
12
|
import './chunk-FI5UYJMQ.js';
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
13
|
+
import './chunk-KFRM23WD.js';
|
|
14
|
+
import './chunk-MSASO5O4.js';
|
|
14
15
|
import './chunk-HHJDN6AU.js';
|
|
15
|
-
import './chunk-
|
|
16
|
-
import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem } from './chunk-TOPDNXHZ.js';
|
|
16
|
+
import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem } from './chunk-SMHOCDCI.js';
|
|
17
17
|
import './chunk-YYYRBYWG.js';
|
|
18
18
|
import './chunk-TI7B7UEO.js';
|
|
19
19
|
import './chunk-TBT347UY.js';
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
20
|
+
import './chunk-Q2UK3C4P.js';
|
|
21
|
+
import './chunk-JYIEHQIF.js';
|
|
22
|
+
import './chunk-RBKIH5ST.js';
|
|
23
|
+
import './chunk-KMDLFI4P.js';
|
|
24
|
+
import './chunk-QKFB4K7X.js';
|
|
25
|
+
import './chunk-RSNSZ2LJ.js';
|
|
23
26
|
import './chunk-T5VPP6H7.js';
|
|
24
27
|
import './chunk-RLYZLUQ7.js';
|
|
25
28
|
import { parseRunnerEnv } from './chunk-6MZSX4M7.js';
|
|
26
|
-
import './chunk-
|
|
29
|
+
import './chunk-SWHQ4LUM.js';
|
|
30
|
+
import './chunk-NPQWKGUA.js';
|
|
31
|
+
import './chunk-IP7BIBXJ.js';
|
|
32
|
+
import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-22RMZBGW.js';
|
|
33
|
+
import './chunk-UXYLWVTQ.js';
|
|
34
|
+
import './chunk-R7PF5OOU.js';
|
|
35
|
+
import './chunk-QOZKPLVJ.js';
|
|
27
36
|
import './chunk-N5FOE5PS.js';
|
|
28
37
|
import './chunk-OGFGZQA3.js';
|
|
29
|
-
import './chunk-
|
|
30
|
-
import './chunk-
|
|
31
|
-
import './chunk-
|
|
38
|
+
import './chunk-4NPZVMJU.js';
|
|
39
|
+
import './chunk-7RQ73DLO.js';
|
|
40
|
+
import './chunk-4Q7OMKAT.js';
|
|
32
41
|
import './chunk-CX22S5BA.js';
|
|
33
|
-
import './chunk-QKFB4K7X.js';
|
|
34
|
-
import './chunk-RSNSZ2LJ.js';
|
|
35
42
|
import './chunk-F7CU5ABH.js';
|
|
36
43
|
import './chunk-BKO6JEZI.js';
|
|
37
|
-
import './chunk-
|
|
38
|
-
import './chunk-
|
|
39
|
-
import './chunk-IP7BIBXJ.js';
|
|
40
|
-
import './chunk-4QVZCVWT.js';
|
|
41
|
-
import './chunk-CNFVHDHG.js';
|
|
44
|
+
import './chunk-YDSMROTB.js';
|
|
45
|
+
import './chunk-WUYTWNMA.js';
|
|
42
46
|
import './chunk-JXYVA45C.js';
|
|
43
47
|
import './chunk-4KSQKQXE.js';
|
|
44
48
|
import './chunk-N6LURUEF.js';
|
|
45
49
|
import './chunk-YRYMNBGQ.js';
|
|
46
|
-
import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-22RMZBGW.js';
|
|
47
|
-
import './chunk-UXYLWVTQ.js';
|
|
48
|
-
import './chunk-7RQ73DLO.js';
|
|
49
|
-
import './chunk-4Q7OMKAT.js';
|
|
50
50
|
import './chunk-GQD22KKN.js';
|
|
51
51
|
import './chunk-WZBHBH3J.js';
|
|
52
52
|
import './chunk-5QRP3MVS.js';
|
|
53
|
-
import './chunk-
|
|
54
|
-
import './chunk-ZJSNLVCE.js';
|
|
55
|
-
import './chunk-TCIW27FM.js';
|
|
53
|
+
import './chunk-3NLOVYJQ.js';
|
|
56
54
|
import './chunk-LCEXHCHD.js';
|
|
57
|
-
import './chunk-
|
|
55
|
+
import './chunk-ZJSNLVCE.js';
|
|
58
56
|
import './chunk-YO4PSLVB.js';
|
|
57
|
+
import './chunk-BYT5O5RV.js';
|
|
58
|
+
import './chunk-ZA5CHAFY.js';
|
|
59
|
+
import './chunk-2M63GG56.js';
|
|
59
60
|
import './chunk-PLMTLGYH.js';
|
|
60
61
|
import './chunk-J5M7BSJQ.js';
|
|
61
62
|
import './chunk-EABW6AJQ.js';
|
|
62
|
-
import './chunk-BYT5O5RV.js';
|
|
63
63
|
import './chunk-RA3O54FC.js';
|
|
64
64
|
import './chunk-V7NIVOFD.js';
|
|
65
65
|
import './chunk-ZM2IMMYN.js';
|
|
66
|
-
import './chunk-
|
|
66
|
+
import './chunk-PQUM37BK.js';
|
|
67
67
|
import './chunk-XCCLFVXM.js';
|
|
68
68
|
import './chunk-BJ3KTMDH.js';
|
|
69
69
|
import './chunk-VNVZDWO3.js';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
|
|
4
|
-
import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-TCIW27FM.js';
|
|
5
3
|
import { readPin, pinExists, readBuildHold, readContextManifest, manifestFilesPresent, writeDegraded, writeSourceCache, SOURCE_CACHE_TTL_RETRY_MS, SOURCE_CACHE_TTL_SUCCESS_MS, isLastCheckFresh, readDegraded, touchLastCheck, clearDegraded, writeContextManifest, writePinIfChanged, readSourceCache, isSourceCacheFresh } from './chunk-LCEXHCHD.js';
|
|
6
|
-
import {
|
|
4
|
+
import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
|
|
7
5
|
import { defaultFetch } from './chunk-YO4PSLVB.js';
|
|
8
|
-
import { resolveGatewayCredentials } from './chunk-PLMTLGYH.js';
|
|
9
6
|
import { withTokenHeader } from './chunk-BYT5O5RV.js';
|
|
7
|
+
import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-ZA5CHAFY.js';
|
|
8
|
+
import { normalizeRepoName, parseGoverns, CONTEXT_SOURCE_CONFIG_PATH, parseOuterlayerConfig, classifyTree, emitTree } from './chunk-2M63GG56.js';
|
|
9
|
+
import { resolveGatewayCredentials } from './chunk-PLMTLGYH.js';
|
|
10
10
|
import { ensureContextExcludes, ensurePreCommitGuardHook } from './chunk-XCCLFVXM.js';
|
|
11
11
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
12
12
|
import { execFileSync } from 'child_process';
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { writeJobFile, readJobFile } from './chunk-RMWLBUCJ.js';
|
|
4
|
-
import { senderPidfile } from './chunk-XJKL4BNU.js';
|
|
5
|
-
import { installScrubContext } from './chunk-3D4OYFCD.js';
|
|
6
4
|
import { DOCKERD_LOG } from './chunk-HYZRY4KZ.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { childEnvironment } from './chunk-
|
|
11
|
-
import { CLAUDE_CODE_VERSION } from './chunk-CX22S5BA.js';
|
|
5
|
+
import { senderPidfile } from './chunk-KFRM23WD.js';
|
|
6
|
+
import { installScrubContext } from './chunk-MSASO5O4.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-RBKIH5ST.js';
|
|
8
|
+
import { childEnvironment } from './chunk-KMDLFI4P.js';
|
|
12
9
|
import { waitForAgent, vmExecArgs } from './chunk-QKFB4K7X.js';
|
|
13
10
|
import { socketPathProblem, vsockLinks, linkVsockSockets } from './chunk-RSNSZ2LJ.js';
|
|
14
|
-
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-
|
|
15
|
-
import { planArtifactUpload } from './chunk-CNFVHDHG.js';
|
|
16
|
-
import { scrubText } from './chunk-JXYVA45C.js';
|
|
11
|
+
import { WorkCommandError, postJson, isSignatureRefusal, getJson } from './chunk-SWHQ4LUM.js';
|
|
17
12
|
import { isBuiltinContainer, isBuiltinProcess, isBuiltinVm, DEFAULT_CHECK_TIME_LIMIT_MINUTES } from './chunk-22RMZBGW.js';
|
|
13
|
+
import { readBranchHead, diffBetween, fetchCommit } from './chunk-R7PF5OOU.js';
|
|
14
|
+
import { isSameProcess, startTimeOf } from './chunk-N5FOE5PS.js';
|
|
18
15
|
import { parseSize } from './chunk-7RQ73DLO.js';
|
|
19
16
|
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';
|
|
17
|
+
import { CLAUDE_CODE_VERSION } from './chunk-CX22S5BA.js';
|
|
18
|
+
import { planArtifactUpload } from './chunk-WUYTWNMA.js';
|
|
19
|
+
import { scrubText } from './chunk-JXYVA45C.js';
|
|
20
|
+
import { withHooksPath, authorEnvironment, commitIdentityRecord } from './chunk-BYT5O5RV.js';
|
|
20
21
|
import { parsePolicy } from './chunk-2M63GG56.js';
|
|
21
22
|
import { readCloudConfig } from './chunk-EABW6AJQ.js';
|
|
22
|
-
import { withHooksPath, authorEnvironment, commitIdentityRecord } from './chunk-BYT5O5RV.js';
|
|
23
23
|
import { resolveVersion } from './chunk-RA3O54FC.js';
|
|
24
24
|
import { signerFor } from './chunk-V7NIVOFD.js';
|
|
25
25
|
import { runnerDir, buildDir, vsockPath, RUNNER_FILE_MODE } from './chunk-ZM2IMMYN.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { C } from './chunk-YRYMNBGQ.js';
|
|
4
|
-
import { resolvePackRoot, loadTemplateFiles, loadMaintainedFiles, TEMPLATE_SKILLS, skillDir, writeMaintainedFiles, MAINTAINED_SKILLS } from './chunk-
|
|
4
|
+
import { resolvePackRoot, loadTemplateFiles, loadMaintainedFiles, TEMPLATE_SKILLS, skillDir, writeMaintainedFiles, MAINTAINED_SKILLS } from './chunk-ZA5CHAFY.js';
|
|
5
5
|
import { resolvePackageVersion } from './chunk-RA3O54FC.js';
|
|
6
6
|
import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
7
7
|
import { join, dirname } from 'path';
|
|
@@ -10,7 +10,10 @@ createRequire(import.meta.url);
|
|
|
10
10
|
var DEFAULT_TEMPLATE = "default";
|
|
11
11
|
var POLICY_PATH = ".outerlayer/policy.yaml";
|
|
12
12
|
var POLICY_CONTENT = "review: required\n";
|
|
13
|
-
var VALIDATOR_FILES = [
|
|
13
|
+
var VALIDATOR_FILES = [
|
|
14
|
+
{ name: "code-review.yaml", label: "the code review check" },
|
|
15
|
+
{ name: "acceptance-criteria.yaml", label: "the criteria judge check" }
|
|
16
|
+
];
|
|
14
17
|
var VALIDATORS_DIR = ".outerlayer/validators";
|
|
15
18
|
var StarterPackError = class extends Error {
|
|
16
19
|
};
|
|
@@ -24,7 +27,7 @@ function installStarterPack(opts) {
|
|
|
24
27
|
const version = opts.version ?? resolvePackageVersion();
|
|
25
28
|
const templateFiles = loadTemplateFiles(packRoot, version);
|
|
26
29
|
const maintainedFiles = loadMaintainedFiles(packRoot, version);
|
|
27
|
-
const validatorFiles = VALIDATOR_FILES.map((name) => ({
|
|
30
|
+
const validatorFiles = VALIDATOR_FILES.map(({ name }) => ({
|
|
28
31
|
path: `${VALIDATORS_DIR}/${name}`,
|
|
29
32
|
content: readFileSync(join(packRoot, "validators", name), "utf8")
|
|
30
33
|
}));
|
|
@@ -72,6 +75,9 @@ function installStarterPack(opts) {
|
|
|
72
75
|
};
|
|
73
76
|
}
|
|
74
77
|
var skillFile = (skill) => `${skillDir(skill)}/SKILL.md`;
|
|
78
|
+
function validatorLabel(path) {
|
|
79
|
+
return VALIDATOR_FILES.find(({ name }) => path === `${VALIDATORS_DIR}/${name}`)?.label ?? "a check";
|
|
80
|
+
}
|
|
75
81
|
function formatStarterPackOutput(result) {
|
|
76
82
|
const lines = [];
|
|
77
83
|
lines.push(`${C.green}\u2713${C.reset} Installed the starter skills in .outerlayer/skills/`, "");
|
|
@@ -87,7 +93,7 @@ function formatStarterPackOutput(result) {
|
|
|
87
93
|
"",
|
|
88
94
|
result.policy === "written" ? `${C.green}\u2713${C.reset} Wrote ${POLICY_PATH} (review required)` : `${C.dim}${POLICY_PATH} already exists \u2014 left as it is${C.reset}`,
|
|
89
95
|
...result.validatorsWritten.map(
|
|
90
|
-
(path) => `${C.green}\u2713${C.reset} Wrote ${path} (yours to edit \u2014
|
|
96
|
+
(path) => `${C.green}\u2713${C.reset} Wrote ${path} (yours to edit \u2014 ${validatorLabel(path)})`
|
|
91
97
|
),
|
|
92
98
|
...result.validatorsKept.map((path) => `${C.dim}${path} already exists \u2014 left as it is${C.reset}`),
|
|
93
99
|
"",
|
|
@@ -97,4 +103,4 @@ function formatStarterPackOutput(result) {
|
|
|
97
103
|
return lines.join("\n") + "\n";
|
|
98
104
|
}
|
|
99
105
|
|
|
100
|
-
export { StarterPackError, assertKnownTemplate, formatStarterPackOutput, installStarterPack };
|
|
106
|
+
export { POLICY_CONTENT, POLICY_PATH, StarterPackError, VALIDATORS_DIR, VALIDATOR_FILES, assertKnownTemplate, formatStarterPackOutput, installStarterPack };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import {
|
|
3
|
+
import { C } from './chunk-YRYMNBGQ.js';
|
|
4
|
+
import { maintainedFilesForExistingSkills, loadMaintainedFiles, writeMaintainedFiles } from './chunk-ZA5CHAFY.js';
|
|
4
5
|
import { emitTree, parseOuterlayerConfig, classifyTree, generatedHeaderSource, CONTEXT_PIN_FILENAME, normalizePath } from './chunk-2M63GG56.js';
|
|
5
6
|
import { existsSync, readFileSync, mkdirSync, writeFileSync, copyFileSync, readdirSync } from 'fs';
|
|
6
7
|
import { join, dirname, relative, sep } from 'path';
|
|
@@ -9,11 +10,6 @@ createRequire(import.meta.url);
|
|
|
9
10
|
var CONTENT_KINDS = /* @__PURE__ */ new Set(["instructions", "skill", "skill-reference", "command", "mcp"]);
|
|
10
11
|
var SKIP_DIRS = /* @__PURE__ */ new Set(["node_modules", ".git"]);
|
|
11
12
|
var NO_CONFIG_MESSAGE = 'no .outerlayer/config.json with a non-empty targets array \u2014 create one, e.g. {"targets": ["claude-code"]}';
|
|
12
|
-
var GREEN = "\x1B[32m";
|
|
13
|
-
var YELLOW = "\x1B[33m";
|
|
14
|
-
var RED = "\x1B[31m";
|
|
15
|
-
var DIM = "\x1B[2m";
|
|
16
|
-
var RESET = "\x1B[0m";
|
|
17
13
|
var EmitError = class extends Error {
|
|
18
14
|
};
|
|
19
15
|
function resolveTargetsFromConfig(repoRoot) {
|
|
@@ -87,20 +83,20 @@ function writeOutputs(repoRoot, result, maintained) {
|
|
|
87
83
|
function renderSuccess(targets, files, copies, maintained) {
|
|
88
84
|
const copySuffix = copies.length > 0 ? `, ${copies.length} ${copies.length === 1 ? "copy" : "copies"}` : "";
|
|
89
85
|
const lines = [
|
|
90
|
-
`${
|
|
86
|
+
`${C.green}\u2713${C.reset} emitted ${files.length} file${files.length === 1 ? "" : "s"}${copySuffix} for ${C.dim}${targets.join(", ")}${C.reset}`
|
|
91
87
|
];
|
|
92
|
-
for (const path of maintained) lines.push(` ${
|
|
88
|
+
for (const path of maintained) lines.push(` ${C.dim}updated ${path} to this CLI's version${C.reset}`);
|
|
93
89
|
return lines.join("\n");
|
|
94
90
|
}
|
|
95
91
|
function renderFailure(errors) {
|
|
96
|
-
const lines = [`${
|
|
97
|
-
for (const e of errors) lines.push(` ${
|
|
92
|
+
const lines = [`${C.red}\u2717${C.reset} emit failed \u2014 nothing written`];
|
|
93
|
+
for (const e of errors) lines.push(` ${C.red}\u2717${C.reset} ${e.path}: ${e.message}`);
|
|
98
94
|
return lines.join("\n");
|
|
99
95
|
}
|
|
100
96
|
function renderCheck(targets, drift) {
|
|
101
|
-
if (drift.length === 0) return `${
|
|
102
|
-
const lines = [`${
|
|
103
|
-
for (const d of drift) lines.push(` ${
|
|
97
|
+
if (drift.length === 0) return `${C.green}\u2713${C.reset} up to date for ${C.dim}${targets.join(", ")}${C.reset}`;
|
|
98
|
+
const lines = [`${C.red}\u2717${C.reset} drift detected (${drift.length}) \u2014 run \`outerlayer emit\` to update`];
|
|
99
|
+
for (const d of drift) lines.push(` ${C.red}\u2717${C.reset} ${d.kind.padEnd(8)} ${d.path}`);
|
|
104
100
|
return lines.join("\n");
|
|
105
101
|
}
|
|
106
102
|
function compareFile(repoRoot, path, expectedContent) {
|
|
@@ -205,7 +201,7 @@ function runEmit(opts = {}) {
|
|
|
205
201
|
process.stderr.write(output + "\n");
|
|
206
202
|
} else {
|
|
207
203
|
process.stdout.write(output + "\n");
|
|
208
|
-
for (const w of result.warnings) process.stderr.write(` ${
|
|
204
|
+
for (const w of result.warnings) process.stderr.write(` ${C.yellow}!${C.reset} ${w.path}: ${w.message}
|
|
209
205
|
`);
|
|
210
206
|
}
|
|
211
207
|
}
|
|
@@ -249,7 +245,7 @@ function runCheck(cwd, opts, targets, result, hasErrors, sourcePaths, maintained
|
|
|
249
245
|
process.stderr.write(output + "\n");
|
|
250
246
|
} else {
|
|
251
247
|
process.stdout.write(output + "\n");
|
|
252
|
-
for (const w of result.warnings) process.stderr.write(` ${
|
|
248
|
+
for (const w of result.warnings) process.stderr.write(` ${C.yellow}!${C.reset} ${w.path}: ${w.message}
|
|
253
249
|
`);
|
|
254
250
|
}
|
|
255
251
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
+
import { checkStarterFiles } from './chunk-MTF3PHVZ.js';
|
|
4
|
+
import { resolveCredentials, getJson, WorkCommandError } from './chunk-SWHQ4LUM.js';
|
|
3
5
|
import { readStatuslineState, STATE_FRESH_MS } from './chunk-F47JBIAW.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { sanitizeTerminal } from './chunk-CNFVHDHG.js';
|
|
6
|
+
import { isLinkedRepository } from './chunk-YDSMROTB.js';
|
|
7
|
+
import { sanitizeTerminal } from './chunk-WUYTWNMA.js';
|
|
7
8
|
import { resolveRepoIdentity, compareVersions, SUPPORTED_VERSIONS } from './chunk-JXYVA45C.js';
|
|
8
9
|
import { C } from './chunk-YRYMNBGQ.js';
|
|
9
10
|
import { readSettings, settingsPath, isOurStatuslineSlot, statuslineWrappedOriginal, REGISTERED_EVENTS, isOurHookCommand, ourCommandBins, cliBinResolvable, ourDirectScriptBins, wrappedOriginalCommand } from './chunk-5QRP3MVS.js';
|
|
@@ -11,7 +12,7 @@ import { readPin, readContextManifest, readDegraded, readSourceCache } from './c
|
|
|
11
12
|
import { defaultFetch } from './chunk-YO4PSLVB.js';
|
|
12
13
|
import { resolveGatewayCredentials } from './chunk-PLMTLGYH.js';
|
|
13
14
|
import { readCloudConfig } from './chunk-EABW6AJQ.js';
|
|
14
|
-
import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-
|
|
15
|
+
import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-PQUM37BK.js';
|
|
15
16
|
import { deadHooksState, preparePackageManagerCommand, contextExcludesPresent } from './chunk-XCCLFVXM.js';
|
|
16
17
|
import { findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
17
18
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
@@ -174,6 +175,7 @@ function runDoctor(env = {}) {
|
|
|
174
175
|
const now = env.now ?? Date.now;
|
|
175
176
|
const laptop = env.runnerHost !== true;
|
|
176
177
|
const transcripts = laptop ? scanTranscripts(home) : void 0;
|
|
178
|
+
const starter = laptop ? checkStarterFiles(env.cwd) : void 0;
|
|
177
179
|
return [
|
|
178
180
|
...laptop ? [checkClaudeDir(home), checkTranscripts(transcripts, now), ...checkHooks(home, env.cwd, transcripts, now)] : [LAPTOP_CHECKS_NOT_APPLICABLE],
|
|
179
181
|
...checkDeadHooksState(env.cwd),
|
|
@@ -186,7 +188,8 @@ function runDoctor(env = {}) {
|
|
|
186
188
|
checkSettingsValid(home, env.cwd),
|
|
187
189
|
...laptop ? checkStatusline(home, now, env.cwd) : [],
|
|
188
190
|
...checkInstalls(env),
|
|
189
|
-
...
|
|
191
|
+
...starter?.checks ?? [],
|
|
192
|
+
...starter !== void 0 && !starter.mcpOutdated ? checkMcpCommand(env.cwd, env.processEnv) : [],
|
|
190
193
|
...checkContextSource(home, env.cwd),
|
|
191
194
|
...checkInstalledCli(home, env.cwd ?? process.cwd())
|
|
192
195
|
];
|
|
@@ -1092,7 +1095,7 @@ async function gatherDoctorChecks() {
|
|
|
1092
1095
|
const { runnerVmCheck } = await import('./doctor-53F2PYY7.js');
|
|
1093
1096
|
checks.push(runnerVmCheck(configPath, { lima: realLima(), home: homeFromEnv(), instance: runnerVm.instance }));
|
|
1094
1097
|
} else if (hasRunnerBlock(configPath)) {
|
|
1095
|
-
const { runnerHostChecks } = await import('./doctor-
|
|
1098
|
+
const { runnerHostChecks } = await import('./doctor-H7REBSLQ.js');
|
|
1096
1099
|
const hooks = (() => {
|
|
1097
1100
|
try {
|
|
1098
1101
|
return loadRunnerConfig(configPath).hooks;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { autoConnect } from './chunk-
|
|
3
|
+
import { autoConnect } from './chunk-NPQWKGUA.js';
|
|
4
4
|
import { detectActiveSession } from './chunk-IP7BIBXJ.js';
|
|
5
5
|
import { resolveRepoIdentity } from './chunk-JXYVA45C.js';
|
|
6
|
+
import { C } from './chunk-YRYMNBGQ.js';
|
|
6
7
|
import { parseWorkItemEnv } from './chunk-GQD22KKN.js';
|
|
7
8
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
8
9
|
import { defaultFetch } from './chunk-YO4PSLVB.js';
|
|
@@ -12,9 +13,6 @@ import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
|
12
13
|
createRequire(import.meta.url);
|
|
13
14
|
|
|
14
15
|
// src/work-pr-cmd.ts
|
|
15
|
-
var GREEN = "\x1B[32m";
|
|
16
|
-
var DIM = "\x1B[2m";
|
|
17
|
-
var RESET = "\x1B[0m";
|
|
18
16
|
var WorkPrCommandError = class extends Error {
|
|
19
17
|
};
|
|
20
18
|
function resolveCredentials(opts) {
|
|
@@ -43,7 +41,7 @@ function sessionNotOnItemMessage(error, sessionId) {
|
|
|
43
41
|
}
|
|
44
42
|
function itemLabel(data) {
|
|
45
43
|
if (data.workItemNumber == null) return data.workItemId;
|
|
46
|
-
return data.workItemTitle ? `item ${data.workItemNumber} ${
|
|
44
|
+
return data.workItemTitle ? `item ${data.workItemNumber} ${C.dim}\xB7${C.reset} ${data.workItemTitle}` : `item ${data.workItemNumber}`;
|
|
47
45
|
}
|
|
48
46
|
async function runWorkPrWithdraw(opts, ctx) {
|
|
49
47
|
const itemNumber = parseTrackerNumber(opts.item);
|
|
@@ -88,7 +86,7 @@ async function runWorkPrWithdraw(opts, ctx) {
|
|
|
88
86
|
throw new WorkPrCommandError(json.error?.message ?? `request failed (${response.status})`);
|
|
89
87
|
}
|
|
90
88
|
const data = json.data;
|
|
91
|
-
const output = opts.json ? JSON.stringify(data) : `${
|
|
89
|
+
const output = opts.json ? JSON.stringify(data) : `${C.green}\u2713${C.reset} withdrawn ${C.dim}\xB7${C.reset} ${data.repository}#${data.prNumber} ${C.dim}from${C.reset} item ${itemNumber}`;
|
|
92
90
|
if (!opts.quiet) process.stdout.write(output + "\n");
|
|
93
91
|
return { data, output };
|
|
94
92
|
}
|
|
@@ -170,7 +168,7 @@ async function runWorkPr(opts) {
|
|
|
170
168
|
}
|
|
171
169
|
const data = json.data;
|
|
172
170
|
const verb = data.created ? "declared" : "already declared";
|
|
173
|
-
const output = opts.json ? JSON.stringify(data) : `${
|
|
171
|
+
const output = opts.json ? JSON.stringify(data) : `${C.green}\u2713${C.reset} ${verb} ${C.dim}\xB7${C.reset} ${data.repository}#${data.prNumber} ${C.dim}\u2192${C.reset} ${itemLabel(data)}`;
|
|
174
172
|
if (!opts.quiet) process.stdout.write(output + "\n");
|
|
175
173
|
return { data, output };
|
|
176
174
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { MIN_ENGINE_MAJOR } from './chunk-
|
|
3
|
+
import { MIN_ENGINE_MAJOR } from './chunk-RBKIH5ST.js';
|
|
4
4
|
import { firecrackerArch, MICROVM_ARCHES, guestAssetsPinned } from './chunk-CX22S5BA.js';
|
|
5
5
|
import { spawnSync } from 'child_process';
|
|
6
6
|
import { existsSync, accessSync, constants, statSync, readFileSync } from 'fs';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { LiveUploader } from './chunk-
|
|
3
|
+
import { LiveUploader } from './chunk-MSASO5O4.js';
|
|
4
4
|
import { CaptureDaemon } from './chunk-JXYVA45C.js';
|
|
5
5
|
import { parseWorkItemEnv } from './chunk-GQD22KKN.js';
|
|
6
|
-
import { spoolDir } from './chunk-
|
|
6
|
+
import { spoolDir } from './chunk-PQUM37BK.js';
|
|
7
7
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
8
8
|
import { mkdirSync, writeFileSync, rmSync } from 'fs';
|
|
9
9
|
import { join } from 'path';
|
|
@@ -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-4NPZVMJU.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';
|