@outerlayer/cli 0.15.0 → 0.17.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.
Files changed (84) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +11 -11
  3. package/dist/{agent-setup-CN2HUBEJ.js → agent-setup-T624CWPD.js} +8 -7
  4. package/dist/artifact-link-cmd-2F47LT7F.js +24 -0
  5. package/dist/build-info.json +1 -1
  6. package/dist/{check-2JSSXCKJ.js → check-5XE7XMC4.js} +22 -19
  7. package/dist/{chunk-HFKKFTXU.js → chunk-2MNPHL23.js} +19 -11
  8. package/dist/{chunk-YDSMROTB.js → chunk-3NSNIIBE.js} +8 -4
  9. package/dist/{chunk-FOJGZYFC.js → chunk-42ZI52JW.js} +1 -1
  10. package/dist/{chunk-NPQWKGUA.js → chunk-6Y5RUTHO.js} +1 -1
  11. package/dist/{chunk-PQUM37BK.js → chunk-BWQ66M6N.js} +1 -1
  12. package/dist/chunk-C5Y5ZJJZ.js +88 -0
  13. package/dist/{chunk-ASOSIKA4.js → chunk-G5NPRL2K.js} +27 -6
  14. package/dist/{chunk-QLTYTPYU.js → chunk-HGECYFEI.js} +64 -7
  15. package/dist/{chunk-SXWS25JC.js → chunk-KG5ECZGJ.js} +6 -6
  16. package/dist/{chunk-F7GBYX2P.js → chunk-LWSJQJC6.js} +18 -4
  17. package/dist/{chunk-UUDDPNRJ.js → chunk-MAK5LYRF.js} +33 -10
  18. package/dist/{chunk-MTF3PHVZ.js → chunk-NBGDBTO2.js} +3 -3
  19. package/dist/{chunk-KFRM23WD.js → chunk-NNRTPG7X.js} +2 -2
  20. package/dist/{chunk-MSASO5O4.js → chunk-NWQTTSBB.js} +1 -1
  21. package/dist/{chunk-2M63GG56.js → chunk-OHVJA253.js} +1 -1
  22. package/dist/{chunk-Z3NOIFDR.js → chunk-ONKJUM6R.js} +1 -1
  23. package/dist/{chunk-T5VPP6H7.js → chunk-OZGHL5Y5.js} +1 -1
  24. package/dist/{chunk-ZA5CHAFY.js → chunk-POJMEEJJ.js} +21 -4
  25. package/dist/{chunk-JR6ERP3M.js → chunk-S3NYLI2P.js} +3 -3
  26. package/dist/{chunk-HXLMZOKU.js → chunk-VQYBXPI7.js} +4 -4
  27. package/dist/{chunk-LCEXHCHD.js → chunk-WTE3MQML.js} +1 -1
  28. package/dist/{chunk-NXUH742G.js → chunk-WVUIRTWA.js} +10 -8
  29. package/dist/{chunk-JJEGKEFV.js → chunk-YU3VKZ5F.js} +1 -1
  30. package/dist/{chunk-3NLOVYJQ.js → chunk-YZ5F4PIS.js} +134 -38
  31. package/dist/{cli-RGGXQTWI.js → cli-A76AXELQ.js} +90 -79
  32. package/dist/{command-ETUAEXP2.js → command-R2QCVX55.js} +10 -9
  33. package/dist/{connect-cmd-JUAW6MU4.js → connect-cmd-JBKAQNSF.js} +1 -1
  34. package/dist/{context-adopt-PJUMW2EZ.js → context-adopt-NFHCLVUB.js} +5 -4
  35. package/dist/{context-materialize-FDHYKNDT.js → context-materialize-IV2TUUFO.js} +5 -4
  36. package/dist/{doctor-CORFPYY6.js → doctor-4TAIARIG.js} +15 -13
  37. package/dist/{emit-artifact-cmd-FOGNJXVR.js → emit-artifact-cmd-MPZVR56N.js} +4 -4
  38. package/dist/{emit-cmd-ZEYWLC2C.js → emit-cmd-IJ3GVRFD.js} +4 -3
  39. package/dist/{emit-criteria-cmd-HBP6XS5C.js → emit-criteria-cmd-EFGYI23V.js} +2 -2
  40. package/dist/{emit-finding-cmd-DLI4MKMN.js → emit-finding-cmd-5GF3V4LR.js} +160 -47
  41. package/dist/{emit-result-cmd-MUSL7GQA.js → emit-result-cmd-I4OADKMD.js} +4 -4
  42. package/dist/hidden-prompt-UXBFMQC5.js +68 -0
  43. package/dist/{hook-fast-WYQD6D7T.js → hook-fast-R4FVSZ2H.js} +1 -1
  44. package/dist/{import-capture-cmd-6QVCOIHK.js → import-capture-cmd-EQ35EARA.js} +3 -3
  45. package/dist/{import-ruler-cmd-KLRGRBCP.js → import-ruler-cmd-BGAZXCQM.js} +1 -1
  46. package/dist/index.js +3 -3
  47. package/dist/{init-OPB7HHXO.js → init-6XPDRDTC.js} +12 -11
  48. package/dist/{init-MIC37V6J.js → init-PWU5YVL7.js} +54 -29
  49. package/dist/{init-cmd-JR3RKNFB.js → init-cmd-XAVO7HYZ.js} +11 -10
  50. package/dist/{init-update-O5YYFGF4.js → init-update-CVCWD6VS.js} +10 -9
  51. package/dist/{loop-QNSM5GXS.js → loop-FK3LPMMZ.js} +19 -18
  52. package/dist/{machine-IT6GG7FF.js → machine-SQXEBAM2.js} +10 -9
  53. package/dist/{runner-env-XTC53CHN.js → runner-env-EN7YE7QX.js} +1 -1
  54. package/dist/runner-key-6SLBI7PP.js +174 -0
  55. package/dist/{session-sender-4M247XSV.js → session-sender-FO3LCREV.js} +3 -3
  56. package/dist/{starter-pack-IB4UUIX3.js → starter-pack-KF66HGZR.js} +3 -3
  57. package/dist/{status-7ZX57OFJ.js → status-7VNQN5PW.js} +13 -12
  58. package/dist/{sync-cmd-UWD5JOFU.js → sync-cmd-GVPPFZ3G.js} +2 -2
  59. package/dist/{watch-DBNB7R6X.js → watch-23HSAEI6.js} +2 -2
  60. package/dist/{work-claim-cmd-A6IS6CQ7.js → work-claim-cmd-LKL3GHFQ.js} +5 -5
  61. package/dist/{work-cmd-EQSW5DTD.js → work-cmd-Z2WXLZPH.js} +3 -3
  62. package/dist/{work-comment-cmd-7VLKI7FN.js → work-comment-cmd-AWHP56M2.js} +3 -3
  63. package/dist/{work-open-pr-cmd-JEVD4HMQ.js → work-open-pr-cmd-IOM4AVQQ.js} +4 -4
  64. package/dist/{work-pr-cmd-L77K32WK.js → work-pr-cmd-HNEUIEN7.js} +3 -3
  65. package/package.json +1 -1
  66. package/skill-pack/maintained/{amend → outerlayer-amend}/SKILL.md +4 -2
  67. package/skill-pack/maintained/{outerlayer → outerlayer-cli}/SKILL.md +5 -3
  68. package/skill-pack/maintained/{emitting-evidence → outerlayer-evidence}/SKILL.md +5 -3
  69. package/skill-pack/maintained/{reporting-findings → outerlayer-findings}/SKILL.md +26 -30
  70. package/skill-pack/shipped.json +20 -4
  71. package/skill-pack/template/build/SKILL.md +7 -1
  72. package/skill-pack/template/build/references/agent-briefs.md +7 -1
  73. package/skill-pack/template/build/references/evidence.md +1 -1
  74. package/skill-pack/template/build/references/release.md +14 -12
  75. package/skill-pack/template/build/references/review-briefs.md +6 -0
  76. package/skill-pack/template/build/scripts/criterion-citations.mjs +8 -3
  77. package/skill-pack/template/build/scripts/record-criteria.mjs +8 -2
  78. package/skill-pack/template/spec/SKILL.md +2 -0
  79. package/skill-pack/template/writing-specs/SKILL.md +1 -1
  80. package/skill-pack/validators/acceptance-criteria.yaml +6 -5
  81. package/skill-pack/validators/code-review.yaml +6 -5
  82. package/dist/runner-key-7SSNMUBQ.js +0 -154
  83. /package/skill-pack/maintained/{outerlayer → outerlayer-cli}/references/open-pull-request.md +0 -0
  84. /package/skill-pack/maintained/{emitting-evidence → outerlayer-evidence}/references/agents-snippet.md +0 -0
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, prepareRunnerInit, readConfigObject, runRunnerInit, writeRunnerInit } from './chunk-HXLMZOKU.js';
4
- import './chunk-Z3NOIFDR.js';
5
- import './chunk-UUDDPNRJ.js';
3
+ export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, prepareRunnerInit, readConfigObject, runRunnerInit, writeRunnerInit } from './chunk-VQYBXPI7.js';
4
+ import './chunk-ONKJUM6R.js';
5
+ import './chunk-MAK5LYRF.js';
6
6
  import './chunk-KMDLFI4P.js';
7
7
  import './chunk-QKFB4K7X.js';
8
8
  import './chunk-RSNSZ2LJ.js';
9
- import './chunk-T5VPP6H7.js';
9
+ import './chunk-OZGHL5Y5.js';
10
10
  import './chunk-RLYZLUQ7.js';
11
11
  import './chunk-6MZSX4M7.js';
12
- import './chunk-JR6ERP3M.js';
13
- import './chunk-NPQWKGUA.js';
12
+ import './chunk-S3NYLI2P.js';
13
+ import './chunk-6Y5RUTHO.js';
14
14
  import './chunk-IP7BIBXJ.js';
15
15
  import './chunk-22RMZBGW.js';
16
16
  import './chunk-UXYLWVTQ.js';
@@ -22,20 +22,21 @@ import './chunk-4NPZVMJU.js';
22
22
  import './chunk-7RQ73DLO.js';
23
23
  import './chunk-4Q7OMKAT.js';
24
24
  import './chunk-CX22S5BA.js';
25
- import './chunk-YDSMROTB.js';
25
+ import './chunk-3NSNIIBE.js';
26
26
  import './chunk-WUYTWNMA.js';
27
27
  import './chunk-JXYVA45C.js';
28
28
  import './chunk-4KSQKQXE.js';
29
29
  import './chunk-N6LURUEF.js';
30
30
  import './chunk-YRYMNBGQ.js';
31
31
  import './chunk-WZBHBH3J.js';
32
- import './chunk-3NLOVYJQ.js';
33
- import './chunk-LCEXHCHD.js';
32
+ import './chunk-YZ5F4PIS.js';
33
+ import './chunk-WTE3MQML.js';
34
+ import './chunk-C5Y5ZJJZ.js';
34
35
  import './chunk-ZJSNLVCE.js';
35
36
  import './chunk-YO4PSLVB.js';
36
37
  import './chunk-BYT5O5RV.js';
37
- import './chunk-ZA5CHAFY.js';
38
- import './chunk-2M63GG56.js';
38
+ import './chunk-POJMEEJJ.js';
39
+ import './chunk-OHVJA253.js';
39
40
  import './chunk-PLMTLGYH.js';
40
41
  import './chunk-J5M7BSJQ.js';
41
42
  import './chunk-EABW6AJQ.js';
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { npmSupportsProvenance } from './chunk-YETTWTAY.js';
4
- import { RunnerInitError, readConfigObject } from './chunk-HXLMZOKU.js';
5
- import './chunk-Z3NOIFDR.js';
6
- import './chunk-UUDDPNRJ.js';
4
+ import { RunnerInitError, readConfigObject } from './chunk-VQYBXPI7.js';
5
+ import './chunk-ONKJUM6R.js';
6
+ import './chunk-MAK5LYRF.js';
7
7
  import './chunk-KMDLFI4P.js';
8
8
  import './chunk-QKFB4K7X.js';
9
9
  import './chunk-RSNSZ2LJ.js';
10
- import './chunk-T5VPP6H7.js';
10
+ import './chunk-OZGHL5Y5.js';
11
11
  import { checkFit, VM_SERVICE_NAME, RUNNER_RESERVE_BYTES } from './chunk-RLYZLUQ7.js';
12
12
  import './chunk-6MZSX4M7.js';
13
- import './chunk-JR6ERP3M.js';
14
- import './chunk-NPQWKGUA.js';
13
+ import './chunk-S3NYLI2P.js';
14
+ import './chunk-6Y5RUTHO.js';
15
15
  import './chunk-IP7BIBXJ.js';
16
16
  import { runnerCredentialProblem, resolveBuild, resolveHousekeeping } from './chunk-22RMZBGW.js';
17
17
  import './chunk-UXYLWVTQ.js';
@@ -24,23 +24,24 @@ import './chunk-4NPZVMJU.js';
24
24
  import { parseSize } from './chunk-7RQ73DLO.js';
25
25
  import './chunk-4Q7OMKAT.js';
26
26
  import './chunk-CX22S5BA.js';
27
- import './chunk-YDSMROTB.js';
27
+ import './chunk-3NSNIIBE.js';
28
28
  import './chunk-WUYTWNMA.js';
29
29
  import './chunk-JXYVA45C.js';
30
30
  import './chunk-4KSQKQXE.js';
31
31
  import './chunk-N6LURUEF.js';
32
32
  import './chunk-YRYMNBGQ.js';
33
33
  import './chunk-WZBHBH3J.js';
34
- import './chunk-3NLOVYJQ.js';
35
- import './chunk-LCEXHCHD.js';
34
+ import './chunk-YZ5F4PIS.js';
35
+ import './chunk-WTE3MQML.js';
36
+ import './chunk-C5Y5ZJJZ.js';
36
37
  import './chunk-ZJSNLVCE.js';
37
38
  import './chunk-YO4PSLVB.js';
38
39
  import './chunk-BYT5O5RV.js';
39
- import './chunk-ZA5CHAFY.js';
40
- import './chunk-2M63GG56.js';
40
+ import './chunk-POJMEEJJ.js';
41
+ import './chunk-OHVJA253.js';
41
42
  import './chunk-PLMTLGYH.js';
42
43
  import './chunk-J5M7BSJQ.js';
43
- import './chunk-EABW6AJQ.js';
44
+ import { readCloudConfig } from './chunk-EABW6AJQ.js';
44
45
  import './chunk-RA3O54FC.js';
45
46
  import './chunk-V7NIVOFD.js';
46
47
  import { hostKeyPath } from './chunk-ZM2IMMYN.js';
@@ -88,6 +89,22 @@ var NODE_PREFIX = "/usr";
88
89
  var APT_NPM_DIVERTED = "/usr/bin/npm.distrib";
89
90
  var NPM_BESIDE_NODE = '"$(dirname "$(command -v node)")/npm" --version';
90
91
  var PROGRESS_INTERVAL_MS = 3e4;
92
+ var ANSI = /\u001b\[[0-9;]*m/g;
93
+ function guestLines(output) {
94
+ const lines = [];
95
+ const warnings = [];
96
+ for (const raw of output.split("\n")) {
97
+ const text = raw.replace(ANSI, "").trim();
98
+ if (text === "") continue;
99
+ if (text.startsWith("!")) {
100
+ const note = text.slice(1).trim();
101
+ if (!/ on PATH\b/.test(note)) warnings.push(note);
102
+ } else {
103
+ lines.push(text.replace(/^✓\s*/, ""));
104
+ }
105
+ }
106
+ return { lines, warnings };
107
+ }
91
108
  var quote = (text) => `'${text.replace(/'/g, `'\\''`)}'`;
92
109
  async function runVmInit(configPath, deps) {
93
110
  const { lima } = deps;
@@ -219,22 +236,30 @@ async function runVmInit(configPath, deps) {
219
236
  } catch (err) {
220
237
  throw new VmInitError(`the VM ${instance} is ready, but this Mac could not be updated: ${err instanceof Error ? err.message : String(err)}. ${leftBehind}`);
221
238
  }
222
- return {
223
- instance,
224
- lines: [
225
- `created the Linux VM ${instance}: ${size.cpus} CPUs, ${size.memoryGiB} GiB memory, ${size.diskGiB} GiB disk`,
226
- ...innerOut.split("\n").map((line) => line.trim()).filter((line) => line !== ""),
227
- `the VM starts at login through ${agent}`,
228
- created === void 0 ? `moved the runner key into the VM: apiKey and runner are gone from ${configPath}` : `created the runner key ${created.name} from your login and gave it to the VM; it is not stored on this Mac`,
229
- ...hadHostKey ? ["deleted this Mac's old host key. If the runner key was bound to it, a member uses Clear host key on the API keys page before the VM's first claim"] : [],
230
- ...created === void 0 ? ["run outerlayer login again to use capture on this Mac, with a key that is not the runner key"] : [],
231
- ...installOut.split("\n").map((line) => line.trim()).filter((line) => line !== ""),
232
- ...deps.credential === void 0 ? [
233
- `put CLAUDE_CODE_OAUTH_TOKEN in ${home}/.outerlayer/runner.env inside the VM, then restart the runner so it reads the file: limactl shell ${instance} sudo systemctl restart ${VM_SERVICE_NAME}`
234
- ] : [],
235
- deps.agent === void 0 ? `the runner claims nothing while a command in the VM's config is still the placeholder or the credential is missing; its host entry says why. Check it with: limactl shell ${instance} outerlayer runner status` : `the runner in the VM starts ${deps.agent} for each item. Check the host from this Mac with: limactl shell ${instance} outerlayer runner check`
236
- ]
237
- };
239
+ const inner = guestLines(innerOut);
240
+ const installed = guestLines(installOut);
241
+ const hasLogin = [onDisk.accountToken, readCloudConfig(deps.home).accountToken].some((token) => typeof token === "string" && token !== "");
242
+ const lines = [
243
+ `created the Linux VM ${instance}: ${size.cpus} CPUs, ${size.memoryGiB} GiB memory, ${size.diskGiB} GiB disk`,
244
+ ...inner.lines,
245
+ `the VM starts at login through ${agent}`,
246
+ created === void 0 ? `moved the runner key into the VM: apiKey and runner are gone from ${configPath}` : `checked the pasted runner key and gave it to the VM; it is not stored on this Mac`,
247
+ ...created === void 0 && hasLogin ? ["capture on this Mac now uses your login, not the runner key. Nothing else on this Mac changes"] : [],
248
+ ...installed.lines
249
+ ];
250
+ const warnings = [
251
+ ...inner.warnings,
252
+ ...hadHostKey ? ["deleted this Mac's old host key. If the runner key was bound to it, a member uses Clear host key on the API keys page before the VM's first claim"] : [],
253
+ ...created === void 0 && !hasLogin ? ["this Mac has no login now that the runner key left its config, so capture on this Mac has no credential. Run outerlayer login to sign in"] : [],
254
+ ...installed.warnings,
255
+ ...deps.credential === void 0 ? [
256
+ `put CLAUDE_CODE_OAUTH_TOKEN in ${home}/.outerlayer/runner.env inside the VM, then restart the runner so it reads the file: limactl shell ${instance} sudo systemctl restart ${VM_SERVICE_NAME}`
257
+ ] : []
258
+ ];
259
+ lines.push(
260
+ deps.agent === void 0 ? `the runner claims nothing while a command in the VM's config is still the placeholder or the credential is missing; its host entry says why. Check it with: limactl shell ${instance} outerlayer runner status` : `the runner in the VM starts ${deps.agent} for each item. Check the host from this Mac with: limactl shell ${instance} outerlayer runner check`
261
+ );
262
+ return { instance, lines, warnings };
238
263
  }
239
264
  async function chooseVm(options) {
240
265
  if (options.flag === false) return false;
@@ -248,4 +273,4 @@ async function chooseVm(options) {
248
273
  return options.ask();
249
274
  }
250
275
 
251
- export { VM_INSTANCE, VmInitError, chooseVm, runVmInit };
276
+ export { VM_INSTANCE, VmInitError, chooseVm, guestLines, runVmInit };
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { summarizeChecks, summaryText, renderDoctorText } from './chunk-QLTYTPYU.js';
4
- import './chunk-MTF3PHVZ.js';
5
- import './chunk-JR6ERP3M.js';
6
- import './chunk-NPQWKGUA.js';
3
+ import { summarizeChecks, summaryText, renderDoctorText } from './chunk-HGECYFEI.js';
4
+ import './chunk-NBGDBTO2.js';
5
+ import './chunk-S3NYLI2P.js';
6
+ import './chunk-6Y5RUTHO.js';
7
7
  import './chunk-IP7BIBXJ.js';
8
8
  import './chunk-F47JBIAW.js';
9
9
  import './chunk-BKO6JEZI.js';
10
10
  import './chunk-XCK2YAY5.js';
11
- import './chunk-FOJGZYFC.js';
12
- import { runConnect, COMMIT_LINE } from './chunk-YDSMROTB.js';
11
+ import './chunk-42ZI52JW.js';
12
+ import { runConnect, COMMIT_LINE } from './chunk-3NSNIIBE.js';
13
13
  import './chunk-WUYTWNMA.js';
14
14
  import './chunk-JXYVA45C.js';
15
15
  import './chunk-4KSQKQXE.js';
@@ -17,17 +17,18 @@ import './chunk-N6LURUEF.js';
17
17
  import { C } from './chunk-YRYMNBGQ.js';
18
18
  import './chunk-WZBHBH3J.js';
19
19
  import './chunk-5QRP3MVS.js';
20
- import './chunk-LCEXHCHD.js';
20
+ import './chunk-WTE3MQML.js';
21
+ import './chunk-C5Y5ZJJZ.js';
21
22
  import './chunk-YO4PSLVB.js';
22
- import './chunk-ZA5CHAFY.js';
23
- import './chunk-2M63GG56.js';
23
+ import './chunk-POJMEEJJ.js';
24
+ import './chunk-OHVJA253.js';
24
25
  import './chunk-PLMTLGYH.js';
25
26
  import './chunk-J5M7BSJQ.js';
26
27
  import './chunk-EABW6AJQ.js';
27
28
  import './chunk-RA3O54FC.js';
28
29
  import './chunk-V7NIVOFD.js';
29
30
  import './chunk-ZM2IMMYN.js';
30
- import './chunk-PQUM37BK.js';
31
+ import './chunk-BWQ66M6N.js';
31
32
  import './chunk-XCCLFVXM.js';
32
33
  import './chunk-BJ3KTMDH.js';
33
34
  import './chunk-VNVZDWO3.js';
@@ -1,23 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { keepHandWritten } from './chunk-SXWS25JC.js';
4
- import { runEmit } from './chunk-HFKKFTXU.js';
5
- import { contextIsGoverned, inspectStarterFiles, canonical } from './chunk-MTF3PHVZ.js';
3
+ import { keepHandWritten } from './chunk-KG5ECZGJ.js';
4
+ import { runEmit } from './chunk-2MNPHL23.js';
5
+ import { contextIsGoverned, inspectStarterFiles, canonical } from './chunk-NBGDBTO2.js';
6
6
  import { setMcpEntry } from './chunk-XCK2YAY5.js';
7
- import './chunk-FOJGZYFC.js';
8
- import { COMMIT_LINE } from './chunk-YDSMROTB.js';
7
+ import './chunk-42ZI52JW.js';
8
+ import { COMMIT_LINE } from './chunk-3NSNIIBE.js';
9
9
  import './chunk-WUYTWNMA.js';
10
10
  import './chunk-JXYVA45C.js';
11
11
  import './chunk-4KSQKQXE.js';
12
12
  import './chunk-N6LURUEF.js';
13
13
  import { C } from './chunk-YRYMNBGQ.js';
14
- import './chunk-3NLOVYJQ.js';
15
- import './chunk-LCEXHCHD.js';
14
+ import './chunk-YZ5F4PIS.js';
15
+ import './chunk-WTE3MQML.js';
16
+ import './chunk-C5Y5ZJJZ.js';
16
17
  import './chunk-ZJSNLVCE.js';
17
18
  import './chunk-YO4PSLVB.js';
18
19
  import './chunk-BYT5O5RV.js';
19
- import './chunk-ZA5CHAFY.js';
20
- import './chunk-2M63GG56.js';
20
+ import './chunk-POJMEEJJ.js';
21
+ import './chunk-OHVJA253.js';
21
22
  import './chunk-PLMTLGYH.js';
22
23
  import './chunk-J5M7BSJQ.js';
23
24
  import './chunk-EABW6AJQ.js';
@@ -1,33 +1,33 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-NXUH742G.js';
4
- import './chunk-ASOSIKA4.js';
3
+ export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-WVUIRTWA.js';
4
+ import './chunk-G5NPRL2K.js';
5
+ import './chunk-RMWLBUCJ.js';
5
6
  import './chunk-O765JR4W.js';
6
7
  import './chunk-UGP76IZ5.js';
7
8
  import './chunk-3JVYMD4G.js';
8
9
  import './chunk-YETTWTAY.js';
9
- import './chunk-RMWLBUCJ.js';
10
10
  import './chunk-I2UOAV7X.js';
11
+ import './chunk-NNRTPG7X.js';
11
12
  import './chunk-HYZRY4KZ.js';
12
13
  import './chunk-ADJRGVZC.js';
13
- import './chunk-KFRM23WD.js';
14
- import './chunk-MSASO5O4.js';
14
+ import './chunk-NWQTTSBB.js';
15
15
  import './chunk-HHJDN6AU.js';
16
- import './chunk-F7GBYX2P.js';
16
+ import './chunk-LWSJQJC6.js';
17
17
  import './chunk-YYYRBYWG.js';
18
18
  import './chunk-TI7B7UEO.js';
19
19
  import './chunk-TBT347UY.js';
20
- import './chunk-HXLMZOKU.js';
21
- import './chunk-Z3NOIFDR.js';
22
- import './chunk-UUDDPNRJ.js';
20
+ import './chunk-VQYBXPI7.js';
21
+ import './chunk-ONKJUM6R.js';
22
+ import './chunk-MAK5LYRF.js';
23
23
  import './chunk-KMDLFI4P.js';
24
24
  import './chunk-QKFB4K7X.js';
25
25
  import './chunk-RSNSZ2LJ.js';
26
- import './chunk-T5VPP6H7.js';
26
+ import './chunk-OZGHL5Y5.js';
27
27
  import './chunk-RLYZLUQ7.js';
28
28
  import './chunk-6MZSX4M7.js';
29
- import './chunk-JR6ERP3M.js';
30
- import './chunk-NPQWKGUA.js';
29
+ import './chunk-S3NYLI2P.js';
30
+ import './chunk-6Y5RUTHO.js';
31
31
  import './chunk-IP7BIBXJ.js';
32
32
  import './chunk-22RMZBGW.js';
33
33
  import './chunk-UXYLWVTQ.js';
@@ -41,7 +41,7 @@ import './chunk-4Q7OMKAT.js';
41
41
  import './chunk-CX22S5BA.js';
42
42
  import './chunk-F7CU5ABH.js';
43
43
  import './chunk-BKO6JEZI.js';
44
- import './chunk-YDSMROTB.js';
44
+ import './chunk-3NSNIIBE.js';
45
45
  import './chunk-WUYTWNMA.js';
46
46
  import './chunk-JXYVA45C.js';
47
47
  import './chunk-4KSQKQXE.js';
@@ -50,20 +50,21 @@ import './chunk-YRYMNBGQ.js';
50
50
  import './chunk-GQD22KKN.js';
51
51
  import './chunk-WZBHBH3J.js';
52
52
  import './chunk-5QRP3MVS.js';
53
- import './chunk-3NLOVYJQ.js';
54
- import './chunk-LCEXHCHD.js';
53
+ import './chunk-YZ5F4PIS.js';
54
+ import './chunk-WTE3MQML.js';
55
+ import './chunk-C5Y5ZJJZ.js';
55
56
  import './chunk-ZJSNLVCE.js';
56
57
  import './chunk-YO4PSLVB.js';
57
58
  import './chunk-BYT5O5RV.js';
58
- import './chunk-ZA5CHAFY.js';
59
- import './chunk-2M63GG56.js';
59
+ import './chunk-POJMEEJJ.js';
60
+ import './chunk-OHVJA253.js';
60
61
  import './chunk-PLMTLGYH.js';
61
62
  import './chunk-J5M7BSJQ.js';
62
63
  import './chunk-EABW6AJQ.js';
63
64
  import './chunk-RA3O54FC.js';
64
65
  import './chunk-V7NIVOFD.js';
65
66
  import './chunk-ZM2IMMYN.js';
66
- import './chunk-PQUM37BK.js';
67
+ import './chunk-BWQ66M6N.js';
67
68
  import './chunk-XCCLFVXM.js';
68
69
  import './chunk-BJ3KTMDH.js';
69
70
  import './chunk-VNVZDWO3.js';
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-Z3NOIFDR.js';
4
- import './chunk-UUDDPNRJ.js';
3
+ export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-ONKJUM6R.js';
4
+ import './chunk-MAK5LYRF.js';
5
5
  import './chunk-KMDLFI4P.js';
6
6
  import './chunk-QKFB4K7X.js';
7
7
  import './chunk-RSNSZ2LJ.js';
8
- import './chunk-JR6ERP3M.js';
9
- import './chunk-NPQWKGUA.js';
8
+ import './chunk-S3NYLI2P.js';
9
+ import './chunk-6Y5RUTHO.js';
10
10
  import './chunk-IP7BIBXJ.js';
11
11
  import './chunk-UXYLWVTQ.js';
12
12
  import './chunk-R7PF5OOU.js';
@@ -17,20 +17,21 @@ import './chunk-4NPZVMJU.js';
17
17
  import './chunk-7RQ73DLO.js';
18
18
  import './chunk-4Q7OMKAT.js';
19
19
  import './chunk-CX22S5BA.js';
20
- import './chunk-YDSMROTB.js';
20
+ import './chunk-3NSNIIBE.js';
21
21
  import './chunk-WUYTWNMA.js';
22
22
  import './chunk-JXYVA45C.js';
23
23
  import './chunk-4KSQKQXE.js';
24
24
  import './chunk-N6LURUEF.js';
25
25
  import './chunk-YRYMNBGQ.js';
26
26
  import './chunk-WZBHBH3J.js';
27
- import './chunk-3NLOVYJQ.js';
28
- import './chunk-LCEXHCHD.js';
27
+ import './chunk-YZ5F4PIS.js';
28
+ import './chunk-WTE3MQML.js';
29
+ import './chunk-C5Y5ZJJZ.js';
29
30
  import './chunk-ZJSNLVCE.js';
30
31
  import './chunk-YO4PSLVB.js';
31
32
  import './chunk-BYT5O5RV.js';
32
- import './chunk-ZA5CHAFY.js';
33
- import './chunk-2M63GG56.js';
33
+ import './chunk-POJMEEJJ.js';
34
+ import './chunk-OHVJA253.js';
34
35
  import './chunk-PLMTLGYH.js';
35
36
  import './chunk-J5M7BSJQ.js';
36
37
  import './chunk-EABW6AJQ.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { AGENT_COMMANDS, RunnerEnvError, credentialFromStdin, hasStoredCredential, isAgentName, restartForCredential, storeClaudeCredential } from './chunk-T5VPP6H7.js';
3
+ export { AGENT_COMMANDS, RunnerEnvError, credentialFromStdin, hasStoredCredential, isAgentName, restartForCredential, storeClaudeCredential } from './chunk-OZGHL5Y5.js';
4
4
  import './chunk-RLYZLUQ7.js';
5
5
  import './chunk-6MZSX4M7.js';
6
6
  import './chunk-22RMZBGW.js';
@@ -0,0 +1,174 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ import { readConfigObject, RunnerInitError } from './chunk-VQYBXPI7.js';
4
+ import './chunk-ONKJUM6R.js';
5
+ import './chunk-MAK5LYRF.js';
6
+ import './chunk-KMDLFI4P.js';
7
+ import './chunk-QKFB4K7X.js';
8
+ import './chunk-RSNSZ2LJ.js';
9
+ import './chunk-OZGHL5Y5.js';
10
+ import './chunk-RLYZLUQ7.js';
11
+ import './chunk-6MZSX4M7.js';
12
+ import { getJson } from './chunk-S3NYLI2P.js';
13
+ import './chunk-6Y5RUTHO.js';
14
+ import './chunk-IP7BIBXJ.js';
15
+ import { runnerCredentialProblem } from './chunk-22RMZBGW.js';
16
+ import './chunk-UXYLWVTQ.js';
17
+ import './chunk-R7PF5OOU.js';
18
+ import './chunk-QOZKPLVJ.js';
19
+ import './chunk-N5FOE5PS.js';
20
+ import './chunk-OGFGZQA3.js';
21
+ import './chunk-4NPZVMJU.js';
22
+ import './chunk-7RQ73DLO.js';
23
+ import './chunk-4Q7OMKAT.js';
24
+ import './chunk-CX22S5BA.js';
25
+ import { fetchFactories, slug, dashboardBase, listText } from './chunk-3NSNIIBE.js';
26
+ import './chunk-WUYTWNMA.js';
27
+ import './chunk-JXYVA45C.js';
28
+ import './chunk-4KSQKQXE.js';
29
+ import './chunk-N6LURUEF.js';
30
+ import './chunk-YRYMNBGQ.js';
31
+ import './chunk-WZBHBH3J.js';
32
+ import './chunk-YZ5F4PIS.js';
33
+ import './chunk-WTE3MQML.js';
34
+ import './chunk-C5Y5ZJJZ.js';
35
+ import './chunk-ZJSNLVCE.js';
36
+ import './chunk-YO4PSLVB.js';
37
+ import './chunk-BYT5O5RV.js';
38
+ import './chunk-POJMEEJJ.js';
39
+ import './chunk-OHVJA253.js';
40
+ import './chunk-PLMTLGYH.js';
41
+ import './chunk-J5M7BSJQ.js';
42
+ import { readCloudConfig } from './chunk-EABW6AJQ.js';
43
+ import './chunk-RA3O54FC.js';
44
+ import './chunk-V7NIVOFD.js';
45
+ import './chunk-ZM2IMMYN.js';
46
+ import './chunk-XCCLFVXM.js';
47
+ import { readRepoConnection } from './chunk-BJ3KTMDH.js';
48
+ import { homeFromEnv } from './chunk-VNVZDWO3.js';
49
+ import './chunk-Z5GEFMRW.js';
50
+ import { existsSync } from 'fs';
51
+
52
+ createRequire(import.meta.url);
53
+ async function runnerKeyLogin(configPath, opts = {}) {
54
+ const env = opts.env ?? process.env;
55
+ const config = existsSync(configPath) ? readConfigObject(configPath) : {};
56
+ if (config.apiKey !== void 0) {
57
+ if (opts.appId !== void 0 && opts.appId !== config.appId) {
58
+ throw new RunnerInitError(
59
+ `${configPath} already holds a runner key, for the factory its appId names, so --app-id ${opts.appId} creates no key. Leave --app-id out, or give it the same id.`
60
+ );
61
+ }
62
+ if (opts.factory !== void 0) {
63
+ throw new RunnerInitError(
64
+ `${configPath} already holds a runner key, for the factory its appId names, so --factory ${opts.factory} creates no key. Leave --factory out.`
65
+ );
66
+ }
67
+ return void 0;
68
+ }
69
+ const saved = readCloudConfig(opts.home ?? homeFromEnv(env));
70
+ const own = typeof config.accountToken === "string" && config.accountToken !== "";
71
+ const accountToken = own ? config.accountToken : saved.accountToken;
72
+ if (accountToken === void 0 || accountToken === "") return void 0;
73
+ const url = config.url ?? (own ? void 0 : saved.url);
74
+ let appId = opts.appId ?? (env.OUTERLAYER_APP_ID || void 0) ?? config.appId ?? readRepoConnection(opts.cwd ?? process.cwd())?.appId;
75
+ let note;
76
+ let chosen;
77
+ const mustList = opts.factory !== void 0 || appId === void 0;
78
+ const urlProblem = runnerCredentialProblem({ url, apiKey: accountToken, appId: "pending" });
79
+ if (urlProblem !== void 0 && mustList) throw new RunnerInitError(`${configPath}: ${urlProblem.field} ${urlProblem.reason}.`);
80
+ if (urlProblem === void 0) {
81
+ const listed = await fetchFactories(opts.fetchImpl ?? fetch, url, accountToken);
82
+ if (!listed.ok) {
83
+ if (mustList) throw new RunnerInitError(listed.result.text.trim());
84
+ } else if (mustList) {
85
+ chosen = chooseFactory(listed.factories, opts.factory);
86
+ if (opts.appId !== void 0 && opts.appId.toLowerCase() !== chosen.id.toLowerCase()) {
87
+ throw new RunnerInitError(
88
+ `--factory ${opts.factory} is the factory ${chosen.id}, but --app-id is ${opts.appId}. Pass only one of them, or the same factory in both.`
89
+ );
90
+ }
91
+ appId = chosen.id;
92
+ if (opts.factory === void 0) note = `Using factory ${slug(chosen)}, the only one this login can use.`;
93
+ } else {
94
+ chosen = listed.factories.find((f) => f.id.toLowerCase() === appId.toLowerCase());
95
+ }
96
+ }
97
+ const problem = runnerCredentialProblem({ url, apiKey: accountToken, appId });
98
+ if (problem !== void 0) {
99
+ const where = problem.field === "appId" ? "the factory id" : `${configPath}: ${problem.field}`;
100
+ throw new RunnerInitError(`${where} ${problem.reason}.`);
101
+ }
102
+ const named = chosen === void 0 ? {} : {
103
+ slug: slug(chosen),
104
+ keysUrl: `${dashboardBase(opts.home ?? homeFromEnv(env))}/orgs/${encodeURIComponent(chosen.organization.name)}/factories/${encodeURIComponent(chosen.name)}/settings/api-keys`
105
+ };
106
+ return { url, accountToken, appId, ...note === void 0 ? {} : { note }, ...named };
107
+ }
108
+ function chooseFactory(factories, flag) {
109
+ if (flag !== void 0) {
110
+ const wanted = flag.toLowerCase();
111
+ const named = factories.find((f) => f.id.toLowerCase() === wanted || slug(f).toLowerCase() === wanted);
112
+ if (named !== void 0) return named;
113
+ throw new RunnerInitError(
114
+ factories.length === 0 ? `no factory you can use is named "${flag}": this login can use no factory.` : `no factory you can use is named "${flag}". Pass --factory with one of:
115
+ ${listText(factories)}`
116
+ );
117
+ }
118
+ if (factories.length === 1) return factories[0];
119
+ if (factories.length === 0) {
120
+ throw new RunnerInitError("you are logged in, but this login can use no factory, so there is none to create the runner key on.");
121
+ }
122
+ throw new RunnerInitError(
123
+ `you are logged in, but no factory is chosen, and this login can use more than one. Run this again with --factory <org>/<factory> using one of:
124
+ ${listText(factories)}
125
+ Or pass --app-id with the Factory Id from the factory's Settings \u2192 General, or set OUTERLAYER_APP_ID.`
126
+ );
127
+ }
128
+ function clause(message) {
129
+ return message.replace(/\.+$/, "");
130
+ }
131
+ function withoutMintAdvice(message) {
132
+ return message.replace(/\s*Mint a fresh key[^.]*\.?/i, "");
133
+ }
134
+ function createKeyText(login) {
135
+ const page = login.keysUrl === void 0 ? "the factory's API keys page (open the factory's Settings, then the API keys tab)" : `the factory's API keys page:
136
+ ${login.keysUrl}`;
137
+ return `Create a runner key on ${page}
138
+ Choose Create API key, pick the Runner preset, and copy the key. It is shown once.`;
139
+ }
140
+ async function checkKey(key, fetchImpl) {
141
+ const unusable = (why) => new RunnerInitError(`the pasted key cannot be used: ${why}. Nothing was changed. Create a new key with the Runner preset on the page above, then run this again.`);
142
+ let data;
143
+ try {
144
+ ({ data } = await getJson(key.url, "/v1/runner/host-key", key.apiKey, key.appId, fetchImpl));
145
+ } catch (err) {
146
+ throw unusable(`the gateway did not accept it: ${clause(withoutMintAdvice(err instanceof Error ? err.message : String(err)))}`);
147
+ }
148
+ if (data.bound !== false) {
149
+ throw unusable("the gateway did not report it as a new runner key, so it is already in use on another host");
150
+ }
151
+ }
152
+ var KEY_PROMPT = "Paste the runner key, then press Enter. Nothing is shown as you paste: ";
153
+ async function obtainRunnerKey(login, opts) {
154
+ const write = opts.write ?? ((text) => void process.stdout.write(text));
155
+ const instructions = createKeyText(login);
156
+ if (opts.readKey === void 0) {
157
+ throw new RunnerInitError(
158
+ `there is no terminal to paste the runner key in, so nothing was changed.
159
+ ${instructions}
160
+ Then put the key in ${opts.configPath} as apiKey, with appId ${login.appId} and url ${login.url}, and run this again.`
161
+ );
162
+ }
163
+ write(`${login.slug === void 0 || login.note !== void 0 ? "" : `Factory ${login.slug}
164
+ `}${instructions}
165
+ `);
166
+ const pasted = await opts.readKey(KEY_PROMPT);
167
+ const apiKey = pasted.trim();
168
+ if (apiKey === "") throw new RunnerInitError("no key was pasted, so nothing was changed. Run this again and paste the runner key.");
169
+ const key = { url: login.url, apiKey, appId: login.appId };
170
+ await checkKey(key, opts.fetchImpl ?? fetch);
171
+ return key;
172
+ }
173
+
174
+ export { KEY_PROMPT, obtainRunnerKey, runnerKeyLogin };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { runSessionSender, senderPidfile, startSessionSender } from './chunk-KFRM23WD.js';
4
- import './chunk-MSASO5O4.js';
3
+ export { runSessionSender, senderPidfile, startSessionSender } from './chunk-NNRTPG7X.js';
4
+ import './chunk-NWQTTSBB.js';
5
5
  import './chunk-HHJDN6AU.js';
6
6
  import './chunk-TBT347UY.js';
7
7
  import './chunk-IP7BIBXJ.js';
@@ -20,7 +20,7 @@ import './chunk-J5M7BSJQ.js';
20
20
  import './chunk-EABW6AJQ.js';
21
21
  import './chunk-V7NIVOFD.js';
22
22
  import './chunk-ZM2IMMYN.js';
23
- import './chunk-PQUM37BK.js';
23
+ import './chunk-BWQ66M6N.js';
24
24
  import './chunk-XCCLFVXM.js';
25
25
  import './chunk-BJ3KTMDH.js';
26
26
  import './chunk-VNVZDWO3.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { POLICY_CONTENT, POLICY_PATH, StarterPackError, VALIDATORS_DIR, VALIDATOR_FILES, assertKnownTemplate, formatStarterPackOutput, installStarterPack } from './chunk-FOJGZYFC.js';
3
+ export { POLICY_CONTENT, POLICY_PATH, StarterPackError, VALIDATORS_DIR, VALIDATOR_FILES, assertKnownTemplate, formatStarterPackOutput, installStarterPack } from './chunk-42ZI52JW.js';
4
4
  import './chunk-YRYMNBGQ.js';
5
- import './chunk-ZA5CHAFY.js';
6
- import './chunk-2M63GG56.js';
5
+ import './chunk-POJMEEJJ.js';
6
+ import './chunk-OHVJA253.js';
7
7
  import './chunk-J5M7BSJQ.js';
8
8
  import './chunk-RA3O54FC.js';
9
9
  import './chunk-Z5GEFMRW.js';