@paraharness/fs 0.0.0-stage → 0.1.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 (279) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -2
  3. package/dist/builders/create-fs-allow-only-guard-builder.d.ts +13 -0
  4. package/dist/builders/create-fs-allow-only-guard-builder.d.ts.map +1 -0
  5. package/dist/builders/create-fs-allow-only-guard-builder.js +22 -0
  6. package/dist/builders/create-fs-allow-only-guard-builder.js.map +1 -0
  7. package/dist/builders/create-fs-allow-write-globs-lease-delta.d.ts +13 -0
  8. package/dist/builders/create-fs-allow-write-globs-lease-delta.d.ts.map +1 -0
  9. package/dist/builders/create-fs-allow-write-globs-lease-delta.js +20 -0
  10. package/dist/builders/create-fs-allow-write-globs-lease-delta.js.map +1 -0
  11. package/dist/builders/create-fs-boundary-guard-builder.d.ts +15 -0
  12. package/dist/builders/create-fs-boundary-guard-builder.d.ts.map +1 -0
  13. package/dist/builders/create-fs-boundary-guard-builder.js +20 -0
  14. package/dist/builders/create-fs-boundary-guard-builder.js.map +1 -0
  15. package/dist/builders/create-fs-coding-tools.d.ts +21 -0
  16. package/dist/builders/create-fs-coding-tools.d.ts.map +1 -0
  17. package/dist/builders/create-fs-coding-tools.js +25 -0
  18. package/dist/builders/create-fs-coding-tools.js.map +1 -0
  19. package/dist/builders/create-fs-glob-matcher-builder.d.ts +14 -0
  20. package/dist/builders/create-fs-glob-matcher-builder.d.ts.map +1 -0
  21. package/dist/builders/create-fs-glob-matcher-builder.js +24 -0
  22. package/dist/builders/create-fs-glob-matcher-builder.js.map +1 -0
  23. package/dist/builders/create-fs-glob-source-builder.d.ts +13 -0
  24. package/dist/builders/create-fs-glob-source-builder.d.ts.map +1 -0
  25. package/dist/builders/create-fs-glob-source-builder.js +22 -0
  26. package/dist/builders/create-fs-glob-source-builder.js.map +1 -0
  27. package/dist/builders/create-fs-in-partition-predicate.d.ts +16 -0
  28. package/dist/builders/create-fs-in-partition-predicate.d.ts.map +1 -0
  29. package/dist/builders/create-fs-in-partition-predicate.js +25 -0
  30. package/dist/builders/create-fs-in-partition-predicate.js.map +1 -0
  31. package/dist/builders/create-fs-jsonl-lesson-store-builder.d.ts +29 -0
  32. package/dist/builders/create-fs-jsonl-lesson-store-builder.d.ts.map +1 -0
  33. package/dist/builders/create-fs-jsonl-lesson-store-builder.js +30 -0
  34. package/dist/builders/create-fs-jsonl-lesson-store-builder.js.map +1 -0
  35. package/dist/builders/create-fs-max-files-mutated-builder.d.ts +13 -0
  36. package/dist/builders/create-fs-max-files-mutated-builder.d.ts.map +1 -0
  37. package/dist/builders/create-fs-max-files-mutated-builder.js +21 -0
  38. package/dist/builders/create-fs-max-files-mutated-builder.js.map +1 -0
  39. package/dist/builders/create-fs-partition-map.d.ts +16 -0
  40. package/dist/builders/create-fs-partition-map.d.ts.map +1 -0
  41. package/dist/builders/create-fs-partition-map.js +34 -0
  42. package/dist/builders/create-fs-partition-map.js.map +1 -0
  43. package/dist/builders/create-fs-protect-guard-builder.d.ts +13 -0
  44. package/dist/builders/create-fs-protect-guard-builder.d.ts.map +1 -0
  45. package/dist/builders/create-fs-protect-guard-builder.js +22 -0
  46. package/dist/builders/create-fs-protect-guard-builder.js.map +1 -0
  47. package/dist/builders/create-fs-read-only-guard-builder.d.ts +11 -0
  48. package/dist/builders/create-fs-read-only-guard-builder.d.ts.map +1 -0
  49. package/dist/builders/create-fs-read-only-guard-builder.js +15 -0
  50. package/dist/builders/create-fs-read-only-guard-builder.js.map +1 -0
  51. package/dist/builders/create-fs-read-only-tools.d.ts +15 -0
  52. package/dist/builders/create-fs-read-only-tools.d.ts.map +1 -0
  53. package/dist/builders/create-fs-read-only-tools.js +23 -0
  54. package/dist/builders/create-fs-read-only-tools.js.map +1 -0
  55. package/dist/builders/create-fs-regex-check-builder.d.ts +34 -0
  56. package/dist/builders/create-fs-regex-check-builder.d.ts.map +1 -0
  57. package/dist/builders/create-fs-regex-check-builder.js +58 -0
  58. package/dist/builders/create-fs-regex-check-builder.js.map +1 -0
  59. package/dist/builders/create-fs-require-read-before-write-guard-builder.d.ts +11 -0
  60. package/dist/builders/create-fs-require-read-before-write-guard-builder.d.ts.map +1 -0
  61. package/dist/builders/create-fs-require-read-before-write-guard-builder.js +15 -0
  62. package/dist/builders/create-fs-require-read-before-write-guard-builder.js.map +1 -0
  63. package/dist/builders/create-fs-scoped-write-guard-builder.d.ts +15 -0
  64. package/dist/builders/create-fs-scoped-write-guard-builder.d.ts.map +1 -0
  65. package/dist/builders/create-fs-scoped-write-guard-builder.js +20 -0
  66. package/dist/builders/create-fs-scoped-write-guard-builder.js.map +1 -0
  67. package/dist/builders/create-fs-secret-literals-guard-builder.d.ts +13 -0
  68. package/dist/builders/create-fs-secret-literals-guard-builder.d.ts.map +1 -0
  69. package/dist/builders/create-fs-secret-literals-guard-builder.js +21 -0
  70. package/dist/builders/create-fs-secret-literals-guard-builder.js.map +1 -0
  71. package/dist/builders/create-fs-telemetry-builder.d.ts +11 -0
  72. package/dist/builders/create-fs-telemetry-builder.d.ts.map +1 -0
  73. package/dist/builders/create-fs-telemetry-builder.js +17 -0
  74. package/dist/builders/create-fs-telemetry-builder.js.map +1 -0
  75. package/dist/builders/create-fs-text-source-builder.d.ts +14 -0
  76. package/dist/builders/create-fs-text-source-builder.d.ts.map +1 -0
  77. package/dist/builders/create-fs-text-source-builder.js +23 -0
  78. package/dist/builders/create-fs-text-source-builder.js.map +1 -0
  79. package/dist/builders/create-fs-write-guard-builder.d.ts +29 -0
  80. package/dist/builders/create-fs-write-guard-builder.d.ts.map +1 -0
  81. package/dist/builders/create-fs-write-guard-builder.js +29 -0
  82. package/dist/builders/create-fs-write-guard-builder.js.map +1 -0
  83. package/dist/builders/fs-namespace-contract.d.ts +187 -0
  84. package/dist/builders/fs-namespace-contract.d.ts.map +1 -0
  85. package/dist/builders/fs-namespace-contract.js +2 -0
  86. package/dist/builders/fs-namespace-contract.js.map +1 -0
  87. package/dist/builders/fs-namespace.d.ts +10 -0
  88. package/dist/builders/fs-namespace.d.ts.map +1 -0
  89. package/dist/builders/fs-namespace.js +50 -0
  90. package/dist/builders/fs-namespace.js.map +1 -0
  91. package/dist/builders/internal/build-fs-tool-nodes.d.ts +62 -0
  92. package/dist/builders/internal/build-fs-tool-nodes.d.ts.map +1 -0
  93. package/dist/builders/internal/build-fs-tool-nodes.js +107 -0
  94. package/dist/builders/internal/build-fs-tool-nodes.js.map +1 -0
  95. package/dist/builders/internal/fs-tool-input.schema.d.ts +80 -0
  96. package/dist/builders/internal/fs-tool-input.schema.d.ts.map +1 -0
  97. package/dist/builders/internal/fs-tool-input.schema.js +56 -0
  98. package/dist/builders/internal/fs-tool-input.schema.js.map +1 -0
  99. package/dist/executors/create-fs-executors.d.ts +11 -0
  100. package/dist/executors/create-fs-executors.d.ts.map +1 -0
  101. package/dist/executors/create-fs-executors.js +57 -0
  102. package/dist/executors/create-fs-executors.js.map +1 -0
  103. package/dist/executors/fs-check-tripwire-and-telemetry.d.ts +45 -0
  104. package/dist/executors/fs-check-tripwire-and-telemetry.d.ts.map +1 -0
  105. package/dist/executors/fs-check-tripwire-and-telemetry.js +99 -0
  106. package/dist/executors/fs-check-tripwire-and-telemetry.js.map +1 -0
  107. package/dist/executors/fs-executors.constants.d.ts +10 -0
  108. package/dist/executors/fs-executors.constants.d.ts.map +1 -0
  109. package/dist/executors/fs-executors.constants.js +10 -0
  110. package/dist/executors/fs-executors.constants.js.map +1 -0
  111. package/dist/executors/fs-glob-effect-matcher.d.ts +15 -0
  112. package/dist/executors/fs-glob-effect-matcher.d.ts.map +1 -0
  113. package/dist/executors/fs-glob-effect-matcher.js +37 -0
  114. package/dist/executors/fs-glob-effect-matcher.js.map +1 -0
  115. package/dist/executors/fs-path-guard-executors.d.ts +51 -0
  116. package/dist/executors/fs-path-guard-executors.d.ts.map +1 -0
  117. package/dist/executors/fs-path-guard-executors.js +60 -0
  118. package/dist/executors/fs-path-guard-executors.js.map +1 -0
  119. package/dist/executors/fs-read-tool-drivers.d.ts +35 -0
  120. package/dist/executors/fs-read-tool-drivers.d.ts.map +1 -0
  121. package/dist/executors/fs-read-tool-drivers.js +73 -0
  122. package/dist/executors/fs-read-tool-drivers.js.map +1 -0
  123. package/dist/executors/fs-source-executors.d.ts +31 -0
  124. package/dist/executors/fs-source-executors.d.ts.map +1 -0
  125. package/dist/executors/fs-source-executors.js +55 -0
  126. package/dist/executors/fs-source-executors.js.map +1 -0
  127. package/dist/executors/fs-tool-effect.d.ts +33 -0
  128. package/dist/executors/fs-tool-effect.d.ts.map +1 -0
  129. package/dist/executors/fs-tool-effect.js +2 -0
  130. package/dist/executors/fs-tool-effect.js.map +1 -0
  131. package/dist/executors/fs-write-guard-executors.d.ts +55 -0
  132. package/dist/executors/fs-write-guard-executors.d.ts.map +1 -0
  133. package/dist/executors/fs-write-guard-executors.js +64 -0
  134. package/dist/executors/fs-write-guard-executors.js.map +1 -0
  135. package/dist/executors/fs-write-tool-drivers.d.ts +24 -0
  136. package/dist/executors/fs-write-tool-drivers.d.ts.map +1 -0
  137. package/dist/executors/fs-write-tool-drivers.js +44 -0
  138. package/dist/executors/fs-write-tool-drivers.js.map +1 -0
  139. package/dist/executors/internal/add-mutated-paths-from-effects.d.ts +9 -0
  140. package/dist/executors/internal/add-mutated-paths-from-effects.d.ts.map +1 -0
  141. package/dist/executors/internal/add-mutated-paths-from-effects.js +24 -0
  142. package/dist/executors/internal/add-mutated-paths-from-effects.js.map +1 -0
  143. package/dist/executors/internal/check-paths-exist-at-base-ref.d.ts +12 -0
  144. package/dist/executors/internal/check-paths-exist-at-base-ref.d.ts.map +1 -0
  145. package/dist/executors/internal/check-paths-exist-at-base-ref.js +59 -0
  146. package/dist/executors/internal/check-paths-exist-at-base-ref.js.map +1 -0
  147. package/dist/executors/internal/collect-mutated-paths-since-base-ref.d.ts +13 -0
  148. package/dist/executors/internal/collect-mutated-paths-since-base-ref.d.ts.map +1 -0
  149. package/dist/executors/internal/collect-mutated-paths-since-base-ref.js +42 -0
  150. package/dist/executors/internal/collect-mutated-paths-since-base-ref.js.map +1 -0
  151. package/dist/executors/internal/collect-read-paths-from-effects.d.ts +12 -0
  152. package/dist/executors/internal/collect-read-paths-from-effects.d.ts.map +1 -0
  153. package/dist/executors/internal/collect-read-paths-from-effects.js +26 -0
  154. package/dist/executors/internal/collect-read-paths-from-effects.js.map +1 -0
  155. package/dist/executors/internal/compile-active-lease-write-matcher.d.ts +14 -0
  156. package/dist/executors/internal/compile-active-lease-write-matcher.d.ts.map +1 -0
  157. package/dist/executors/internal/compile-active-lease-write-matcher.js +50 -0
  158. package/dist/executors/internal/compile-active-lease-write-matcher.js.map +1 -0
  159. package/dist/executors/internal/compile-glob-or-exact-matcher.d.ts +12 -0
  160. package/dist/executors/internal/compile-glob-or-exact-matcher.d.ts.map +1 -0
  161. package/dist/executors/internal/compile-glob-or-exact-matcher.js +63 -0
  162. package/dist/executors/internal/compile-glob-or-exact-matcher.js.map +1 -0
  163. package/dist/executors/internal/compile-secret-patterns.d.ts +12 -0
  164. package/dist/executors/internal/compile-secret-patterns.d.ts.map +1 -0
  165. package/dist/executors/internal/compile-secret-patterns.js +27 -0
  166. package/dist/executors/internal/compile-secret-patterns.js.map +1 -0
  167. package/dist/executors/internal/create-effect-base-ref-path-lookup.d.ts +13 -0
  168. package/dist/executors/internal/create-effect-base-ref-path-lookup.d.ts.map +1 -0
  169. package/dist/executors/internal/create-effect-base-ref-path-lookup.js +33 -0
  170. package/dist/executors/internal/create-effect-base-ref-path-lookup.js.map +1 -0
  171. package/dist/executors/internal/create-fs-read-effect.d.ts +12 -0
  172. package/dist/executors/internal/create-fs-read-effect.d.ts.map +1 -0
  173. package/dist/executors/internal/create-fs-read-effect.js +22 -0
  174. package/dist/executors/internal/create-fs-read-effect.js.map +1 -0
  175. package/dist/executors/internal/create-fs-write-effect.d.ts +14 -0
  176. package/dist/executors/internal/create-fs-write-effect.d.ts.map +1 -0
  177. package/dist/executors/internal/create-fs-write-effect.js +24 -0
  178. package/dist/executors/internal/create-fs-write-effect.js.map +1 -0
  179. package/dist/executors/internal/describe-fs-edit-effects.d.ts +13 -0
  180. package/dist/executors/internal/describe-fs-edit-effects.d.ts.map +1 -0
  181. package/dist/executors/internal/describe-fs-edit-effects.js +31 -0
  182. package/dist/executors/internal/describe-fs-edit-effects.js.map +1 -0
  183. package/dist/executors/internal/describe-fs-write-effects.d.ts +13 -0
  184. package/dist/executors/internal/describe-fs-write-effects.d.ts.map +1 -0
  185. package/dist/executors/internal/describe-fs-write-effects.js +24 -0
  186. package/dist/executors/internal/describe-fs-write-effects.js.map +1 -0
  187. package/dist/executors/internal/enumerate-workspace-files-sync.d.ts +12 -0
  188. package/dist/executors/internal/enumerate-workspace-files-sync.d.ts.map +1 -0
  189. package/dist/executors/internal/enumerate-workspace-files-sync.js +52 -0
  190. package/dist/executors/internal/enumerate-workspace-files-sync.js.map +1 -0
  191. package/dist/executors/internal/enumerate-workspace-files.d.ts +13 -0
  192. package/dist/executors/internal/enumerate-workspace-files.d.ts.map +1 -0
  193. package/dist/executors/internal/enumerate-workspace-files.js +44 -0
  194. package/dist/executors/internal/enumerate-workspace-files.js.map +1 -0
  195. package/dist/executors/internal/evaluate-fs-allow-and-protect-guards.d.ts +28 -0
  196. package/dist/executors/internal/evaluate-fs-allow-and-protect-guards.d.ts.map +1 -0
  197. package/dist/executors/internal/evaluate-fs-allow-and-protect-guards.js +37 -0
  198. package/dist/executors/internal/evaluate-fs-allow-and-protect-guards.js.map +1 -0
  199. package/dist/executors/internal/evaluate-fs-content-and-read-guards.d.ts +20 -0
  200. package/dist/executors/internal/evaluate-fs-content-and-read-guards.d.ts.map +1 -0
  201. package/dist/executors/internal/evaluate-fs-content-and-read-guards.js +46 -0
  202. package/dist/executors/internal/evaluate-fs-content-and-read-guards.js.map +1 -0
  203. package/dist/executors/internal/evaluate-fs-write-and-boundary-guards.d.ts +31 -0
  204. package/dist/executors/internal/evaluate-fs-write-and-boundary-guards.d.ts.map +1 -0
  205. package/dist/executors/internal/evaluate-fs-write-and-boundary-guards.js +100 -0
  206. package/dist/executors/internal/evaluate-fs-write-and-boundary-guards.js.map +1 -0
  207. package/dist/executors/internal/execute-fs-edit-operation.d.ts +26 -0
  208. package/dist/executors/internal/execute-fs-edit-operation.d.ts.map +1 -0
  209. package/dist/executors/internal/execute-fs-edit-operation.js +25 -0
  210. package/dist/executors/internal/execute-fs-edit-operation.js.map +1 -0
  211. package/dist/executors/internal/execute-fs-write-operation.d.ts +22 -0
  212. package/dist/executors/internal/execute-fs-write-operation.d.ts.map +1 -0
  213. package/dist/executors/internal/execute-fs-write-operation.js +21 -0
  214. package/dist/executors/internal/execute-fs-write-operation.js.map +1 -0
  215. package/dist/executors/internal/extract-worktree-root-and-base-ref.d.ts +15 -0
  216. package/dist/executors/internal/extract-worktree-root-and-base-ref.d.ts.map +1 -0
  217. package/dist/executors/internal/extract-worktree-root-and-base-ref.js +24 -0
  218. package/dist/executors/internal/extract-worktree-root-and-base-ref.js.map +1 -0
  219. package/dist/executors/internal/filter-jailed-dirents.d.ts +25 -0
  220. package/dist/executors/internal/filter-jailed-dirents.d.ts.map +1 -0
  221. package/dist/executors/internal/filter-jailed-dirents.js +54 -0
  222. package/dist/executors/internal/filter-jailed-dirents.js.map +1 -0
  223. package/dist/executors/internal/fs-coding-tool-drivers.d.ts +38 -0
  224. package/dist/executors/internal/fs-coding-tool-drivers.d.ts.map +1 -0
  225. package/dist/executors/internal/fs-coding-tool-drivers.js +52 -0
  226. package/dist/executors/internal/fs-coding-tool-drivers.js.map +1 -0
  227. package/dist/executors/internal/fs-search-tool-drivers.d.ts +26 -0
  228. package/dist/executors/internal/fs-search-tool-drivers.d.ts.map +1 -0
  229. package/dist/executors/internal/fs-search-tool-drivers.js +37 -0
  230. package/dist/executors/internal/fs-search-tool-drivers.js.map +1 -0
  231. package/dist/executors/internal/glob-matcher-cache.constants.d.ts +20 -0
  232. package/dist/executors/internal/glob-matcher-cache.constants.d.ts.map +1 -0
  233. package/dist/executors/internal/glob-matcher-cache.constants.js +19 -0
  234. package/dist/executors/internal/glob-matcher-cache.constants.js.map +1 -0
  235. package/dist/executors/internal/grep-workspace-files.d.ts +23 -0
  236. package/dist/executors/internal/grep-workspace-files.d.ts.map +1 -0
  237. package/dist/executors/internal/grep-workspace-files.js +33 -0
  238. package/dist/executors/internal/grep-workspace-files.js.map +1 -0
  239. package/dist/executors/internal/project-violated-write-effects.d.ts +15 -0
  240. package/dist/executors/internal/project-violated-write-effects.d.ts.map +1 -0
  241. package/dist/executors/internal/project-violated-write-effects.js +67 -0
  242. package/dist/executors/internal/project-violated-write-effects.js.map +1 -0
  243. package/dist/executors/internal/resolve-jailed-worktree-path.d.ts +19 -0
  244. package/dist/executors/internal/resolve-jailed-worktree-path.d.ts.map +1 -0
  245. package/dist/executors/internal/resolve-jailed-worktree-path.js +101 -0
  246. package/dist/executors/internal/resolve-jailed-worktree-path.js.map +1 -0
  247. package/dist/executors/internal/secret-patterns.constants.d.ts +16 -0
  248. package/dist/executors/internal/secret-patterns.constants.d.ts.map +1 -0
  249. package/dist/executors/internal/secret-patterns.constants.js +30 -0
  250. package/dist/executors/internal/secret-patterns.constants.js.map +1 -0
  251. package/dist/index.d.ts +35 -0
  252. package/dist/index.d.ts.map +1 -0
  253. package/dist/index.js +32 -0
  254. package/dist/index.js.map +1 -0
  255. package/dist/stores/fs-jsonl-lesson-store.d.ts +135 -0
  256. package/dist/stores/fs-jsonl-lesson-store.d.ts.map +1 -0
  257. package/dist/stores/fs-jsonl-lesson-store.js +155 -0
  258. package/dist/stores/fs-jsonl-lesson-store.js.map +1 -0
  259. package/dist/stores/internal/fs-jsonl-lesson-file-io.d.ts +129 -0
  260. package/dist/stores/internal/fs-jsonl-lesson-file-io.d.ts.map +1 -0
  261. package/dist/stores/internal/fs-jsonl-lesson-file-io.js +197 -0
  262. package/dist/stores/internal/fs-jsonl-lesson-file-io.js.map +1 -0
  263. package/dist/stores/internal/fs-lesson-definition-record.d.ts +19 -0
  264. package/dist/stores/internal/fs-lesson-definition-record.d.ts.map +1 -0
  265. package/dist/stores/internal/fs-lesson-definition-record.js +2 -0
  266. package/dist/stores/internal/fs-lesson-definition-record.js.map +1 -0
  267. package/dist/stores/internal/fs-lesson-lock-and-atomic-io.d.ts +51 -0
  268. package/dist/stores/internal/fs-lesson-lock-and-atomic-io.d.ts.map +1 -0
  269. package/dist/stores/internal/fs-lesson-lock-and-atomic-io.js +89 -0
  270. package/dist/stores/internal/fs-lesson-lock-and-atomic-io.js.map +1 -0
  271. package/dist/stores/internal/fs-lesson-relevance.d.ts +49 -0
  272. package/dist/stores/internal/fs-lesson-relevance.d.ts.map +1 -0
  273. package/dist/stores/internal/fs-lesson-relevance.js +113 -0
  274. package/dist/stores/internal/fs-lesson-relevance.js.map +1 -0
  275. package/dist/stores/internal/fs-lesson-stats-entry.d.ts +22 -0
  276. package/dist/stores/internal/fs-lesson-stats-entry.d.ts.map +1 -0
  277. package/dist/stores/internal/fs-lesson-stats-entry.js +2 -0
  278. package/dist/stores/internal/fs-lesson-stats-entry.js.map +1 -0
  279. package/package.json +72 -3
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2026 Tornike Tsomaia
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,63 @@
1
- # Temporary Holding Version
1
+ # @paraharness/fs
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Workspace-jailed filesystem tools, glob effect matchers, pre-flight and post-flight write policy guards, file-count quota tripwires, regex checks, and content-addressed JSONL lesson stores for [Paraharness](https://github.com/paraharness/paraharness). This package provides symlink-safe file reading, editing, and search tools alongside declarative `fs.*` guards that enforce partition boundaries and test ratchets inside `P.policy`.
4
+
5
+ ## Installation
6
+
7
+ With npm:
8
+
9
+ ```bash
10
+ npm install @paraharness/fs @paraharness/core zod
11
+ ```
12
+
13
+ With yarn:
14
+
15
+ ```bash
16
+ yarn add @paraharness/fs @paraharness/core zod
17
+ ```
18
+
19
+ With pnpm:
20
+
21
+ ```bash
22
+ pnpm add @paraharness/fs @paraharness/core zod
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ```ts
28
+ import { P, z } from '@paraharness/core';
29
+ import { createExecutorRegistry } from '@paraharness/core/runtime';
30
+ import { claude, claudeExecutors } from '@paraharness/claude';
31
+ import { fs, fsExecutors } from '@paraharness/fs';
32
+ import { local, nodeExecutors } from '@paraharness/node';
33
+
34
+ const runner = local.runner({ slots: 4 });
35
+ const sonnet = claude.model('sonnet', { id: 'claude-sonnet-4-6' });
36
+
37
+ const workerPolicy = P.policy('worker-policy')
38
+ .guard(
39
+ fs.protect(['packages/*/src/index.ts', 'PRODUCT_SPEC.md']),
40
+ fs.requireReadBeforeWrite(),
41
+ fs.secretLiterals(),
42
+ )
43
+ .onViolation('deny-with-error')
44
+ .tripwire(fs.maxFilesMutated(6));
45
+
46
+ const worker = P.agent('worker')
47
+ .model(sonnet)
48
+ .policy(workerPolicy)
49
+ .tools(fs.codingTools(runner))
50
+ .instructions(fs.text('.harness/prompts/worker.md'))
51
+ .input(z.object({ prompt: z.string() }))
52
+ .output(z.object({ summary: z.string() }));
53
+
54
+ const registry = createExecutorRegistry(claudeExecutors, fsExecutors, nodeExecutors);
55
+ ```
56
+
57
+ ## Documentation
58
+
59
+ See the [`@paraharness/fs` API Reference](https://paraharness.github.io/paraharness/modules/_paraharness_fs.html) for full type and builder specifications.
60
+
61
+ ## License
62
+
63
+ [MIT](./LICENSE) © Tornike Tsomaia
@@ -0,0 +1,13 @@
1
+ import type { FsAllowOnlyGuardNode } from '@paraharness/core';
2
+ /**
3
+ * Compiles a passive `FsAllowOnlyGuardNode` (`fs:allow-only`) for `fs.allowOnly(globs)`.
4
+ *
5
+ * Restricts filesystem write mutations strictly to paths matching at least one glob
6
+ * in `globs` (or an active `LeaseDelta` grant).
7
+ *
8
+ * @param {readonly string[]} globs - Allowed write glob patterns.
9
+ *
10
+ * @returns {FsAllowOnlyGuardNode} Deeply frozen `FsAllowOnlyGuardNode` AST descriptor.
11
+ */
12
+ export declare function createFsAllowOnlyGuardBuilder(globs: readonly string[]): FsAllowOnlyGuardNode;
13
+ //# sourceMappingURL=create-fs-allow-only-guard-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-allow-only-guard-builder.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-allow-only-guard-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,oBAAoB,CAU5F"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Compiles a passive `FsAllowOnlyGuardNode` (`fs:allow-only`) for `fs.allowOnly(globs)`.
3
+ *
4
+ * Restricts filesystem write mutations strictly to paths matching at least one glob
5
+ * in `globs` (or an active `LeaseDelta` grant).
6
+ *
7
+ * @param {readonly string[]} globs - Allowed write glob patterns.
8
+ *
9
+ * @returns {FsAllowOnlyGuardNode} Deeply frozen `FsAllowOnlyGuardNode` AST descriptor.
10
+ */
11
+ export function createFsAllowOnlyGuardBuilder(globs) {
12
+ if (!Array.isArray(globs) || globs.length === 0) {
13
+ throw new Error('fs.allowOnly requires a non-empty globs array.');
14
+ }
15
+ const frozenGlobs = Object.freeze([...globs]);
16
+ return Object.freeze({
17
+ type: 'fs:allow-only',
18
+ id: `fs:allow-only:${frozenGlobs.join(',')}`,
19
+ globs: frozenGlobs,
20
+ });
21
+ }
22
+ //# sourceMappingURL=create-fs-allow-only-guard-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-allow-only-guard-builder.js","sourceRoot":"","sources":["../../src/builders/create-fs-allow-only-guard-builder.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAwB;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAuB;QACzC,IAAI,EAAE,eAAe;QACrB,EAAE,EAAE,iBAAiB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC5C,KAAK,EAAE,WAAW;KACnB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { LeaseDelta } from '@paraharness/core';
2
+ /**
3
+ * Creates a serializable `LeaseDelta` unlocking writes to `globs` (`fs.allowWriteGlobs(globs)`).
4
+ *
5
+ * Emits a `grantedMatchers` entry with a deterministic `FsGlobMatcherNode` (`mode: 'write'`)
6
+ * that matches both exact normalized file paths (including bracketed routes) and POSIX globs.
7
+ *
8
+ * @param {readonly string[]} globs - Exact file paths or POSIX glob patterns to unlock for writing.
9
+ *
10
+ * @returns {LeaseDelta} Deeply frozen `LeaseDelta` capability grant.
11
+ */
12
+ export declare function createFsAllowWriteGlobsLeaseDelta(globs: readonly string[]): LeaseDelta;
13
+ //# sourceMappingURL=create-fs-allow-write-globs-lease-delta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-allow-write-globs-lease-delta.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-allow-write-globs-lease-delta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAOtF"}
@@ -0,0 +1,20 @@
1
+ import { createFsGlobMatcherBuilder } from './create-fs-glob-matcher-builder.js';
2
+ /**
3
+ * Creates a serializable `LeaseDelta` unlocking writes to `globs` (`fs.allowWriteGlobs(globs)`).
4
+ *
5
+ * Emits a `grantedMatchers` entry with a deterministic `FsGlobMatcherNode` (`mode: 'write'`)
6
+ * that matches both exact normalized file paths (including bracketed routes) and POSIX globs.
7
+ *
8
+ * @param {readonly string[]} globs - Exact file paths or POSIX glob patterns to unlock for writing.
9
+ *
10
+ * @returns {LeaseDelta} Deeply frozen `LeaseDelta` capability grant.
11
+ */
12
+ export function createFsAllowWriteGlobsLeaseDelta(globs) {
13
+ const matcher = createFsGlobMatcherBuilder(globs, 'write');
14
+ return Object.freeze({
15
+ type: 'harness:lease-delta',
16
+ id: `fs:allow-write-globs:${matcher.globs.join(',')}`,
17
+ grantedMatchers: Object.freeze([matcher]),
18
+ });
19
+ }
20
+ //# sourceMappingURL=create-fs-allow-write-globs-lease-delta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-allow-write-globs-lease-delta.js","sourceRoot":"","sources":["../../src/builders/create-fs-allow-write-globs-lease-delta.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF;;;;;;;;;GASG;AACH,MAAM,UAAU,iCAAiC,CAAC,KAAwB;IACxE,MAAM,OAAO,GAAG,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,MAAM,CAAa;QAC/B,IAAI,EAAE,qBAAqB;QAC3B,EAAE,EAAE,wBAAwB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrD,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { FsBoundaryGuardNode, FsPartitionMapNode } from '@paraharness/core';
2
+ /**
3
+ * Compiles a passive `FsBoundaryGuardNode` (`fs:boundary-guard`) for `fs.boundaryGuard(partitionMap)`.
4
+ *
5
+ * Blocks any pre-flight or post-flight write effect matching a partition's `boundaryGlobs`
6
+ * unless covered by an active `LeaseDelta` grant.
7
+ *
8
+ * @template TPartition Literal union of partition identifiers in `partitionMap`.
9
+ *
10
+ * @param {FsPartitionMapNode<TPartition>} partitionMap - Filesystem partition map AST node.
11
+ *
12
+ * @returns {FsBoundaryGuardNode} Deeply frozen `FsBoundaryGuardNode` AST descriptor.
13
+ */
14
+ export declare function createFsBoundaryGuardBuilder<TPartition extends string = string>(partitionMap: FsPartitionMapNode<TPartition>): FsBoundaryGuardNode;
15
+ //# sourceMappingURL=create-fs-boundary-guard-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-boundary-guard-builder.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-boundary-guard-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEjF;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,EAC7E,YAAY,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAC3C,mBAAmB,CAMrB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Compiles a passive `FsBoundaryGuardNode` (`fs:boundary-guard`) for `fs.boundaryGuard(partitionMap)`.
3
+ *
4
+ * Blocks any pre-flight or post-flight write effect matching a partition's `boundaryGlobs`
5
+ * unless covered by an active `LeaseDelta` grant.
6
+ *
7
+ * @template TPartition Literal union of partition identifiers in `partitionMap`.
8
+ *
9
+ * @param {FsPartitionMapNode<TPartition>} partitionMap - Filesystem partition map AST node.
10
+ *
11
+ * @returns {FsBoundaryGuardNode} Deeply frozen `FsBoundaryGuardNode` AST descriptor.
12
+ */
13
+ export function createFsBoundaryGuardBuilder(partitionMap) {
14
+ return Object.freeze({
15
+ type: 'fs:boundary-guard',
16
+ id: `fs:boundary-guard:${partitionMap.topology.id}`,
17
+ partitionMap: partitionMap,
18
+ });
19
+ }
20
+ //# sourceMappingURL=create-fs-boundary-guard-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-boundary-guard-builder.js","sourceRoot":"","sources":["../../src/builders/create-fs-boundary-guard-builder.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,4BAA4B,CAC1C,YAA4C;IAE5C,OAAO,MAAM,CAAC,MAAM,CAAsB;QACxC,IAAI,EAAE,mBAAmB;QACzB,EAAE,EAAE,qBAAqB,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE;QACnD,YAAY,EAAE,YAA0C;KACzD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type FsEditToolNode, type FsGlobToolNode, type FsGrepToolNode, type FsReadToolNode, type FsWriteToolNode, type MaybeBuilder, type NodeRunnerNode } from '@paraharness/core';
2
+ /**
3
+ * Compiles the 5-tool workspace-jailed coding bundle (`fs.codingTools(runner)`).
4
+ *
5
+ * Returns passive `ToolASTNode` descriptors (`read_file`, `edit_file`, `write_file`,
6
+ * `glob_files`, `grep_files`) with `effectTracking: 'declared'`.
7
+ *
8
+ * @template THandle Runtime handle type of the active isolation scope.
9
+ *
10
+ * @param {MaybeBuilder<NodeRunnerNode>} runner - Runner pool AST node or builder.
11
+ *
12
+ * @returns {readonly [FsReadToolNode<THandle>, FsEditToolNode<THandle>, FsWriteToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>]} Frozen 5-tuple of filesystem coding tool AST nodes.
13
+ */
14
+ export declare function createFsCodingTools<THandle = unknown>(runner: MaybeBuilder<NodeRunnerNode>): readonly [
15
+ FsReadToolNode<THandle>,
16
+ FsEditToolNode<THandle>,
17
+ FsWriteToolNode<THandle>,
18
+ FsGlobToolNode<THandle>,
19
+ FsGrepToolNode<THandle>
20
+ ];
21
+ //# sourceMappingURL=create-fs-coding-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-coding-tools.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-coding-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAS3B;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAG,OAAO,EACnD,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,GACnC,SAAS;IACV,cAAc,CAAC,OAAO,CAAC;IACvB,cAAc,CAAC,OAAO,CAAC;IACvB,eAAe,CAAC,OAAO,CAAC;IACxB,cAAc,CAAC,OAAO,CAAC;IACvB,cAAc,CAAC,OAAO,CAAC;CACxB,CASA"}
@@ -0,0 +1,25 @@
1
+ import { extractAST, } from '@paraharness/core';
2
+ import { buildFsEditToolNode, buildFsGlobToolNode, buildFsGrepToolNode, buildFsReadToolNode, buildFsWriteToolNode, } from './internal/build-fs-tool-nodes.js';
3
+ /**
4
+ * Compiles the 5-tool workspace-jailed coding bundle (`fs.codingTools(runner)`).
5
+ *
6
+ * Returns passive `ToolASTNode` descriptors (`read_file`, `edit_file`, `write_file`,
7
+ * `glob_files`, `grep_files`) with `effectTracking: 'declared'`.
8
+ *
9
+ * @template THandle Runtime handle type of the active isolation scope.
10
+ *
11
+ * @param {MaybeBuilder<NodeRunnerNode>} runner - Runner pool AST node or builder.
12
+ *
13
+ * @returns {readonly [FsReadToolNode<THandle>, FsEditToolNode<THandle>, FsWriteToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>]} Frozen 5-tuple of filesystem coding tool AST nodes.
14
+ */
15
+ export function createFsCodingTools(runner) {
16
+ const runnerNode = extractAST(runner);
17
+ return Object.freeze([
18
+ buildFsReadToolNode(runnerNode),
19
+ buildFsEditToolNode(runnerNode),
20
+ buildFsWriteToolNode(runnerNode),
21
+ buildFsGlobToolNode(runnerNode),
22
+ buildFsGrepToolNode(runnerNode),
23
+ ]);
24
+ }
25
+ //# sourceMappingURL=create-fs-coding-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-coding-tools.js","sourceRoot":"","sources":["../../src/builders/create-fs-coding-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAQX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAoC;IAQpC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;QACxC,oBAAoB,CAAU,UAAU,CAAC;QACzC,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;KACzC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { FsGlobMatcherNode } from '@paraharness/core';
2
+ /**
3
+ * Compiles a passive `FsGlobMatcherNode` (`fs:match-globs`) for `fs.matchGlobs(globs, mode)`.
4
+ *
5
+ * Matches `FsToolEffect` paths against exact normalized file paths and POSIX glob patterns
6
+ * for reactive `when.effects` triggers and capability lease matching.
7
+ *
8
+ * @param {readonly string[]} globs - Glob patterns or exact normalized file paths to match.
9
+ * @param {'read' | 'write' | 'any'} [mode='write'] - Access mode filter (`'read' | 'write' | 'any'`).
10
+ *
11
+ * @returns {FsGlobMatcherNode} Deeply frozen `FsGlobMatcherNode` AST descriptor.
12
+ */
13
+ export declare function createFsGlobMatcherBuilder(globs: readonly string[], mode?: 'read' | 'write' | 'any'): FsGlobMatcherNode;
14
+ //# sourceMappingURL=create-fs-glob-matcher-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-glob-matcher-builder.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-glob-matcher-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,GAAE,MAAM,GAAG,OAAO,GAAG,KAAe,GACvC,iBAAiB,CAWnB"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Compiles a passive `FsGlobMatcherNode` (`fs:match-globs`) for `fs.matchGlobs(globs, mode)`.
3
+ *
4
+ * Matches `FsToolEffect` paths against exact normalized file paths and POSIX glob patterns
5
+ * for reactive `when.effects` triggers and capability lease matching.
6
+ *
7
+ * @param {readonly string[]} globs - Glob patterns or exact normalized file paths to match.
8
+ * @param {'read' | 'write' | 'any'} [mode='write'] - Access mode filter (`'read' | 'write' | 'any'`).
9
+ *
10
+ * @returns {FsGlobMatcherNode} Deeply frozen `FsGlobMatcherNode` AST descriptor.
11
+ */
12
+ export function createFsGlobMatcherBuilder(globs, mode = 'write') {
13
+ if (!Array.isArray(globs) || globs.length === 0) {
14
+ throw new Error('fs.matchGlobs requires a non-empty array of glob patterns.');
15
+ }
16
+ const frozenGlobs = Object.freeze([...globs]);
17
+ return Object.freeze({
18
+ type: 'fs:match-globs',
19
+ id: `fs:match-globs:${mode}:${frozenGlobs.join(',')}`,
20
+ globs: frozenGlobs,
21
+ mode,
22
+ });
23
+ }
24
+ //# sourceMappingURL=create-fs-glob-matcher-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-glob-matcher-builder.js","sourceRoot":"","sources":["../../src/builders/create-fs-glob-matcher-builder.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAwB,EACxB,OAAiC,OAAO;IAExC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAoB;QACtC,IAAI,EAAE,gBAAgB;QACtB,EAAE,EAAE,kBAAkB,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrD,KAAK,EAAE,WAAW;QAClB,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { FsGlobSourceNode } from '@paraharness/core';
2
+ /**
3
+ * Compiles a passive `FsGlobSourceNode` (`fs:glob-source`) for `fs.glob(globPattern)`.
4
+ *
5
+ * Resolves all files matching `globPattern` in deterministic lexicographical path order
6
+ * and pairs their relative paths and UTF-8 contents with a combined SHA-256 digest.
7
+ *
8
+ * @param {string} globPattern - POSIX glob pattern matched against the repository root.
9
+ *
10
+ * @returns {FsGlobSourceNode} Deeply frozen `FsGlobSourceNode` AST descriptor.
11
+ */
12
+ export declare function createFsGlobSourceBuilder(globPattern: string): FsGlobSourceNode;
13
+ //# sourceMappingURL=create-fs-glob-source-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-glob-source-builder.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-glob-source-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAU/E"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Compiles a passive `FsGlobSourceNode` (`fs:glob-source`) for `fs.glob(globPattern)`.
3
+ *
4
+ * Resolves all files matching `globPattern` in deterministic lexicographical path order
5
+ * and pairs their relative paths and UTF-8 contents with a combined SHA-256 digest.
6
+ *
7
+ * @param {string} globPattern - POSIX glob pattern matched against the repository root.
8
+ *
9
+ * @returns {FsGlobSourceNode} Deeply frozen `FsGlobSourceNode` AST descriptor.
10
+ */
11
+ export function createFsGlobSourceBuilder(globPattern) {
12
+ if (typeof globPattern !== 'string' || globPattern.trim().length === 0) {
13
+ throw new Error('fs.glob requires a non-empty globPattern string.');
14
+ }
15
+ const normalizedPattern = globPattern.trim();
16
+ return Object.freeze({
17
+ type: 'fs:glob-source',
18
+ id: `fs:glob-source:${normalizedPattern}`,
19
+ pattern: normalizedPattern,
20
+ });
21
+ }
22
+ //# sourceMappingURL=create-fs-glob-source-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-glob-source-builder.js","sourceRoot":"","sources":["../../src/builders/create-fs-glob-source-builder.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAmB;QACrC,IAAI,EAAE,gBAAgB;QACtB,EAAE,EAAE,kBAAkB,iBAAiB,EAAE;QACzC,OAAO,EAAE,iBAAiB;KAC3B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { FsPartitionMapNode, ScopePredicate } from '@paraharness/core';
2
+ /**
3
+ * Builds a `ScopePredicate` matching a specific partition in `partitionMap` (`fs.inPartition`).
4
+ *
5
+ * Populates both `partitions: [partitionId]` for Turn-0 partition injection and `effects`
6
+ * with an `'any'`-mode `FsGlobMatcherNode` covering the partition's member globs.
7
+ *
8
+ * @template TPartition Literal union of partition identifiers in `partitionMap`.
9
+ *
10
+ * @param {FsPartitionMapNode<TPartition>} partitionMap - Filesystem partition map AST node.
11
+ * @param {TPartition} partitionId - Target partition identifier to scope against.
12
+ *
13
+ * @returns {ScopePredicate} Frozen `ScopePredicate` record for scoped rules and skills.
14
+ */
15
+ export declare function createFsInPartitionPredicate<TPartition extends string = string>(partitionMap: FsPartitionMapNode<TPartition>, partitionId: TPartition): ScopePredicate;
16
+ //# sourceMappingURL=create-fs-in-partition-predicate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-in-partition-predicate.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-in-partition-predicate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG5E;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,EAC7E,YAAY,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAC5C,WAAW,EAAE,UAAU,GACtB,cAAc,CAWhB"}
@@ -0,0 +1,25 @@
1
+ import { createFsGlobMatcherBuilder } from './create-fs-glob-matcher-builder.js';
2
+ /**
3
+ * Builds a `ScopePredicate` matching a specific partition in `partitionMap` (`fs.inPartition`).
4
+ *
5
+ * Populates both `partitions: [partitionId]` for Turn-0 partition injection and `effects`
6
+ * with an `'any'`-mode `FsGlobMatcherNode` covering the partition's member globs.
7
+ *
8
+ * @template TPartition Literal union of partition identifiers in `partitionMap`.
9
+ *
10
+ * @param {FsPartitionMapNode<TPartition>} partitionMap - Filesystem partition map AST node.
11
+ * @param {TPartition} partitionId - Target partition identifier to scope against.
12
+ *
13
+ * @returns {ScopePredicate} Frozen `ScopePredicate` record for scoped rules and skills.
14
+ */
15
+ export function createFsInPartitionPredicate(partitionMap, partitionId) {
16
+ const entry = partitionMap.mapping[partitionId];
17
+ if (entry === undefined) {
18
+ throw new Error(`fs.inPartition failed: partition '${partitionId}' is not defined in topology '${partitionMap.topology.id}'.`);
19
+ }
20
+ return Object.freeze({
21
+ partitions: [partitionId],
22
+ effects: createFsGlobMatcherBuilder(entry.globs, 'any'),
23
+ });
24
+ }
25
+ //# sourceMappingURL=create-fs-in-partition-predicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-in-partition-predicate.js","sourceRoot":"","sources":["../../src/builders/create-fs-in-partition-predicate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,4BAA4B,CAC1C,YAA4C,EAC5C,WAAuB;IAEvB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,qCAAqC,WAAW,iCAAiC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,CAC9G,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAiB;QACnC,UAAU,EAAE,CAAC,WAAW,CAAC;QACzB,OAAO,EAAE,0BAA0B,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;KACxD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { FsJsonlLessonStoreNode } from '@paraharness/core';
2
+ /**
3
+ * Configuration options for `fs.jsonlLessonStore(options)`.
4
+ *
5
+ * Configures the host-root directory for immutable content-addressed lesson JSON files,
6
+ * the mutable telemetry counter file path, and the advisory lockfile path.
7
+ */
8
+ export interface FsJsonlLessonStoreOptions {
9
+ /** Host-root directory storing immutable `<lessonId>.json` definition files. */
10
+ readonly definitionsDir: string;
11
+ /** Host-root file path storing mutable lesson telemetry and outcome counters. */
12
+ readonly statsPath: string;
13
+ /** Host-root advisory lockfile path used for cross-process synchronization. */
14
+ readonly lockFile: string;
15
+ }
16
+ /**
17
+ * Compiles a passive `FsJsonlLessonStoreNode` (`fs:jsonl-lesson-store`) for `fs.jsonlLessonStore(options)`.
18
+ *
19
+ * Configures a host-root-resolved content-addressed lesson store splitting immutable
20
+ * `<definitionsDir>/<lessonId>.json` definitions from mutable `statsPath` counters.
21
+ *
22
+ * @param {FsJsonlLessonStoreOptions} options - Host-root paths for definitions, stats, and lockfile.
23
+ *
24
+ * @returns {FsJsonlLessonStoreNode} Deeply frozen `FsJsonlLessonStoreNode` AST descriptor.
25
+ *
26
+ * @throws {Error} If any of `definitionsDir`, `statsPath`, or `lockFile` is empty.
27
+ */
28
+ export declare function createFsJsonlLessonStoreBuilder(options: FsJsonlLessonStoreOptions): FsJsonlLessonStoreNode;
29
+ //# sourceMappingURL=create-fs-jsonl-lesson-store-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-jsonl-lesson-store-builder.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-jsonl-lesson-store-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,yBAAyB,GACjC,sBAAsB,CAgBxB"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Compiles a passive `FsJsonlLessonStoreNode` (`fs:jsonl-lesson-store`) for `fs.jsonlLessonStore(options)`.
3
+ *
4
+ * Configures a host-root-resolved content-addressed lesson store splitting immutable
5
+ * `<definitionsDir>/<lessonId>.json` definitions from mutable `statsPath` counters.
6
+ *
7
+ * @param {FsJsonlLessonStoreOptions} options - Host-root paths for definitions, stats, and lockfile.
8
+ *
9
+ * @returns {FsJsonlLessonStoreNode} Deeply frozen `FsJsonlLessonStoreNode` AST descriptor.
10
+ *
11
+ * @throws {Error} If any of `definitionsDir`, `statsPath`, or `lockFile` is empty.
12
+ */
13
+ export function createFsJsonlLessonStoreBuilder(options) {
14
+ if (typeof options.definitionsDir !== 'string' || options.definitionsDir.trim().length === 0) {
15
+ throw new Error('fs.jsonlLessonStore requires a non-empty definitionsDir path.');
16
+ }
17
+ if (typeof options.statsPath !== 'string' || options.statsPath.trim().length === 0) {
18
+ throw new Error('fs.jsonlLessonStore requires a non-empty statsPath.');
19
+ }
20
+ if (typeof options.lockFile !== 'string' || options.lockFile.trim().length === 0) {
21
+ throw new Error('fs.jsonlLessonStore requires a non-empty lockFile path.');
22
+ }
23
+ return Object.freeze({
24
+ type: 'fs:jsonl-lesson-store',
25
+ definitionsDir: options.definitionsDir.trim(),
26
+ statsPath: options.statsPath.trim(),
27
+ lockFile: options.lockFile.trim(),
28
+ });
29
+ }
30
+ //# sourceMappingURL=create-fs-jsonl-lesson-store-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-jsonl-lesson-store-builder.js","sourceRoot":"","sources":["../../src/builders/create-fs-jsonl-lesson-store-builder.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAkC;IAElC,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAyB;QAC3C,IAAI,EAAE,uBAAuB;QAC7B,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;QAC7C,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;QACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;KAClC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { FsQuotaTripwireNode } from '@paraharness/core';
2
+ /**
3
+ * Compiles a passive `FsQuotaTripwireNode` (`fs:quota-tripwire`) for `fs.maxFilesMutated(count)`.
4
+ *
5
+ * Trips `PolicyNode.onLimitExceeded` when the number of distinct mutated file paths in
6
+ * a step session exceeds `count`.
7
+ *
8
+ * @param {number} count - Maximum number of distinct mutated files allowed before tripping.
9
+ *
10
+ * @returns {FsQuotaTripwireNode} Deeply frozen `FsQuotaTripwireNode` AST descriptor.
11
+ */
12
+ export declare function createFsMaxFilesMutatedBuilder(count: number): FsQuotaTripwireNode;
13
+ //# sourceMappingURL=create-fs-max-files-mutated-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-max-files-mutated-builder.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-max-files-mutated-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CASjF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Compiles a passive `FsQuotaTripwireNode` (`fs:quota-tripwire`) for `fs.maxFilesMutated(count)`.
3
+ *
4
+ * Trips `PolicyNode.onLimitExceeded` when the number of distinct mutated file paths in
5
+ * a step session exceeds `count`.
6
+ *
7
+ * @param {number} count - Maximum number of distinct mutated files allowed before tripping.
8
+ *
9
+ * @returns {FsQuotaTripwireNode} Deeply frozen `FsQuotaTripwireNode` AST descriptor.
10
+ */
11
+ export function createFsMaxFilesMutatedBuilder(count) {
12
+ if (!Number.isInteger(count) || count < 0) {
13
+ throw new Error(`fs.maxFilesMutated requires a non-negative integer count (received ${String(count)}).`);
14
+ }
15
+ return Object.freeze({
16
+ type: 'fs:quota-tripwire',
17
+ id: `fs:max-files-mutated:${String(count)}`,
18
+ maxFilesMutated: count,
19
+ });
20
+ }
21
+ //# sourceMappingURL=create-fs-max-files-mutated-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-max-files-mutated-builder.js","sourceRoot":"","sources":["../../src/builders/create-fs-max-files-mutated-builder.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B,CAAC,KAAa;IAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,sEAAsE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAsB;QACxC,IAAI,EAAE,mBAAmB;QACzB,EAAE,EAAE,wBAAwB,MAAM,CAAC,KAAK,CAAC,EAAE;QAC3C,eAAe,EAAE,KAAK;KACvB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type FsPartitionMapNode, type FsPartitionPathMapping, type MaybeBuilder, type TopologyNode } from '@paraharness/core';
2
+ /**
3
+ * Compiles a passive `FsPartitionMapNode` (`fs:partition-map`) for `fs.partitionMap(topology, mapping)`.
4
+ *
5
+ * Associates each logical partition in `topology` with its physical implementation globs
6
+ * (`globs`) and protected public boundary surface globs (`boundaryGlobs`).
7
+ *
8
+ * @template TPartition Literal union of partition identifiers in `topology`.
9
+ *
10
+ * @param {MaybeBuilder<TopologyNode<TPartition>>} topology - Relational topology AST node or builder.
11
+ * @param {Readonly<Record<TPartition, FsPartitionPathMapping>>} mapping - Per-partition member and boundary globs.
12
+ *
13
+ * @returns {FsPartitionMapNode<TPartition>} Deeply frozen `FsPartitionMapNode` AST descriptor.
14
+ */
15
+ export declare function createFsPartitionMap<TPartition extends string = string>(topology: MaybeBuilder<TopologyNode<TPartition>>, mapping: Readonly<Record<TPartition, FsPartitionPathMapping>>): FsPartitionMapNode<TPartition>;
16
+ //# sourceMappingURL=create-fs-partition-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-partition-map.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-partition-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,EACrE,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAChD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC,GAC5D,kBAAkB,CAAC,UAAU,CAAC,CAoBhC"}
@@ -0,0 +1,34 @@
1
+ import { extractAST, } from '@paraharness/core';
2
+ /**
3
+ * Compiles a passive `FsPartitionMapNode` (`fs:partition-map`) for `fs.partitionMap(topology, mapping)`.
4
+ *
5
+ * Associates each logical partition in `topology` with its physical implementation globs
6
+ * (`globs`) and protected public boundary surface globs (`boundaryGlobs`).
7
+ *
8
+ * @template TPartition Literal union of partition identifiers in `topology`.
9
+ *
10
+ * @param {MaybeBuilder<TopologyNode<TPartition>>} topology - Relational topology AST node or builder.
11
+ * @param {Readonly<Record<TPartition, FsPartitionPathMapping>>} mapping - Per-partition member and boundary globs.
12
+ *
13
+ * @returns {FsPartitionMapNode<TPartition>} Deeply frozen `FsPartitionMapNode` AST descriptor.
14
+ */
15
+ export function createFsPartitionMap(topology, mapping) {
16
+ const topologyNode = extractAST(topology);
17
+ const frozenMapping = {};
18
+ for (const partitionKey of Object.keys(topologyNode.partitions)) {
19
+ const entry = mapping[partitionKey];
20
+ if (entry === undefined) {
21
+ throw new Error(`fs.partitionMap missing mapping for partition '${partitionKey}' in topology '${topologyNode.id}'.`);
22
+ }
23
+ frozenMapping[partitionKey] = Object.freeze({
24
+ globs: Object.freeze([...entry.globs]),
25
+ boundaryGlobs: Object.freeze([...(entry.boundaryGlobs ?? [])]),
26
+ });
27
+ }
28
+ return Object.freeze({
29
+ type: 'fs:partition-map',
30
+ topology: topologyNode,
31
+ mapping: Object.freeze(frozenMapping),
32
+ });
33
+ }
34
+ //# sourceMappingURL=create-fs-partition-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-partition-map.js","sourceRoot":"","sources":["../../src/builders/create-fs-partition-map.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAKX,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgD,EAChD,OAA6D;IAE7D,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,EAAgD,CAAC;IACvE,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAiB,EAAE,CAAC;QAChF,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,kDAAkD,YAAY,kBAAkB,YAAY,CAAC,EAAE,IAAI,CACpG,CAAC;QACJ,CAAC;QACD,aAAa,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,CAAyB;YAClE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;SAC/D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAiC;QACnD,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;KACtC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { FsProtectGuardNode } from '@paraharness/core';
2
+ /**
3
+ * Compiles a passive `FsProtectGuardNode` (`fs:protect`) for `fs.protect(globs)`.
4
+ *
5
+ * Blocks any write mutation targeting files matching `globs` unless covered by an
6
+ * explicitly elevated capability lease.
7
+ *
8
+ * @param {readonly string[]} globs - Protected file glob patterns.
9
+ *
10
+ * @returns {FsProtectGuardNode} Deeply frozen `FsProtectGuardNode` AST descriptor.
11
+ */
12
+ export declare function createFsProtectGuardBuilder(globs: readonly string[]): FsProtectGuardNode;
13
+ //# sourceMappingURL=create-fs-protect-guard-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-fs-protect-guard-builder.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-protect-guard-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,CAUxF"}