@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
@@ -2553,6 +2553,7 @@ __export(util_exports, {
2553
2553
  required: () => required,
2554
2554
  safeExtend: () => safeExtend,
2555
2555
  shallowClone: () => shallowClone,
2556
+ sizeCaps: () => sizeCaps,
2556
2557
  slugify: () => slugify,
2557
2558
  stringifyPrimitive: () => stringifyPrimitive,
2558
2559
  toZod: () => toZod,
@@ -3072,6 +3073,18 @@ function prefixIssues(path, issues) {
3072
3073
  function unwrapMessage(message) {
3073
3074
  return typeof message === "string" ? message : message?.message;
3074
3075
  }
3076
+ function sizeCaps(defChecks) {
3077
+ const caps = [];
3078
+ for (const ch of defChecks ?? []) {
3079
+ const d = ch._zod.def;
3080
+ if (!/_(length|size)$|_equals$/.test(d.check))
3081
+ break;
3082
+ const max = d.maximum ?? d.length ?? d.size;
3083
+ if (max >= 0)
3084
+ caps.push([max, ch]);
3085
+ }
3086
+ return caps;
3087
+ }
3075
3088
  function attachSchema(issues, start, inst) {
3076
3089
  var _a3;
3077
3090
  for (let i = start; i < issues.length; i++) {
@@ -4492,7 +4505,7 @@ ${content.join("\n")}
4492
4505
  var version = {
4493
4506
  major: 4,
4494
4507
  minor: 6,
4495
- patch: 5
4508
+ patch: 7
4496
4509
  };
4497
4510
 
4498
4511
  // ../../node_modules/zod/v4/core/schemas.js
@@ -5248,6 +5261,31 @@ var $ZodDate = /* @__PURE__ */ $constructor("$ZodDate", (inst, def) => {
5248
5261
  return payload;
5249
5262
  };
5250
5263
  });
5264
+ function capSize(inst, size) {
5265
+ const caps = sizeCaps(inst._zod.def.checks);
5266
+ if (!caps.length)
5267
+ return;
5268
+ const cap = Math.min(...caps.map((c) => c[0]));
5269
+ const parse3 = inst._zod.parse;
5270
+ inst._zod.parse = (payload, ctx) => {
5271
+ const n = size(payload.value);
5272
+ if (n > cap && !ctx?.skipChecks && ctx?.direction !== "backward") {
5273
+ for (const [max, ch] of sizeCaps(inst._zod.def.checks)) {
5274
+ if (n > max && ch._zod.def.when(payload)) {
5275
+ const start = payload.issues.length;
5276
+ ch._zod.check(payload);
5277
+ payload.issues[start].continue = false;
5278
+ attachSchema(payload.issues, start, inst);
5279
+ return payload;
5280
+ }
5281
+ }
5282
+ }
5283
+ return parse3(payload, ctx);
5284
+ };
5285
+ }
5286
+ var arraySize = (input2) => Array.isArray(input2) ? input2.length : -1;
5287
+ var mapSize = (input2) => input2 instanceof Map ? input2.size : -1;
5288
+ var setSize = (input2) => input2 instanceof Set ? input2.size : -1;
5251
5289
  function handleArrayResult(result, final, index) {
5252
5290
  if (result.issues.length) {
5253
5291
  final.issues.push(...prefixIssues(index, result.issues));
@@ -5291,6 +5329,7 @@ var $ZodArray = /* @__PURE__ */ $constructor("$ZodArray", (inst, def) => {
5291
5329
  }
5292
5330
  return payload;
5293
5331
  };
5332
+ capSize(inst, arraySize);
5294
5333
  });
5295
5334
  function handlePropertyResult(result, final, key, input2, optin, optout) {
5296
5335
  const isPresent = key in input2;
@@ -6247,6 +6286,7 @@ var $ZodMap = /* @__PURE__ */ $constructor("$ZodMap", (inst, def) => {
6247
6286
  return Promise.all(proms).then(() => payload);
6248
6287
  return payload;
6249
6288
  };
6289
+ capSize(inst, mapSize);
6250
6290
  });
6251
6291
  function handleMapResult(keyResult, valueResult, final, key, input2, inst, ctx) {
6252
6292
  if (keyResult.issues.length) {
@@ -6313,6 +6353,7 @@ var $ZodSet = /* @__PURE__ */ $constructor("$ZodSet", (inst, def) => {
6313
6353
  return Promise.all(proms).then(() => payload);
6314
6354
  return payload;
6315
6355
  };
6356
+ capSize(inst, setSize);
6316
6357
  });
6317
6358
  function handleSetResult(result, final) {
6318
6359
  if (result.issues.length) {
@@ -15837,9 +15878,15 @@ function generateNullableCheck(doc, ctx, schema, accessor, buildsValue = true) {
15837
15878
  doc.write(`}`);
15838
15879
  return outputVar;
15839
15880
  }
15881
+ function generateSizeGate(doc, schema, size) {
15882
+ for (const [max, check2] of sizeCaps(schema._zod.def.checks)) {
15883
+ doc.write(`if (${size} > ${numericOperand(max, check2._zod.def.check)}) return INVALID;`);
15884
+ }
15885
+ }
15840
15886
  function generateArrayCheck(doc, ctx, schema, accessor, buildsValue = true) {
15841
15887
  const def = schema._zod.def;
15842
15888
  doc.write(`if (!Array.isArray(${accessor})) return INVALID;`);
15889
+ generateSizeGate(doc, schema, `${accessor}.length`);
15843
15890
  const outputVar = buildsValue ? newVar(ctx) : null;
15844
15891
  const iVar = newVar(ctx);
15845
15892
  const elemVar = newVar(ctx);
@@ -16239,6 +16286,7 @@ function literalPropertyKey(ctx, key) {
16239
16286
  function generateMapCheck(doc, ctx, schema, accessor) {
16240
16287
  const def = schema._zod.def;
16241
16288
  doc.write(`if (!(${accessor} instanceof Map)) return INVALID;`);
16289
+ generateSizeGate(doc, schema, `${accessor}.size`);
16242
16290
  const outputVar = newVar(ctx);
16243
16291
  const kVar = newVar(ctx);
16244
16292
  const valVar = newVar(ctx);
@@ -16255,6 +16303,7 @@ function generateMapCheck(doc, ctx, schema, accessor) {
16255
16303
  function generateSetCheck(doc, ctx, schema, accessor) {
16256
16304
  const def = schema._zod.def;
16257
16305
  doc.write(`if (!(${accessor} instanceof Set)) return INVALID;`);
16306
+ generateSizeGate(doc, schema, `${accessor}.size`);
16258
16307
  const outputVar = newVar(ctx);
16259
16308
  const valVar = newVar(ctx);
16260
16309
  doc.write(`const ${outputVar} = new Set();`);
@@ -22278,6 +22327,43 @@ var ArtifactTombstoneRecordSchema = external_exports.looseObject({
22278
22327
  t: external_exports.string()
22279
22328
  });
22280
22329
  external_exports.union([ArtifactSpoolRecordSchema, ArtifactTombstoneRecordSchema]);
22330
+ var CHECK_ITEM_RESULTS = ["pass", "fail", "skipped"];
22331
+ var CHECK_ITEMS_MAX = 500;
22332
+ var CHECK_ITEM_ID_MAX_LENGTH = 200;
22333
+ var CHECK_ITEM_REASON_MAX_LENGTH = 1e3;
22334
+ var CHECK_ITEM_REFS_MAX = 20;
22335
+ var CHECK_ITEM_REF_PATH_MAX_LENGTH = 500;
22336
+ var ONE_LINE = /^[^\u0000-\u001f\u007f]+$/;
22337
+ var CheckItemRefSchema = external_exports.object({
22338
+ path: external_exports.string().min(1).max(CHECK_ITEM_REF_PATH_MAX_LENGTH).regex(ONE_LINE, "must be one line").refine((path) => !path.startsWith("/") && !path.split(/[\\/]/).includes(".."), {
22339
+ message: "must be a relative path with no '..' segment"
22340
+ }),
22341
+ line: external_exports.number().int().positive().optional(),
22342
+ /** Only an https link: it becomes an href on a page. */
22343
+ href: external_exports.string().max(1e3).refine((href) => href.startsWith("https://") && !/\s/.test(href), { message: "must be an https:// URL with no whitespace" }).optional()
22344
+ });
22345
+ var CheckItemSchema = external_exports.object({
22346
+ /** What the item is about, unique within the check. */
22347
+ id: external_exports.string().min(1).max(CHECK_ITEM_ID_MAX_LENGTH).regex(ONE_LINE, "must be one line"),
22348
+ /** The acceptance criterion the item is about, when it is about one. */
22349
+ criterion: ArtifactCriterionIdSchema.optional(),
22350
+ result: external_exports.enum(CHECK_ITEM_RESULTS),
22351
+ /** Why, in a sentence or three. */
22352
+ reason: external_exports.string().max(CHECK_ITEM_REASON_MAX_LENGTH).optional(),
22353
+ refs: external_exports.array(CheckItemRefSchema).max(CHECK_ITEM_REFS_MAX).optional(),
22354
+ /** The sha256 of what the check item was judged on. A judge that sees the same inputs again keeps its result. */
22355
+ inputs: external_exports.string().regex(/^[0-9a-f]{64}$/, "must be a lowercase sha256 hex digest").optional()
22356
+ });
22357
+ var CheckItemsSchema = external_exports.array(CheckItemSchema).max(CHECK_ITEMS_MAX).superRefine((items, ctx) => {
22358
+ const seen = /* @__PURE__ */ new Set();
22359
+ for (const [index, item] of items.entries()) {
22360
+ if (seen.has(item.id)) ctx.addIssue({ code: "custom", path: [index, "id"], message: `repeats the id ${JSON.stringify(item.id)}` });
22361
+ seen.add(item.id);
22362
+ }
22363
+ });
22364
+ function itemsAllowResult(result, items) {
22365
+ return result === "fail" || !(items != null ? items : []).some((item) => item.result === "fail");
22366
+ }
22281
22367
  var EMITTED_RESULTS = ["pass", "fail"];
22282
22368
  var RESERVED_EMIT_NAMES = ["artifact", "criteria", "finding", "findings", "step"];
22283
22369
  var EmittedNameSchema = external_exports.string().regex(/^[a-z][a-z0-9._-]{0,63}$/).superRefine((name, ctx) => {
@@ -22579,4 +22665,4 @@ xmlchars/xmlns/1.0/ed3.js:
22579
22665
  *)
22580
22666
  */
22581
22667
 
22582
- export { ARTIFACT_KINDS, ARTIFACT_MAX_CAPTION_LENGTH, ARTIFACT_MAX_FILENAME_LENGTH, ARTIFACT_MAX_REPLACES_TARGETS, ArtifactCriterionIdSchema, ArtifactSpoolRecordSchema, ArtifactTombstoneRecordSchema, BUCKET_MODEL_MAX_LENGTH, CAPTURE_TIERS, CLI_LOGIN_KIND, CLI_LOGIN_MACHINE_NAME_MAX, CliLoginPollResponseSchema, CliLoginRefusalSchema, CliLoginStartedSchema, CriteriaListSchema, EMITTED_RESULTS, EMITTED_RESULT_MAX_BODY_LENGTH, EMITTED_RESULT_MAX_LINK_LENGTH, EVENT_TYPES, EmittedNameSchema, FindingBatchSchema, FindingsResponseSchema, INPUT_BAND_BOUNDARIES, RESERVED_EMIT_NAMES, SAME_PROBLEM_RULES, SCHEMA_VERSION, SPEED_MAX_LENGTH, StepBodySchema, StepNameSchema, bannedPathsForTier, bindTests, downconvertSession, inferArtifactKind, inputBandOf, isHumanUserTurn, mediaTypeForArtifactPath, parseAgentSession, parseJunit, parseTestSelector, turnCountBound };
22668
+ export { ARTIFACT_KINDS, ARTIFACT_MAX_CAPTION_LENGTH, ARTIFACT_MAX_FILENAME_LENGTH, ARTIFACT_MAX_REPLACES_TARGETS, ArtifactCriterionIdSchema, ArtifactSpoolRecordSchema, ArtifactTombstoneRecordSchema, BUCKET_MODEL_MAX_LENGTH, CAPTURE_TIERS, CHECK_ITEM_REASON_MAX_LENGTH, CLI_LOGIN_KIND, CLI_LOGIN_MACHINE_NAME_MAX, CheckItemsSchema, CliLoginPollResponseSchema, CliLoginRefusalSchema, CliLoginStartedSchema, CriteriaListSchema, EMITTED_RESULTS, EMITTED_RESULT_MAX_BODY_LENGTH, EMITTED_RESULT_MAX_LINK_LENGTH, EVENT_TYPES, EmittedNameSchema, FindingBatchSchema, FindingsResponseSchema, INPUT_BAND_BOUNDARIES, RESERVED_EMIT_NAMES, SAME_PROBLEM_RULES, SCHEMA_VERSION, SPEED_MAX_LENGTH, StepBodySchema, StepNameSchema, bannedPathsForTier, bindTests, downconvertSession, inferArtifactKind, inputBandOf, isHumanUserTurn, itemsAllowResult, mediaTypeForArtifactPath, parseAgentSession, parseJunit, parseTestSelector, turnCountBound };
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { isPlaceholderCommand } from './chunk-KBB3CQTW.js';
4
- import { describeCallFailure } from './chunk-JZJLKTZT.js';
5
- import { builtinKind } from './chunk-YYGXCRIW.js';
6
- import { WorkCommandError, getJson } from './chunk-X7SFJZIG.js';
7
- import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
8
- import { signerFor } from './chunk-R7TMTFJP.js';
9
- import { CLAUDE_CREDENTIAL_VARIABLES, claudeCredential } from './chunk-N5EEEKT6.js';
3
+ import { isPlaceholderCommand } from './chunk-B6OYEP3K.js';
4
+ import { describeCallFailure } from './chunk-3IDNLZPR.js';
5
+ import { builtinKind } from './chunk-2ZMJFGOZ.js';
6
+ import { WorkCommandError, getJson } from './chunk-DBRB26R7.js';
7
+ import { sanitizeTerminal } from './chunk-HSUUTD4E.js';
8
+ import { signerFor } from './chunk-IRF2FKB5.js';
9
+ import { CLAUDE_CREDENTIAL_VARIABLES, claudeCredential } from './chunk-WHCDULC4.js';
10
10
 
11
11
  createRequire(import.meta.url);
12
12
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-DWVAG73B.js';
3
+ import { runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-SOWXLIDN.js';
4
4
  import { readlinkSync, realpathSync, mkdirSync, unlinkSync, symlinkSync, renameSync, readFileSync, writeFileSync, rmSync, existsSync, readdirSync } from 'fs';
5
5
  import { join, basename, sep, resolve } from 'path';
6
6
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { EXEC_PORT } from './chunk-DIQN5SEL.js';
3
+ import { EXEC_PORT } from './chunk-TKJISBV6.js';
4
4
  import { createConnection } from 'net';
5
5
 
6
6
  createRequire(import.meta.url);
@@ -81,21 +81,24 @@ function runExec(socketPath, request, io = {}) {
81
81
  killed = true;
82
82
  send(FRAME.kill, Buffer.alloc(0));
83
83
  }
84
- const pumpStdin = async () => {
84
+ const chunks = (buffer) => Array.from({ length: Math.ceil(buffer.length / CHUNK_BYTES) }, (_unused, i) => buffer.subarray(i * CHUNK_BYTES, (i + 1) * CHUNK_BYTES));
85
+ const sendRequest = () => {
85
86
  const stdin = io.stdin;
86
- const chunks = (buffer) => Array.from({ length: Math.ceil(buffer.length / CHUNK_BYTES) }, (_unused, i) => buffer.subarray(i * CHUNK_BYTES, (i + 1) * CHUNK_BYTES));
87
+ if (stdin !== void 0 && typeof stdin !== "string" && !Buffer.isBuffer(stdin)) {
88
+ send(FRAME.request, encodeRequest(request));
89
+ void pumpStdin(stdin);
90
+ return;
91
+ }
92
+ const input = stdin === void 0 ? [] : chunks(Buffer.from(stdin)).map((chunk) => encodeFrame(FRAME.stdin, chunk));
93
+ socket.write(Buffer.concat([encodeFrame(FRAME.request, encodeRequest(request)), ...input, encodeFrame(FRAME.stdin, Buffer.alloc(0))]));
94
+ };
95
+ const pumpStdin = async (stdin) => {
87
96
  try {
88
- if (stdin === void 0) {
89
- } else if (typeof stdin === "string" || Buffer.isBuffer(stdin)) {
90
- for (const chunk of chunks(Buffer.from(stdin))) send(FRAME.stdin, chunk);
91
- } else {
92
- stdinIterator = stdin.iterator({ destroyOnReturn: false });
93
- for (; ; ) {
94
- const next = await stdinIterator.next();
95
- if (next.done === true || settled) break;
96
- for (const chunk of chunks(Buffer.from(next.value))) {
97
- if (!send(FRAME.stdin, chunk)) await new Promise((done) => socket.once("drain", () => done()));
98
- }
97
+ const iterator = stdin.iterator({ destroyOnReturn: false });
98
+ stdinIterator = iterator;
99
+ for await (const value of iterator) {
100
+ for (const chunk of chunks(Buffer.from(value))) {
101
+ if (!send(FRAME.stdin, chunk)) await new Promise((done) => socket.once("drain", () => done()));
99
102
  }
100
103
  }
101
104
  } catch {
@@ -143,9 +146,8 @@ function runExec(socketPath, request, io = {}) {
143
146
  }
144
147
  greeted = true;
145
148
  clearTimeout(handshakeTimer);
146
- send(FRAME.request, encodeRequest(request));
149
+ sendRequest();
147
150
  if (io.signal?.aborted === true) kill();
148
- void pumpStdin();
149
151
  const rest = greeting.subarray(newline + 1);
150
152
  if (rest.length > 0) onFrames(rest);
151
153
  });
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
4
- import { isAgentsMdLayout } from './chunk-5B7BEQPR.js';
5
- import { resolveGatewayCredentials, defaultFetch } from './chunk-KJIUFOC4.js';
3
+ import { sanitizeTerminal } from './chunk-HSUUTD4E.js';
4
+ import { isAgentsMdLayout } from './chunk-QDDPVBIS.js';
5
+ import { resolveGatewayCredentials, defaultFetch } from './chunk-AM3GMWQK.js';
6
6
  import { versionAtLeast } from './chunk-HCVLP7XA.js';
7
7
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
8
- import { machineSkillsState, staleClaudeSkills } from './chunk-DQYMQ47E.js';
9
- import { AGENTS_SKILLS_BASE, skillDir, namesCore, MACHINE_SKILL_PATH, isMaintainedCopy, loadTemplateFiles } from './chunk-JGML2VUN.js';
8
+ import { machineSkillsState, staleClaudeSkills } from './chunk-UAFMC3PL.js';
9
+ import { AGENTS_SKILLS_BASE, skillDir, namesCore, MACHINE_SKILL_PATH, isMaintainedCopy, loadTemplateFiles } from './chunk-AKKVPUGK.js';
10
10
  import { MAINTAINED_SKILLS } from './chunk-CDDED64E.js';
11
11
  import { cliInvocation } from './chunk-CRB3POP4.js';
12
- import { hasSymlinkComponent } from './chunk-VWFOKRYS.js';
13
- import { emitTree, ALL_TARGET_IDS, classifyTree, splitRawFile } from './chunk-RKOTJQVG.js';
12
+ import { hasSymlinkComponent } from './chunk-HJUGOAM7.js';
13
+ import { emitTree, ALL_TARGET_IDS, classifyTree, splitRawFile } from './chunk-ZUOPFE22.js';
14
14
  import { existsSync, readFileSync, writeFileSync, realpathSync, readdirSync } from 'fs';
15
15
  import { join, dirname, posix } from 'path';
16
16
 
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
4
- import { autoConnect, detectActiveSession } from './chunk-NMIYK2G2.js';
5
- import { acquireSpoolLockAt } from './chunk-BUP5N3X6.js';
6
- import { resolveRepoIdentity } from './chunk-UHU7H57K.js';
4
+ import { autoConnect, detectActiveSession } from './chunk-SJ4DX2AD.js';
5
+ import { acquireSpoolLockAt } from './chunk-HSUUTD4E.js';
6
+ import { resolveRepoIdentity } from './chunk-FTGJ3DPV.js';
7
7
  import { C } from './chunk-ANPNT6PM.js';
8
- import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-KJIUFOC4.js';
8
+ import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-AM3GMWQK.js';
9
9
  import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
10
10
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
11
- import { StepNameSchema, StepBodySchema } from './chunk-QZBXLLTV.js';
11
+ import { StepNameSchema, StepBodySchema } from './chunk-IWFYKNAO.js';
12
12
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
13
13
  import { randomUUID } from 'crypto';
14
14
  import { readFileSync, existsSync, mkdirSync, writeFileSync, renameSync, appendFileSync } from 'fs';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { AGENTS_SKILLS_BASE, OUTERLAYER_SKILLS_BASE } from './chunk-JGML2VUN.js';
4
- import { normalizePath, CONTEXT_PIN_FILENAME } from './chunk-RKOTJQVG.js';
3
+ import { AGENTS_SKILLS_BASE, OUTERLAYER_SKILLS_BASE } from './chunk-AKKVPUGK.js';
4
+ import { normalizePath, CONTEXT_PIN_FILENAME } from './chunk-ZUOPFE22.js';
5
5
  import { existsSync, readdirSync, readFileSync, mkdirSync, writeFileSync, lstatSync, readlinkSync, symlinkSync, rmdirSync } from 'fs';
6
6
  import { relative, sep, join } from 'path';
7
7
 
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { execCapture } from './chunk-WL3QF3QF.js';
4
- import { GUEST_CID } from './chunk-DIQN5SEL.js';
5
- import { keepStagedContext, describeCallFailure, controlPlaneTokenFailure, refusalCode, resolveGoverningSource, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, shimScript } from './chunk-JZJLKTZT.js';
6
- import { runnerImageVersion } from './chunk-O47BTZSN.js';
3
+ import { execCapture } from './chunk-MBVSVQVH.js';
4
+ import { GUEST_CID } from './chunk-TKJISBV6.js';
5
+ import { keepStagedContext, describeCallFailure, controlPlaneTokenFailure, refusalCode, resolveGoverningSource, removeStagedContext, stageGovernedContext, pinnedSourceOf, commandWithShim, shimScript } from './chunk-3IDNLZPR.js';
6
+ import { runnerImageVersion } from './chunk-D3LS7E7U.js';
7
7
  import { hostAllowed } from './chunk-UXYLWVTQ.js';
8
- import { readDefaultBranchHead, cloneRepository, buildRepositoryImage } from './chunk-TCBVV2JK.js';
8
+ import { readDefaultBranchHead, cloneRepository, buildRepositoryImage } from './chunk-U5DC57AF.js';
9
9
  import { startTimeOf, isSameProcess } from './chunk-JBJTC3UU.js';
10
10
  import { currentCliBuild } from './chunk-OGFGZQA3.js';
11
- import { createDockerHost, builderSpec, runnerLabelValue, RUNNER_LABEL, BUILD_LABEL, prepareRunArgs, containerRunArgs, HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, containerExecArgs, childEnvironment, JUDGE_DIR, JUDGE_REPORT, MAX_REPORT_BYTES, spawnRun } from './chunk-MFI55TNI.js';
11
+ import { createDockerHost, builderSpec, runnerLabelValue, RUNNER_LABEL, BUILD_LABEL, prepareRunArgs, containerRunArgs, HASH_ARGV, parseProgramHash, JUDGE_PROGRAM, containerExecArgs, childEnvironment, JUDGE_DIR, MAX_ITEMS_BYTES, JUDGE_ITEMS, MAX_REPORT_BYTES, JUDGE_REPORT, spawnRun } from './chunk-7YSR636F.js';
12
12
  import { readDu } from './chunk-YJLHUKYS.js';
13
13
  import { FIRECRACKER_VERSION, hostHelperPinned, firecrackerArch, MICROVM_ARCHES, RecipeError, DOCKER_FEATURE, CLAUDE_CODE_VERSION, GUEST_HELPER_SHA256, GUEST_ASSETS_BASE_URL, GUEST_KERNEL_SHA256, JAILER_BINARY_SHA256, FIRECRACKER_BINARY_SHA256, FIRECRACKER_SHA256, GUEST_ASSETS_VERSION, DEFAULT_BASE_IMAGE } from './chunk-SJZL5F3F.js';
14
- import { WorkCommandError } from './chunk-X7SFJZIG.js';
15
- import { setCustomScrubbers, setLocalIdentity, setRepoRoot, parseTranscript, scrubDeep, scrubText } from './chunk-UHU7H57K.js';
16
- import { vmAssetsDir, RUNNER_DIR_MODE, rootfsPathFor, diskTemplatesDir, RUNNER_FILE_MODE, deliveryDir, ghConfigDir, runnerDirOfBuild, spoolDir, mirrorDir, buildDir, SHIM_DIR } from './chunk-DWVAG73B.js';
17
- import { repositoriesOf, primaryOf, RELAY_PORT, repositoryPath, CHECKOUT_DIR, lifecycleWorkdir, claudeCredential, buildEnvironment, startBuildServices, checkEnvironment, AGENT_CREDENTIAL_MISSING, checkoutPath, JOB_MOUNT } from './chunk-N5EEEKT6.js';
14
+ import { WorkCommandError } from './chunk-DBRB26R7.js';
15
+ import { setCustomScrubbers, setLocalIdentity, setRepoRoot, parseTranscript, scrubDeep, scrubText } from './chunk-FTGJ3DPV.js';
16
+ import { vmAssetsDir, RUNNER_DIR_MODE, rootfsPathFor, diskTemplatesDir, RUNNER_FILE_MODE, deliveryDir, ghConfigDir, runnerDirOfBuild, spoolDir, mirrorDir, buildDir, SHIM_DIR } from './chunk-SOWXLIDN.js';
17
+ import { repositoriesOf, primaryOf, RELAY_PORT, repositoryPath, CHECKOUT_DIR, lifecycleWorkdir, claudeCredential, buildEnvironment, startBuildServices, checkEnvironment, AGENT_CREDENTIAL_MISSING, checkoutPath, JOB_MOUNT } from './chunk-WHCDULC4.js';
18
18
  import { sharedSkillNames, skillConflictMessage } from './chunk-FGF52V4V.js';
19
19
  import { versionAtLeast, MINIMUM_CLAUDE_VERSION } from './chunk-HCVLP7XA.js';
20
- import { orderSessions, extractFacts, sessionsToTimeline } from './chunk-RKOTJQVG.js';
21
- import { downconvertSession } from './chunk-QZBXLLTV.js';
20
+ import { orderSessions, extractFacts, sessionsToTimeline } from './chunk-ZUOPFE22.js';
21
+ import { downconvertSession } from './chunk-IWFYKNAO.js';
22
22
  import { realFdStorePort } from './chunk-XD4ZCMA4.js';
23
23
  import { RELAY_USER, RELAY_ID, UNKNOWN_TRANSPORT_REASON, DOCKER_DESKTOP_REASON, MAX_MALFORMED_SESSIONS, MALFORMED_REASON, JOIN_WAIT_MS, MAX_OPEN_STREAMS, STREAM_RESET_RATE, STREAM_RESET_BURST, STREAM_WINDOW, SESSION_WINDOW, targetOfPath } from './chunk-MESOOLF4.js';
24
24
  import { readFileSync, mkdirSync, existsSync, mkdtempSync, rmSync, chmodSync, truncateSync, writeFileSync, readdirSync, lstatSync, copyFileSync, accessSync, constants, statSync, rmdirSync, renameSync, unlinkSync, openSync, closeSync, createWriteStream, createReadStream, writeSync } from 'fs';
@@ -3340,6 +3340,17 @@ function containerJudgeEnvironment(input) {
3340
3340
  const state = job.container;
3341
3341
  const user = state.agentUser ?? ADDED_USER;
3342
3342
  const folder = join(input.jobDir, "judge");
3343
+ const readJudgeFile = async (file, name, maxBytes) => {
3344
+ if (!filesAreCopied(state)) return readRegularFile(join(folder, name), maxBytes);
3345
+ const read = await runtime.host.exec({
3346
+ container: state.container,
3347
+ user,
3348
+ env: NO_ENV,
3349
+ argv: ["/bin/sh", "-c", `[ -f ${file} ] && [ ! -L ${file} ] && head -c ${maxBytes + 1} ${file}`]
3350
+ }, { timeoutMs: REPORT_READ_TIMEOUT_MS });
3351
+ if (read.status > 1) throw new Error(`reading the judge's ${name} exited ${read.status}: ${firstLine5(read.stderr)}`);
3352
+ return read.status === 0 && Buffer.byteLength(read.stdout) <= maxBytes ? read.stdout : void 0;
3353
+ };
3343
3354
  return {
3344
3355
  stop: async () => {
3345
3356
  if (input.config !== void 0) await ensureTunnel(runtime, state, input.jobDir, input.config, job.itemKey, job.branch, job.repositories, input.log);
@@ -3382,18 +3393,8 @@ function containerJudgeEnvironment(input) {
3382
3393
  chmodSync(folder, 1023);
3383
3394
  },
3384
3395
  run: (command, opts) => runtime.host.exec({ container: state.container, user, workdir: command.cwd, env: { literals: command.env, passed: {} }, argv: command.argv }, { logPath: opts.logPath }),
3385
- readReport: async () => {
3386
- if (!filesAreCopied(state)) return readRegularFile(join(folder, "report.html"), MAX_REPORT_BYTES);
3387
- const file = JUDGE_REPORT;
3388
- const read = await runtime.host.exec({
3389
- container: state.container,
3390
- user,
3391
- env: NO_ENV,
3392
- argv: ["/bin/sh", "-c", `[ -f ${file} ] && [ ! -L ${file} ] && head -c ${MAX_REPORT_BYTES + 1} ${file}`]
3393
- }, { timeoutMs: REPORT_READ_TIMEOUT_MS });
3394
- if (read.status > 1) throw new Error(`reading the judge report exited ${read.status}: ${firstLine5(read.stderr)}`);
3395
- return read.status === 0 && Buffer.byteLength(read.stdout) <= MAX_REPORT_BYTES ? read.stdout : void 0;
3396
- },
3396
+ readReport: () => readJudgeFile(JUDGE_REPORT, "report.html", MAX_REPORT_BYTES),
3397
+ readItems: () => readJudgeFile(JUDGE_ITEMS, "items.json", MAX_ITEMS_BYTES),
3397
3398
  // The judge's files belong to the build's user, and Claude Code makes some of its folders private to it, so the runner's user cannot remove them from the
3398
3399
  // host. Every capability is dropped in the container, so root there could not either; the build's user removes its own, and the runner removes the rest.
3399
3400
  clear: async () => {
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-DWVAG73B.js';
3
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-SOWXLIDN.js';
4
4
  import { readFileSync, existsSync, rmSync, mkdirSync, writeFileSync, renameSync } from 'fs';
5
5
  import { join } from 'path';
6
6
 
@@ -680,11 +680,11 @@ async function missingControlPlane(cwd, sessionId, home, env) {
680
680
  const dirs = findGitDirs(cwd);
681
681
  if (dirs === void 0) return void 0;
682
682
  if (existsSync(join(dirs.gitCommonDir, "outerlayer", "materialized.json")) || hasExcludeBlock(dirs.gitCommonDir)) {
683
- const { cleanupEarlierCopies } = await import('./context-cleanup-LTH77FC3.js');
683
+ const { cleanupEarlierCopies } = await import('./context-cleanup-D5EGQHQV.js');
684
684
  cleanupEarlierCopies(dirs);
685
685
  }
686
686
  if (!contextPossiblyGoverned(cwd, home)) return void 0;
687
- const { governanceOf } = await import('./control-plane-launch-TIK265OT.js');
687
+ const { governanceOf } = await import('./control-plane-launch-2AC4BTWL.js');
688
688
  if (await governanceOf({ cwd, env, home }) !== "governed") return void 0;
689
689
  recordMissingContext(dirs, sessionId, home);
690
690
  const launcher = `${cliInvocation()} claude`;
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-QFNFBQCG.js';
4
- import { resolveRepoIdentity } from './chunk-UHU7H57K.js';
5
- import { resolveGatewayCredentials } from './chunk-KJIUFOC4.js';
3
+ import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-3YLHIXLR.js';
4
+ import { resolveRepoIdentity } from './chunk-FTGJ3DPV.js';
5
+ import { resolveGatewayCredentials } from './chunk-AM3GMWQK.js';
6
6
  import { findGitDirs, readRepoConnection } from './chunk-BJ3KTMDH.js';
7
7
  import { cliInvocation } from './chunk-CRB3POP4.js';
8
8
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { BUILD_HOME } from './chunk-N5EEEKT6.js';
3
+ import { BUILD_HOME } from './chunk-WHCDULC4.js';
4
4
  import { join, dirname } from 'path';
5
5
 
6
6
  createRequire(import.meta.url);
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { autoConnect, detectActiveSession } from './chunk-NMIYK2G2.js';
4
- import { resolveRepoIdentity } from './chunk-UHU7H57K.js';
3
+ import { autoConnect, detectActiveSession } from './chunk-SJ4DX2AD.js';
4
+ import { resolveRepoIdentity } from './chunk-FTGJ3DPV.js';
5
5
  import { C } from './chunk-ANPNT6PM.js';
6
- import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-KJIUFOC4.js';
6
+ import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-AM3GMWQK.js';
7
7
  import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
8
8
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
9
9
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RELAY_PORT, GATEWAY_SOCKET, GATEWAY_PORT, CLAUDE_SOCKET, CLAUDE_PORT, DESTINATION_BASE_PORT } from './chunk-N5EEEKT6.js';
3
+ import { RELAY_PORT, GATEWAY_SOCKET, GATEWAY_PORT, CLAUDE_SOCKET, CLAUDE_PORT, DESTINATION_BASE_PORT } from './chunk-WHCDULC4.js';
4
4
  import { symlinkSync, unlinkSync } from 'fs';
5
5
  import { join } from 'path';
6
6
 
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { checkStarterFiles, contextIsGoverned } from './chunk-ITAIEJ2T.js';
4
- import { fleetCheck, checkBuildSkill, checkMachineSkills, checkCommittedMaintainedSkills, checkMaintainedReferences } from './chunk-TOHKSZKI.js';
5
- import { resolveCredentials, getJson, WorkCommandError } from './chunk-X7SFJZIG.js';
6
- import { isLinkedRepository } from './chunk-QFNFBQCG.js';
7
- import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
8
- import { resolveRepoIdentity, compareVersions, SUPPORTED_VERSIONS } from './chunk-UHU7H57K.js';
3
+ import { checkStarterFiles, contextIsGoverned } from './chunk-BCWVTWS7.js';
4
+ import { fleetCheck, checkBuildSkill, checkMachineSkills, checkCommittedMaintainedSkills, checkMaintainedReferences } from './chunk-MBZTX4V2.js';
5
+ import { resolveCredentials, getJson, WorkCommandError } from './chunk-DBRB26R7.js';
6
+ import { isLinkedRepository } from './chunk-3YLHIXLR.js';
7
+ import { sanitizeTerminal } from './chunk-HSUUTD4E.js';
8
+ import { resolveRepoIdentity, compareVersions, SUPPORTED_VERSIONS } from './chunk-FTGJ3DPV.js';
9
9
  import { C } from './chunk-ANPNT6PM.js';
10
- import { checkFormerSkillNames } from './chunk-P2RWZCV7.js';
11
- import { resolveGatewayCredentials, defaultFetch } from './chunk-KJIUFOC4.js';
12
- import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-OOUHNKKX.js';
10
+ import { checkFormerSkillNames } from './chunk-V6IYYQU3.js';
11
+ import { resolveGatewayCredentials, defaultFetch } from './chunk-AM3GMWQK.js';
12
+ import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-RJDJFRRY.js';
13
13
  import { readStatuslineState, STATE_FRESH_MS } from './chunk-I7RZHMXW.js';
14
14
  import { hookCommandEscapesControlPlane, CONTROL_PLANE_DIR_VARIABLE } from './chunk-HCVLP7XA.js';
15
15
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
@@ -1190,7 +1190,7 @@ function doctorExitCode(checks) {
1190
1190
 
1191
1191
  // src/doctor-report.ts
1192
1192
  async function gatherDoctorChecks() {
1193
- const { defaultRunnerConfigPath, hasRunnerBlock, loadRunnerConfig, runnerVmOf } = await import('./config-TNV5HHLO.js');
1193
+ const { defaultRunnerConfigPath, hasRunnerBlock, loadRunnerConfig, runnerVmOf } = await import('./config-VM6GKCCE.js');
1194
1194
  const configPath = defaultRunnerConfigPath();
1195
1195
  const runnerHost = hasRunnerBlock(configPath);
1196
1196
  const hooks = (() => {
@@ -1211,7 +1211,7 @@ async function gatherDoctorChecks() {
1211
1211
  const { runnerVmCheck } = await import('./doctor-53F2PYY7.js');
1212
1212
  checks.push(runnerVmCheck(configPath, { lima: realLima(), home: homeFromEnv(), instance: runnerVm.instance }));
1213
1213
  } else if (hasRunnerBlock(configPath)) {
1214
- const { runnerHostChecks } = await import('./doctor-PKMAUDTU.js');
1214
+ const { runnerHostChecks } = await import('./doctor-RGTHY56D.js');
1215
1215
  const gateway = (() => {
1216
1216
  try {
1217
1217
  const { url, apiKey, appId } = loadRunnerConfig(configPath);
@@ -1239,7 +1239,7 @@ async function gatherDoctorChecks() {
1239
1239
  const { existsSync: existsSync3 } = await import('fs');
1240
1240
  if (process.platform !== "linux" || !existsSync3("/run/systemd/system")) return void 0;
1241
1241
  const { inspectService, realInspectProbes } = await import('./inspect-L7JIBK3Y.js');
1242
- const { DEFAULT_UNIT_NAME } = await import('./install-NPTR35MG.js');
1242
+ const { DEFAULT_UNIT_NAME } = await import('./install-GZ27NW6U.js');
1243
1243
  const { dirname: dirname2 } = await import('path');
1244
1244
  return inspectService(DEFAULT_UNIT_NAME, dirname2(configPath), realInspectProbes());
1245
1245
  })();
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RELAY_PORT, BUILD_HOME } from './chunk-N5EEEKT6.js';
3
+ import { RELAY_PORT, BUILD_HOME } from './chunk-WHCDULC4.js';
4
4
  import { createServer, connect } from 'net';
5
5
 
6
6
  createRequire(import.meta.url);
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { claimPidFile, RunnerAlreadyRunningError, releasePidFile } from './chunk-M6NNXKRM.js';
3
+ import { claimPidFile, RunnerAlreadyRunningError, releasePidFile } from './chunk-IRTZYDZO.js';
4
4
  import { startTimeOf } from './chunk-JBJTC3UU.js';
5
5
  import { CLAUDE_CODE_VERSION, NODE_IMAGE, DEFAULT_BASE_IMAGE, RecipeError, locateRecipe, readRecipe, assertBuildable, TINI_VERSION, GH_VERSION, writeSanitizedRecipe, classifyProperties, GH_SHA256, TINI_SHA256, SANITIZED_NAME } from './chunk-SJZL5F3F.js';
6
- import { RUNNER_DIR_MODE, repoCacheDir, imagesDir, attemptStamp, runnerDir, rootfsPathFor, RUNNER_FILE_MODE } from './chunk-DWVAG73B.js';
7
- import { withGitConfig, tokenHeader, PROXY_WARNING_FLAG } from './chunk-N5EEEKT6.js';
6
+ import { RUNNER_DIR_MODE, repoCacheDir, imagesDir, attemptStamp, runnerDir, rootfsPathFor, RUNNER_FILE_MODE } from './chunk-SOWXLIDN.js';
7
+ import { withGitConfig, tokenHeader, PROXY_WARNING_FLAG } from './chunk-WHCDULC4.js';
8
8
  import { RELAY_ID, RELAY_USER } from './chunk-MESOOLF4.js';
9
9
  import { mkdirSync, rmSync, existsSync, mkdtempSync, cpSync, readFileSync, writeFileSync, readdirSync, lstatSync, readlinkSync } from 'fs';
10
10
  import { tmpdir } from 'os';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { loadMachineSkillFiles, resolvePackRoot } from './chunk-JGML2VUN.js';
3
+ import { loadMachineSkillFiles, resolvePackRoot } from './chunk-AKKVPUGK.js';
4
4
  import { MAINTAINED_SKILLS, maintainedLineVersion } from './chunk-CDDED64E.js';
5
5
  import { resolvePackageVersion } from './chunk-RA3O54FC.js';
6
6
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { skillDir, FORMER_MAINTAINED_NAMES, isMaintainedCopy } from './chunk-JGML2VUN.js';
3
+ import { skillDir, FORMER_MAINTAINED_NAMES, isMaintainedCopy } from './chunk-AKKVPUGK.js';
4
4
  import { cliInvocation } from './chunk-CRB3POP4.js';
5
- import { emitTree, ALL_TARGET_IDS, classifyTree } from './chunk-RKOTJQVG.js';
5
+ import { emitTree, ALL_TARGET_IDS, classifyTree } from './chunk-ZUOPFE22.js';
6
6
  import { readFileSync, existsSync, unlinkSync, rmdirSync, readdirSync } from 'fs';
7
7
  import { join, dirname, relative, sep } from 'path';
8
8
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { currentLink } from './chunk-6NFXOQKZ.js';
3
+ import { currentLink } from './chunk-LJIFCG4G.js';
4
4
  import { readFileSync, statSync, chmodSync, mkdirSync, writeFileSync, renameSync, rmSync, existsSync, lstatSync, accessSync, constants, realpathSync } from 'fs';
5
5
  import { randomBytes } from 'crypto';
6
6
  import { join, dirname, delimiter, resolve } from 'path';
@@ -15,7 +15,8 @@ function claudeEnvPath(configPath) {
15
15
  return join(dirname(configPath), CLAUDE_ENV_FILE);
16
16
  }
17
17
  var CLAUDE_CREDENTIAL_VARIABLES = ["CLAUDE_CODE_OAUTH_TOKEN", "ANTHROPIC_API_KEY", "ANTHROPIC_AUTH_TOKEN"];
18
- var FORWARDED = ["CLAUDE_CODE_OAUTH_TOKEN", "ANTHROPIC_API_KEY"];
18
+ var FORWARDED_CLAUDE_CREDENTIAL_VARIABLES = ["CLAUDE_CODE_OAUTH_TOKEN", "ANTHROPIC_API_KEY"];
19
+ var FORWARDED = FORWARDED_CLAUDE_CREDENTIAL_VARIABLES;
19
20
  function firstOf(values, source) {
20
21
  for (const variable of FORWARDED) {
21
22
  const value = values[variable];
@@ -162,6 +163,8 @@ function builtInEnvironment(localFor, credential) {
162
163
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1"
163
164
  };
164
165
  }
166
+
167
+ // src/runner/destinations.ts
165
168
  var MAX_RELEASED_DESTINATIONS = 20;
166
169
  var MAX_DESTINATIONS = MAX_RELEASED_DESTINATIONS - BUILT_IN_NAMES.length;
167
170
  var DESTINATION_BASE_PORT = 3129;
@@ -558,6 +561,7 @@ function primaryOf(repositories) {
558
561
  var RELAY_PORT = 3128;
559
562
  var JOB_MOUNT = "/outerlayer/job";
560
563
  var EVAL_INPUT_DIR = `${JOB_MOUNT}/eval-input`;
564
+ var CHECK_ITEMS_FILE = "/tmp/outerlayer-check-items.json";
561
565
  var BUILD_HOME = "/build/home";
562
566
  var CHECKOUT_DIR = "/build/work/checkout";
563
567
  var REPOS_DIR = "/build/work/repos";
@@ -713,7 +717,7 @@ function checkEnvironment(input) {
713
717
  imageEnv: input.imageEnv
714
718
  });
715
719
  const withheld = /* @__PURE__ */ new Set(["OUTERLAYER_URL", "OUTERLAYER_API_KEY", ...CLAUDE_CREDENTIAL_VARIABLES]);
716
- const literals = { OUTERLAYER_EVAL_INPUT: EVAL_INPUT_DIR };
720
+ const literals = { OUTERLAYER_EVAL_INPUT: EVAL_INPUT_DIR, OUTERLAYER_CHECK_ITEMS: CHECK_ITEMS_FILE };
717
721
  for (const [name, value] of Object.entries(env.literals)) if (!withheld.has(name)) literals[name] = value;
718
722
  const passed = {};
719
723
  for (const [name, value] of Object.entries(env.passed)) if (!withheld.has(name)) passed[name] = value;
@@ -752,4 +756,4 @@ function withTunnelRecord(environment, record, onlyWhenUsed = false) {
752
756
  };
753
757
  }
754
758
 
755
- export { AGENT_CREDENTIAL_MISSING, BUILD_HOME, BUILT_IN_NAMES, CHECKOUT_DIR, CLAUDE_CREDENTIAL_ID, CLAUDE_CREDENTIAL_VARIABLES, CLAUDE_ENV_FILE, CLAUDE_PORT, CLAUDE_SOCKET, DESTINATION_BASE_PORT, EVAL_INPUT_DIR, GATEWAY_PORT, GATEWAY_SOCKET, JOB_MOUNT, PROXY_WARNING_FLAG, RELAY_PORT, authorEnvironment, buildEnvironment, builtInEnvironment, checkEnvironment, checkoutPath, claudeCredential, claudeEnvPath, commitIdentityRecord, containerLocalAddress, credentialLineIn, currentClaudeCredential, destinationEnvironment, headerVariables, heldClaudeCredential, isRefusedInConfig, isReservedVariable, lifecycleWorkdir, parseClaimIdentity, parseClaimedRepositories, parseIsolation, parseUnreachable, primaryOf, proxyEnvironment, readClaudeCredential, removedClaudeCredentialValues, repositoriesOf, repositoryPath, resolveDestinations, sharedUserEnvironment, startBuildServices, takeClaudeCredential, tokenHeader, withGitConfig, withHooksPath, withProxyWarningHidden, withTokenHeader, withTunnelRecord, withoutCredentialLines };
759
+ export { AGENT_CREDENTIAL_MISSING, BUILD_HOME, BUILT_IN_NAMES, CHECKOUT_DIR, CHECK_ITEMS_FILE, CLAUDE_CREDENTIAL_ID, CLAUDE_CREDENTIAL_VARIABLES, CLAUDE_ENV_FILE, CLAUDE_PORT, CLAUDE_SOCKET, DESTINATION_BASE_PORT, EVAL_INPUT_DIR, FORWARDED_CLAUDE_CREDENTIAL_VARIABLES, GATEWAY_PORT, GATEWAY_SOCKET, JOB_MOUNT, PROXY_WARNING_FLAG, RELAY_PORT, authorEnvironment, buildEnvironment, builtInEnvironment, checkEnvironment, checkoutPath, claudeCredential, claudeEnvPath, commitIdentityRecord, containerLocalAddress, credentialLineIn, currentClaudeCredential, destinationEnvironment, headerVariables, heldClaudeCredential, isRefusedInConfig, isReservedVariable, lifecycleWorkdir, parseClaimIdentity, parseClaimedRepositories, parseIsolation, parseUnreachable, primaryOf, proxyEnvironment, readClaudeCredential, removedClaudeCredentialValues, repositoriesOf, repositoryPath, resolveDestinations, sharedUserEnvironment, startBuildServices, takeClaudeCredential, tokenHeader, withGitConfig, withHooksPath, withProxyWarningHidden, withTokenHeader, withTunnelRecord, withoutCredentialLines };