@skastr0/pulsar-core 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 (474) hide show
  1. package/dist/backpressure.d.ts +31 -0
  2. package/dist/backpressure.d.ts.map +1 -0
  3. package/dist/backpressure.js +206 -0
  4. package/dist/backpressure.js.map +1 -0
  5. package/dist/baseline.d.ts +91 -0
  6. package/dist/baseline.d.ts.map +1 -0
  7. package/dist/baseline.js +139 -0
  8. package/dist/baseline.js.map +1 -0
  9. package/dist/bypass.d.ts +14 -0
  10. package/dist/bypass.d.ts.map +1 -0
  11. package/dist/bypass.js +47 -0
  12. package/dist/bypass.js.map +1 -0
  13. package/dist/cache-disk.d.ts +4 -0
  14. package/dist/cache-disk.d.ts.map +1 -0
  15. package/dist/cache-disk.js +212 -0
  16. package/dist/cache-disk.js.map +1 -0
  17. package/dist/cache.d.ts +62 -0
  18. package/dist/cache.d.ts.map +1 -0
  19. package/dist/cache.js +87 -0
  20. package/dist/cache.js.map +1 -0
  21. package/dist/calibration-context.d.ts +7 -0
  22. package/dist/calibration-context.d.ts.map +1 -0
  23. package/dist/calibration-context.js +40 -0
  24. package/dist/calibration-context.js.map +1 -0
  25. package/dist/calibration-fingerprint.d.ts +28 -0
  26. package/dist/calibration-fingerprint.d.ts.map +1 -0
  27. package/dist/calibration-fingerprint.js +67 -0
  28. package/dist/calibration-fingerprint.js.map +1 -0
  29. package/dist/calibration-model.d.ts +103 -0
  30. package/dist/calibration-model.d.ts.map +1 -0
  31. package/dist/calibration-model.js +44 -0
  32. package/dist/calibration-model.js.map +1 -0
  33. package/dist/calibration-slot-values.d.ts +232 -0
  34. package/dist/calibration-slot-values.d.ts.map +1 -0
  35. package/dist/calibration-slot-values.js +2 -0
  36. package/dist/calibration-slot-values.js.map +1 -0
  37. package/dist/calibration.d.ts +4 -0
  38. package/dist/calibration.d.ts.map +1 -0
  39. package/dist/calibration.js +4 -0
  40. package/dist/calibration.js.map +1 -0
  41. package/dist/category.d.ts +6 -0
  42. package/dist/category.d.ts.map +1 -0
  43. package/dist/category.js +12 -0
  44. package/dist/category.js.map +1 -0
  45. package/dist/concurrency.d.ts +2 -0
  46. package/dist/concurrency.d.ts.map +1 -0
  47. package/dist/concurrency.js +15 -0
  48. package/dist/concurrency.js.map +1 -0
  49. package/dist/context.d.ts +40 -0
  50. package/dist/context.d.ts.map +1 -0
  51. package/dist/context.js +28 -0
  52. package/dist/context.js.map +1 -0
  53. package/dist/conventions.d.ts +110 -0
  54. package/dist/conventions.d.ts.map +1 -0
  55. package/dist/conventions.js +40 -0
  56. package/dist/conventions.js.map +1 -0
  57. package/dist/dedupe-by-key.d.ts +2 -0
  58. package/dist/dedupe-by-key.d.ts.map +1 -0
  59. package/dist/dedupe-by-key.js +13 -0
  60. package/dist/dedupe-by-key.js.map +1 -0
  61. package/dist/diagnostic.d.ts +26 -0
  62. package/dist/diagnostic.d.ts.map +1 -0
  63. package/dist/diagnostic.js +34 -0
  64. package/dist/diagnostic.js.map +1 -0
  65. package/dist/distribution.d.ts +18 -0
  66. package/dist/distribution.d.ts.map +1 -0
  67. package/dist/distribution.js +44 -0
  68. package/dist/distribution.js.map +1 -0
  69. package/dist/edit-distance.d.ts +2 -0
  70. package/dist/edit-distance.d.ts.map +1 -0
  71. package/dist/edit-distance.js +21 -0
  72. package/dist/edit-distance.js.map +1 -0
  73. package/dist/elicitation/proposal-ai-assisted-mode.d.ts +9 -0
  74. package/dist/elicitation/proposal-ai-assisted-mode.d.ts.map +1 -0
  75. package/dist/elicitation/proposal-ai-assisted-mode.js +37 -0
  76. package/dist/elicitation/proposal-ai-assisted-mode.js.map +1 -0
  77. package/dist/elicitation/proposal-passive.d.ts +12 -0
  78. package/dist/elicitation/proposal-passive.d.ts.map +1 -0
  79. package/dist/elicitation/proposal-passive.js +62 -0
  80. package/dist/elicitation/proposal-passive.js.map +1 -0
  81. package/dist/elicitation/proposal-resolution.d.ts +11 -0
  82. package/dist/elicitation/proposal-resolution.d.ts.map +1 -0
  83. package/dist/elicitation/proposal-resolution.js +43 -0
  84. package/dist/elicitation/proposal-resolution.js.map +1 -0
  85. package/dist/elicitation/proposal-revealed-preference.d.ts +21 -0
  86. package/dist/elicitation/proposal-revealed-preference.d.ts.map +1 -0
  87. package/dist/elicitation/proposal-revealed-preference.js +72 -0
  88. package/dist/elicitation/proposal-revealed-preference.js.map +1 -0
  89. package/dist/elicitation/proposal-schema.d.ts +62 -0
  90. package/dist/elicitation/proposal-schema.d.ts.map +1 -0
  91. package/dist/elicitation/proposal-schema.js +39 -0
  92. package/dist/elicitation/proposal-schema.js.map +1 -0
  93. package/dist/elicitation/proposal-utils.d.ts +6 -0
  94. package/dist/elicitation/proposal-utils.d.ts.map +1 -0
  95. package/dist/elicitation/proposal-utils.js +7 -0
  96. package/dist/elicitation/proposal-utils.js.map +1 -0
  97. package/dist/elicitation/proposals.d.ts +6 -0
  98. package/dist/elicitation/proposals.d.ts.map +1 -0
  99. package/dist/elicitation/proposals.js +6 -0
  100. package/dist/elicitation/proposals.js.map +1 -0
  101. package/dist/elicitation/quiz.d.ts +72 -0
  102. package/dist/elicitation/quiz.d.ts.map +1 -0
  103. package/dist/elicitation/quiz.js +189 -0
  104. package/dist/elicitation/quiz.js.map +1 -0
  105. package/dist/elicitation/revealed-preference.d.ts +24 -0
  106. package/dist/elicitation/revealed-preference.d.ts.map +1 -0
  107. package/dist/elicitation/revealed-preference.js +101 -0
  108. package/dist/elicitation/revealed-preference.js.map +1 -0
  109. package/dist/elicitation.d.ts +5 -0
  110. package/dist/elicitation.d.ts.map +1 -0
  111. package/dist/elicitation.js +5 -0
  112. package/dist/elicitation.js.map +1 -0
  113. package/dist/enforcement.d.ts +13 -0
  114. package/dist/enforcement.d.ts.map +1 -0
  115. package/dist/enforcement.js +31 -0
  116. package/dist/enforcement.js.map +1 -0
  117. package/dist/errors.d.ts +132 -0
  118. package/dist/errors.d.ts.map +1 -0
  119. package/dist/errors.js +76 -0
  120. package/dist/errors.js.map +1 -0
  121. package/dist/factor-ledger.d.ts +38 -0
  122. package/dist/factor-ledger.d.ts.map +1 -0
  123. package/dist/factor-ledger.js +184 -0
  124. package/dist/factor-ledger.js.map +1 -0
  125. package/dist/factor-policy-ledger.d.ts +12 -0
  126. package/dist/factor-policy-ledger.d.ts.map +1 -0
  127. package/dist/factor-policy-ledger.js +48 -0
  128. package/dist/factor-policy-ledger.js.map +1 -0
  129. package/dist/factors.d.ts +4 -0
  130. package/dist/factors.d.ts.map +1 -0
  131. package/dist/factors.js +3 -0
  132. package/dist/factors.js.map +1 -0
  133. package/dist/file-taxonomy.d.ts +10 -0
  134. package/dist/file-taxonomy.d.ts.map +1 -0
  135. package/dist/file-taxonomy.js +171 -0
  136. package/dist/file-taxonomy.js.map +1 -0
  137. package/dist/globs.d.ts +3 -0
  138. package/dist/globs.d.ts.map +1 -0
  139. package/dist/globs.js +24 -0
  140. package/dist/globs.js.map +1 -0
  141. package/dist/glossary.d.ts +137 -0
  142. package/dist/glossary.d.ts.map +1 -0
  143. package/dist/glossary.js +51 -0
  144. package/dist/glossary.js.map +1 -0
  145. package/dist/goodhart.d.ts +31 -0
  146. package/dist/goodhart.d.ts.map +1 -0
  147. package/dist/goodhart.js +176 -0
  148. package/dist/goodhart.js.map +1 -0
  149. package/dist/index.d.ts +12 -0
  150. package/dist/index.d.ts.map +1 -0
  151. package/dist/index.js +12 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/input-outputs.d.ts +3 -0
  154. package/dist/input-outputs.d.ts.map +1 -0
  155. package/dist/input-outputs.js +10 -0
  156. package/dist/input-outputs.js.map +1 -0
  157. package/dist/observer-categories.d.ts +7 -0
  158. package/dist/observer-categories.d.ts.map +1 -0
  159. package/dist/observer-categories.js +158 -0
  160. package/dist/observer-categories.js.map +1 -0
  161. package/dist/observer-execution.d.ts +23 -0
  162. package/dist/observer-execution.d.ts.map +1 -0
  163. package/dist/observer-execution.js +130 -0
  164. package/dist/observer-execution.js.map +1 -0
  165. package/dist/observer-json.d.ts +319 -0
  166. package/dist/observer-json.d.ts.map +1 -0
  167. package/dist/observer-json.js +153 -0
  168. package/dist/observer-json.js.map +1 -0
  169. package/dist/observer-local-pressure.d.ts +5 -0
  170. package/dist/observer-local-pressure.d.ts.map +1 -0
  171. package/dist/observer-local-pressure.js +9 -0
  172. package/dist/observer-local-pressure.js.map +1 -0
  173. package/dist/observer-minimum.d.ts +26 -0
  174. package/dist/observer-minimum.d.ts.map +1 -0
  175. package/dist/observer-minimum.js +94 -0
  176. package/dist/observer-minimum.js.map +1 -0
  177. package/dist/observer-model.d.ts +129 -0
  178. package/dist/observer-model.d.ts.map +1 -0
  179. package/dist/observer-model.js +2 -0
  180. package/dist/observer-model.js.map +1 -0
  181. package/dist/observer-readiness.d.ts +6 -0
  182. package/dist/observer-readiness.d.ts.map +1 -0
  183. package/dist/observer-readiness.js +131 -0
  184. package/dist/observer-readiness.js.map +1 -0
  185. package/dist/observer-score-utils.d.ts +8 -0
  186. package/dist/observer-score-utils.d.ts.map +1 -0
  187. package/dist/observer-score-utils.js +17 -0
  188. package/dist/observer-score-utils.js.map +1 -0
  189. package/dist/observer-serializer.d.ts +3 -0
  190. package/dist/observer-serializer.d.ts.map +1 -0
  191. package/dist/observer-serializer.js +66 -0
  192. package/dist/observer-serializer.js.map +1 -0
  193. package/dist/observer-time.d.ts +3 -0
  194. package/dist/observer-time.d.ts.map +1 -0
  195. package/dist/observer-time.js +7 -0
  196. package/dist/observer-time.js.map +1 -0
  197. package/dist/observer-weighted-mean.d.ts +4 -0
  198. package/dist/observer-weighted-mean.d.ts.map +1 -0
  199. package/dist/observer-weighted-mean.js +17 -0
  200. package/dist/observer-weighted-mean.js.map +1 -0
  201. package/dist/observer.d.ts +26 -0
  202. package/dist/observer.d.ts.map +1 -0
  203. package/dist/observer.js +63 -0
  204. package/dist/observer.js.map +1 -0
  205. package/dist/presets.d.ts +11 -0
  206. package/dist/presets.d.ts.map +1 -0
  207. package/dist/presets.js +52 -0
  208. package/dist/presets.js.map +1 -0
  209. package/dist/reference-data-loader.d.ts +6 -0
  210. package/dist/reference-data-loader.d.ts.map +1 -0
  211. package/dist/reference-data-loader.js +53 -0
  212. package/dist/reference-data-loader.js.map +1 -0
  213. package/dist/reference-data.d.ts +6 -0
  214. package/dist/reference-data.d.ts.map +1 -0
  215. package/dist/reference-data.js +6 -0
  216. package/dist/reference-data.js.map +1 -0
  217. package/dist/registry.d.ts +16 -0
  218. package/dist/registry.d.ts.map +1 -0
  219. package/dist/registry.js +174 -0
  220. package/dist/registry.js.map +1 -0
  221. package/dist/review-plan.d.ts +30 -0
  222. package/dist/review-plan.d.ts.map +1 -0
  223. package/dist/review-plan.js +235 -0
  224. package/dist/review-plan.js.map +1 -0
  225. package/dist/routing-context-payload.d.ts +20 -0
  226. package/dist/routing-context-payload.d.ts.map +1 -0
  227. package/dist/routing-context-payload.js +58 -0
  228. package/dist/routing-context-payload.js.map +1 -0
  229. package/dist/routing-matching.d.ts +10 -0
  230. package/dist/routing-matching.d.ts.map +1 -0
  231. package/dist/routing-matching.js +74 -0
  232. package/dist/routing-matching.js.map +1 -0
  233. package/dist/routing-pattern-catalog.d.ts +7 -0
  234. package/dist/routing-pattern-catalog.d.ts.map +1 -0
  235. package/dist/routing-pattern-catalog.js +120 -0
  236. package/dist/routing-pattern-catalog.js.map +1 -0
  237. package/dist/routing-schema.d.ts +162 -0
  238. package/dist/routing-schema.d.ts.map +1 -0
  239. package/dist/routing-schema.js +75 -0
  240. package/dist/routing-schema.js.map +1 -0
  241. package/dist/routing.d.ts +14 -0
  242. package/dist/routing.d.ts.map +1 -0
  243. package/dist/routing.js +35 -0
  244. package/dist/routing.js.map +1 -0
  245. package/dist/runner.d.ts +26 -0
  246. package/dist/runner.d.ts.map +1 -0
  247. package/dist/runner.js +72 -0
  248. package/dist/runner.js.map +1 -0
  249. package/dist/scoring-engine-contract.d.ts +43 -0
  250. package/dist/scoring-engine-contract.d.ts.map +1 -0
  251. package/dist/scoring-engine-contract.js +42 -0
  252. package/dist/scoring-engine-contract.js.map +1 -0
  253. package/dist/scoring-engine-git-content-hash.d.ts +12 -0
  254. package/dist/scoring-engine-git-content-hash.d.ts.map +1 -0
  255. package/dist/scoring-engine-git-content-hash.js +154 -0
  256. package/dist/scoring-engine-git-content-hash.js.map +1 -0
  257. package/dist/scoring-engine-git-diff.d.ts +10 -0
  258. package/dist/scoring-engine-git-diff.d.ts.map +1 -0
  259. package/dist/scoring-engine-git-diff.js +103 -0
  260. package/dist/scoring-engine-git-diff.js.map +1 -0
  261. package/dist/scoring-engine-git-paths.d.ts +2 -0
  262. package/dist/scoring-engine-git-paths.d.ts.map +1 -0
  263. package/dist/scoring-engine-git-paths.js +17 -0
  264. package/dist/scoring-engine-git-paths.js.map +1 -0
  265. package/dist/scoring-engine-git-range.d.ts +9 -0
  266. package/dist/scoring-engine-git-range.d.ts.map +1 -0
  267. package/dist/scoring-engine-git-range.js +19 -0
  268. package/dist/scoring-engine-git-range.js.map +1 -0
  269. package/dist/scoring-engine-git-run.d.ts +7 -0
  270. package/dist/scoring-engine-git-run.d.ts.map +1 -0
  271. package/dist/scoring-engine-git-run.js +32 -0
  272. package/dist/scoring-engine-git-run.js.map +1 -0
  273. package/dist/scoring-engine-git-worktree.d.ts +9 -0
  274. package/dist/scoring-engine-git-worktree.d.ts.map +1 -0
  275. package/dist/scoring-engine-git-worktree.js +83 -0
  276. package/dist/scoring-engine-git-worktree.js.map +1 -0
  277. package/dist/scoring-engine-git.d.ts +5 -0
  278. package/dist/scoring-engine-git.d.ts.map +1 -0
  279. package/dist/scoring-engine-git.js +5 -0
  280. package/dist/scoring-engine-git.js.map +1 -0
  281. package/dist/scoring-engine-layer.d.ts +12 -0
  282. package/dist/scoring-engine-layer.d.ts.map +1 -0
  283. package/dist/scoring-engine-layer.js +48 -0
  284. package/dist/scoring-engine-layer.js.map +1 -0
  285. package/dist/scoring-engine-observe.d.ts +50 -0
  286. package/dist/scoring-engine-observe.d.ts.map +1 -0
  287. package/dist/scoring-engine-observe.js +77 -0
  288. package/dist/scoring-engine-observe.js.map +1 -0
  289. package/dist/scoring-engine-observer-cache.d.ts +36 -0
  290. package/dist/scoring-engine-observer-cache.d.ts.map +1 -0
  291. package/dist/scoring-engine-observer-cache.js +115 -0
  292. package/dist/scoring-engine-observer-cache.js.map +1 -0
  293. package/dist/scoring-engine-runtime.d.ts +25 -0
  294. package/dist/scoring-engine-runtime.d.ts.map +1 -0
  295. package/dist/scoring-engine-runtime.js +49 -0
  296. package/dist/scoring-engine-runtime.js.map +1 -0
  297. package/dist/scoring-engine-score-execution.d.ts +24 -0
  298. package/dist/scoring-engine-score-execution.d.ts.map +1 -0
  299. package/dist/scoring-engine-score-execution.js +71 -0
  300. package/dist/scoring-engine-score-execution.js.map +1 -0
  301. package/dist/scoring-engine-score.d.ts +13 -0
  302. package/dist/scoring-engine-score.d.ts.map +1 -0
  303. package/dist/scoring-engine-score.js +28 -0
  304. package/dist/scoring-engine-score.js.map +1 -0
  305. package/dist/scoring-engine.d.ts +5 -0
  306. package/dist/scoring-engine.d.ts.map +1 -0
  307. package/dist/scoring-engine.js +5 -0
  308. package/dist/scoring-engine.js.map +1 -0
  309. package/dist/scoring.d.ts +9 -0
  310. package/dist/scoring.d.ts.map +1 -0
  311. package/dist/scoring.js +9 -0
  312. package/dist/scoring.js.map +1 -0
  313. package/dist/shared-02-aggregation.d.ts +31 -0
  314. package/dist/shared-02-aggregation.d.ts.map +1 -0
  315. package/dist/shared-02-aggregation.js +63 -0
  316. package/dist/shared-02-aggregation.js.map +1 -0
  317. package/dist/shared-02-bus-factor.d.ts +37 -0
  318. package/dist/shared-02-bus-factor.d.ts.map +1 -0
  319. package/dist/shared-02-bus-factor.js +195 -0
  320. package/dist/shared-02-bus-factor.js.map +1 -0
  321. package/dist/shared-02-history.d.ts +7 -0
  322. package/dist/shared-02-history.d.ts.map +1 -0
  323. package/dist/shared-02-history.js +9 -0
  324. package/dist/shared-02-history.js.map +1 -0
  325. package/dist/shared-03-churn-rate.d.ts +47 -0
  326. package/dist/shared-03-churn-rate.d.ts.map +1 -0
  327. package/dist/shared-03-churn-rate.js +187 -0
  328. package/dist/shared-03-churn-rate.js.map +1 -0
  329. package/dist/shared-03-compute.d.ts +4 -0
  330. package/dist/shared-03-compute.d.ts.map +1 -0
  331. package/dist/shared-03-compute.js +84 -0
  332. package/dist/shared-03-compute.js.map +1 -0
  333. package/dist/shared-03-line-matching.d.ts +2 -0
  334. package/dist/shared-03-line-matching.d.ts.map +1 -0
  335. package/dist/shared-03-line-matching.js +119 -0
  336. package/dist/shared-03-line-matching.js.map +1 -0
  337. package/dist/shared-churn-01.d.ts +24 -0
  338. package/dist/shared-churn-01.d.ts.map +1 -0
  339. package/dist/shared-churn-01.js +107 -0
  340. package/dist/shared-churn-01.js.map +1 -0
  341. package/dist/shared-history-authors.d.ts +5 -0
  342. package/dist/shared-history-authors.d.ts.map +1 -0
  343. package/dist/shared-history-authors.js +77 -0
  344. package/dist/shared-history-authors.js.map +1 -0
  345. package/dist/shared-history-defaults.d.ts +2 -0
  346. package/dist/shared-history-defaults.d.ts.map +1 -0
  347. package/dist/shared-history-defaults.js +73 -0
  348. package/dist/shared-history-defaults.js.map +1 -0
  349. package/dist/shared-history-files.d.ts +3 -0
  350. package/dist/shared-history-files.d.ts.map +1 -0
  351. package/dist/shared-history-files.js +19 -0
  352. package/dist/shared-history-files.js.map +1 -0
  353. package/dist/shared-history-filter.d.ts +10 -0
  354. package/dist/shared-history-filter.d.ts.map +1 -0
  355. package/dist/shared-history-filter.js +10 -0
  356. package/dist/shared-history-filter.js.map +1 -0
  357. package/dist/shared-history-git.d.ts +7 -0
  358. package/dist/shared-history-git.d.ts.map +1 -0
  359. package/dist/shared-history-git.js +45 -0
  360. package/dist/shared-history-git.js.map +1 -0
  361. package/dist/shared-history-lines.d.ts +4 -0
  362. package/dist/shared-history-lines.d.ts.map +1 -0
  363. package/dist/shared-history-lines.js +139 -0
  364. package/dist/shared-history-lines.js.map +1 -0
  365. package/dist/shared-history.d.ts +6 -0
  366. package/dist/shared-history.d.ts.map +1 -0
  367. package/dist/shared-history.js +6 -0
  368. package/dist/shared-history.js.map +1 -0
  369. package/dist/shared-signals.d.ts +4 -0
  370. package/dist/shared-signals.d.ts.map +1 -0
  371. package/dist/shared-signals.js +4 -0
  372. package/dist/shared-signals.js.map +1 -0
  373. package/dist/signal-api.d.ts +16 -0
  374. package/dist/signal-api.d.ts.map +1 -0
  375. package/dist/signal-api.js +13 -0
  376. package/dist/signal-api.js.map +1 -0
  377. package/dist/signal-factor-model.d.ts +53 -0
  378. package/dist/signal-factor-model.d.ts.map +1 -0
  379. package/dist/signal-factor-model.js +2 -0
  380. package/dist/signal-factor-model.js.map +1 -0
  381. package/dist/signal-runtime.d.ts +13 -0
  382. package/dist/signal-runtime.d.ts.map +1 -0
  383. package/dist/signal-runtime.js +2 -0
  384. package/dist/signal-runtime.js.map +1 -0
  385. package/dist/signal-score-utils.d.ts +2 -0
  386. package/dist/signal-score-utils.d.ts.map +1 -0
  387. package/dist/signal-score-utils.js +6 -0
  388. package/dist/signal-score-utils.js.map +1 -0
  389. package/dist/signal.d.ts +113 -0
  390. package/dist/signal.d.ts.map +1 -0
  391. package/dist/signal.js +2 -0
  392. package/dist/signal.js.map +1 -0
  393. package/dist/state-paths.d.ts +7 -0
  394. package/dist/state-paths.d.ts.map +1 -0
  395. package/dist/state-paths.js +32 -0
  396. package/dist/state-paths.js.map +1 -0
  397. package/dist/tier.d.ts +14 -0
  398. package/dist/tier.d.ts.map +1 -0
  399. package/dist/tier.js +12 -0
  400. package/dist/tier.js.map +1 -0
  401. package/dist/time-series-compaction-types.d.ts +6 -0
  402. package/dist/time-series-compaction-types.d.ts.map +1 -0
  403. package/dist/time-series-compaction-types.js +2 -0
  404. package/dist/time-series-compaction-types.js.map +1 -0
  405. package/dist/time-series-compaction.d.ts +3 -0
  406. package/dist/time-series-compaction.d.ts.map +1 -0
  407. package/dist/time-series-compaction.js +138 -0
  408. package/dist/time-series-compaction.js.map +1 -0
  409. package/dist/time-series-dates.d.ts +8 -0
  410. package/dist/time-series-dates.d.ts.map +1 -0
  411. package/dist/time-series-dates.js +43 -0
  412. package/dist/time-series-dates.js.map +1 -0
  413. package/dist/time-series-metadata.d.ts +6 -0
  414. package/dist/time-series-metadata.d.ts.map +1 -0
  415. package/dist/time-series-metadata.js +72 -0
  416. package/dist/time-series-metadata.js.map +1 -0
  417. package/dist/time-series-model.d.ts +419 -0
  418. package/dist/time-series-model.d.ts.map +1 -0
  419. package/dist/time-series-model.js +51 -0
  420. package/dist/time-series-model.js.map +1 -0
  421. package/dist/time-series-readiness.d.ts +4 -0
  422. package/dist/time-series-readiness.d.ts.map +1 -0
  423. package/dist/time-series-readiness.js +82 -0
  424. package/dist/time-series-readiness.js.map +1 -0
  425. package/dist/time-series-storage.d.ts +15 -0
  426. package/dist/time-series-storage.d.ts.map +1 -0
  427. package/dist/time-series-storage.js +124 -0
  428. package/dist/time-series-storage.js.map +1 -0
  429. package/dist/time-series.d.ts +6 -0
  430. package/dist/time-series.d.ts.map +1 -0
  431. package/dist/time-series.js +98 -0
  432. package/dist/time-series.js.map +1 -0
  433. package/dist/vector-ai-mode.d.ts +10 -0
  434. package/dist/vector-ai-mode.d.ts.map +1 -0
  435. package/dist/vector-ai-mode.js +41 -0
  436. package/dist/vector-ai-mode.js.map +1 -0
  437. package/dist/vector-backpressure-config.d.ts +3 -0
  438. package/dist/vector-backpressure-config.d.ts.map +1 -0
  439. package/dist/vector-backpressure-config.js +18 -0
  440. package/dist/vector-backpressure-config.js.map +1 -0
  441. package/dist/vector-observer-config.d.ts +7 -0
  442. package/dist/vector-observer-config.d.ts.map +1 -0
  443. package/dist/vector-observer-config.js +24 -0
  444. package/dist/vector-observer-config.js.map +1 -0
  445. package/dist/vector-provenance.d.ts +3 -0
  446. package/dist/vector-provenance.d.ts.map +1 -0
  447. package/dist/vector-provenance.js +5 -0
  448. package/dist/vector-provenance.js.map +1 -0
  449. package/dist/vector-resolution.d.ts +25 -0
  450. package/dist/vector-resolution.d.ts.map +1 -0
  451. package/dist/vector-resolution.js +82 -0
  452. package/dist/vector-resolution.js.map +1 -0
  453. package/dist/vector-schema.d.ts +435 -0
  454. package/dist/vector-schema.d.ts.map +1 -0
  455. package/dist/vector-schema.js +158 -0
  456. package/dist/vector-schema.js.map +1 -0
  457. package/dist/vector.d.ts +3 -0
  458. package/dist/vector.d.ts.map +1 -0
  459. package/dist/vector.js +3 -0
  460. package/dist/vector.js.map +1 -0
  461. package/package.json +106 -0
  462. package/presets/ai-slop-defense.json +28 -0
  463. package/presets/domain-purist.json +15 -0
  464. package/presets/refactor-friendly.json +18 -0
  465. package/presets/security-paranoid.json +20 -0
  466. package/presets/strict-type-safety.json +15 -0
  467. package/presets/velocity-first.json +32 -0
  468. package/quiz-items/typescript.json +602 -0
  469. package/routing-patterns/api-surface-change.json +17 -0
  470. package/routing-patterns/auth-paths-touched.json +16 -0
  471. package/routing-patterns/crypto-import-added.json +21 -0
  472. package/routing-patterns/domain-term-drift.json +17 -0
  473. package/routing-patterns/migration-added.json +13 -0
  474. package/routing-patterns/unsafe-added.json +17 -0
@@ -0,0 +1,31 @@
1
+ import { type Category } from "./category.js";
2
+ import { type GoodhartAssessment } from "./goodhart.js";
3
+ import { type TimeSeriesEntry } from "./time-series.js";
4
+ import { type PulsarVector } from "./vector.js";
5
+ export { projectObserverForAgent } from "./goodhart.js";
6
+ export type BackpressureLevel = "green" | "yellow" | "red";
7
+ export interface CategoryBackpressure {
8
+ readonly level: BackpressureLevel;
9
+ readonly currentScore: number;
10
+ readonly trajectorySlope: number;
11
+ readonly triggers: ReadonlyArray<string>;
12
+ }
13
+ export interface BackpressureOutput {
14
+ readonly overall: BackpressureLevel;
15
+ readonly byCategory: Record<Category, CategoryBackpressure>;
16
+ readonly rationale: ReadonlyArray<string>;
17
+ readonly trajectoryDays: number;
18
+ readonly goodhart: GoodhartAssessment;
19
+ }
20
+ export interface BackpressureTrendEntry {
21
+ readonly sha: string;
22
+ readonly timestamp: string;
23
+ readonly overall: BackpressureLevel;
24
+ readonly weightedMean: number;
25
+ readonly readinessScore?: number;
26
+ readonly readinessPressure?: number;
27
+ readonly hardGateStatus: "pass" | "fail";
28
+ }
29
+ export declare const evaluateBackpressure: (entries: ReadonlyArray<TimeSeriesEntry>, vector: PulsarVector | undefined) => BackpressureOutput;
30
+ export declare const evaluateBackpressureTrend: (entries: ReadonlyArray<TimeSeriesEntry>, vector: PulsarVector | undefined) => ReadonlyArray<BackpressureTrendEntry>;
31
+ //# sourceMappingURL=backpressure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backpressure.d.ts","sourceRoot":"","sources":["../src/backpressure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAkB,MAAM,eAAe,CAAA;AACzE,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACzE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAE9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAEvD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;AAE1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAA;IAC3D,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAA;CACzC;AAED,eAAO,MAAM,oBAAoB,GAC/B,SAAS,aAAa,CAAC,eAAe,CAAC,EACvC,QAAQ,YAAY,GAAG,SAAS,KAC/B,kBAuDF,CAAA;AAkHD,eAAO,MAAM,yBAAyB,GACpC,SAAS,aAAa,CAAC,eAAe,CAAC,EACvC,QAAQ,YAAY,GAAG,SAAS,KAC/B,aAAa,CAAC,sBAAsB,CAiBnC,CAAA"}
@@ -0,0 +1,206 @@
1
+ import { CATEGORIES, categoryRecord } from "./category.js";
2
+ import { evaluateGoodhart } from "./goodhart.js";
3
+ import { backpressureConfigOf } from "./vector.js";
4
+ export { projectObserverForAgent } from "./goodhart.js";
5
+ export const evaluateBackpressure = (entries, vector) => {
6
+ const config = backpressureConfigOf(vector);
7
+ const latest = entries.at(-1);
8
+ const goodhart = evaluateGoodhart(entries, vector);
9
+ if (latest === undefined) {
10
+ return {
11
+ overall: config.empty_series_level,
12
+ byCategory: emptyCategoryOutput(config.empty_series_level),
13
+ rationale: [
14
+ "No score time series exists yet.",
15
+ "Backpressure falls back to a cautious default until evidence is recorded.",
16
+ ],
17
+ trajectoryDays: config.trajectory_days,
18
+ goodhart,
19
+ };
20
+ }
21
+ const windowEntries = selectWindow(entries, latest.timestamp, config.trajectory_days);
22
+ const byCategory = evaluateCategoryBackpressure(latest, windowEntries, config);
23
+ const rationale = buildBackpressureRationale(latest, windowEntries, byCategory, config, goodhart);
24
+ let overall = worstLevel(CATEGORIES.map((category) => byCategory[category].level));
25
+ if (latest.observerOutput.readiness !== undefined) {
26
+ const readinessLevel = backpressureLevelFromReadiness(latest.observerOutput.readiness.status, latest.observerOutput.readiness.pressure);
27
+ overall = worstLevel([overall, readinessLevel]);
28
+ }
29
+ if (latest.observerOutput.hard_gate_status === "fail") {
30
+ overall = "red";
31
+ }
32
+ if (latest.observerOutput.minimum !== undefined &&
33
+ latest.observerOutput.minimum.score < config.thresholds.red_min_dimension) {
34
+ overall = "red";
35
+ }
36
+ if (goodhart.suspicion === "high") {
37
+ overall = "red";
38
+ }
39
+ else if (goodhart.suspicion === "elevated") {
40
+ overall = overall === "green" ? "yellow" : overall;
41
+ }
42
+ return {
43
+ overall,
44
+ byCategory,
45
+ rationale,
46
+ trajectoryDays: config.trajectory_days,
47
+ goodhart,
48
+ };
49
+ };
50
+ const evaluateCategoryBackpressure = (latest, windowEntries, config) => categoryRecord((category) => evaluateOneCategoryBackpressure(latest, windowEntries, category, config));
51
+ const evaluateOneCategoryBackpressure = (latest, windowEntries, category, config) => {
52
+ const currentScore = latest.observerOutput.categories[category].score;
53
+ const trajectorySlope = computeTrajectorySlope(windowEntries, category);
54
+ const triggers = categoryScoreTriggers(category, currentScore, trajectorySlope, config);
55
+ return {
56
+ level: levelFromTriggers(currentScore, trajectorySlope, config),
57
+ currentScore,
58
+ trajectorySlope,
59
+ triggers,
60
+ };
61
+ };
62
+ const categoryScoreTriggers = (category, currentScore, trajectorySlope, config) => {
63
+ const triggers = [];
64
+ if (currentScore < config.thresholds.yellow_min_score) {
65
+ triggers.push(`${category} score ${currentScore.toFixed(2)} is below ${config.thresholds.yellow_min_score.toFixed(2)}`);
66
+ }
67
+ else if (currentScore < config.thresholds.green_min_score) {
68
+ triggers.push(`${category} score ${currentScore.toFixed(2)} is below the green floor ${config.thresholds.green_min_score.toFixed(2)}`);
69
+ }
70
+ if (trajectorySlope <= slopeThreshold(config)) {
71
+ triggers.push(`${category} slope ${trajectorySlope.toFixed(3)} / day is degrading faster than the allowed trend`);
72
+ }
73
+ return triggers;
74
+ };
75
+ const levelFromTriggers = (currentScore, trajectorySlope, config) => {
76
+ if (currentScore < config.thresholds.yellow_min_score)
77
+ return "red";
78
+ if (currentScore < config.thresholds.green_min_score)
79
+ return "yellow";
80
+ return trajectorySlope <= slopeThreshold(config) ? "yellow" : "green";
81
+ };
82
+ const slopeThreshold = (config) => -config.thresholds.degrading_window_drop / config.trajectory_days;
83
+ const buildBackpressureRationale = (latest, windowEntries, byCategory, config, goodhart) => [
84
+ ...readinessRationale(latest),
85
+ ...hardGateRationale(latest),
86
+ ...minimumDimensionRationale(latest, config),
87
+ ...trendWindowRationale(windowEntries, config),
88
+ ...CATEGORIES.flatMap((category) => byCategory[category].triggers),
89
+ ...(goodhart.suspicion === "low" ? [] : goodhart.rationale),
90
+ ];
91
+ const readinessRationale = (latest) => {
92
+ const readiness = latest.observerOutput.readiness;
93
+ if (readiness === undefined)
94
+ return [];
95
+ const level = backpressureLevelFromReadiness(readiness.status, readiness.pressure);
96
+ return level === "green"
97
+ ? []
98
+ : [`Readiness pressure is ${readiness.pressure.toFixed(2)} (${readiness.status}).`];
99
+ };
100
+ const hardGateRationale = (latest) => latest.observerOutput.hard_gate_status === "fail"
101
+ ? ["Hard-gate violations are present in the latest observation."]
102
+ : [];
103
+ const minimumDimensionRationale = (latest, config) => {
104
+ const minimum = latest.observerOutput.minimum;
105
+ return minimum !== undefined && minimum.score < config.thresholds.red_min_dimension
106
+ ? [`Minimum dimension ${minimum.signal} fell to ${minimum.score.toFixed(2)}.`]
107
+ : [];
108
+ };
109
+ const trendWindowRationale = (windowEntries, config) => windowEntries.length < 2
110
+ ? [
111
+ `Only ${windowEntries.length} observation(s) fall inside the ${config.trajectory_days}-day trend window.`,
112
+ ]
113
+ : [];
114
+ export const evaluateBackpressureTrend = (entries, vector) => entries.map((entry, index) => {
115
+ const prefix = entries.slice(0, index + 1);
116
+ const output = evaluateBackpressure(prefix, vector);
117
+ return {
118
+ sha: entry.sha,
119
+ timestamp: entry.timestamp,
120
+ overall: output.overall,
121
+ weightedMean: entry.observerOutput.weighted_mean,
122
+ ...(entry.observerOutput.readiness !== undefined
123
+ ? {
124
+ readinessScore: entry.observerOutput.readiness.score,
125
+ readinessPressure: entry.observerOutput.readiness.pressure,
126
+ }
127
+ : {}),
128
+ hardGateStatus: entry.observerOutput.hard_gate_status,
129
+ };
130
+ });
131
+ const backpressureLevelFromReadiness = (readinessStatus, pressure) => {
132
+ if (readinessStatus === "green")
133
+ return "green";
134
+ if (readinessStatus === "unknown")
135
+ return pressure > 0 ? "yellow" : "green";
136
+ if (readinessStatus === "yellow")
137
+ return "yellow";
138
+ if (readinessStatus === "failed")
139
+ return "red";
140
+ return "red";
141
+ };
142
+ const emptyCategoryOutput = (level) => ({
143
+ "architectural-drift": {
144
+ level,
145
+ currentScore: 1,
146
+ trajectorySlope: 0,
147
+ triggers: ["No history yet."],
148
+ },
149
+ "dependency-entropy": {
150
+ level,
151
+ currentScore: 1,
152
+ trajectorySlope: 0,
153
+ triggers: ["No history yet."],
154
+ },
155
+ "abstraction-bloat": {
156
+ level,
157
+ currentScore: 1,
158
+ trajectorySlope: 0,
159
+ triggers: ["No history yet."],
160
+ },
161
+ "legibility-decay": {
162
+ level,
163
+ currentScore: 1,
164
+ trajectorySlope: 0,
165
+ triggers: ["No history yet."],
166
+ },
167
+ "generated-slop": {
168
+ level,
169
+ currentScore: 1,
170
+ trajectorySlope: 0,
171
+ triggers: ["No history yet."],
172
+ },
173
+ "review-pain": {
174
+ level,
175
+ currentScore: 1,
176
+ trajectorySlope: 0,
177
+ triggers: ["No history yet."],
178
+ },
179
+ });
180
+ const selectWindow = (entries, latestTimestamp, trajectoryDays) => {
181
+ const cutoff = Date.parse(latestTimestamp) - trajectoryDays * 24 * 60 * 60 * 1000;
182
+ const withinWindow = entries.filter((entry) => Date.parse(entry.timestamp) >= cutoff);
183
+ return withinWindow.length === 0 ? [entries.at(-1)] : withinWindow;
184
+ };
185
+ const computeTrajectorySlope = (entries, category) => {
186
+ if (entries.length < 2)
187
+ return 0;
188
+ const firstTime = Date.parse(entries[0].timestamp);
189
+ const points = entries.map((entry) => ({
190
+ x: (Date.parse(entry.timestamp) - firstTime) / (24 * 60 * 60 * 1000),
191
+ y: entry.observerOutput.categories[category].score,
192
+ }));
193
+ const meanX = points.reduce((sum, point) => sum + point.x, 0) / points.length;
194
+ const meanY = points.reduce((sum, point) => sum + point.y, 0) / points.length;
195
+ const numerator = points.reduce((sum, point) => sum + (point.x - meanX) * (point.y - meanY), 0);
196
+ const denominator = points.reduce((sum, point) => sum + (point.x - meanX) * (point.x - meanX), 0);
197
+ return denominator === 0 ? 0 : numerator / denominator;
198
+ };
199
+ const worstLevel = (levels) => {
200
+ if (levels.includes("red"))
201
+ return "red";
202
+ if (levels.includes("yellow"))
203
+ return "yellow";
204
+ return "green";
205
+ };
206
+ //# sourceMappingURL=backpressure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backpressure.js","sourceRoot":"","sources":["../src/backpressure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { Schema } from "effect";
2
+ import type { Category } from "./category.js";
3
+ import { type Diagnostic } from "./diagnostic.js";
4
+ import type { HardGateViolation } from "./observer.js";
5
+ declare const baselineViolationSchema: Schema.Struct<{
6
+ file: typeof Schema.String;
7
+ line: Schema.optional<typeof Schema.Number>;
8
+ hash: typeof Schema.String;
9
+ detail: typeof Schema.String;
10
+ }>;
11
+ type BaselineViolation = typeof baselineViolationSchema.Type;
12
+ declare const baselineSchema: Schema.Struct<{
13
+ schema_version: Schema.Literal<[1]>;
14
+ baseline_sha: typeof Schema.String;
15
+ created_at: typeof Schema.String;
16
+ vector_id: Schema.optional<typeof Schema.String>;
17
+ vector_source: Schema.optional<typeof Schema.String>;
18
+ vector_trust_boundary: Schema.optional<Schema.Literal<["explicit-path", "repo-local", "organization-standard-fallback", "built-in-defaults"]>>;
19
+ observer_config_hash: Schema.optional<typeof Schema.String>;
20
+ violations: Schema.Record$<typeof Schema.String, Schema.Array$<Schema.Struct<{
21
+ file: typeof Schema.String;
22
+ line: Schema.optional<typeof Schema.Number>;
23
+ hash: typeof Schema.String;
24
+ detail: typeof Schema.String;
25
+ }>>>;
26
+ }>;
27
+ export type Baseline = typeof baselineSchema.Type;
28
+ export declare const decodeBaseline: (u: unknown, overrideOptions?: import("effect/SchemaAST").ParseOptions) => import("effect/Effect").Effect<{
29
+ readonly schema_version: 1;
30
+ readonly baseline_sha: string;
31
+ readonly created_at: string;
32
+ readonly vector_id?: string | undefined;
33
+ readonly vector_source?: string | undefined;
34
+ readonly vector_trust_boundary?: "repo-local" | "explicit-path" | "organization-standard-fallback" | "built-in-defaults" | undefined;
35
+ readonly observer_config_hash?: string | undefined;
36
+ readonly violations: {
37
+ readonly [x: string]: readonly {
38
+ readonly file: string;
39
+ readonly line?: number | undefined;
40
+ readonly hash: string;
41
+ readonly detail: string;
42
+ }[];
43
+ };
44
+ }, import("effect/ParseResult").ParseError, never>;
45
+ export declare const decodeBaselineSync: (u: unknown, overrideOptions?: import("effect/SchemaAST").ParseOptions) => {
46
+ readonly schema_version: 1;
47
+ readonly baseline_sha: string;
48
+ readonly created_at: string;
49
+ readonly vector_id?: string | undefined;
50
+ readonly vector_source?: string | undefined;
51
+ readonly vector_trust_boundary?: "repo-local" | "explicit-path" | "organization-standard-fallback" | "built-in-defaults" | undefined;
52
+ readonly observer_config_hash?: string | undefined;
53
+ readonly violations: {
54
+ readonly [x: string]: readonly {
55
+ readonly file: string;
56
+ readonly line?: number | undefined;
57
+ readonly hash: string;
58
+ readonly detail: string;
59
+ }[];
60
+ };
61
+ };
62
+ interface CurrentViolationSnapshot extends BaselineViolation {
63
+ readonly signalId: string;
64
+ readonly category: Category;
65
+ readonly diagnostic: Diagnostic;
66
+ }
67
+ interface PaidDebtViolation extends BaselineViolation {
68
+ readonly signalId: string;
69
+ }
70
+ export interface BaselineComparison {
71
+ readonly current: ReadonlyArray<CurrentViolationSnapshot>;
72
+ readonly tolerated: ReadonlyArray<CurrentViolationSnapshot>;
73
+ readonly newViolations: ReadonlyArray<CurrentViolationSnapshot>;
74
+ readonly paidDebt: ReadonlyArray<PaidDebtViolation>;
75
+ }
76
+ interface BaselineSignalIdentityOptions {
77
+ readonly canonicalSignalId?: (signalId: string) => string | undefined;
78
+ }
79
+ export declare const createBaseline: (opts: {
80
+ readonly baselineSha: string;
81
+ readonly createdAt?: string;
82
+ readonly vectorId?: string;
83
+ readonly vectorSource?: string;
84
+ readonly vectorTrustBoundary?: "explicit-path" | "repo-local" | "organization-standard-fallback" | "built-in-defaults";
85
+ readonly observerConfigHash?: string;
86
+ readonly violations: ReadonlyArray<HardGateViolation>;
87
+ } & BaselineSignalIdentityOptions) => Baseline;
88
+ export declare const compareToBaseline: (baseline: Baseline, violations: ReadonlyArray<HardGateViolation>, options?: BaselineSignalIdentityOptions) => BaselineComparison;
89
+ export declare const baselineViolationCount: (baseline: Baseline) => number;
90
+ export {};
91
+ //# sourceMappingURL=baseline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,QAAA,MAAM,uBAAuB;;;;;EAK3B,CAAA;AACF,KAAK,iBAAiB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAE5D,QAAA,MAAM,cAAc;;;;;;;;;;;;;;EAclB,CAAA;AACF,MAAM,MAAM,QAAQ,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEjD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;kDAAuC,CAAA;AAClE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;CAA2C,CAAA;AAE1E,UAAU,wBAAyB,SAAQ,iBAAiB;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAChC;AAED,UAAU,iBAAkB,SAAQ,iBAAiB;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAA;IACzD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAA;IAC3D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAA;IAC/D,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACpD;AAED,UAAU,6BAA6B;IACrC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;CACtE;AAED,eAAO,MAAM,cAAc,GAAI,MAAM;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EACzB,eAAe,GACf,YAAY,GACZ,gCAAgC,GAChC,mBAAmB,CAAA;IACvB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACtD,GAAG,6BAA6B,KAAG,QA0BnC,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,UAAU,QAAQ,EAClB,YAAY,aAAa,CAAC,iBAAiB,CAAC,EAC5C,UAAU,6BAA6B,KACtC,kBAYF,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,UAAU,QAAQ,KAAG,MACgC,CAAA"}
@@ -0,0 +1,139 @@
1
+ import { Schema } from "effect";
2
+ import { diagnosticHashOf } from "./diagnostic.js";
3
+ const baselineViolationSchema = Schema.Struct({
4
+ file: Schema.String,
5
+ line: Schema.optional(Schema.Number),
6
+ hash: Schema.String,
7
+ detail: Schema.String,
8
+ });
9
+ const baselineSchema = Schema.Struct({
10
+ schema_version: Schema.Literal(1),
11
+ baseline_sha: Schema.String,
12
+ created_at: Schema.String,
13
+ vector_id: Schema.optional(Schema.String),
14
+ vector_source: Schema.optional(Schema.String),
15
+ vector_trust_boundary: Schema.optional(Schema.Literal("explicit-path", "repo-local", "organization-standard-fallback", "built-in-defaults")),
16
+ observer_config_hash: Schema.optional(Schema.String),
17
+ violations: Schema.Record({ key: Schema.String, value: Schema.Array(baselineViolationSchema) }),
18
+ });
19
+ export const decodeBaseline = Schema.decodeUnknown(baselineSchema);
20
+ export const decodeBaselineSync = Schema.decodeUnknownSync(baselineSchema);
21
+ export const createBaseline = (opts) => {
22
+ const grouped = {};
23
+ for (const violation of dedupeCurrentViolations(opts.violations)) {
24
+ const signalId = canonicalBaselineSignalId(violation.signalId, opts);
25
+ grouped[signalId] ??= [];
26
+ grouped[signalId].push(toBaselineViolation(violation));
27
+ }
28
+ for (const signalId of Object.keys(grouped)) {
29
+ grouped[signalId] = sortBaselineViolations(grouped[signalId]);
30
+ }
31
+ return decodeBaselineSync({
32
+ schema_version: 1,
33
+ baseline_sha: opts.baselineSha,
34
+ created_at: opts.createdAt ?? new Date().toISOString(),
35
+ ...(opts.vectorId !== undefined ? { vector_id: opts.vectorId } : {}),
36
+ ...(opts.vectorSource !== undefined ? { vector_source: opts.vectorSource } : {}),
37
+ ...(opts.vectorTrustBoundary !== undefined
38
+ ? { vector_trust_boundary: opts.vectorTrustBoundary }
39
+ : {}),
40
+ ...(opts.observerConfigHash !== undefined
41
+ ? { observer_config_hash: opts.observerConfigHash }
42
+ : {}),
43
+ violations: grouped,
44
+ });
45
+ };
46
+ export const compareToBaseline = (baseline, violations, options) => {
47
+ const current = dedupeCurrentViolations(violations, options);
48
+ const baselineEntries = flattenBaseline(baseline, options);
49
+ const baselineKeys = new Set(baselineEntries.map(baselineKeyOf));
50
+ const currentKeys = new Set(current.map(currentKeyOf));
51
+ return {
52
+ current,
53
+ tolerated: current.filter((violation) => baselineKeys.has(currentKeyOf(violation))),
54
+ newViolations: current.filter((violation) => !baselineKeys.has(currentKeyOf(violation))),
55
+ paidDebt: baselineEntries.filter((violation) => !currentKeys.has(baselineKeyOf(violation))),
56
+ };
57
+ };
58
+ export const baselineViolationCount = (baseline) => Object.values(baseline.violations).reduce((sum, violations) => sum + violations.length, 0);
59
+ const dedupeCurrentViolations = (violations, options) => {
60
+ const seen = new Set();
61
+ const snapshots = [];
62
+ for (const violation of violations) {
63
+ const snapshot = snapshotViolation(violation, options);
64
+ const key = currentKeyOf(snapshot);
65
+ if (seen.has(key))
66
+ continue;
67
+ seen.add(key);
68
+ snapshots.push(snapshot);
69
+ }
70
+ return sortCurrentViolations(snapshots);
71
+ };
72
+ const snapshotViolation = (violation, options) => {
73
+ const hash = diagnosticHashOf(violation.diagnostic);
74
+ if (hash === undefined) {
75
+ throw new Error(`Hard-gate violation ${violation.signalId} is missing Diagnostic.data.hash.`);
76
+ }
77
+ const file = diagnosticFileOf(violation.diagnostic);
78
+ if (file === undefined) {
79
+ throw new Error(`Hard-gate violation ${violation.signalId} is missing a file location.`);
80
+ }
81
+ return {
82
+ signalId: canonicalBaselineSignalId(violation.signalId, options),
83
+ category: violation.category,
84
+ diagnostic: violation.diagnostic,
85
+ file,
86
+ ...(violation.diagnostic.location?.line !== undefined
87
+ ? { line: violation.diagnostic.location.line }
88
+ : {}),
89
+ hash,
90
+ detail: violation.diagnostic.message,
91
+ };
92
+ };
93
+ const diagnosticFileOf = (diagnostic) => {
94
+ const locationFile = diagnostic.location?.file;
95
+ if (locationFile !== undefined)
96
+ return locationFile;
97
+ const dataFile = diagnostic.data?.file;
98
+ return typeof dataFile === "string" ? dataFile : undefined;
99
+ };
100
+ const flattenBaseline = (baseline, options) => Object.entries(baseline.violations)
101
+ .flatMap(([signalId, violations]) => violations.map((violation) => ({
102
+ signalId: canonicalBaselineSignalId(signalId, options),
103
+ ...violation,
104
+ })))
105
+ .sort((a, b) => compareViolationTuple(tupleOfIdentifiedViolation(a), tupleOfIdentifiedViolation(b)));
106
+ const canonicalBaselineSignalId = (signalId, options) => options?.canonicalSignalId?.(signalId) ?? signalId;
107
+ const toBaselineViolation = (violation) => ({
108
+ file: violation.file,
109
+ ...(violation.line !== undefined ? { line: violation.line } : {}),
110
+ hash: violation.hash,
111
+ detail: violation.detail,
112
+ });
113
+ const currentKeyOf = (violation) => `${violation.signalId}:${violation.hash}`;
114
+ const baselineKeyOf = (violation) => `${violation.signalId}:${violation.hash}`;
115
+ const tupleOfIdentifiedViolation = (violation) => [
116
+ violation.signalId,
117
+ violation.hash,
118
+ violation.file,
119
+ violation.line ?? -1,
120
+ ];
121
+ const tupleOfBaselineViolation = (violation) => [
122
+ "",
123
+ violation.hash,
124
+ violation.file,
125
+ violation.line ?? -1,
126
+ ];
127
+ const sortCurrentViolations = (violations) => sortViolations(violations, tupleOfIdentifiedViolation);
128
+ const sortBaselineViolations = (violations) => sortViolations(violations, tupleOfBaselineViolation);
129
+ const sortViolations = (violations, sortTupleOf) => [...violations].sort((a, b) => compareViolationTuple(sortTupleOf(a), sortTupleOf(b)));
130
+ const compareViolationTuple = (a, b) => {
131
+ if (a[0] !== b[0])
132
+ return a[0] < b[0] ? -1 : 1;
133
+ if (a[1] !== b[1])
134
+ return a[1] < b[1] ? -1 : 1;
135
+ if (a[2] !== b[2])
136
+ return a[2] < b[2] ? -1 : 1;
137
+ return a[3] - b[3];
138
+ };
139
+ //# sourceMappingURL=baseline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Diagnostic } from "./diagnostic.js";
2
+ export interface PulsarAllowBypass {
3
+ readonly ticket: string;
4
+ readonly until: string;
5
+ readonly reason: string;
6
+ readonly line: number;
7
+ readonly raw: string;
8
+ readonly status: "active" | "expired";
9
+ readonly hash: string;
10
+ }
11
+ export declare const parseBypasses: (sourceText: string, now?: Date) => ReadonlyArray<PulsarAllowBypass>;
12
+ export declare const hasSuppressingBypass: (bypasses: ReadonlyArray<PulsarAllowBypass>) => boolean;
13
+ export declare const toExpiredBypassDiagnostic: (signalId: string, file: string, bypass: PulsarAllowBypass) => Diagnostic;
14
+ //# sourceMappingURL=bypass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bypass.d.ts","sourceRoot":"","sources":["../src/bypass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAID,eAAO,MAAM,aAAa,GACxB,YAAY,MAAM,EAClB,MAAK,IAAiB,KACrB,aAAa,CAAC,iBAAiB,CA0BjC,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,UAAU,aAAa,CAAC,iBAAiB,CAAC,KACzC,OAA+F,CAAA;AAElG,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,EAChB,MAAM,MAAM,EACZ,QAAQ,iBAAiB,KACxB,UAYD,CAAA"}
package/dist/bypass.js ADDED
@@ -0,0 +1,47 @@
1
+ import { computeDiagnosticHash } from "./diagnostic.js";
2
+ const TASTE_ALLOW_PATTERN = /^\s*\/\/\s*pulsar-allow\s+(\S+)\s+until:(\S+)\s+(.+?)\s*$/;
3
+ export const parseBypasses = (sourceText, now = new Date()) => {
4
+ const bypasses = [];
5
+ for (const [index, rawLine] of sourceText.split(/\r?\n/).entries()) {
6
+ const match = TASTE_ALLOW_PATTERN.exec(rawLine);
7
+ if (match === null)
8
+ continue;
9
+ const ticket = match[1];
10
+ const until = match[2];
11
+ const reason = match[3];
12
+ const expiresAt = parseUntil(until);
13
+ const status = expiresAt === undefined || expiresAt.getTime() < now.getTime()
14
+ ? "expired"
15
+ : "active";
16
+ bypasses.push({
17
+ ticket,
18
+ until,
19
+ reason,
20
+ line: index + 1,
21
+ raw: rawLine.trim(),
22
+ status,
23
+ hash: computeDiagnosticHash(`${ticket}|${until}|${reason}|${rawLine.trim()}`),
24
+ });
25
+ }
26
+ return bypasses;
27
+ };
28
+ export const hasSuppressingBypass = (bypasses) => bypasses.some((bypass) => bypass.status === "active" || bypass.status === "expired");
29
+ export const toExpiredBypassDiagnostic = (signalId, file, bypass) => ({
30
+ severity: "block",
31
+ message: `Expired pulsar-allow ${bypass.ticket} (until ${bypass.until}): ${bypass.reason}`,
32
+ location: { file, line: bypass.line },
33
+ data: {
34
+ hash: bypass.hash,
35
+ signalId,
36
+ ticket: bypass.ticket,
37
+ until: bypass.until,
38
+ reason: bypass.reason,
39
+ kind: "pulsar-allow-expired",
40
+ },
41
+ });
42
+ const parseUntil = (raw) => {
43
+ const value = /^\d{4}-\d{2}-\d{2}$/.test(raw) ? `${raw}T23:59:59.999Z` : raw;
44
+ const parsed = new Date(value);
45
+ return Number.isNaN(parsed.getTime()) ? undefined : parsed;
46
+ };
47
+ //# sourceMappingURL=bypass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bypass.js","sourceRoot":"","sources":["../src/bypass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAYvD,MAAM,mBAAmB,GAAG,2DAA2D,CAAA;AAEvF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,UAAkB,EAClB,MAAY,IAAI,IAAI,EAAE,EACY,EAAE;IACpC,MAAM,QAAQ,GAA6B,EAAE,CAAA;IAC7C,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/C,IAAI,KAAK,KAAK,IAAI;YAAE,SAAQ;QAE5B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;QACxB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QACnC,MAAM,MAAM,GACV,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;YAC5D,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ,CAAA;QAEd,QAAQ,CAAC,IAAI,CAAC;YACZ,MAAM;YACN,KAAK;YACL,MAAM;YACN,IAAI,EAAE,KAAK,GAAG,CAAC;YACf,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE;YACnB,MAAM;YACN,IAAI,EAAE,qBAAqB,CAAC,GAAG,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SAC9E,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,QAA0C,EACjC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAA;AAElG,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,QAAgB,EAChB,IAAY,EACZ,MAAyB,EACb,EAAE,CAAC,CAAC;IAChB,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,wBAAwB,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,MAAM,EAAE;IAC1F,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;IACrC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ;QACR,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,sBAAsB;KAC7B;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAoB,EAAE;IACnD,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAA;IAC5E,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;AAC5D,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { Layer } from "effect";
2
+ import { SignalCacheTag, type CacheConfig } from "./cache.js";
3
+ export declare const DiskBackedCacheLayer: (config?: CacheConfig) => Layer.Layer<SignalCacheTag>;
4
+ //# sourceMappingURL=cache-disk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-disk.d.ts","sourceRoot":"","sources":["../src/cache-disk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,EAAU,MAAM,QAAQ,CAAA;AAC9C,OAAO,EAEL,cAAc,EAId,KAAK,WAAW,EAMjB,MAAM,YAAY,CAAA;AAuRnB,eAAO,MAAM,oBAAoB,GAAI,SAAS,WAAW,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAC3B,CAAA"}