@farmslot/protocol 0.83.1 → 0.84.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 (253) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/checklist-target.d.ts +5 -1
  3. package/dist/checklist-target.d.ts.map +1 -1
  4. package/dist/checklist-target.js +41 -0
  5. package/dist/checklist-target.js.map +1 -1
  6. package/dist/client-cache/cache.d.ts.map +1 -1
  7. package/dist/client-cache/cache.js +370 -26
  8. package/dist/client-cache/cache.js.map +1 -1
  9. package/dist/client-cache/command-method.d.ts +1 -1
  10. package/dist/client-cache/command-method.d.ts.map +1 -1
  11. package/dist/client-cache/command-method.js +1 -0
  12. package/dist/client-cache/command-method.js.map +1 -1
  13. package/dist/client-cache/entity-collection.d.ts +115 -0
  14. package/dist/client-cache/entity-collection.d.ts.map +1 -0
  15. package/dist/client-cache/entity-collection.js +323 -0
  16. package/dist/client-cache/entity-collection.js.map +1 -0
  17. package/dist/client-cache/entity-guards.d.ts +47 -0
  18. package/dist/client-cache/entity-guards.d.ts.map +1 -0
  19. package/dist/client-cache/entity-guards.js +193 -0
  20. package/dist/client-cache/entity-guards.js.map +1 -0
  21. package/dist/client-cache/entity-views.d.ts +62 -0
  22. package/dist/client-cache/entity-views.d.ts.map +1 -0
  23. package/dist/client-cache/entity-views.js +386 -0
  24. package/dist/client-cache/entity-views.js.map +1 -0
  25. package/dist/client-cache/index.d.ts +4 -0
  26. package/dist/client-cache/index.d.ts.map +1 -1
  27. package/dist/client-cache/index.js +4 -0
  28. package/dist/client-cache/index.js.map +1 -1
  29. package/dist/client-cache/keys.d.ts +13 -0
  30. package/dist/client-cache/keys.d.ts.map +1 -1
  31. package/dist/client-cache/keys.js +1 -0
  32. package/dist/client-cache/keys.js.map +1 -1
  33. package/dist/client-cache/native-history.d.ts +9 -2
  34. package/dist/client-cache/native-history.d.ts.map +1 -1
  35. package/dist/client-cache/native-history.js +66 -18
  36. package/dist/client-cache/native-history.js.map +1 -1
  37. package/dist/client-cache/registry.d.ts +15 -0
  38. package/dist/client-cache/registry.d.ts.map +1 -1
  39. package/dist/client-cache/registry.js +10 -0
  40. package/dist/client-cache/registry.js.map +1 -1
  41. package/dist/client-cache/run-details.d.ts +2 -1
  42. package/dist/client-cache/run-details.d.ts.map +1 -1
  43. package/dist/client-cache/run-details.js.map +1 -1
  44. package/dist/client-cache/run-list-versions.d.ts.map +1 -1
  45. package/dist/client-cache/run-list-versions.js.map +1 -1
  46. package/dist/client-cache/sync-state.d.ts +23 -0
  47. package/dist/client-cache/sync-state.d.ts.map +1 -0
  48. package/dist/client-cache/sync-state.js +39 -0
  49. package/dist/client-cache/sync-state.js.map +1 -0
  50. package/dist/client-cache/text-links.d.ts +11 -0
  51. package/dist/client-cache/text-links.d.ts.map +1 -0
  52. package/dist/client-cache/text-links.js +61 -0
  53. package/dist/client-cache/text-links.js.map +1 -0
  54. package/dist/client-cache/types.d.ts +11 -0
  55. package/dist/client-cache/types.d.ts.map +1 -1
  56. package/dist/contracts/agents.d.ts +6 -0
  57. package/dist/contracts/agents.d.ts.map +1 -1
  58. package/dist/contracts/agents.js.map +1 -1
  59. package/dist/contracts/analytics.d.ts +2 -2
  60. package/dist/contracts/analytics.d.ts.map +1 -1
  61. package/dist/contracts/evals.d.ts +9 -0
  62. package/dist/contracts/evals.d.ts.map +1 -1
  63. package/dist/contracts/evals.js +5 -0
  64. package/dist/contracts/evals.js.map +1 -1
  65. package/dist/contracts/family.d.ts +1 -1
  66. package/dist/contracts/family.d.ts.map +1 -1
  67. package/dist/contracts/pr-rules.d.ts +1 -1
  68. package/dist/contracts/pr-rules.d.ts.map +1 -1
  69. package/dist/contracts/pr-rules.js +3 -1
  70. package/dist/contracts/pr-rules.js.map +1 -1
  71. package/dist/contracts/review-workspace.d.ts +12 -0
  72. package/dist/contracts/review-workspace.d.ts.map +1 -1
  73. package/dist/contracts/review-workspace.js +9 -2
  74. package/dist/contracts/review-workspace.js.map +1 -1
  75. package/dist/contracts/reviews.d.ts +1 -1
  76. package/dist/contracts/reviews.d.ts.map +1 -1
  77. package/dist/contracts/run-lifecycle-view.d.ts.map +1 -1
  78. package/dist/contracts/run-lifecycle-view.js +9 -7
  79. package/dist/contracts/run-lifecycle-view.js.map +1 -1
  80. package/dist/contracts/runs.d.ts +77 -23
  81. package/dist/contracts/runs.d.ts.map +1 -1
  82. package/dist/contracts/runs.js +2 -2
  83. package/dist/contracts/runs.js.map +1 -1
  84. package/dist/contracts/slot-recovery.d.ts +10 -1
  85. package/dist/contracts/slot-recovery.d.ts.map +1 -1
  86. package/dist/contracts/slot-recovery.js +18 -10
  87. package/dist/contracts/slot-recovery.js.map +1 -1
  88. package/dist/contracts/slots.d.ts +31 -1
  89. package/dist/contracts/slots.d.ts.map +1 -1
  90. package/dist/contracts/task.d.ts +2 -0
  91. package/dist/contracts/task.d.ts.map +1 -1
  92. package/dist/contracts/task.js.map +1 -1
  93. package/dist/contracts/template-placeholders.d.ts.map +1 -1
  94. package/dist/contracts/template-placeholders.js +3 -2
  95. package/dist/contracts/template-placeholders.js.map +1 -1
  96. package/dist/deep-freeze.d.ts +6 -0
  97. package/dist/deep-freeze.d.ts.map +1 -0
  98. package/dist/deep-freeze.js +13 -0
  99. package/dist/deep-freeze.js.map +1 -0
  100. package/dist/file-stamp.d.ts +10 -0
  101. package/dist/file-stamp.d.ts.map +1 -0
  102. package/dist/file-stamp.js +12 -0
  103. package/dist/file-stamp.js.map +1 -0
  104. package/dist/fleet/host-load.d.ts +18 -0
  105. package/dist/fleet/host-load.d.ts.map +1 -0
  106. package/dist/fleet/host-load.js +30 -0
  107. package/dist/fleet/host-load.js.map +1 -0
  108. package/dist/fleet/stale.d.ts +13 -0
  109. package/dist/fleet/stale.d.ts.map +1 -0
  110. package/dist/fleet/stale.js +18 -0
  111. package/dist/fleet/stale.js.map +1 -0
  112. package/dist/fleet/summary.d.ts +8 -0
  113. package/dist/fleet/summary.d.ts.map +1 -0
  114. package/dist/fleet/summary.js +45 -0
  115. package/dist/fleet/summary.js.map +1 -0
  116. package/dist/index.d.ts +6 -0
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +6 -0
  119. package/dist/index.js.map +1 -1
  120. package/dist/integrations/pr-rule-config.d.ts +2 -0
  121. package/dist/integrations/pr-rule-config.d.ts.map +1 -1
  122. package/dist/integrations/pr-rule-config.js +17 -4
  123. package/dist/integrations/pr-rule-config.js.map +1 -1
  124. package/dist/integrations/pr-workflow-defaults.d.ts.map +1 -1
  125. package/dist/integrations/pr-workflow-defaults.js +6 -3
  126. package/dist/integrations/pr-workflow-defaults.js.map +1 -1
  127. package/dist/node/farm-paths.d.ts +5 -0
  128. package/dist/node/farm-paths.d.ts.map +1 -1
  129. package/dist/node/farm-paths.js +64 -27
  130. package/dist/node/farm-paths.js.map +1 -1
  131. package/dist/node/pack-portability.d.ts +16 -0
  132. package/dist/node/pack-portability.d.ts.map +1 -1
  133. package/dist/node/pack-portability.js +169 -32
  134. package/dist/node/pack-portability.js.map +1 -1
  135. package/dist/node/slot-by-repo.d.ts +15 -1
  136. package/dist/node/slot-by-repo.d.ts.map +1 -1
  137. package/dist/node/slot-by-repo.js +115 -31
  138. package/dist/node/slot-by-repo.js.map +1 -1
  139. package/dist/node/tcp-metrics.d.ts +7 -0
  140. package/dist/node/tcp-metrics.d.ts.map +1 -0
  141. package/dist/node/tcp-metrics.js +131 -0
  142. package/dist/node/tcp-metrics.js.map +1 -0
  143. package/dist/performance/ranking.d.ts.map +1 -1
  144. package/dist/performance/ranking.js +1 -0
  145. package/dist/performance/ranking.js.map +1 -1
  146. package/dist/performance/recorder.d.ts.map +1 -1
  147. package/dist/performance/recorder.js +1 -1
  148. package/dist/performance/recorder.js.map +1 -1
  149. package/dist/performance/types.d.ts +5 -1
  150. package/dist/performance/types.d.ts.map +1 -1
  151. package/dist/performance/types.js +3 -0
  152. package/dist/performance/types.js.map +1 -1
  153. package/dist/performance/validation.d.ts.map +1 -1
  154. package/dist/performance/validation.js +19 -9
  155. package/dist/performance/validation.js.map +1 -1
  156. package/dist/recipe/common.d.ts.map +1 -1
  157. package/dist/recipe/common.js +2 -1
  158. package/dist/recipe/common.js.map +1 -1
  159. package/dist/recipe/manifest.js +1 -1
  160. package/dist/recipe/manifest.js.map +1 -1
  161. package/dist/rpc/auth.d.ts +6 -0
  162. package/dist/rpc/auth.d.ts.map +1 -1
  163. package/dist/rpc/auth.js.map +1 -1
  164. package/dist/rpc/clip.d.ts +38 -0
  165. package/dist/rpc/clip.d.ts.map +1 -0
  166. package/dist/rpc/clip.js +26 -0
  167. package/dist/rpc/clip.js.map +1 -0
  168. package/dist/rpc/eval.d.ts +5 -0
  169. package/dist/rpc/eval.d.ts.map +1 -1
  170. package/dist/rpc/fleet.d.ts +28 -1
  171. package/dist/rpc/fleet.d.ts.map +1 -1
  172. package/dist/rpc/fleet.js.map +1 -1
  173. package/dist/rpc/fs.d.ts +18 -0
  174. package/dist/rpc/fs.d.ts.map +1 -1
  175. package/dist/rpc/fs.js +2 -0
  176. package/dist/rpc/fs.js.map +1 -1
  177. package/dist/rpc/index.d.ts +1 -0
  178. package/dist/rpc/index.d.ts.map +1 -1
  179. package/dist/rpc/index.js +1 -0
  180. package/dist/rpc/index.js.map +1 -1
  181. package/dist/rpc/native-session.d.ts +31 -0
  182. package/dist/rpc/native-session.d.ts.map +1 -1
  183. package/dist/rpc/native-session.js.map +1 -1
  184. package/dist/rpc/pr.d.ts +24 -0
  185. package/dist/rpc/pr.d.ts.map +1 -1
  186. package/dist/rpc/registry.d.ts +3 -0
  187. package/dist/rpc/registry.d.ts.map +1 -1
  188. package/dist/rpc/registry.js +4 -0
  189. package/dist/rpc/registry.js.map +1 -1
  190. package/dist/rpc/run.d.ts +2 -1
  191. package/dist/rpc/run.d.ts.map +1 -1
  192. package/dist/rpc/run.js.map +1 -1
  193. package/dist/rpc/runner-models.d.ts.map +1 -1
  194. package/dist/rpc/runner-models.js +1 -0
  195. package/dist/rpc/runner-models.js.map +1 -1
  196. package/dist/rpc/slot.d.ts +26 -1
  197. package/dist/rpc/slot.d.ts.map +1 -1
  198. package/dist/rpc/slot.js +1 -0
  199. package/dist/rpc/slot.js.map +1 -1
  200. package/dist/runs/evidence-summary.d.ts +60 -4
  201. package/dist/runs/evidence-summary.d.ts.map +1 -1
  202. package/dist/runs/evidence-summary.js +148 -12
  203. package/dist/runs/evidence-summary.js.map +1 -1
  204. package/dist/runs/family-readiness.d.ts +4 -3
  205. package/dist/runs/family-readiness.d.ts.map +1 -1
  206. package/dist/runs/family-readiness.js.map +1 -1
  207. package/dist/runs/linked-tickets.d.ts +1 -1
  208. package/dist/runs/linked-tickets.d.ts.map +1 -1
  209. package/dist/runs/list-row.d.ts +57 -0
  210. package/dist/runs/list-row.d.ts.map +1 -0
  211. package/dist/runs/list-row.js +2 -0
  212. package/dist/runs/list-row.js.map +1 -0
  213. package/dist/runs/list-trim.d.ts +36 -4
  214. package/dist/runs/list-trim.d.ts.map +1 -1
  215. package/dist/runs/list-trim.js +327 -9
  216. package/dist/runs/list-trim.js.map +1 -1
  217. package/dist/runs/list-version.d.ts +2 -1
  218. package/dist/runs/list-version.d.ts.map +1 -1
  219. package/dist/runs/list-version.js.map +1 -1
  220. package/dist/runs/review-chain.d.ts +34 -2
  221. package/dist/runs/review-chain.d.ts.map +1 -1
  222. package/dist/runs/review-chain.js +31 -4
  223. package/dist/runs/review-chain.js.map +1 -1
  224. package/dist/runs/review-retries.d.ts +13 -3
  225. package/dist/runs/review-retries.d.ts.map +1 -1
  226. package/dist/runs/review-retries.js.map +1 -1
  227. package/dist/runs/run-family-groups.d.ts +7 -7
  228. package/dist/runs/run-family-groups.d.ts.map +1 -1
  229. package/dist/runs/run-family-groups.js.map +1 -1
  230. package/dist/runs/run-list-filter.d.ts +2 -1
  231. package/dist/runs/run-list-filter.d.ts.map +1 -1
  232. package/dist/runs/run-list-filter.js.map +1 -1
  233. package/dist/runs/run-list-observation.d.ts.map +1 -1
  234. package/dist/runs/run-list-observation.js.map +1 -1
  235. package/dist/runs/run-list-view.d.ts +3 -2
  236. package/dist/runs/run-list-view.d.ts.map +1 -1
  237. package/dist/runs/run-list-view.js.map +1 -1
  238. package/dist/slots/tracking-branch.d.ts.map +1 -1
  239. package/dist/slots/tracking-branch.js +4 -3
  240. package/dist/slots/tracking-branch.js.map +1 -1
  241. package/dist/surfaces/view-state.js +1 -1
  242. package/dist/surfaces/view-state.js.map +1 -1
  243. package/dist/transport/events.d.ts +42 -12
  244. package/dist/transport/events.d.ts.map +1 -1
  245. package/dist/transport/events.js +0 -1
  246. package/dist/transport/events.js.map +1 -1
  247. package/dist/transport/observations.d.ts +2 -0
  248. package/dist/transport/observations.d.ts.map +1 -1
  249. package/dist/version.d.ts +1 -1
  250. package/dist/version.js +1 -1
  251. package/package.json +12 -1
  252. package/scripts/literal-replacement.d.mts +2 -0
  253. package/scripts/literal-replacement.mjs +4 -0
@@ -1,6 +1,6 @@
1
1
  import { DEFAULT_PR_REVIEW_OPTIONS, prReviewWorkflow, } from '../contracts/pr-rules.js';
2
2
  import { assertPRExecutionProfile, isPRWorkspaceExecutionProfile } from './pr-monitoring.js';
3
- import { assertPRReviewOptions } from './pr-rule-config.js';
3
+ import { assertPRReviewOptions, assertPRReviewPolicyOptions } from './pr-rule-config.js';
4
4
  function record(value, path) {
5
5
  if (!value || typeof value !== 'object' || Array.isArray(value))
6
6
  throw new Error(`${path} must be an object`);
@@ -22,7 +22,7 @@ export function assertProjectWorkflowDefaults(value) {
22
22
  }
23
23
  }
24
24
  if (policy.review !== undefined) {
25
- assertPRReviewOptions(policy.review);
25
+ assertPRReviewPolicyOptions(policy.review);
26
26
  if (flow === 'qa' && policy.review.publishReview === true)
27
27
  throw new Error('QA cannot publish a static PR review');
28
28
  if (policy.review.workflow !== undefined &&
@@ -53,7 +53,10 @@ export function resolvePRWorkflowDefaults(input) {
53
53
  const reviewLayer = layers.find(([, policy]) => policy?.review !== undefined);
54
54
  const selectedReview = reviewLayer?.[1]?.review;
55
55
  if (selectedReview) {
56
- assertPRReviewOptions(selectedReview);
56
+ if (reviewLayer?.[0] === 'request')
57
+ assertPRReviewOptions(selectedReview);
58
+ else
59
+ assertPRReviewPolicyOptions(selectedReview);
57
60
  if (input.workflow &&
58
61
  selectedReview.workflow !== undefined &&
59
62
  (prReviewWorkflow(selectedReview) === 'qa') !== (workflow === 'qa')) {
@@ -1 +1 @@
1
- {"version":3,"file":"pr-workflow-defaults.js","sourceRoot":"","sources":["../../src/integrations/pr-workflow-defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pr-workflow-defaults.js","sourceRoot":"","sources":["../../src/integrations/pr-workflow-defaults.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare const FARM_INSTANCE_CLAIM = ".farmslot-instance";
2
+ export declare function legacyCliBinDirs(userHome?: string): string[];
2
3
  export type FarmRole = 'gateway' | 'node';
3
4
  export type FarmPathEnv = Readonly<Record<string, string | undefined>>;
4
5
  export interface LegacyFarmStorageFacts {
@@ -55,6 +56,8 @@ export interface GatewayFarmStatePaths extends FarmStatePaths {
55
56
  backlogRefinementPrompts: string;
56
57
  resourceWatchState: string;
57
58
  capabilityStore: string;
59
+ /** Copies of pool and project files taken before each configuration save. */
60
+ configBackups: string;
58
61
  }
59
62
  export interface FarmCodePaths {
60
63
  checkout: string;
@@ -128,6 +131,8 @@ export declare function resolveFarmPaths(options: ResolveFarmPathsOptions & {
128
131
  role: 'node';
129
132
  }): NodeFarmPaths;
130
133
  export declare function resolveFarmPaths(options: ResolveFarmPathsOptions): FarmPaths;
134
+ /** This process wrote or moved an instance marker: the next resolution reads it again. */
135
+ export declare function forgetFarmInstanceMarkers(): void;
131
136
  export declare function currentFarmPaths(role: 'gateway', env?: FarmPathEnv, checkoutRoot?: string): GatewayFarmPaths;
132
137
  export declare function currentFarmPaths(role: 'node', env?: FarmPathEnv, checkoutRoot?: string): NodeFarmPaths;
133
138
  /** Older nodes have no report. Keep their shell-expanded legacy paths in one place.
@@ -1 +1 @@
1
- {"version":3,"file":"farm-paths.d.ts","sourceRoot":"","sources":["../../src/node/farm-paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"farm-paths.d.ts","sourceRoot":"","sources":["../../src/node/farm-paths.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAKxD,wBAAgB,gBAAgB,CAAC,QAAQ,SAAY,GAAG,MAAM,EAAE,CAE/D;AAED,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,4EAA4E;IAC5E,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,qGAAqG;IACrG,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,QAAQ,GAAG,CAAC,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAEzD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAcpE;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,uBAAuB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAClD,aAAa,CAAC;AACjB,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,uBAAuB,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACrD,gBAAgB,CAAC;AACpB,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,uBAAuB,GAAG,SAAS,CAAC;AAStF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,CAAC,CAAC;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA2BD,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAoBpF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,uBAAuB,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACrD,gBAAgB,CAAC;AACpB,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,uBAAuB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAClD,aAAa,CAAC;AACjB,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,SAAS,CAAC;AA8T9E,0FAA0F;AAC1F,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,GAAG,CAAC,EAAE,WAAW,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB,CAAC;AACpB,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,WAAW,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,aAAa,CAAC;AAkCjB;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,WAAgB,EACrB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,mBAAmB,CAAC,EAAE,MAAM,GAC3B;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC,CAwBA;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAoEtE"}
@@ -5,6 +5,11 @@ import { fileURLToPath } from 'node:url';
5
5
  import { readLegacyStorageFacts } from './farm-paths-storage.js';
6
6
  import { expandHome } from './farmslot-home.js';
7
7
  export const FARM_INSTANCE_CLAIM = '.farmslot-instance';
8
+ // Refresh always installs the first directory and updates existing entries in the rest.
9
+ const LEGACY_CLI_BIN_DIRS = ['.local/bin', '.npm-global/bin'];
10
+ export function legacyCliBinDirs(userHome = homedir()) {
11
+ return LEGACY_CLI_BIN_DIRS.map((directory) => path.join(userHome, directory));
12
+ }
8
13
  /** Addressable path leaves, including indexed path arrays. Metadata is never a path. */
9
14
  export function farmPathEntries(paths) {
10
15
  const roots = Object.fromEntries(Object.entries(paths).filter(([key]) => !['layout', 'instance', 'role', 'envOverrides'].includes(key)));
@@ -167,6 +172,7 @@ export function resolveFarmPaths(options) {
167
172
  backlogRefinementPrompts: atHome('state', 'backlog', 'refinement-prompts'),
168
173
  resourceWatchState: atHome('state', 'cache', 'resource-watch-state.json'),
169
174
  capabilityStore: atHome('state', 'runtime-capabilities.json'),
175
+ configBackups: atHome('state', 'config-backups'),
170
176
  },
171
177
  }
172
178
  : { ...shared, role: 'node', state };
@@ -203,7 +209,7 @@ export function resolveFarmPaths(options) {
203
209
  : root,
204
210
  node: env.FARMSLOT_WORKSPACE ? path.resolve(expandHome(env.FARMSLOT_WORKSPACE)) : root,
205
211
  cli: path.join(userHome, '.local', 'share', 'farmslot-cli'),
206
- bin: path.join(userHome, '.local', 'bin'),
212
+ bin: path.join(userHome, LEGACY_CLI_BIN_DIRS[0]),
207
213
  support: path.join(homedir(), 'farmslot-node', 'support'),
208
214
  },
209
215
  backups: path.join(root, '.backups'),
@@ -273,44 +279,75 @@ export function resolveFarmPaths(options) {
273
279
  backlogRefinementPrompts: override('FARMSLOT_BACKLOG_REFINEMENT_PROMPT_DIR', path.join(root, '.backlog', 'refinement-prompts'), true),
274
280
  resourceWatchState: override('FARMSLOT_RESOURCE_WATCH_STATE_FILE', path.join(root, '.farm-cache', 'resource-watch-state.json'), true),
275
281
  capabilityStore: override('FARMSLOT_CAPABILITY_STORE_FILE', path.join(env.FARMSLOT_ROOT?.trim() || process.cwd(), '.runs', `runtime-capabilities-${env.GATEWAY_PORT?.trim() || '7777'}.json`)),
282
+ configBackups: atHome('state', 'config-backups'),
276
283
  },
277
284
  }
278
285
  : { ...shared, role: 'node', state };
279
286
  }
280
- // A process may switch homes during a test or CLI invocation. Include the marker timestamp
281
- // and environment in the key so neither a migration nor a changed override leaves stale roots.
282
- const processPaths = new Map();
283
- export function currentFarmPaths(role, env = process.env, checkoutRoot) {
284
- const home = expandHome(env.FARMSLOT_HOME?.trim() || path.join(homedir(), '.farmslot'));
285
- let marker = 'absent';
287
+ // A process may switch homes or overrides during a test or CLI invocation, so an entry holds only
288
+ // while the marker stamp and every variable resolution read are unchanged. Reading just those
289
+ // names matters: scanning all of process.env crosses into native code per variable, on every call.
290
+ const processPaths = [];
291
+ const PROCESS_PATHS_LIMIT = 32;
292
+ /**
293
+ * Each home's marker stamp, read at most once per interval: gateway paths resolve thousands of
294
+ * times a minute and each read was a `stat`. Only `farmslot paths migrate` and node deploys write
295
+ * the marker; this process forgets the stamp when it writes one (`forgetFarmInstanceMarkers`),
296
+ * and a marker another process writes is seen within one interval. Migration refuses a running
297
+ * gateway, so that interval never decides which layout a live gateway serves.
298
+ */
299
+ const MARKER_RECHECK_MS = 1_000;
300
+ const markerStamps = new Map();
301
+ function instanceMarker(home) {
302
+ const now = Date.now();
303
+ const known = markerStamps.get(home);
304
+ if (known && now >= known.readAt && now - known.readAt < MARKER_RECHECK_MS)
305
+ return known.stamp;
306
+ let stamp;
286
307
  try {
287
308
  const info = statSync(path.join(home, 'config', 'instance.json'));
288
- marker = `${info.mtimeMs}:${info.ctimeMs}:${info.size}`;
309
+ stamp = `${info.mtimeMs}:${info.ctimeMs}:${info.size}`;
289
310
  }
290
311
  catch (error) {
291
312
  // A missing marker selects legacy; permission and other filesystem errors must surface.
292
313
  if (!(error instanceof Error && 'code' in error && error.code === 'ENOENT'))
293
314
  throw error;
315
+ stamp = 'absent';
294
316
  }
295
- const selectedEnv = Object.entries(env).filter(([name]) => name.startsWith('FARMSLOT_') ||
296
- name === 'GATEWAY_PORT' ||
297
- name === 'CANARY_HOME' ||
298
- name === 'RECIPE_HARNESS_BROWSER_CACHE' ||
299
- name === 'XDG_CACHE_HOME');
300
- const key = JSON.stringify([
301
- role,
302
- home,
303
- homedir(),
304
- marker,
305
- checkoutRoot,
306
- process.cwd(),
307
- selectedEnv,
308
- ]);
309
- let paths = processPaths.get(key);
310
- if (!paths) {
311
- paths = resolveFarmPaths({ role, env, checkoutRoot });
312
- processPaths.set(key, paths);
313
- }
317
+ if (markerStamps.size >= PROCESS_PATHS_LIMIT && !known)
318
+ markerStamps.clear();
319
+ markerStamps.set(home, { stamp, readAt: now });
320
+ return stamp;
321
+ }
322
+ /** This process wrote or moved an instance marker: the next resolution reads it again. */
323
+ export function forgetFarmInstanceMarkers() {
324
+ markerStamps.clear();
325
+ }
326
+ export function currentFarmPaths(role, env = process.env, checkoutRoot) {
327
+ const home = expandHome(env.FARMSLOT_HOME?.trim() || path.join(homedir(), '.farmslot'));
328
+ const marker = instanceMarker(home);
329
+ const cwd = process.cwd();
330
+ const userHome = homedir();
331
+ const index = processPaths.findIndex((entry) => entry.role === role &&
332
+ entry.checkoutRoot === checkoutRoot &&
333
+ entry.cwd === cwd &&
334
+ entry.homedir === userHome &&
335
+ entry.marker === marker &&
336
+ [...entry.reads].every(([name, value]) => env[name] === value));
337
+ if (index >= 0)
338
+ return processPaths[index].paths;
339
+ const reads = new Map();
340
+ const recording = new Proxy(env, {
341
+ get(target, name, receiver) {
342
+ const value = Reflect.get(target, name, receiver);
343
+ if (typeof name === 'string')
344
+ reads.set(name, value);
345
+ return value;
346
+ },
347
+ });
348
+ const paths = resolveFarmPaths({ role, env: recording, checkoutRoot });
349
+ processPaths.unshift({ role, checkoutRoot, cwd, homedir: userHome, marker, reads, paths });
350
+ processPaths.length = Math.min(processPaths.length, PROCESS_PATHS_LIMIT);
314
351
  return paths;
315
352
  }
316
353
  /** Older nodes have no report. Keep their shell-expanded legacy paths in one place.
@@ -1 +1 @@
1
- {"version":3,"file":"farm-paths.js","sourceRoot":"","sources":["../../src/node/farm-paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"farm-paths.js","sourceRoot":"","sources":["../../src/node/farm-paths.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,28 @@ export declare function packEntryLinkTarget(entry: PackOwnedEntry & {
8
8
  content: string;
9
9
  }): string;
10
10
  export declare function packEntryLinkTarget(entry: PackOwnedEntry): string | undefined;
11
+ /** One `git` invocation's answer, as `spawnSync` reports it: exit status (null if it did not run) and stdout. */
12
+ export interface PackGitResult {
13
+ status: number | null;
14
+ stdout: Buffer;
15
+ }
16
+ /** Runs `git` with these arguments. The gateway passes one that does not block its event loop. */
17
+ export type PackGitRunner = (args: string[]) => Promise<PackGitResult>;
11
18
  /** One ownership boundary for pack hashing, admission and gateway sync. */
12
19
  export declare function listPackOwnedEntries(root: string): PackOwnedEntry[];
20
+ /**
21
+ * `listPackOwnedEntries` off the caller's event loop: `git` runs through `git`, and the paths are
22
+ * read, the files read and the temporary repository removed with `fs/promises`.
23
+ */
24
+ export declare function listPackOwnedEntriesAsync(root: string, git: PackGitRunner): Promise<PackOwnedEntry[]>;
13
25
  /** Machine identities come from pool configuration, never a built-in operator list. */
14
26
  export declare function packMachineNames(poolDir: string): string[];
15
27
  /** Pack admission and gateway sync use the same portability policy. */
16
28
  export declare function validatePackFilePortability(file: string, content: string, machines?: readonly string[]): string[];
17
29
  export declare function validatePackBytesPortability(file: string, bytes: Buffer, machines?: readonly string[]): string[];
30
+ /** The portability policy over a pack's owned entries, as both scans apply it. */
31
+ export declare function validatePackEntries(entries: PackOwnedEntry[], prefix: string, machines: readonly string[]): string[];
18
32
  export declare function validatePackPortability(root: string, prefix?: string, machines?: readonly string[]): string[];
33
+ /** `validatePackPortability` with the ownership walk's `git` calls run by `git`. */
34
+ export declare function validatePackPortabilityAsync(root: string, prefix: string, machines: readonly string[], git: PackGitRunner): Promise<string[]>;
19
35
  //# sourceMappingURL=pack-portability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pack-portability.d.ts","sourceRoot":"","sources":["../../src/node/pack-portability.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC;AACzF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAkC/E,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAoDnE;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAW1D;AAED,uEAAuE;AACvE,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,EAAE,CAkEV;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,EAAE,CAIV;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,SAAK,EACX,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,EAAE,CAOV"}
1
+ {"version":3,"file":"pack-portability.d.ts","sourceRoot":"","sources":["../../src/node/pack-portability.ts"],"names":[],"mappings":"AAoCA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC;AACzF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAK/E,iHAAiH;AACjH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kGAAkG;AAClG,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAqKvE,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAInE;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC,CAK3B;AAqDD,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAW1D;AAED,uEAAuE;AACvE,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,EAAE,CAkEV;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,EAAE,CAIV;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EAAE,EACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,EAAE,CAOV;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,SAAK,EACX,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,EAAE,CAEV;AAED,oFAAoF;AACpF,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAEnB"}
@@ -1,5 +1,6 @@
1
1
  import { spawnSync } from 'node:child_process';
2
- import { existsSync, lstatSync, mkdtempSync, readFileSync, readlinkSync, rmSync } from 'node:fs';
2
+ import { existsSync, lstatSync, mkdtempSync, readFileSync, readlinkSync, rmSync, } from 'node:fs';
3
+ import { lstat, readFile, readlink, rm } from 'node:fs/promises';
3
4
  import { tmpdir } from 'node:os';
4
5
  import path from 'node:path';
5
6
  import { validateQaConfig } from '../contracts/qa.js';
@@ -20,14 +21,138 @@ const namesPattern = (values) => [...new Set(values)].map(quoteRegex).join('|');
20
21
  export function packEntryLinkTarget(entry) {
21
22
  return typeof entry.content === 'string' ? entry.content.slice('symlink:'.length) : undefined;
22
23
  }
24
+ function* gitStep(args) {
25
+ const reply = yield { git: args };
26
+ if (Array.isArray(reply) || reply === 'removed')
27
+ throw new Error('The pack walk asked for git and got another answer');
28
+ return reply;
29
+ }
30
+ function* pathsStep(paths) {
31
+ const reply = yield { paths };
32
+ if (!Array.isArray(reply))
33
+ throw new Error('The pack walk asked for paths and got another answer');
34
+ return reply;
35
+ }
36
+ function* removeStep(dir) {
37
+ const reply = yield { remove: dir };
38
+ if (reply !== 'removed')
39
+ throw new Error('The pack walk asked for a removal and got another answer');
40
+ }
41
+ function isMissing(error) {
42
+ return error.code === 'ENOENT';
43
+ }
44
+ function pathKindSync(file) {
45
+ let stat;
46
+ try {
47
+ stat = lstatSync(file);
48
+ }
49
+ catch (error) {
50
+ if (isMissing(error))
51
+ return 'missing';
52
+ throw error;
53
+ }
54
+ if (stat.isSymbolicLink())
55
+ return { link: readlinkSync(file) };
56
+ return stat.isDirectory() ? 'directory' : stat.isFile() ? 'file' : 'other';
57
+ }
58
+ async function pathKind(file) {
59
+ let stat;
60
+ try {
61
+ stat = await lstat(file);
62
+ }
63
+ catch (error) {
64
+ if (isMissing(error))
65
+ return 'missing';
66
+ throw error;
67
+ }
68
+ if (stat.isSymbolicLink())
69
+ return { link: await readlink(file) };
70
+ return stat.isDirectory() ? 'directory' : stat.isFile() ? 'file' : 'other';
71
+ }
72
+ /** Concurrent file system calls on one pack in the asynchronous driver. */
73
+ const PACK_IO_CONCURRENCY = 8;
74
+ /**
75
+ * `items.map(map)`, at most PACK_IO_CONCURRENCY at a time, in order. After a failure nothing new
76
+ * starts, the calls in flight finish, and the failure of the earliest item is thrown: the one the
77
+ * synchronous driver, which goes in order, would have met first.
78
+ */
79
+ async function mapBounded(items, map) {
80
+ const results = [];
81
+ const failures = new Map();
82
+ let next = 0;
83
+ const worker = async () => {
84
+ while (next < items.length && !failures.size) {
85
+ const index = next++;
86
+ try {
87
+ results[index] = await map(items[index]);
88
+ }
89
+ catch (error) {
90
+ // Recorded, not dropped: thrown below once the calls in flight have settled.
91
+ failures.set(index, error);
92
+ }
93
+ }
94
+ };
95
+ await Promise.all(Array.from({ length: Math.min(PACK_IO_CONCURRENCY, items.length) }, worker));
96
+ if (failures.size)
97
+ throw failures.get(Math.min(...failures.keys()));
98
+ return results;
99
+ }
100
+ function runPackWalk(walk) {
101
+ let step = walk.next();
102
+ while (!step.done) {
103
+ const request = step.value;
104
+ let reply;
105
+ try {
106
+ if ('git' in request)
107
+ reply = spawnSync('git', request.git);
108
+ else if ('paths' in request)
109
+ reply = request.paths.map(pathKindSync);
110
+ else {
111
+ rmSync(request.remove, { recursive: true, force: true });
112
+ reply = 'removed';
113
+ }
114
+ }
115
+ catch (error) {
116
+ // Raised inside the walk so its cleanup runs; the walk does not catch it.
117
+ step = walk.throw(error);
118
+ continue;
119
+ }
120
+ step = walk.next(reply);
121
+ }
122
+ return step.value;
123
+ }
124
+ async function runPackWalkAsync(walk, git) {
125
+ let step = walk.next();
126
+ while (!step.done) {
127
+ const request = step.value;
128
+ let reply;
129
+ try {
130
+ if ('git' in request)
131
+ reply = await git(request.git);
132
+ else if ('paths' in request)
133
+ reply = await mapBounded(request.paths, pathKind);
134
+ else {
135
+ await rm(request.remove, { recursive: true, force: true });
136
+ reply = 'removed';
137
+ }
138
+ }
139
+ catch (error) {
140
+ // Raised inside the walk so its cleanup runs; the walk does not catch it.
141
+ step = walk.throw(error);
142
+ continue;
143
+ }
144
+ step = walk.next(reply);
145
+ }
146
+ return step.value;
147
+ }
23
148
  /** A copied pack still owns its ignore rules, even without its original Git index. */
24
- function listUnindexedPackFiles(dir, prefix) {
149
+ function* listUnindexedPackFiles(dir, prefix) {
25
150
  const gitDir = mkdtempSync(path.join(tmpdir(), 'pack-ignore-'));
26
151
  try {
27
- const initialized = spawnSync('git', ['init', '--bare', '--quiet', gitDir]);
152
+ const initialized = yield* gitStep(['init', '--bare', '--quiet', gitDir]);
28
153
  if (initialized.status !== 0)
29
154
  throw new Error('Cannot initialize pack ownership scan');
30
- const listed = spawnSync('git', [
155
+ const listed = yield* gitStep([
31
156
  '--git-dir',
32
157
  gitDir,
33
158
  '--work-tree',
@@ -48,16 +173,27 @@ function listUnindexedPackFiles(dir, prefix) {
48
173
  .filter((name) => prefix !== '' || !RUNTIME_DIRS.has(name.split('/')[0]));
49
174
  }
50
175
  finally {
51
- rmSync(gitDir, { recursive: true, force: true });
176
+ yield* removeStep(gitDir);
52
177
  }
53
178
  }
54
179
  /** One ownership boundary for pack hashing, admission and gateway sync. */
55
180
  export function listPackOwnedEntries(root) {
181
+ return runPackWalk(walkPackOwnedEntries(root)).map((entry) => 'file' in entry ? { rel: entry.rel, content: readFileSync(entry.file) } : entry);
182
+ }
183
+ /**
184
+ * `listPackOwnedEntries` off the caller's event loop: `git` runs through `git`, and the paths are
185
+ * read, the files read and the temporary repository removed with `fs/promises`.
186
+ */
187
+ export async function listPackOwnedEntriesAsync(root, git) {
188
+ const owned = await runPackWalkAsync(walkPackOwnedEntries(root), git);
189
+ return mapBounded(owned, async (entry) => 'file' in entry ? { rel: entry.rel, content: await readFile(entry.file) } : entry);
190
+ }
191
+ function* walkPackOwnedEntries(root) {
56
192
  const entries = [];
57
- const walk = (dir, prefix) => {
193
+ const walk = function* (dir, prefix) {
58
194
  // Git scopes this to dir and honors its owning repository. Submodule entries
59
195
  // are directories, so the recursive call switches to the submodule's index.
60
- const git = spawnSync('git', [
196
+ const git = yield* gitStep([
61
197
  '-C',
62
198
  dir,
63
199
  'ls-files',
@@ -75,38 +211,31 @@ export function listPackOwnedEntries(root) {
75
211
  else if (git.status === 0 || git.status === 128) {
76
212
  // A standalone pack, or an untracked pack ignored by its parent repo,
77
213
  // still owns its source files. Its top-level runtime state is not source.
78
- names = listUnindexedPackFiles(dir, prefix);
214
+ names = yield* listUnindexedPackFiles(dir, prefix);
79
215
  }
80
216
  else {
81
217
  throw new Error('Cannot list pack-owned files for portability validation');
82
218
  }
83
- for (const name of names.sort()) {
84
- if (name.split('/').some((part) => part === '.git' || part === 'node_modules'))
219
+ const owned = names
220
+ .sort()
221
+ .filter((name) => !name.split('/').some((part) => part === '.git' || part === 'node_modules'));
222
+ const kinds = yield* pathsStep(owned.map((name) => path.join(dir, name)));
223
+ for (const [index, name] of owned.entries()) {
224
+ const kind = kinds[index];
225
+ // A tracked deletion has no shipped bytes. Dangling links still have a target.
226
+ if (kind === 'missing' || kind === 'other')
85
227
  continue;
86
- const full = path.join(dir, name);
87
- if (!existsSync(full)) {
88
- // A tracked deletion has no shipped bytes. Dangling links still have a target.
89
- try {
90
- lstatSync(full);
91
- }
92
- catch (error) {
93
- if (error.code === 'ENOENT')
94
- continue;
95
- throw error;
96
- }
97
- }
98
228
  const cleanName = name.replace(/\/+$/, '');
99
229
  const rel = prefix ? `${prefix}/${cleanName}` : cleanName;
100
- const stat = lstatSync(full);
101
- if (stat.isSymbolicLink())
102
- entries.push({ rel, content: `symlink:${readlinkSync(full)}` });
103
- else if (stat.isDirectory())
104
- walk(full, rel);
105
- else if (stat.isFile())
106
- entries.push({ rel, content: readFileSync(full) });
230
+ if (typeof kind === 'object')
231
+ entries.push({ rel, content: `symlink:${kind.link}` });
232
+ else if (kind === 'directory')
233
+ yield* walk(path.join(dir, name), rel);
234
+ else
235
+ entries.push({ rel, file: path.join(dir, name) });
107
236
  }
108
237
  };
109
- walk(root, '');
238
+ yield* walk(root, '');
110
239
  return entries.sort((a, b) => {
111
240
  const left = a.rel.replaceAll('/', '\0');
112
241
  const right = b.rel.replaceAll('/', '\0');
@@ -196,12 +325,20 @@ export function validatePackBytesPortability(file, bytes, machines = []) {
196
325
  ? []
197
326
  : validatePackFilePortability(file, bytes.toString('utf8'), machines);
198
327
  }
199
- export function validatePackPortability(root, prefix = '', machines = []) {
200
- return listPackOwnedEntries(root).flatMap(({ rel, content }) => {
328
+ /** The portability policy over a pack's owned entries, as both scans apply it. */
329
+ export function validatePackEntries(entries, prefix, machines) {
330
+ return entries.flatMap(({ rel, content }) => {
201
331
  const file = prefix ? `${prefix}/${rel}` : rel;
202
332
  return typeof content === 'string'
203
333
  ? validatePackFilePortability(file, packEntryLinkTarget({ rel, content }), machines)
204
334
  : validatePackBytesPortability(file, content, machines);
205
335
  });
206
336
  }
337
+ export function validatePackPortability(root, prefix = '', machines = []) {
338
+ return validatePackEntries(listPackOwnedEntries(root), prefix, machines);
339
+ }
340
+ /** `validatePackPortability` with the ownership walk's `git` calls run by `git`. */
341
+ export async function validatePackPortabilityAsync(root, prefix, machines, git) {
342
+ return validatePackEntries(await listPackOwnedEntriesAsync(root, git), prefix, machines);
343
+ }
207
344
  //# sourceMappingURL=pack-portability.js.map