@outerlayer/cli 0.28.4 → 0.30.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 (132) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +9 -1
  3. package/dist/{agent-setup-IDF3EXM4.js → agent-setup-ZNYAXAWI.js} +14 -14
  4. package/dist/{artifact-link-cmd-LEI6EOZE.js → artifact-link-cmd-VY6OM7S5.js} +2 -2
  5. package/dist/{bridge-JN3VJ23L.js → bridge-FI7OF2H3.js} +2 -2
  6. package/dist/{build-JCYOHPLL.js → build-PXRDWSN4.js} +4 -4
  7. package/dist/build-info.json +1 -1
  8. package/dist/{builder-HCTVP2O7.js → builder-UNVHUZL7.js} +6 -6
  9. package/dist/{check-WJ4X2Q44.js → check-BKONE55O.js} +42 -41
  10. package/dist/{chunk-YYGXCRIW.js → chunk-2ZMJFGOZ.js} +1 -1
  11. package/dist/{chunk-JYVBEWBC.js → chunk-3F7RC3UA.js} +3 -3
  12. package/dist/{chunk-JZJLKTZT.js → chunk-3IDNLZPR.js} +5 -5
  13. package/dist/{chunk-QFNFBQCG.js → chunk-3YLHIXLR.js} +7 -7
  14. package/dist/{chunk-QBF462QH.js → chunk-44CGGHJF.js} +1 -1
  15. package/dist/{chunk-AV5MJY45.js → chunk-5HZDPOJI.js} +3 -3
  16. package/dist/{chunk-OO6OADZN.js → chunk-6CNNRO53.js} +3 -3
  17. package/dist/{chunk-MFI55TNI.js → chunk-7YSR636F.js} +22 -6
  18. package/dist/{chunk-JGML2VUN.js → chunk-AKKVPUGK.js} +1 -1
  19. package/dist/{chunk-KJIUFOC4.js → chunk-AM3GMWQK.js} +1 -1
  20. package/dist/{emit-finding-cmd-W2FU4CCF.js → chunk-B5CQJBZ2.js} +5 -23
  21. package/dist/{chunk-KBB3CQTW.js → chunk-B6OYEP3K.js} +5 -5
  22. package/dist/{chunk-ITAIEJ2T.js → chunk-BCWVTWS7.js} +4 -4
  23. package/dist/{chunk-O47BTZSN.js → chunk-D3LS7E7U.js} +1 -1
  24. package/dist/{chunk-2BZTGJII.js → chunk-DBELICD6.js} +7 -7
  25. package/dist/{chunk-NVUO52YW.js → chunk-DBENBGVF.js} +55 -47
  26. package/dist/{chunk-X7SFJZIG.js → chunk-DBRB26R7.js} +29 -10
  27. package/dist/{chunk-TG7FAHRP.js → chunk-DLY22KHX.js} +5 -5
  28. package/dist/{chunk-UHU7H57K.js → chunk-FTGJ3DPV.js} +202 -35
  29. package/dist/{chunk-HOU33DW5.js → chunk-G2RRBBOX.js} +1 -1
  30. package/dist/{chunk-VWFOKRYS.js → chunk-HJUGOAM7.js} +1 -1
  31. package/dist/{chunk-BUP5N3X6.js → chunk-HSUUTD4E.js} +1 -1
  32. package/dist/chunk-I3LTIAOR.js +11 -0
  33. package/dist/{chunk-UXLLWIA2.js → chunk-I3WLYIIW.js} +7 -7
  34. package/dist/{chunk-R7TMTFJP.js → chunk-IRF2FKB5.js} +1 -1
  35. package/dist/{chunk-M6NNXKRM.js → chunk-IRTZYDZO.js} +1 -1
  36. package/dist/{chunk-6P2Z5AUY.js → chunk-ISKWFUEQ.js} +360 -74
  37. package/dist/{chunk-QZBXLLTV.js → chunk-IWFYKNAO.js} +88 -2
  38. package/dist/{chunk-ERVZGWUR.js → chunk-JGOMMFNX.js} +7 -7
  39. package/dist/{chunk-6NFXOQKZ.js → chunk-LJIFCG4G.js} +1 -1
  40. package/dist/{chunk-WL3QF3QF.js → chunk-MBVSVQVH.js} +18 -16
  41. package/dist/{chunk-TOHKSZKI.js → chunk-MBZTX4V2.js} +7 -7
  42. package/dist/{chunk-VM6BX2WJ.js → chunk-PS3AHE6C.js} +5 -5
  43. package/dist/{chunk-5B7BEQPR.js → chunk-QDDPVBIS.js} +2 -2
  44. package/dist/{chunk-5Q4NDYQP.js → chunk-QQJGL7LG.js} +25 -24
  45. package/dist/{chunk-HWOU2HDH.js → chunk-QWJBTFAF.js} +1 -1
  46. package/dist/{chunk-OOUHNKKX.js → chunk-RJDJFRRY.js} +2 -2
  47. package/dist/{chunk-NMIYK2G2.js → chunk-SJ4DX2AD.js} +3 -3
  48. package/dist/{chunk-DWVAG73B.js → chunk-SOWXLIDN.js} +1 -1
  49. package/dist/{chunk-NKD5BNRX.js → chunk-TGUWHA27.js} +3 -3
  50. package/dist/{chunk-DIQN5SEL.js → chunk-TKJISBV6.js} +1 -1
  51. package/dist/{chunk-FTNCNEWE.js → chunk-TKX23NFV.js} +12 -12
  52. package/dist/{chunk-RXFKXZJS.js → chunk-TN2XMMD7.js} +1 -1
  53. package/dist/{chunk-TCBVV2JK.js → chunk-U5DC57AF.js} +3 -3
  54. package/dist/{chunk-DQYMQ47E.js → chunk-UAFMC3PL.js} +1 -1
  55. package/dist/{chunk-P2RWZCV7.js → chunk-V6IYYQU3.js} +2 -2
  56. package/dist/{chunk-DSKOHPXN.js → chunk-VL3CF4DZ.js} +1 -1
  57. package/dist/{chunk-N5EEEKT6.js → chunk-WHCDULC4.js} +7 -3
  58. package/dist/{chunk-QKXF7CLR.js → chunk-XB7TRWI2.js} +4 -4
  59. package/dist/{chunk-W3K6GBXY.js → chunk-XRRSFHKV.js} +2 -2
  60. package/dist/{chunk-SATUCMAJ.js → chunk-XTKH5VAC.js} +2 -2
  61. package/dist/{chunk-EZ3DZXUH.js → chunk-YVY3IVYV.js} +3 -3
  62. package/dist/{chunk-YTR435DO.js → chunk-ZNMVBHGJ.js} +3 -3
  63. package/dist/{chunk-RKOTJQVG.js → chunk-ZUOPFE22.js} +10 -4
  64. package/dist/{claude-launcher-LVYZ4YJI.js → claude-launcher-ZDZQXW76.js} +5 -5
  65. package/dist/{cli-X3JGBH2D.js → cli-6NI7WJFP.js} +189 -121
  66. package/dist/{command-NLWZT7KR.js → command-EFYTEHPF.js} +30 -30
  67. package/dist/{config-TNV5HHLO.js → config-VM6GKCCE.js} +2 -2
  68. package/dist/{connect-cmd-43IWARIV.js → connect-cmd-U2DY4OZU.js} +12 -12
  69. package/dist/{container-start-3MXIUNE2.js → container-start-C3CGPEXA.js} +32 -31
  70. package/dist/{context-cleanup-LTH77FC3.js → context-cleanup-D5EGQHQV.js} +3 -3
  71. package/dist/{control-plane-launch-TIK265OT.js → control-plane-launch-2AC4BTWL.js} +10 -10
  72. package/dist/{dist-JFVKLUHL.js → dist-IDP7Q53A.js} +2 -2
  73. package/dist/{docker-2IIRBQAB.js → docker-K442NGCS.js} +6 -6
  74. package/dist/{doctor-PKMAUDTU.js → doctor-RGTHY56D.js} +32 -32
  75. package/dist/{emit-artifact-cmd-RM2X3PBJ.js → emit-artifact-cmd-IK7GAS7V.js} +16 -16
  76. package/dist/{emit-cmd-QUABLVO6.js → emit-cmd-PSD7AAKJ.js} +6 -6
  77. package/dist/{emit-criteria-cmd-ZUI7DFND.js → emit-criteria-cmd-TGBRMX3P.js} +13 -13
  78. package/dist/emit-finding-cmd-KXCNLJLK.js +34 -0
  79. package/dist/{emit-result-cmd-JINMQ7QG.js → emit-result-cmd-WJBLCVDL.js} +52 -25
  80. package/dist/{emit-step-cmd-7FZWQTV3.js → emit-step-cmd-OYX5X65A.js} +14 -14
  81. package/dist/{exec-client-6ZJJ4KVH.js → exec-client-RMGGSTGR.js} +3 -3
  82. package/dist/findings-cmd-HFDOB6AC.js +135 -0
  83. package/dist/{fleet-readiness-3A67MUAU.js → fleet-readiness-5S2GCWZE.js} +12 -12
  84. package/dist/{governing-source-KQMKM5CI.js → governing-source-LVTBDQIM.js} +17 -17
  85. package/dist/{guest-init-A4HHI2UR.js → guest-init-O7INUZWE.js} +4 -4
  86. package/dist/{hook-fast-UJPAWDAO.js → hook-fast-A2N3PSXI.js} +1 -1
  87. package/dist/{host-key-NGRCMJZ7.js → host-key-HJ66C6MD.js} +3 -3
  88. package/dist/{image-tag-TEOKZVD5.js → image-tag-LLXOFXKP.js} +3 -3
  89. package/dist/index.js +4 -4
  90. package/dist/{init-Q6JV7IGF.js → init-NO5PJEPZ.js} +29 -29
  91. package/dist/{init-HENNITCI.js → init-VY6J7MAY.js} +29 -29
  92. package/dist/{init-cmd-GJR37XGU.js → init-cmd-FW67JGI7.js} +22 -22
  93. package/dist/{init-update-MZ4IRFC7.js → init-update-RN2PZ3MT.js} +21 -21
  94. package/dist/{install-NPTR35MG.js → install-GZ27NW6U.js} +4 -4
  95. package/dist/{install-cmd-4PXPAFQX.js → install-cmd-26OY23ZZ.js} +5 -5
  96. package/dist/{layout-BBTQPS6V.js → layout-3ISIED6A.js} +4 -4
  97. package/dist/{login-browser-WSOSQH2T.js → login-browser-NTVVDJF7.js} +2 -2
  98. package/dist/{logs-Z4L4I3OR.js → logs-7O3ELY35.js} +2 -2
  99. package/dist/loop-SY636F7D.js +81 -0
  100. package/dist/{machine-HZGUBOUH.js → machine-IJ2QP3FO.js} +25 -25
  101. package/dist/{machine-skills-O7W6NMWB.js → machine-skills-I4DB2CP3.js} +4 -4
  102. package/dist/{mcp-serve-cmd-NQM2WDYI.js → mcp-serve-cmd-AT7G6J5V.js} +4 -4
  103. package/dist/{paths-2VSGK6E2.js → paths-32THAYBB.js} +2 -2
  104. package/dist/{pending-SFZ2AYSK.js → pending-6CMYQHFL.js} +3 -3
  105. package/dist/{pidfile-3FT5OLUE.js → pidfile-3BH6WPOA.js} +3 -3
  106. package/dist/{record-7SSRLSI2.js → record-WHPJCC6Y.js} +3 -3
  107. package/dist/{runner-env-2Z2DVSUJ.js → runner-env-6Q45P3IE.js} +5 -5
  108. package/dist/{runner-identity-B37HHOZR.js → runner-identity-KH7HADNF.js} +6 -6
  109. package/dist/{runner-key-UP5YBUHR.js → runner-key-L6B5CNDG.js} +29 -29
  110. package/dist/{session-sender-7MSVJZ6Q.js → session-sender-N4DOGRTN.js} +17 -17
  111. package/dist/{spec-cmd-KAQ7MX4O.js → spec-cmd-7KOT4IQO.js} +14 -14
  112. package/dist/{starter-pack-5SOT5V4I.js → starter-pack-2WFNRGFA.js} +5 -5
  113. package/dist/{status-2ICTDC2R.js → status-LOQ2RHWX.js} +33 -32
  114. package/dist/{sync-cmd-7K3WVQKO.js → sync-cmd-E5VRZ5DK.js} +16 -16
  115. package/dist/{watch-NCYESLO2.js → watch-P6XAYDM2.js} +16 -16
  116. package/dist/{work-claim-cmd-IOUEHYIY.js → work-claim-cmd-7YQ5CJ3R.js} +17 -17
  117. package/dist/{work-cmd-FOI74X5B.js → work-cmd-RRHDQDOX.js} +14 -14
  118. package/dist/{work-comment-cmd-3C44H4CG.js → work-comment-cmd-XYAPMQYC.js} +14 -14
  119. package/dist/{work-logs-cmd-YGAWCX3X.js → work-logs-cmd-TTLUEWVX.js} +14 -14
  120. package/dist/{work-open-pr-cmd-HUG5HAVC.js → work-open-pr-cmd-A63YGIBW.js} +15 -15
  121. package/dist/{work-pr-cmd-L2EDOYXH.js → work-pr-cmd-HOS5ZHJI.js} +14 -14
  122. package/dist/{work-stop-cmd-GGDVKC67.js → work-stop-cmd-7KIKIZPO.js} +14 -14
  123. package/package.json +3 -3
  124. package/skill-pack/maintained/outerlayer-amend/SKILL.md +40 -39
  125. package/skill-pack/maintained/outerlayer-build/SKILL.md +9 -10
  126. package/skill-pack/maintained/outerlayer-build/references/criteria-judge.md +15 -12
  127. package/skill-pack/maintained/outerlayer-build/references/release.md +11 -6
  128. package/skill-pack/maintained/outerlayer-findings/SKILL.md +14 -10
  129. package/skill-pack/shipped.json +2 -0
  130. package/skill-pack/template/build/SKILL.md +3 -1
  131. package/skill-pack/validators/acceptance-criteria.yaml +7 -2
  132. package/dist/loop-DO46LFUH.js +0 -80
@@ -1,29 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { detectCi } from './chunk-2BZTGJII.js';
4
- import './chunk-VM6BX2WJ.js';
3
+ import { zodProblem } from './chunk-I3LTIAOR.js';
4
+ import { detectCi } from './chunk-DBELICD6.js';
5
+ import './chunk-PS3AHE6C.js';
5
6
  import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
6
7
  import './chunk-TBT347UY.js';
7
- import { detectActiveSession, autoConnect } from './chunk-NMIYK2G2.js';
8
- import './chunk-QFNFBQCG.js';
9
- import './chunk-BUP5N3X6.js';
10
- import { resolveRepoIdentity } from './chunk-UHU7H57K.js';
11
- import './chunk-5B7BEQPR.js';
12
- import './chunk-HOU33DW5.js';
8
+ import { detectActiveSession, autoConnect } from './chunk-SJ4DX2AD.js';
9
+ import './chunk-3YLHIXLR.js';
10
+ import './chunk-HSUUTD4E.js';
11
+ import { resolveRepoIdentity } from './chunk-FTGJ3DPV.js';
12
+ import './chunk-QDDPVBIS.js';
13
+ import './chunk-G2RRBBOX.js';
13
14
  import './chunk-G2JWZDFA.js';
14
15
  import { C } from './chunk-ANPNT6PM.js';
15
- import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-KJIUFOC4.js';
16
+ import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-AM3GMWQK.js';
16
17
  import './chunk-PJDQPF5N.js';
17
- import './chunk-R7TMTFJP.js';
18
- import './chunk-DWVAG73B.js';
19
- import './chunk-N5EEEKT6.js';
20
- import './chunk-OOUHNKKX.js';
18
+ import './chunk-IRF2FKB5.js';
19
+ import './chunk-SOWXLIDN.js';
20
+ import './chunk-WHCDULC4.js';
21
+ import './chunk-RJDJFRRY.js';
21
22
  import './chunk-ZJSNLVCE.js';
22
23
  import './chunk-2O5KA67H.js';
23
24
  import './chunk-BKO6JEZI.js';
24
25
  import './chunk-HCVLP7XA.js';
25
26
  import './chunk-BJ3KTMDH.js';
26
- import './chunk-JGML2VUN.js';
27
+ import './chunk-AKKVPUGK.js';
27
28
  import './chunk-5BHIBJDA.js';
28
29
  import './chunk-CDDED64E.js';
29
30
  import './chunk-RA3O54FC.js';
@@ -32,8 +33,8 @@ import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
32
33
  import './chunk-CRB3POP4.js';
33
34
  import './chunk-URIZRCRY.js';
34
35
  import './chunk-TUSYOL2O.js';
35
- import './chunk-RKOTJQVG.js';
36
- import { EmittedNameSchema, EMITTED_RESULT_MAX_LINK_LENGTH, EMITTED_RESULTS, EMITTED_RESULT_MAX_BODY_LENGTH } from './chunk-QZBXLLTV.js';
36
+ import './chunk-ZUOPFE22.js';
37
+ import { EmittedNameSchema, EMITTED_RESULT_MAX_LINK_LENGTH, EMITTED_RESULTS, itemsAllowResult, EMITTED_RESULT_MAX_BODY_LENGTH, CheckItemsSchema } from './chunk-IWFYKNAO.js';
37
38
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
38
39
  import './chunk-XD4ZCMA4.js';
39
40
  import './chunk-MESOOLF4.js';
@@ -57,14 +58,33 @@ async function readAllStdin() {
57
58
  for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
58
59
  return Buffer.concat(chunks).toString("utf8");
59
60
  }
60
- async function readBodyFile(path, readStdin) {
61
+ async function readFlagFile(flag, path, readStdin) {
61
62
  if (path === "-") return (readStdin ?? readAllStdin)();
62
63
  try {
63
64
  return readFileSync(path, "utf8");
64
65
  } catch (err) {
65
- throw new EmitResultError(`cannot read --body-file "${path}": ${String(err)}`);
66
+ throw new EmitResultError(`cannot read ${flag} "${path}": ${String(err)}`);
66
67
  }
67
68
  }
69
+ function parseItems(text, path) {
70
+ let raw;
71
+ try {
72
+ raw = JSON.parse(text);
73
+ } catch {
74
+ throw new EmitResultError(`--items "${path}" is not JSON \u2014 expected an array of check items`);
75
+ }
76
+ const parsed = CheckItemsSchema.safeParse(raw);
77
+ if (!parsed.success) {
78
+ throw new EmitResultError(`--items "${path}" does not match the check item shape: ${zodProblem(parsed.error.issues)}`);
79
+ }
80
+ return parsed.data;
81
+ }
82
+ function failingItemsSentence(items) {
83
+ const failing = items.filter((item) => item.result === "fail").map((item) => item.id);
84
+ if (failing.length === 0) return void 0;
85
+ const sentence = `${failing.length} of ${items.length} check ${items.length === 1 ? "item" : "items"} failed: ${failing.join(", ")}`;
86
+ return sentence.length <= EMITTED_RESULT_MAX_BODY_LENGTH ? sentence : `${sentence.slice(0, EMITTED_RESULT_MAX_BODY_LENGTH - 1)}\u2026`;
87
+ }
68
88
  async function runEmitResult(opts) {
69
89
  const cwd = opts.cwd ?? process.cwd();
70
90
  const home = opts.home ?? homeFromEnv();
@@ -89,23 +109,29 @@ async function runEmitResult(opts) {
89
109
  );
90
110
  }
91
111
  }
92
- let result = "pass";
93
- if (opts.result !== void 0) {
94
- if (!EMITTED_RESULTS.includes(opts.result)) {
95
- throw new EmitResultError(`invalid --result "${opts.result}" \u2014 expected "pass" or "fail"`);
96
- }
97
- result = opts.result;
112
+ if (opts.result !== void 0 && !EMITTED_RESULTS.includes(opts.result)) {
113
+ throw new EmitResultError(`invalid --result "${opts.result}" \u2014 expected "pass" or "fail"`);
98
114
  }
99
115
  if (opts.body !== void 0 && opts.bodyFile !== void 0) {
100
116
  throw new EmitResultError(
101
117
  `--body and --body-file both name the sentence \u2014 pass one, not both`
102
118
  );
103
119
  }
120
+ if (opts.bodyFile === "-" && opts.itemsFile === "-") {
121
+ throw new EmitResultError(`--body-file and --items both read standard input \u2014 give one of them a file`);
122
+ }
123
+ const items = opts.itemsFile === void 0 ? void 0 : parseItems(await readFlagFile("--items", opts.itemsFile, opts.readStdin), opts.itemsFile);
124
+ const result = opts.result ?? (itemsAllowResult("pass", items) ? "pass" : "fail");
125
+ if (!itemsAllowResult(result, items)) {
126
+ throw new EmitResultError(`--result pass with a failing check item \u2014 a check with a failing check item cannot pass`);
127
+ }
104
128
  let body;
105
129
  if (opts.body !== void 0) {
106
130
  body = opts.body;
107
131
  } else if (opts.bodyFile !== void 0) {
108
- body = await readBodyFile(opts.bodyFile, opts.readStdin);
132
+ body = await readFlagFile("--body-file", opts.bodyFile, opts.readStdin);
133
+ } else if (items !== void 0) {
134
+ body = failingItemsSentence(items);
109
135
  }
110
136
  if (body !== void 0) {
111
137
  body = body.trim();
@@ -161,6 +187,7 @@ async function runEmitResult(opts) {
161
187
  result,
162
188
  ...link !== void 0 ? { link } : {},
163
189
  ...body !== void 0 ? { body } : {},
190
+ items,
164
191
  emittedAt: now().toISOString(),
165
192
  ...ci ? { ci: true } : {},
166
193
  ...sessionId !== void 0 ? { sessionId } : {},
@@ -1,30 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { EmitStepError, runEmitStep, uploadSpooledSteps } from './chunk-VM6BX2WJ.js';
3
+ export { EmitStepError, runEmitStep, uploadSpooledSteps } from './chunk-PS3AHE6C.js';
4
4
  import './chunk-ESVW4MJY.js';
5
- import './chunk-NMIYK2G2.js';
6
- import './chunk-QFNFBQCG.js';
7
- import './chunk-BUP5N3X6.js';
8
- import './chunk-UHU7H57K.js';
9
- import './chunk-5B7BEQPR.js';
10
- import './chunk-HOU33DW5.js';
5
+ import './chunk-SJ4DX2AD.js';
6
+ import './chunk-3YLHIXLR.js';
7
+ import './chunk-HSUUTD4E.js';
8
+ import './chunk-FTGJ3DPV.js';
9
+ import './chunk-QDDPVBIS.js';
10
+ import './chunk-G2RRBBOX.js';
11
11
  import './chunk-G2JWZDFA.js';
12
12
  import './chunk-ANPNT6PM.js';
13
- import './chunk-KJIUFOC4.js';
13
+ import './chunk-AM3GMWQK.js';
14
14
  import './chunk-PJDQPF5N.js';
15
- import './chunk-R7TMTFJP.js';
16
- import './chunk-DWVAG73B.js';
17
- import './chunk-N5EEEKT6.js';
15
+ import './chunk-IRF2FKB5.js';
16
+ import './chunk-SOWXLIDN.js';
17
+ import './chunk-WHCDULC4.js';
18
18
  import './chunk-BJ3KTMDH.js';
19
- import './chunk-JGML2VUN.js';
19
+ import './chunk-AKKVPUGK.js';
20
20
  import './chunk-5BHIBJDA.js';
21
21
  import './chunk-CDDED64E.js';
22
22
  import './chunk-RA3O54FC.js';
23
23
  import './chunk-T2Q7ISPE.js';
24
24
  import './chunk-WZBHBH3J.js';
25
25
  import './chunk-CRB3POP4.js';
26
- import './chunk-RKOTJQVG.js';
27
- import './chunk-QZBXLLTV.js';
26
+ import './chunk-ZUOPFE22.js';
27
+ import './chunk-IWFYKNAO.js';
28
28
  import './chunk-VNVZDWO3.js';
29
29
  import './chunk-XD4ZCMA4.js';
30
30
  import './chunk-MESOOLF4.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { CAPTURE_LIMIT_BYTES, ExecConnectionError, HANDSHAKE_TIMEOUT_MS, execCapture, runExec, runVmExec, vmExecArgs, waitForAgent } from './chunk-WL3QF3QF.js';
4
- import './chunk-DIQN5SEL.js';
5
- import './chunk-N5EEEKT6.js';
3
+ export { CAPTURE_LIMIT_BYTES, ExecConnectionError, HANDSHAKE_TIMEOUT_MS, execCapture, runExec, runVmExec, vmExecArgs, waitForAgent } from './chunk-MBVSVQVH.js';
4
+ import './chunk-TKJISBV6.js';
5
+ import './chunk-WHCDULC4.js';
6
6
  import './chunk-XD4ZCMA4.js';
7
7
  import './chunk-MESOOLF4.js';
8
8
  import './chunk-Z5GEFMRW.js';
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ import { resolveUploadTarget, detectUploadSessionId, EmitFindingError } from './chunk-B5CQJBZ2.js';
4
+ import './chunk-ESVW4MJY.js';
5
+ import { autoConnect } from './chunk-SJ4DX2AD.js';
6
+ import './chunk-3YLHIXLR.js';
7
+ import './chunk-HSUUTD4E.js';
8
+ import './chunk-FTGJ3DPV.js';
9
+ import './chunk-QDDPVBIS.js';
10
+ import './chunk-G2RRBBOX.js';
11
+ import './chunk-G2JWZDFA.js';
12
+ import { C } from './chunk-ANPNT6PM.js';
13
+ import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-AM3GMWQK.js';
14
+ import './chunk-PJDQPF5N.js';
15
+ import './chunk-IRF2FKB5.js';
16
+ import './chunk-SOWXLIDN.js';
17
+ import './chunk-WHCDULC4.js';
18
+ import './chunk-ZJSNLVCE.js';
19
+ import './chunk-BJ3KTMDH.js';
20
+ import './chunk-AKKVPUGK.js';
21
+ import './chunk-5BHIBJDA.js';
22
+ import './chunk-CDDED64E.js';
23
+ import './chunk-RA3O54FC.js';
24
+ import './chunk-T2Q7ISPE.js';
25
+ import './chunk-WZBHBH3J.js';
26
+ import './chunk-CRB3POP4.js';
27
+ import './chunk-ZUOPFE22.js';
28
+ import './chunk-IWFYKNAO.js';
29
+ import { homeFromEnv } from './chunk-VNVZDWO3.js';
30
+ import './chunk-XD4ZCMA4.js';
31
+ import './chunk-MESOOLF4.js';
32
+ import './chunk-Z5GEFMRW.js';
33
+
34
+ createRequire(import.meta.url);
35
+
36
+ // src/findings-cmd.ts
37
+ var FindingsCommandError = class extends Error {
38
+ };
39
+ async function send(opts, request) {
40
+ const cwd = opts.cwd ?? process.cwd();
41
+ const home = opts.home ?? homeFromEnv();
42
+ const env = opts.env ?? process.env;
43
+ const now = opts.now ?? (() => /* @__PURE__ */ new Date());
44
+ let target;
45
+ try {
46
+ target = resolveUploadTarget({ item: opts.item, sessionId: detectUploadSessionId({ cwd, home, env, now }), home });
47
+ } catch (err) {
48
+ if (err instanceof EmitFindingError) throw new FindingsCommandError(err.message);
49
+ throw err;
50
+ }
51
+ const refusal = await autoConnect({ ...opts, cwd, home, env });
52
+ if (refusal !== void 0) throw new FindingsCommandError(refusal);
53
+ const resolved = resolveGatewayCredentials({ ...opts, cwd, home, env });
54
+ if (!resolved.ok) throw new FindingsCommandError(resolved.message);
55
+ const { url, credential, appId } = resolved;
56
+ const endpoint = new URL(request.path(target.item.number), url).toString();
57
+ const fetchImpl = opts.fetchImpl ?? defaultFetch;
58
+ let response;
59
+ try {
60
+ response = await fetchImpl(endpoint, {
61
+ method: request.method,
62
+ headers: {
63
+ ...request.body ? { "content-type": "application/json" } : {},
64
+ authorization: `Bearer ${credential}`,
65
+ "x-outerlayer-app-id": appId
66
+ },
67
+ ...request.body ? { body: JSON.stringify(request.body(target)) } : {}
68
+ });
69
+ } catch (err) {
70
+ throw new FindingsCommandError(`network error reaching ${endpoint}: ${String(err)}`);
71
+ }
72
+ if (response.status === 401) throw new FindingsCommandError(unauthorizedMessage(credential));
73
+ return { item: target.item.number, response };
74
+ }
75
+ async function refusalText(response, what) {
76
+ let detail = "";
77
+ try {
78
+ detail = (await response.text()).replace(/\s+/g, " ").trim().slice(0, 160);
79
+ } catch {
80
+ }
81
+ return `${what} failed (${response.status})${detail ? `: ${detail}` : ""}`;
82
+ }
83
+ function formatProblem(problem) {
84
+ const lines = [problem.title, ` id: ${problem.id}`];
85
+ if (problem.file) lines.push(` file: ${problem.file}`);
86
+ lines.push(` reports (${problem.reports.length}):`);
87
+ for (const report of problem.reports) {
88
+ const where = [report.file, report.headSha ? report.headSha.slice(0, 7) : void 0].filter(Boolean).join(", ");
89
+ lines.push(` - ${report.title}${where ? ` (${where})` : ""}`);
90
+ }
91
+ lines.push(
92
+ problem.result === null ? " result: no result yet" : ` result: ${problem.result.result === "fixed" ? "fixed" : "not fixed"} - ${problem.result.note}`
93
+ );
94
+ return lines.join("\n");
95
+ }
96
+ async function runFindingsShow(opts) {
97
+ const { item, response } = await send(opts, { method: "GET", path: (n) => `/v1/work-items/${n}/problems` });
98
+ if (!response.ok) throw new FindingsCommandError(await refusalText(response, "findings show"));
99
+ let data = {};
100
+ try {
101
+ data = (await response.json()).data ?? {};
102
+ } catch {
103
+ throw new FindingsCommandError("findings show: the gateway answered with a body that is not JSON");
104
+ }
105
+ const problems = data.problems ?? [];
106
+ const output = opts.json ? JSON.stringify(data) : problems.length === 0 ? `Item #${item} covers no problems.` : [`Item #${item} covers ${problems.length} ${problems.length === 1 ? "problem" : "problems"}:`, ...problems.map(formatProblem)].join("\n\n");
107
+ if (!opts.quiet) process.stdout.write(output + "\n");
108
+ return { data, output, exitCode: 0 };
109
+ }
110
+ async function runFindingsResult(opts) {
111
+ if (opts.fixed === true && opts.notFixed === true) {
112
+ throw new FindingsCommandError("pass either --fixed or --not-fixed, not both");
113
+ }
114
+ if (opts.fixed !== true && opts.notFixed !== true) {
115
+ throw new FindingsCommandError("pass --fixed or --not-fixed to say whether the fix resolved the problem");
116
+ }
117
+ const note = opts.note?.trim() ?? "";
118
+ if (note === "") throw new FindingsCommandError("--note is required: say what you did, or why you could not fix the problem");
119
+ const result = opts.fixed === true ? "fixed" : "not_fixed";
120
+ const { item, response } = await send(opts, {
121
+ method: "PUT",
122
+ path: (n) => `/v1/work-items/${n}/problems/${encodeURIComponent(opts.problem)}/result`,
123
+ body: (target) => ({ result, note, ...target.sessionId !== void 0 ? { sessionId: target.sessionId } : {} })
124
+ });
125
+ if (response.status === 422) {
126
+ throw new FindingsCommandError(`item #${item} does not cover problem ${opts.problem}. Nothing was recorded. A merged fix or a closed issue also releases the item's link to its problems.`);
127
+ }
128
+ if (!response.ok) throw new FindingsCommandError(await refusalText(response, "findings result"));
129
+ const data = { problemId: opts.problem, result, note, item };
130
+ const output = opts.json ? JSON.stringify(data) : `${C.green}\u2713${C.reset} recorded ${result === "fixed" ? "fixed" : "not fixed"} for problem ${opts.problem} ${C.dim}\xB7${C.reset} item #${item}`;
131
+ if (!opts.quiet) process.stdout.write(output + "\n");
132
+ return { data, output, exitCode: 0 };
133
+ }
134
+
135
+ export { FindingsCommandError, runFindingsResult, runFindingsShow };
@@ -1,26 +1,26 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { describeFleet, fleetCheck, fleetReadiness } from './chunk-TOHKSZKI.js';
4
- import './chunk-BUP5N3X6.js';
5
- import './chunk-5B7BEQPR.js';
6
- import './chunk-KJIUFOC4.js';
3
+ export { describeFleet, fleetCheck, fleetReadiness } from './chunk-MBZTX4V2.js';
4
+ import './chunk-HSUUTD4E.js';
5
+ import './chunk-QDDPVBIS.js';
6
+ import './chunk-AM3GMWQK.js';
7
7
  import './chunk-PJDQPF5N.js';
8
- import './chunk-R7TMTFJP.js';
9
- import './chunk-DWVAG73B.js';
10
- import './chunk-N5EEEKT6.js';
8
+ import './chunk-IRF2FKB5.js';
9
+ import './chunk-SOWXLIDN.js';
10
+ import './chunk-WHCDULC4.js';
11
11
  import './chunk-HCVLP7XA.js';
12
12
  import './chunk-BJ3KTMDH.js';
13
- import './chunk-DQYMQ47E.js';
14
- import './chunk-JGML2VUN.js';
13
+ import './chunk-UAFMC3PL.js';
14
+ import './chunk-AKKVPUGK.js';
15
15
  import './chunk-5BHIBJDA.js';
16
16
  import './chunk-CDDED64E.js';
17
17
  import './chunk-RA3O54FC.js';
18
18
  import './chunk-CRB3POP4.js';
19
- import './chunk-VWFOKRYS.js';
19
+ import './chunk-HJUGOAM7.js';
20
20
  import './chunk-YQR6E6OV.js';
21
21
  import './chunk-TUSYOL2O.js';
22
- import './chunk-RKOTJQVG.js';
23
- import './chunk-QZBXLLTV.js';
22
+ import './chunk-ZUOPFE22.js';
23
+ import './chunk-IWFYKNAO.js';
24
24
  import './chunk-VNVZDWO3.js';
25
25
  import './chunk-XD4ZCMA4.js';
26
26
  import './chunk-MESOOLF4.js';
@@ -1,35 +1,35 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { imageTargetFor, pinnedSourceOf, resolveGoverningSource } from './chunk-JZJLKTZT.js';
4
- import './chunk-X7SFJZIG.js';
5
- import './chunk-NMIYK2G2.js';
6
- import './chunk-QFNFBQCG.js';
7
- import './chunk-BUP5N3X6.js';
8
- import './chunk-UHU7H57K.js';
9
- import './chunk-5B7BEQPR.js';
10
- import './chunk-HOU33DW5.js';
3
+ export { imageTargetFor, pinnedSourceOf, resolveGoverningSource } from './chunk-3IDNLZPR.js';
4
+ import './chunk-DBRB26R7.js';
5
+ import './chunk-SJ4DX2AD.js';
6
+ import './chunk-3YLHIXLR.js';
7
+ import './chunk-HSUUTD4E.js';
8
+ import './chunk-FTGJ3DPV.js';
9
+ import './chunk-QDDPVBIS.js';
10
+ import './chunk-G2RRBBOX.js';
11
11
  import './chunk-G2JWZDFA.js';
12
12
  import './chunk-ANPNT6PM.js';
13
- import './chunk-TG7FAHRP.js';
14
- import './chunk-P2RWZCV7.js';
15
- import './chunk-KJIUFOC4.js';
13
+ import './chunk-DLY22KHX.js';
14
+ import './chunk-V6IYYQU3.js';
15
+ import './chunk-AM3GMWQK.js';
16
16
  import './chunk-PJDQPF5N.js';
17
- import './chunk-R7TMTFJP.js';
18
- import './chunk-DWVAG73B.js';
19
- import './chunk-N5EEEKT6.js';
17
+ import './chunk-IRF2FKB5.js';
18
+ import './chunk-SOWXLIDN.js';
19
+ import './chunk-WHCDULC4.js';
20
20
  import './chunk-ZJSNLVCE.js';
21
21
  import './chunk-FGF52V4V.js';
22
22
  import './chunk-HCVLP7XA.js';
23
23
  import './chunk-BJ3KTMDH.js';
24
- import './chunk-JGML2VUN.js';
24
+ import './chunk-AKKVPUGK.js';
25
25
  import './chunk-5BHIBJDA.js';
26
26
  import './chunk-CDDED64E.js';
27
27
  import './chunk-RA3O54FC.js';
28
28
  import './chunk-WZBHBH3J.js';
29
29
  import './chunk-CRB3POP4.js';
30
30
  import './chunk-YQR6E6OV.js';
31
- import './chunk-RKOTJQVG.js';
32
- import './chunk-QZBXLLTV.js';
31
+ import './chunk-ZUOPFE22.js';
32
+ import './chunk-IWFYKNAO.js';
33
33
  import './chunk-VNVZDWO3.js';
34
34
  import './chunk-XD4ZCMA4.js';
35
35
  import './chunk-MESOOLF4.js';
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD, realGuestHost, relayPortsFrom, runGuestInit } from './chunk-OO6OADZN.js';
4
- import './chunk-RXFKXZJS.js';
5
- import './chunk-DIQN5SEL.js';
3
+ export { DOCKERD_LOG, HELPER_PATH, HELPER_RECORD, realGuestHost, relayPortsFrom, runGuestInit } from './chunk-6CNNRO53.js';
4
+ import './chunk-TN2XMMD7.js';
5
+ import './chunk-TKJISBV6.js';
6
6
  import './chunk-JBJTC3UU.js';
7
- import './chunk-N5EEEKT6.js';
7
+ import './chunk-WHCDULC4.js';
8
8
  import './chunk-XD4ZCMA4.js';
9
9
  import './chunk-MESOOLF4.js';
10
10
  import './chunk-Z5GEFMRW.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { AUTO_SYNC_DEBOUNCE_MS, DUPLICATE_RUN_WINDOW_MS, WORK_LEASE_RENEW_DEBOUNCE_MS, WORK_LINK_RETRIES, contextPossiblyGoverned, handleWorkLaunch, handleWorkSessionEnd, hookFiredMarkerPath, isDuplicateRun, logHookError, machineSkillsContext, markWorkLeaseRenewed, maybeAutoSync, maybeRenewWorkLease, recordLinkExitFailure, runHookFast, spoolDir } from './chunk-OOUHNKKX.js';
3
+ export { AUTO_SYNC_DEBOUNCE_MS, DUPLICATE_RUN_WINDOW_MS, WORK_LEASE_RENEW_DEBOUNCE_MS, WORK_LINK_RETRIES, contextPossiblyGoverned, handleWorkLaunch, handleWorkSessionEnd, hookFiredMarkerPath, isDuplicateRun, logHookError, machineSkillsContext, markWorkLeaseRenewed, maybeAutoSync, maybeRenewWorkLease, recordLinkExitFailure, runHookFast, spoolDir } from './chunk-RJDJFRRY.js';
4
4
  import './chunk-ZJSNLVCE.js';
5
5
  import './chunk-HCVLP7XA.js';
6
6
  import './chunk-BJ3KTMDH.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { ensureHostKey, loadHostKey, signerFor } from './chunk-R7TMTFJP.js';
4
- import './chunk-DWVAG73B.js';
5
- import './chunk-N5EEEKT6.js';
3
+ export { ensureHostKey, loadHostKey, signerFor } from './chunk-IRF2FKB5.js';
4
+ import './chunk-SOWXLIDN.js';
5
+ import './chunk-WHCDULC4.js';
6
6
  import './chunk-XD4ZCMA4.js';
7
7
  import './chunk-MESOOLF4.js';
8
8
  import './chunk-Z5GEFMRW.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { IMAGE_VERSION_VARIABLE, imageAdvice, imageTag, pullInstruction, readImageStatus, runnerImageVersion, tagToPull } from './chunk-O47BTZSN.js';
3
+ export { IMAGE_VERSION_VARIABLE, imageAdvice, imageTag, pullInstruction, readImageStatus, runnerImageVersion, tagToPull } from './chunk-D3LS7E7U.js';
4
4
  import './chunk-TQMI335S.js';
5
- import './chunk-DWVAG73B.js';
6
- import './chunk-N5EEEKT6.js';
5
+ import './chunk-SOWXLIDN.js';
6
+ import './chunk-WHCDULC4.js';
7
7
  import './chunk-XD4ZCMA4.js';
8
8
  import './chunk-MESOOLF4.js';
9
9
  import './chunk-Z5GEFMRW.js';
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ createRequire(import.meta.url);
6
6
  // src/index.ts
7
7
  var argv = process.argv.slice(2);
8
8
  if (argv[0] === "hook") {
9
- const { runHookFast } = await import('./hook-fast-UJPAWDAO.js');
9
+ const { runHookFast } = await import('./hook-fast-A2N3PSXI.js');
10
10
  await runHookFast(argv[1]);
11
11
  process.exit(0);
12
12
  }
@@ -22,9 +22,9 @@ if (argv[0] === "statusline") {
22
22
  process.exit(0);
23
23
  }
24
24
  if (argv[0] === "claude") {
25
- const { runClaudeLauncher } = await import('./claude-launcher-LVYZ4YJI.js');
25
+ const { runClaudeLauncher } = await import('./claude-launcher-ZDZQXW76.js');
26
26
  process.exit(await runClaudeLauncher(argv.slice(1)));
27
27
  }
28
- (await import('./hook-fast-UJPAWDAO.js')).recordLinkExitFailure(argv);
29
- var { runCli } = await import('./cli-X3JGBH2D.js');
28
+ (await import('./hook-fast-A2N3PSXI.js')).recordLinkExitFailure(argv);
29
+ var { runCli } = await import('./cli-6NI7WJFP.js');
30
30
  await runCli(process.argv);
@@ -1,53 +1,53 @@
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-KBB3CQTW.js';
4
- import './chunk-W3K6GBXY.js';
5
- import './chunk-5Q4NDYQP.js';
6
- import './chunk-WL3QF3QF.js';
7
- import './chunk-DIQN5SEL.js';
8
- import './chunk-JZJLKTZT.js';
9
- import './chunk-O47BTZSN.js';
3
+ export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, prepareRunnerInit, readConfigObject, runRunnerInit, writeRunnerInit } from './chunk-B6OYEP3K.js';
4
+ import './chunk-XRRSFHKV.js';
5
+ import './chunk-QQJGL7LG.js';
6
+ import './chunk-MBVSVQVH.js';
7
+ import './chunk-TKJISBV6.js';
8
+ import './chunk-3IDNLZPR.js';
9
+ import './chunk-D3LS7E7U.js';
10
10
  import './chunk-TQMI335S.js';
11
- import './chunk-AV5MJY45.js';
12
- import './chunk-JYVBEWBC.js';
13
- import './chunk-YYGXCRIW.js';
11
+ import './chunk-5HZDPOJI.js';
12
+ import './chunk-3F7RC3UA.js';
13
+ import './chunk-2ZMJFGOZ.js';
14
14
  import './chunk-UXYLWVTQ.js';
15
- import './chunk-TCBVV2JK.js';
16
- import './chunk-M6NNXKRM.js';
15
+ import './chunk-U5DC57AF.js';
16
+ import './chunk-IRTZYDZO.js';
17
17
  import './chunk-JBJTC3UU.js';
18
18
  import './chunk-OGFGZQA3.js';
19
- import './chunk-MFI55TNI.js';
19
+ import './chunk-7YSR636F.js';
20
20
  import './chunk-YJLHUKYS.js';
21
21
  import './chunk-SJZL5F3F.js';
22
- import './chunk-X7SFJZIG.js';
23
- import './chunk-NMIYK2G2.js';
24
- import './chunk-QFNFBQCG.js';
25
- import './chunk-BUP5N3X6.js';
26
- import './chunk-UHU7H57K.js';
27
- import './chunk-5B7BEQPR.js';
28
- import './chunk-HOU33DW5.js';
22
+ import './chunk-DBRB26R7.js';
23
+ import './chunk-SJ4DX2AD.js';
24
+ import './chunk-3YLHIXLR.js';
25
+ import './chunk-HSUUTD4E.js';
26
+ import './chunk-FTGJ3DPV.js';
27
+ import './chunk-QDDPVBIS.js';
28
+ import './chunk-G2RRBBOX.js';
29
29
  import './chunk-G2JWZDFA.js';
30
30
  import './chunk-ANPNT6PM.js';
31
- import './chunk-TG7FAHRP.js';
32
- import './chunk-P2RWZCV7.js';
33
- import './chunk-KJIUFOC4.js';
31
+ import './chunk-DLY22KHX.js';
32
+ import './chunk-V6IYYQU3.js';
33
+ import './chunk-AM3GMWQK.js';
34
34
  import './chunk-PJDQPF5N.js';
35
- import './chunk-R7TMTFJP.js';
36
- import './chunk-DWVAG73B.js';
37
- import './chunk-N5EEEKT6.js';
35
+ import './chunk-IRF2FKB5.js';
36
+ import './chunk-SOWXLIDN.js';
37
+ import './chunk-WHCDULC4.js';
38
38
  import './chunk-ZJSNLVCE.js';
39
39
  import './chunk-FGF52V4V.js';
40
40
  import './chunk-HCVLP7XA.js';
41
41
  import './chunk-BJ3KTMDH.js';
42
- import './chunk-JGML2VUN.js';
42
+ import './chunk-AKKVPUGK.js';
43
43
  import './chunk-5BHIBJDA.js';
44
44
  import './chunk-CDDED64E.js';
45
45
  import './chunk-RA3O54FC.js';
46
46
  import './chunk-WZBHBH3J.js';
47
47
  import './chunk-CRB3POP4.js';
48
48
  import './chunk-YQR6E6OV.js';
49
- import './chunk-RKOTJQVG.js';
50
- import './chunk-QZBXLLTV.js';
49
+ import './chunk-ZUOPFE22.js';
50
+ import './chunk-IWFYKNAO.js';
51
51
  import './chunk-VNVZDWO3.js';
52
52
  import './chunk-XD4ZCMA4.js';
53
53
  import './chunk-MESOOLF4.js';