@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-lesson-definition-record.d.ts","sourceRoot":"","sources":["../../../src/stores/internal/fs-lesson-definition-record.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,8FAA8F;IAC9F,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fs-lesson-definition-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-lesson-definition-record.js","sourceRoot":"","sources":["../../../src/stores/internal/fs-lesson-definition-record.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ import { type FileLockOptions } from '@paraharness/lockfile';
2
+ import type { FsLessonDefinitionRecord } from './fs-lesson-definition-record.js';
3
+ import type { FsLessonStatsEntry } from './fs-lesson-stats-entry.js';
4
+ /**
5
+ * Acquires an exclusive advisory lockfile via `@paraharness/lockfile` and executes `work`.
6
+ *
7
+ * Ensures cross-process and in-process serialization on `lockFilePath` with heartbeat
8
+ * and stale-lock reclamation (`SPEC.md` §4.3).
9
+ *
10
+ * @template TResult Return type of the critical section callback.
11
+ *
12
+ * @param {string} lockFilePath - Absolute host-root path to the lockfile.
13
+ * @param {() => Promise<TResult>} work - Async operation executed while holding the lock.
14
+ * @param {FileLockOptions} [options] - Optional lockfile timing overrides.
15
+ *
16
+ * @returns {Promise<TResult>} Result resolved by `work`.
17
+ */
18
+ export declare function withLessonFileLock<TResult>(lockFilePath: string, work: () => Promise<TResult>, options?: FileLockOptions): Promise<TResult>;
19
+ /**
20
+ * Writes `payload` as formatted JSON to `targetPath` atomically via `write-file-atomic`.
21
+ *
22
+ * Guarantees crash-safe atomic updates (`fsync: true` + atomic `rename`) for both
23
+ * `<definitionsDir>/<lessonId>.json` and `statsPath` (`SPEC.md` §4.3).
24
+ *
25
+ * @param {string} targetPath - Destination file path.
26
+ * @param {unknown} payload - JSON-serializable value to write.
27
+ *
28
+ * @returns {Promise<void>} Resolves once `fsync` and atomic `rename` complete.
29
+ */
30
+ export declare function atomicWriteJsonFile(targetPath: string, payload: unknown): Promise<void>;
31
+ /**
32
+ * Reads and parses the mutable lesson telemetry map from `statsPath`.
33
+ *
34
+ * Returns a mutable shallow clone of the `lessonId -> FsLessonStatsEntry` dictionary, or an empty object if `statsPath` does not yet exist.
35
+ *
36
+ * @param {string} statsPath - Absolute host-root path to `statsPath`.
37
+ *
38
+ * @returns {Promise<Record<string, FsLessonStatsEntry>>} Parsed per-lesson telemetry counter map.
39
+ */
40
+ export declare function readLessonStatsFile(statsPath: string): Promise<Record<string, FsLessonStatsEntry>>;
41
+ /**
42
+ * Reads all immutable `<lessonId>.json` definition files from `definitionsDir` in lexicographical filename order.
43
+ *
44
+ * Skips temporary `.tmp.` files and returns an empty array if `definitionsDir` does not yet exist.
45
+ *
46
+ * @param {string} definitionsDir - Absolute host-root path to `definitionsDir`.
47
+ *
48
+ * @returns {Promise<readonly FsLessonDefinitionRecord[]>} Frozen array of parsed lesson definitions.
49
+ */
50
+ export declare function readAllLessonDefinitions(definitionsDir: string): Promise<readonly FsLessonDefinitionRecord[]>;
51
+ //# sourceMappingURL=fs-lesson-lock-and-atomic-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-lesson-lock-and-atomic-io.d.ts","sourceRoot":"","sources":["../../../src/stores/internal/fs-lesson-lock-and-atomic-io.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,eAAe,EAAgB,MAAM,uBAAuB,CAAC;AAE3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EACxC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC5B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAU7C;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC,CAkB9C"}
@@ -0,0 +1,89 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { mkdir, readdir, readFile } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { withFileLock } from '@paraharness/lockfile';
5
+ import writeFileAtomic from 'write-file-atomic';
6
+ /**
7
+ * Acquires an exclusive advisory lockfile via `@paraharness/lockfile` and executes `work`.
8
+ *
9
+ * Ensures cross-process and in-process serialization on `lockFilePath` with heartbeat
10
+ * and stale-lock reclamation (`SPEC.md` §4.3).
11
+ *
12
+ * @template TResult Return type of the critical section callback.
13
+ *
14
+ * @param {string} lockFilePath - Absolute host-root path to the lockfile.
15
+ * @param {() => Promise<TResult>} work - Async operation executed while holding the lock.
16
+ * @param {FileLockOptions} [options] - Optional lockfile timing overrides.
17
+ *
18
+ * @returns {Promise<TResult>} Result resolved by `work`.
19
+ */
20
+ export function withLessonFileLock(lockFilePath, work, options) {
21
+ return withFileLock(lockFilePath, work, options);
22
+ }
23
+ /**
24
+ * Writes `payload` as formatted JSON to `targetPath` atomically via `write-file-atomic`.
25
+ *
26
+ * Guarantees crash-safe atomic updates (`fsync: true` + atomic `rename`) for both
27
+ * `<definitionsDir>/<lessonId>.json` and `statsPath` (`SPEC.md` §4.3).
28
+ *
29
+ * @param {string} targetPath - Destination file path.
30
+ * @param {unknown} payload - JSON-serializable value to write.
31
+ *
32
+ * @returns {Promise<void>} Resolves once `fsync` and atomic `rename` complete.
33
+ */
34
+ export async function atomicWriteJsonFile(targetPath, payload) {
35
+ await mkdir(path.dirname(targetPath), { recursive: true });
36
+ await writeFileAtomic(targetPath, `${JSON.stringify(payload, null, 2)}\n`, {
37
+ encoding: 'utf8',
38
+ fsync: true,
39
+ });
40
+ }
41
+ /**
42
+ * Reads and parses the mutable lesson telemetry map from `statsPath`.
43
+ *
44
+ * Returns a mutable shallow clone of the `lessonId -> FsLessonStatsEntry` dictionary, or an empty object if `statsPath` does not yet exist.
45
+ *
46
+ * @param {string} statsPath - Absolute host-root path to `statsPath`.
47
+ *
48
+ * @returns {Promise<Record<string, FsLessonStatsEntry>>} Parsed per-lesson telemetry counter map.
49
+ */
50
+ export async function readLessonStatsFile(statsPath) {
51
+ if (!existsSync(statsPath)) {
52
+ return {};
53
+ }
54
+ const raw = await readFile(statsPath, 'utf8');
55
+ if (raw.trim().length === 0) {
56
+ return {};
57
+ }
58
+ const parsed = JSON.parse(raw);
59
+ return { ...parsed };
60
+ }
61
+ /**
62
+ * Reads all immutable `<lessonId>.json` definition files from `definitionsDir` in lexicographical filename order.
63
+ *
64
+ * Skips temporary `.tmp.` files and returns an empty array if `definitionsDir` does not yet exist.
65
+ *
66
+ * @param {string} definitionsDir - Absolute host-root path to `definitionsDir`.
67
+ *
68
+ * @returns {Promise<readonly FsLessonDefinitionRecord[]>} Frozen array of parsed lesson definitions.
69
+ */
70
+ export async function readAllLessonDefinitions(definitionsDir) {
71
+ if (!existsSync(definitionsDir)) {
72
+ return Object.freeze([]);
73
+ }
74
+ const entries = await readdir(definitionsDir);
75
+ const jsonFiles = [];
76
+ for (const fileName of entries) {
77
+ if (fileName.endsWith('.json') && !fileName.includes('.tmp.')) {
78
+ jsonFiles.push(fileName);
79
+ }
80
+ }
81
+ jsonFiles.sort((a, b) => a.localeCompare(b));
82
+ const definitions = [];
83
+ for (const fileName of jsonFiles) {
84
+ const raw = await readFile(path.join(definitionsDir, fileName), 'utf8');
85
+ definitions.push(JSON.parse(raw));
86
+ }
87
+ return Object.freeze(definitions);
88
+ }
89
+ //# sourceMappingURL=fs-lesson-lock-and-atomic-io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-lesson-lock-and-atomic-io.js","sourceRoot":"","sources":["../../../src/stores/internal/fs-lesson-lock-and-atomic-io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAwB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAIhD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,IAA4B,EAC5B,OAAyB;IAEzB,OAAO,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,OAAgB;IAEhB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,eAAe,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACzE,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB;IAEjB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiD,CAAC;IAC/E,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,cAAsB;IAEtB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,WAAW,GAA+B,EAAE,CAAC;IACnD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACxE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,49 @@
1
+ import type { LessonRecord } from '@paraharness/core';
2
+ import type { FsLessonDefinitionRecord } from './fs-lesson-definition-record.js';
3
+ import type { FsLessonStatsEntry } from './fs-lesson-stats-entry.js';
4
+ /**
5
+ * Computes a deterministic content-addressed `lessonId` from `partition` and `directive`.
6
+ *
7
+ * Deduplicates identical `(partition, directive)` admissions across runs (`SPEC.md` §4.3).
8
+ *
9
+ * @param {string | undefined} partition - Optional partition identifier.
10
+ * @param {string} directive - Lesson directive text.
11
+ *
12
+ * @returns {string} Content-addressed lesson identifier (`lesson-<16-hex>`).
13
+ */
14
+ export declare function computeLessonId(partition: string | undefined, directive: string): string;
15
+ /**
16
+ * Computes normalized BM25 text similarity $R(L, Q) \in [0, 1]$ across `definitions` using `MiniSearch`.
17
+ *
18
+ * Indexes `directive` and `partition` fields with `{ prefix: true, fuzzy: 0.2 }` and normalizes
19
+ * BM25 scores against the top-scoring candidate (`SPEC.md` §2.7 & §3.4.3).
20
+ *
21
+ * @param {string} queryText - Search query extracted from actor input.
22
+ * @param {readonly FsLessonDefinitionRecord[]} definitions - Active non-retired lesson definitions.
23
+ * @param {ReadonlySet<string> | readonly string[]} partitions - Active task partitions.
24
+ *
25
+ * @returns {ReadonlyMap<string, number>} Map of `lessonId` to normalized relevance score in `[0, 1]`.
26
+ */
27
+ export declare function scoreLessonsWithMiniSearch(queryText: string, definitions: readonly FsLessonDefinitionRecord[], partitions: ReadonlySet<string> | readonly string[]): ReadonlyMap<string, number>;
28
+ /**
29
+ * Merges an immutable `FsLessonDefinitionRecord` with its mutable `FsLessonStatsEntry` into a `LessonRecord`.
30
+ *
31
+ * Applies any `epochAtCreation` override from `stats` while preserving monomorphic `LessonRecord` property order (`Rule 4.3`).
32
+ *
33
+ * @param {FsLessonDefinitionRecord} definition - Immutable lesson definition record.
34
+ * @param {FsLessonStatsEntry | undefined} stats - Mutable telemetry counters for the lesson.
35
+ * @param {number | undefined} [relevanceScore] - Optional query relevance score in `[0, 1]`.
36
+ *
37
+ * @returns {LessonRecord} Frozen `LessonRecord`.
38
+ */
39
+ export declare function mergeDefinitionAndStats(definition: FsLessonDefinitionRecord, stats: FsLessonStatsEntry | undefined, relevanceScore?: number): LessonRecord;
40
+ /**
41
+ * Compares two `LessonRecord` entries by descending `relevanceScore` with lexicographical `id` tie-breaking.
42
+ *
43
+ * @param {LessonRecord} left - First lesson record.
44
+ * @param {LessonRecord} right - Second lesson record.
45
+ *
46
+ * @returns {number} Negative when `left` ranks ahead of `right`, positive when behind, or `0`.
47
+ */
48
+ export declare function compareLessonRecordsByRelevance(left: LessonRecord, right: LessonRecord): number;
49
+ //# sourceMappingURL=fs-lesson-relevance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-lesson-relevance.d.ts","sourceRoot":"","sources":["../../../src/stores/internal/fs-lesson-relevance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMxF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,SAAS,wBAAwB,EAAE,EAChD,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,GAClD,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAoC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,wBAAwB,EACpC,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,cAAc,CAAC,EAAE,MAAM,GACtB,YAAY,CAgBd;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,GAClB,MAAM,CAOR"}
@@ -0,0 +1,113 @@
1
+ import { createHash } from 'node:crypto';
2
+ import MiniSearch from 'minisearch';
3
+ /**
4
+ * Computes a deterministic content-addressed `lessonId` from `partition` and `directive`.
5
+ *
6
+ * Deduplicates identical `(partition, directive)` admissions across runs (`SPEC.md` §4.3).
7
+ *
8
+ * @param {string | undefined} partition - Optional partition identifier.
9
+ * @param {string} directive - Lesson directive text.
10
+ *
11
+ * @returns {string} Content-addressed lesson identifier (`lesson-<16-hex>`).
12
+ */
13
+ export function computeLessonId(partition, directive) {
14
+ const hash = createHash('sha256')
15
+ .update(`${partition ?? ''}::${directive.trim()}`, 'utf8')
16
+ .digest('hex')
17
+ .slice(0, 16);
18
+ return `lesson-${hash}`;
19
+ }
20
+ /**
21
+ * Computes normalized BM25 text similarity $R(L, Q) \in [0, 1]$ across `definitions` using `MiniSearch`.
22
+ *
23
+ * Indexes `directive` and `partition` fields with `{ prefix: true, fuzzy: 0.2 }` and normalizes
24
+ * BM25 scores against the top-scoring candidate (`SPEC.md` §2.7 & §3.4.3).
25
+ *
26
+ * @param {string} queryText - Search query extracted from actor input.
27
+ * @param {readonly FsLessonDefinitionRecord[]} definitions - Active non-retired lesson definitions.
28
+ * @param {ReadonlySet<string> | readonly string[]} partitions - Active task partitions.
29
+ *
30
+ * @returns {ReadonlyMap<string, number>} Map of `lessonId` to normalized relevance score in `[0, 1]`.
31
+ */
32
+ export function scoreLessonsWithMiniSearch(queryText, definitions, partitions) {
33
+ const scoresById = new Map();
34
+ if (definitions.length === 0)
35
+ return scoresById;
36
+ const trimmedQuery = queryText.trim();
37
+ if (trimmedQuery.length === 0) {
38
+ for (const def of definitions)
39
+ scoresById.set(def.id, 1);
40
+ return scoresById;
41
+ }
42
+ const miniSearch = new MiniSearch({
43
+ fields: ['directive', 'partition'],
44
+ storeFields: ['id'],
45
+ searchOptions: { prefix: true, fuzzy: 0.2 },
46
+ });
47
+ for (const def of definitions) {
48
+ miniSearch.add({ id: def.id, directive: def.directive, partition: def.partition ?? '' });
49
+ }
50
+ const hits = miniSearch.search(trimmedQuery, { prefix: true, fuzzy: 0.2 });
51
+ const maxScore = hits[0]?.score ?? 0;
52
+ const rawScoreById = new Map();
53
+ for (const hit of hits)
54
+ rawScoreById.set(String(hit.id), hit.score);
55
+ const partitionSet = partitions instanceof Set ? partitions : new Set(partitions);
56
+ for (const def of definitions) {
57
+ const rawScore = rawScoreById.get(def.id);
58
+ if (rawScore !== undefined && maxScore > 0) {
59
+ scoresById.set(def.id, Math.min(1, Math.max(0.1, rawScore / maxScore)));
60
+ }
61
+ else if (def.partition !== undefined && partitionSet.has(def.partition)) {
62
+ scoresById.set(def.id, 0.05);
63
+ }
64
+ else {
65
+ scoresById.set(def.id, 0);
66
+ }
67
+ }
68
+ return scoresById;
69
+ }
70
+ /**
71
+ * Merges an immutable `FsLessonDefinitionRecord` with its mutable `FsLessonStatsEntry` into a `LessonRecord`.
72
+ *
73
+ * Applies any `epochAtCreation` override from `stats` while preserving monomorphic `LessonRecord` property order (`Rule 4.3`).
74
+ *
75
+ * @param {FsLessonDefinitionRecord} definition - Immutable lesson definition record.
76
+ * @param {FsLessonStatsEntry | undefined} stats - Mutable telemetry counters for the lesson.
77
+ * @param {number | undefined} [relevanceScore] - Optional query relevance score in `[0, 1]`.
78
+ *
79
+ * @returns {LessonRecord} Frozen `LessonRecord`.
80
+ */
81
+ export function mergeDefinitionAndStats(definition, stats, relevanceScore) {
82
+ return Object.freeze({
83
+ id: definition.id,
84
+ partition: definition.partition,
85
+ directive: definition.directive,
86
+ epochAtCreation: stats?.epochAtCreation ?? definition.epochAtCreation,
87
+ createdByRunId: definition.createdByRunId,
88
+ recentOutcomes: Object.freeze([...(stats?.recentOutcomes ?? [])]),
89
+ totalCleanPasses: stats?.totalCleanPasses ?? 0,
90
+ totalViolated: stats?.totalViolated ?? 0,
91
+ relevanceScore,
92
+ signalLastEmittedAt: stats?.signalLastEmittedAt !== undefined
93
+ ? Object.freeze({ ...stats.signalLastEmittedAt })
94
+ : undefined,
95
+ });
96
+ }
97
+ /**
98
+ * Compares two `LessonRecord` entries by descending `relevanceScore` with lexicographical `id` tie-breaking.
99
+ *
100
+ * @param {LessonRecord} left - First lesson record.
101
+ * @param {LessonRecord} right - Second lesson record.
102
+ *
103
+ * @returns {number} Negative when `left` ranks ahead of `right`, positive when behind, or `0`.
104
+ */
105
+ export function compareLessonRecordsByRelevance(left, right) {
106
+ const leftScore = left.relevanceScore ?? 0;
107
+ const rightScore = right.relevanceScore ?? 0;
108
+ if (rightScore !== leftScore) {
109
+ return rightScore - leftScore;
110
+ }
111
+ return left.id.localeCompare(right.id);
112
+ }
113
+ //# sourceMappingURL=fs-lesson-relevance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-lesson-relevance.js","sourceRoot":"","sources":["../../../src/stores/internal/fs-lesson-relevance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { LessonOutcome } from '@paraharness/core';
2
+ /**
3
+ * Mutable per-lesson telemetry counter record persisted in `statsPath` (`SPEC.md` §4.3).
4
+ *
5
+ * Tracks sliding-window outcomes, cumulative pass/violation counters, post-commit
6
+ * `epochAtCreation` overrides, signal emission timestamps, and retirement status.
7
+ */
8
+ export interface FsLessonStatsEntry {
9
+ /** Ordered list of recorded 4-state step outcomes for this lesson. */
10
+ readonly recentOutcomes: readonly LessonOutcome[];
11
+ /** Cumulative number of `'clean_pass'` outcomes recorded. */
12
+ readonly totalCleanPasses: number;
13
+ /** Cumulative number of `'violated'` outcomes recorded. */
14
+ readonly totalViolated: number;
15
+ /** Optional synchronized creation epoch override written by `syncCreationEpochsForRuns`. */
16
+ readonly epochAtCreation?: number;
17
+ /** Optional map of `signalId` to ISO-8601 emission timestamp from `markSignalEmitted`. */
18
+ readonly signalLastEmittedAt?: Readonly<Record<string, string>>;
19
+ /** True when the lesson has been permanently retired via `retire()`. */
20
+ readonly retired?: boolean;
21
+ }
22
+ //# sourceMappingURL=fs-lesson-stats-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-lesson-stats-entry.d.ts","sourceRoot":"","sources":["../../../src/stores/internal/fs-lesson-stats-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IAClD,6DAA6D;IAC7D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4FAA4F;IAC5F,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,0FAA0F;IAC1F,QAAQ,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fs-lesson-stats-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-lesson-stats-entry.js","sourceRoot":"","sources":["../../../src/stores/internal/fs-lesson-stats-entry.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,75 @@
1
1
  {
2
2
  "name": "@paraharness/fs",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.0",
4
+ "description": "Workspace-jailed filesystem tools, glob effect matchers, pre/post-flight write policy guards, quota tripwires, and atomic JSONL lesson store for Paraharness.",
5
+ "keywords": [
6
+ "paraharness",
7
+ "filesystem",
8
+ "sandbox",
9
+ "policy-guards",
10
+ "globs",
11
+ "tools",
12
+ "ai-agents"
13
+ ],
14
+ "author": "Tornike Tsomaia",
15
+ "license": "MIT",
16
+ "homepage": "https://paraharness.github.io/paraharness/modules/_paraharness_fs.html",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/paraharness/paraharness.git",
20
+ "directory": "packages/fs"
21
+ },
22
+ "bugs": {
23
+ "url": "https://github.com/paraharness/paraharness/issues"
24
+ },
25
+ "type": "module",
26
+ "sideEffects": false,
27
+ "main": "./dist/index.js",
28
+ "types": "./dist/index.d.ts",
29
+ "exports": {
30
+ ".": {
31
+ "types": "./dist/index.d.ts",
32
+ "default": "./dist/index.js"
33
+ }
34
+ },
35
+ "files": [
36
+ "dist",
37
+ "README.md",
38
+ "LICENSE"
39
+ ],
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "engines": {
44
+ "node": ">=22.0.0"
45
+ },
46
+ "dependencies": {
47
+ "minisearch": "^7.2.0",
48
+ "p-queue": "^9.1.0",
49
+ "picomatch": "^4.0.3",
50
+ "tinyglobby": "^0.2.17",
51
+ "write-file-atomic": "^8.0.0",
52
+ "zod": "^4.6.7",
53
+ "@paraharness/core": "0.1.0",
54
+ "@paraharness/lockfile": "0.1.0"
55
+ },
56
+ "devDependencies": {
57
+ "@types/node": "^22.9.0",
58
+ "@types/picomatch": "^4.0.3",
59
+ "@types/write-file-atomic": "^4.0.3",
60
+ "typescript": "^5.8.2",
61
+ "vitest": "^3.2.0"
62
+ },
63
+ "typedocOptions": {
64
+ "entryPoints": [
65
+ "src/index.ts"
66
+ ],
67
+ "tsconfig": "tsconfig.build.json"
68
+ },
69
+ "scripts": {
70
+ "build": "tsc -p tsconfig.build.json",
71
+ "lint": "eslint \"{src,test}/**/*.ts\"",
72
+ "typecheck": "tsc --noEmit",
73
+ "test": "vitest run --config ../../vitest.config.ts --dir . --passWithNoTests"
74
+ }
6
75
  }