@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,101 @@
1
+ import { Schema } from "effect";
2
+ import { clampWeight } from "./proposal-utils.js";
3
+ export const RevealedPreferenceOutcome = Schema.Literal("accepted", "revised", "reverted");
4
+ export const RevealedPreferenceSample = Schema.Struct({
5
+ id: Schema.String,
6
+ outcome: RevealedPreferenceOutcome,
7
+ signal_scores: Schema.Record({ key: Schema.String, value: Schema.Number }),
8
+ confidence: Schema.optionalWith(Schema.Number.pipe(Schema.between(0, 1)), {
9
+ default: () => 1,
10
+ }),
11
+ });
12
+ export const MINIMUM_REVEALED_PREFERENCE_SAMPLES = 24;
13
+ export const inferRevealedPreferencePairwise = (samples, prior = {}) => {
14
+ const accepted = samples.filter((sample) => sample.outcome === "accepted");
15
+ const rejected = samples.filter((sample) => sample.outcome !== "accepted");
16
+ const signalIds = collectSignalIds(samples);
17
+ const evidence = new Map();
18
+ for (const kept of accepted) {
19
+ for (const discarded of rejected) {
20
+ const pairConfidence = kept.confidence * discarded.confidence;
21
+ for (const signalId of signalIds) {
22
+ const keptScore = kept.signal_scores[signalId] ?? 0;
23
+ const discardedScore = discarded.signal_scores[signalId] ?? 0;
24
+ const diff = keptScore - discardedScore;
25
+ if (Math.abs(diff) < 0.05)
26
+ continue;
27
+ const entry = evidence.get(signalId) ?? { signed: 0, magnitude: 0 };
28
+ entry.signed += diff * pairConfidence;
29
+ entry.magnitude += Math.abs(diff) * pairConfidence;
30
+ evidence.set(signalId, entry);
31
+ }
32
+ }
33
+ }
34
+ return {
35
+ algorithm: "pairwise",
36
+ sampleCount: samples.length,
37
+ comparedPairs: accepted.length * rejected.length,
38
+ weights: materializeWeights(signalIds, evidence, prior, 0.6),
39
+ support: materializeSupport(signalIds, evidence),
40
+ };
41
+ };
42
+ export const inferRevealedPreferenceFrequency = (samples, prior = {}) => {
43
+ const accepted = samples.filter((sample) => sample.outcome === "accepted");
44
+ const rejected = samples.filter((sample) => sample.outcome !== "accepted");
45
+ const signalIds = collectSignalIds(samples);
46
+ const evidence = new Map();
47
+ for (const signalId of signalIds) {
48
+ const acceptedMean = average(accepted.map((sample) => (sample.signal_scores[signalId] ?? 0) * sample.confidence));
49
+ const rejectedMean = average(rejected.map((sample) => (sample.signal_scores[signalId] ?? 0) * sample.confidence));
50
+ const diff = acceptedMean - rejectedMean;
51
+ evidence.set(signalId, {
52
+ signed: diff,
53
+ magnitude: Math.abs(diff),
54
+ });
55
+ }
56
+ return {
57
+ algorithm: "frequency",
58
+ sampleCount: samples.length,
59
+ comparedPairs: accepted.length * rejected.length,
60
+ weights: materializeWeights(signalIds, evidence, prior, 0.45),
61
+ support: materializeSupport(signalIds, evidence),
62
+ };
63
+ };
64
+ export const inferRevealedPreferencePriorAdjusted = (samples, prior = {}) => {
65
+ const pairwise = inferRevealedPreferencePairwise(samples, prior);
66
+ const blend = Math.min(1, samples.length / MINIMUM_REVEALED_PREFERENCE_SAMPLES);
67
+ const weights = Object.fromEntries(Object.keys(pairwise.weights).map((signalId) => {
68
+ const priorWeight = prior[signalId] ?? 1;
69
+ const observed = pairwise.weights[signalId] ?? 1;
70
+ return [signalId, clampWeight(priorWeight + (observed - priorWeight) * blend)];
71
+ }));
72
+ return {
73
+ algorithm: "prior-adjusted",
74
+ sampleCount: samples.length,
75
+ comparedPairs: pairwise.comparedPairs,
76
+ weights,
77
+ support: pairwise.support,
78
+ };
79
+ };
80
+ const collectSignalIds = (samples) => [...new Set(samples.flatMap((sample) => Object.keys(sample.signal_scores)))].sort((left, right) => left.localeCompare(right));
81
+ const materializeWeights = (signalIds, evidence, prior, multiplier) => Object.fromEntries(signalIds.map((signalId) => {
82
+ const entry = evidence.get(signalId);
83
+ const priorWeight = prior[signalId] ?? 1;
84
+ if (entry === undefined || entry.magnitude === 0) {
85
+ return [signalId, clampWeight(priorWeight)];
86
+ }
87
+ const normalized = entry.signed / entry.magnitude;
88
+ return [signalId, clampWeight(priorWeight + normalized * multiplier)];
89
+ }));
90
+ const materializeSupport = (signalIds, evidence) => Object.fromEntries(signalIds.map((signalId) => {
91
+ const entry = evidence.get(signalId);
92
+ if (entry === undefined || entry.magnitude === 0)
93
+ return [signalId, 0];
94
+ return [signalId, Number((entry.signed / entry.magnitude).toFixed(3))];
95
+ }));
96
+ const average = (values) => {
97
+ if (values.length === 0)
98
+ return 0;
99
+ return values.reduce((sum, value) => sum + value, 0) / values.length;
100
+ };
101
+ //# sourceMappingURL=revealed-preference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revealed-preference.js","sourceRoot":"","sources":["../../src/elicitation/revealed-preference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./presets.js";
2
+ export * from "./elicitation/proposals.js";
3
+ export * from "./elicitation/revealed-preference.js";
4
+ export * from "./elicitation/quiz.js";
5
+ //# sourceMappingURL=elicitation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elicitation.d.ts","sourceRoot":"","sources":["../src/elicitation.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sCAAsC,CAAA;AACpD,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from "./presets.js";
2
+ export * from "./elicitation/proposals.js";
3
+ export * from "./elicitation/revealed-preference.js";
4
+ export * from "./elicitation/quiz.js";
5
+ //# sourceMappingURL=elicitation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../src/elicitation.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sCAAsC,CAAA;AACpD,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { Schema } from "effect";
2
+ import type { SignalKind, Tier } from "./tier.js";
3
+ export declare const EnforcementCeiling: Schema.Array$<Schema.Literal<["hard-gate", "soft-warning", "trend", "dashboard", "review-routing"]>>;
4
+ export type EnforcementCeiling = typeof EnforcementCeiling.Type;
5
+ /**
6
+ * Derive the enforcement ceiling for a (tier, kind) pair as specified
7
+ * by the architecture document's Enforcement Policy Matrix.
8
+ *
9
+ * Signal weights in a pulsar vector adjust sensitivity WITHIN this ceiling.
10
+ * They never lift it.
11
+ */
12
+ export declare const deriveEnforcement: (tier: Tier, kind: SignalKind) => EnforcementCeiling;
13
+ //# sourceMappingURL=enforcement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enforcement.d.ts","sourceRoot":"","sources":["../src/enforcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAWjD,eAAO,MAAM,kBAAkB,sGAAiC,CAAA;AAChE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAA;AAE/D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,IAAI,EACV,MAAM,UAAU,KACf,kBAcF,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { Schema } from "effect";
2
+ const EnforcementLevel = Schema.Literal("hard-gate", "soft-warning", "trend", "dashboard", "review-routing");
3
+ export const EnforcementCeiling = Schema.Array(EnforcementLevel);
4
+ /**
5
+ * Derive the enforcement ceiling for a (tier, kind) pair as specified
6
+ * by the architecture document's Enforcement Policy Matrix.
7
+ *
8
+ * Signal weights in a pulsar vector adjust sensitivity WITHIN this ceiling.
9
+ * They never lift it.
10
+ */
11
+ export const deriveEnforcement = (tier, kind) => {
12
+ if (kind === "compound") {
13
+ if (tier === 1 || tier === 1.5)
14
+ return ["trend", "review-routing", "dashboard"];
15
+ if (tier === 2)
16
+ return ["trend"];
17
+ return [];
18
+ }
19
+ if (kind === "structural") {
20
+ if (tier === 1 || tier === 2)
21
+ return ["hard-gate"];
22
+ return [];
23
+ }
24
+ // legibility
25
+ if (tier === 1 || tier === 2)
26
+ return ["soft-warning", "trend"];
27
+ if (tier === 3)
28
+ return ["soft-warning"];
29
+ return [];
30
+ };
31
+ //# sourceMappingURL=enforcement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enforcement.js","sourceRoot":"","sources":["../src/enforcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CACrC,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,EACX,gBAAgB,CACjB,CAAA;AAGD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAGhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAU,EACV,IAAgB,EACI,EAAE;IACtB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAA;QAC/E,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QAChC,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,WAAW,CAAC,CAAA;QAClD,OAAO,EAAE,CAAA;IACX,CAAC;IACD,aAAa;IACb,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IAC9D,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACvC,OAAO,EAAE,CAAA;AACX,CAAC,CAAA"}
@@ -0,0 +1,132 @@
1
+ import { Schema } from "effect";
2
+ import type { TimeSeriesError } from "./time-series-model.js";
3
+ declare const DuplicateSignalIdError_base: Schema.TaggedErrorClass<DuplicateSignalIdError, "DuplicateSignalIdError", {
4
+ readonly _tag: Schema.tag<"DuplicateSignalIdError">;
5
+ } & {
6
+ id: typeof Schema.String;
7
+ }>;
8
+ export declare class DuplicateSignalIdError extends DuplicateSignalIdError_base {
9
+ }
10
+ declare const MissingDependencyError_base: Schema.TaggedErrorClass<MissingDependencyError, "MissingDependencyError", {
11
+ readonly _tag: Schema.tag<"MissingDependencyError">;
12
+ } & {
13
+ signalId: typeof Schema.String;
14
+ missingInputId: typeof Schema.String;
15
+ }>;
16
+ export declare class MissingDependencyError extends MissingDependencyError_base {
17
+ }
18
+ declare const CycleDetectedError_base: Schema.TaggedErrorClass<CycleDetectedError, "CycleDetectedError", {
19
+ readonly _tag: Schema.tag<"CycleDetectedError">;
20
+ } & {
21
+ chain: Schema.Array$<typeof Schema.String>;
22
+ }>;
23
+ export declare class CycleDetectedError extends CycleDetectedError_base {
24
+ }
25
+ declare const CompositionTooDeepError_base: Schema.TaggedErrorClass<CompositionTooDeepError, "CompositionTooDeepError", {
26
+ readonly _tag: Schema.tag<"CompositionTooDeepError">;
27
+ } & {
28
+ signalId: typeof Schema.String;
29
+ depth: typeof Schema.Number;
30
+ max: typeof Schema.Number;
31
+ }>;
32
+ export declare class CompositionTooDeepError extends CompositionTooDeepError_base {
33
+ }
34
+ declare const UnknownSignalIdError_base: Schema.TaggedErrorClass<UnknownSignalIdError, "UnknownSignalIdError", {
35
+ readonly _tag: Schema.tag<"UnknownSignalIdError">;
36
+ } & {
37
+ id: typeof Schema.String;
38
+ }>;
39
+ export declare class UnknownSignalIdError extends UnknownSignalIdError_base {
40
+ }
41
+ declare const UnknownSignalFactorError_base: Schema.TaggedErrorClass<UnknownSignalFactorError, "UnknownSignalFactorError", {
42
+ readonly _tag: Schema.tag<"UnknownSignalFactorError">;
43
+ } & {
44
+ signalId: typeof Schema.String;
45
+ factorPath: typeof Schema.String;
46
+ }>;
47
+ export declare class UnknownSignalFactorError extends UnknownSignalFactorError_base {
48
+ }
49
+ declare const ConfigValidationError_base: Schema.TaggedErrorClass<ConfigValidationError, "ConfigValidationError", {
50
+ readonly _tag: Schema.tag<"ConfigValidationError">;
51
+ } & {
52
+ signalId: typeof Schema.String;
53
+ message: typeof Schema.String;
54
+ }>;
55
+ export declare class ConfigValidationError extends ConfigValidationError_base {
56
+ }
57
+ declare const ReferenceDataMissingError_base: Schema.TaggedErrorClass<ReferenceDataMissingError, "ReferenceDataMissingError", {
58
+ readonly _tag: Schema.tag<"ReferenceDataMissingError">;
59
+ } & {
60
+ signalId: typeof Schema.String;
61
+ key: typeof Schema.String;
62
+ }>;
63
+ export declare class ReferenceDataMissingError extends ReferenceDataMissingError_base {
64
+ }
65
+ declare const ReferenceDataLoadFailed_base: Schema.TaggedErrorClass<ReferenceDataLoadFailed, "ReferenceDataLoadFailed", {
66
+ readonly _tag: Schema.tag<"ReferenceDataLoadFailed">;
67
+ } & {
68
+ repoPath: typeof Schema.String;
69
+ path: typeof Schema.String;
70
+ message: typeof Schema.String;
71
+ }>;
72
+ export declare class ReferenceDataLoadFailed extends ReferenceDataLoadFailed_base {
73
+ }
74
+ declare const RoutingPatternLoadFailed_base: Schema.TaggedErrorClass<RoutingPatternLoadFailed, "RoutingPatternLoadFailed", {
75
+ readonly _tag: Schema.tag<"RoutingPatternLoadFailed">;
76
+ } & {
77
+ repoPath: typeof Schema.String;
78
+ path: typeof Schema.String;
79
+ message: typeof Schema.String;
80
+ }>;
81
+ export declare class RoutingPatternLoadFailed extends RoutingPatternLoadFailed_base {
82
+ }
83
+ declare const SignalComputeError_base: Schema.TaggedErrorClass<SignalComputeError, "SignalComputeError", {
84
+ readonly _tag: Schema.tag<"SignalComputeError">;
85
+ } & {
86
+ signalId: typeof Schema.String;
87
+ message: typeof Schema.String;
88
+ cause: Schema.optional<typeof Schema.Unknown>;
89
+ }>;
90
+ export declare class SignalComputeError extends SignalComputeError_base {
91
+ }
92
+ declare const WorktreeCreateFailed_base: Schema.TaggedErrorClass<WorktreeCreateFailed, "WorktreeCreateFailed", {
93
+ readonly _tag: Schema.tag<"WorktreeCreateFailed">;
94
+ } & {
95
+ repoPath: typeof Schema.String;
96
+ sha: typeof Schema.String;
97
+ message: typeof Schema.String;
98
+ }>;
99
+ export declare class WorktreeCreateFailed extends WorktreeCreateFailed_base {
100
+ }
101
+ declare const WorktreeRemoveFailed_base: Schema.TaggedErrorClass<WorktreeRemoveFailed, "WorktreeRemoveFailed", {
102
+ readonly _tag: Schema.tag<"WorktreeRemoveFailed">;
103
+ } & {
104
+ worktreePath: typeof Schema.String;
105
+ message: typeof Schema.String;
106
+ }>;
107
+ export declare class WorktreeRemoveFailed extends WorktreeRemoveFailed_base {
108
+ }
109
+ declare const CommitNotFound_base: Schema.TaggedErrorClass<CommitNotFound, "CommitNotFound", {
110
+ readonly _tag: Schema.tag<"CommitNotFound">;
111
+ } & {
112
+ repoPath: typeof Schema.String;
113
+ sha: typeof Schema.String;
114
+ message: typeof Schema.String;
115
+ }>;
116
+ export declare class CommitNotFound extends CommitNotFound_base {
117
+ }
118
+ declare const GitRevListFailed_base: Schema.TaggedErrorClass<GitRevListFailed, "GitRevListFailed", {
119
+ readonly _tag: Schema.tag<"GitRevListFailed">;
120
+ } & {
121
+ repoPath: typeof Schema.String;
122
+ fromSha: typeof Schema.String;
123
+ toSha: typeof Schema.String;
124
+ message: typeof Schema.String;
125
+ }>;
126
+ export declare class GitRevListFailed extends GitRevListFailed_base {
127
+ }
128
+ export type RegistryError = DuplicateSignalIdError | MissingDependencyError | CycleDetectedError | CompositionTooDeepError;
129
+ export type SignalError = UnknownSignalIdError | UnknownSignalFactorError | ConfigValidationError | ReferenceDataMissingError | SignalComputeError;
130
+ export type ScoringEngineError = WorktreeCreateFailed | WorktreeRemoveFailed | CommitNotFound | GitRevListFailed | ReferenceDataLoadFailed | TimeSeriesError;
131
+ export {};
132
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;;;;;;AAE7D,qBAAa,sBAAuB,SAAQ,2BAG3C;CAAG;;;;;;;AAEJ,qBAAa,sBAAuB,SAAQ,2BAM3C;CAAG;;;;;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAGvC;CAAG;;;;;;;;AAEJ,qBAAa,uBAAwB,SAAQ,4BAO5C;CAAG;;;;;;AAEJ,qBAAa,oBAAqB,SAAQ,yBAGzC;CAAG;;;;;;;AAEJ,qBAAa,wBAAyB,SAAQ,6BAM7C;CAAG;;;;;;;AAEJ,qBAAa,qBAAsB,SAAQ,0BAM1C;CAAG;;;;;;;AAEJ,qBAAa,yBAA0B,SAAQ,8BAM9C;CAAG;;;;;;;;AAEJ,qBAAa,uBAAwB,SAAQ,4BAO5C;CAAG;;;;;;;;AAEJ,qBAAa,wBAAyB,SAAQ,6BAO7C;CAAG;;;;;;;;AAEJ,qBAAa,kBAAmB,SAAQ,uBAOvC;CAAG;;;;;;;;AAEJ,qBAAa,oBAAqB,SAAQ,yBAOzC;CAAG;;;;;;;AAEJ,qBAAa,oBAAqB,SAAQ,yBAMzC;CAAG;;;;;;;;AAEJ,qBAAa,cAAe,SAAQ,mBAOnC;CAAG;;;;;;;;;AAEJ,qBAAa,gBAAiB,SAAQ,qBAQrC;CAAG;AAEJ,MAAM,MAAM,aAAa,GACrB,sBAAsB,GACtB,sBAAsB,GACtB,kBAAkB,GAClB,uBAAuB,CAAA;AAE3B,MAAM,MAAM,WAAW,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,qBAAqB,GACrB,yBAAyB,GACzB,kBAAkB,CAAA;AAEtB,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,oBAAoB,GACpB,cAAc,GACd,gBAAgB,GAChB,uBAAuB,GACvB,eAAe,CAAA"}
package/dist/errors.js ADDED
@@ -0,0 +1,76 @@
1
+ import { Schema } from "effect";
2
+ export class DuplicateSignalIdError extends Schema.TaggedError()("DuplicateSignalIdError", { id: Schema.String }) {
3
+ }
4
+ export class MissingDependencyError extends Schema.TaggedError()("MissingDependencyError", {
5
+ signalId: Schema.String,
6
+ missingInputId: Schema.String,
7
+ }) {
8
+ }
9
+ export class CycleDetectedError extends Schema.TaggedError()("CycleDetectedError", { chain: Schema.Array(Schema.String) }) {
10
+ }
11
+ export class CompositionTooDeepError extends Schema.TaggedError()("CompositionTooDeepError", {
12
+ signalId: Schema.String,
13
+ depth: Schema.Number,
14
+ max: Schema.Number,
15
+ }) {
16
+ }
17
+ export class UnknownSignalIdError extends Schema.TaggedError()("UnknownSignalIdError", { id: Schema.String }) {
18
+ }
19
+ export class UnknownSignalFactorError extends Schema.TaggedError()("UnknownSignalFactorError", {
20
+ signalId: Schema.String,
21
+ factorPath: Schema.String,
22
+ }) {
23
+ }
24
+ export class ConfigValidationError extends Schema.TaggedError()("ConfigValidationError", {
25
+ signalId: Schema.String,
26
+ message: Schema.String,
27
+ }) {
28
+ }
29
+ export class ReferenceDataMissingError extends Schema.TaggedError()("ReferenceDataMissingError", {
30
+ signalId: Schema.String,
31
+ key: Schema.String,
32
+ }) {
33
+ }
34
+ export class ReferenceDataLoadFailed extends Schema.TaggedError()("ReferenceDataLoadFailed", {
35
+ repoPath: Schema.String,
36
+ path: Schema.String,
37
+ message: Schema.String,
38
+ }) {
39
+ }
40
+ export class RoutingPatternLoadFailed extends Schema.TaggedError()("RoutingPatternLoadFailed", {
41
+ repoPath: Schema.String,
42
+ path: Schema.String,
43
+ message: Schema.String,
44
+ }) {
45
+ }
46
+ export class SignalComputeError extends Schema.TaggedError()("SignalComputeError", {
47
+ signalId: Schema.String,
48
+ message: Schema.String,
49
+ cause: Schema.optional(Schema.Unknown),
50
+ }) {
51
+ }
52
+ export class WorktreeCreateFailed extends Schema.TaggedError()("WorktreeCreateFailed", {
53
+ repoPath: Schema.String,
54
+ sha: Schema.String,
55
+ message: Schema.String,
56
+ }) {
57
+ }
58
+ export class WorktreeRemoveFailed extends Schema.TaggedError()("WorktreeRemoveFailed", {
59
+ worktreePath: Schema.String,
60
+ message: Schema.String,
61
+ }) {
62
+ }
63
+ export class CommitNotFound extends Schema.TaggedError()("CommitNotFound", {
64
+ repoPath: Schema.String,
65
+ sha: Schema.String,
66
+ message: Schema.String,
67
+ }) {
68
+ }
69
+ export class GitRevListFailed extends Schema.TaggedError()("GitRevListFailed", {
70
+ repoPath: Schema.String,
71
+ fromSha: Schema.String,
72
+ toSha: Schema.String,
73
+ message: Schema.String,
74
+ }) {
75
+ }
76
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CACtF,wBAAwB,EACxB,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CACtB;CAAG;AAEJ,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CACtF,wBAAwB,EACxB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,cAAc,EAAE,MAAM,CAAC,MAAM;CAC9B,CACF;CAAG;AAEJ,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACvC;CAAG;AAEJ,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC,WAAW,EAA2B,CACxF,yBAAyB,EACzB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM;CACnB,CACF;CAAG;AAEJ,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAClF,sBAAsB,EACtB,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CACtB;CAAG;AAEJ,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM;CAC1B,CACF;CAAG;AAEJ,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,EAAyB,CACpF,uBAAuB,EACvB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,WAAW,EAA6B,CAC5F,2BAA2B,EAC3B;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM;CACnB,CACF;CAAG;AAEJ,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC,WAAW,EAA2B,CACxF,yBAAyB,EACzB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;CACvC,CACF;CAAG;AAEJ,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAClF,sBAAsB,EACtB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAClF,sBAAsB,EACtB;IACE,YAAY,EAAE,MAAM,CAAC,MAAM;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CACtE,gBAAgB,EAChB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,EAAoB,CAC1E,kBAAkB,EAClB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG"}
@@ -0,0 +1,38 @@
1
+ import { Context } from "effect";
2
+ import type { SignalFactorDefinition, SignalFactorLedger, SignalFactorLedgerEntry, SignalFactorValue } from "./signal-factor-model.js";
3
+ import type { AnySignal } from "./signal.js";
4
+ import { type PulsarVector, type SignalFactorOverrideMap } from "./vector.js";
5
+ export declare const SIGNAL_FACTOR_POLICY_PRECEDENCE: readonly ["signal-default", "module", "vector"];
6
+ interface SignalFactorPolicyContext {
7
+ readonly signalId: string;
8
+ readonly precedence: typeof SIGNAL_FACTOR_POLICY_PRECEDENCE;
9
+ readonly vectorOverrides: SignalFactorOverrideMap;
10
+ readonly vectorSourceRef?: string;
11
+ }
12
+ declare const SignalFactorPolicyTag_base: Context.TagClass<SignalFactorPolicyTag, "@skastr0/pulsar-core/SignalFactorPolicy", SignalFactorPolicyContext>;
13
+ export declare class SignalFactorPolicyTag extends SignalFactorPolicyTag_base {
14
+ }
15
+ export declare const makeSignalFactorPolicyContext: (signal: AnySignal, vector?: PulsarVector, options?: {
16
+ readonly vectorSourceRef?: string;
17
+ }) => SignalFactorPolicyContext;
18
+ export declare const withConfigFactorLedger: <S extends AnySignal>(signal: S) => S;
19
+ interface FactorDefinitionValidationIssue {
20
+ readonly path: string;
21
+ readonly message: string;
22
+ }
23
+ export declare const validateFactorDefinitions: (definitions: ReadonlyArray<SignalFactorDefinition>) => ReadonlyArray<FactorDefinitionValidationIssue>;
24
+ export declare const assertValidFactorDefinitions: (definitions: ReadonlyArray<SignalFactorDefinition>) => void;
25
+ export declare const makeFactorEntry: (definition: SignalFactorDefinition, value: SignalFactorValue, options?: {
26
+ readonly source?: SignalFactorLedgerEntry["source"];
27
+ readonly affectsScore?: boolean;
28
+ readonly attribution?: SignalFactorLedgerEntry["attribution"];
29
+ }) => SignalFactorLedgerEntry;
30
+ export declare const makeFactorLedger: (signalId: string, entries: ReadonlyArray<SignalFactorLedgerEntry>) => SignalFactorLedger;
31
+ export declare const applyFactorOverrides: (entries: ReadonlyArray<SignalFactorLedgerEntry>, overrides: SignalFactorOverrideMap, options?: {
32
+ readonly sourceRef?: string;
33
+ readonly ruleId?: string;
34
+ }) => ReadonlyArray<SignalFactorLedgerEntry>;
35
+ export declare const applySignalFactorPolicy: (ledger: SignalFactorLedger, policy: SignalFactorPolicyContext) => SignalFactorLedger;
36
+ export declare const overriddenFactorValue: <Value extends SignalFactorValue>(path: string, defaultValue: Value, overrides: SignalFactorOverrideMap) => Value | SignalFactorValue;
37
+ export {};
38
+ //# sourceMappingURL=factor-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factor-ledger.d.ts","sourceRoot":"","sources":["../src/factor-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EAEvB,iBAAiB,EAClB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EACV,SAAS,EACV,MAAM,aAAa,CAAA;AACpB,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC7B,MAAM,aAAa,CAAA;AAIpB,eAAO,MAAM,+BAA+B,iDAIlC,CAAA;AAEV,UAAU,yBAAyB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,OAAO,+BAA+B,CAAA;IAC3D,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAA;IACjD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC;;AAED,qBAAa,qBAAsB,SAAQ,0BAEU;CAAG;AAExD,eAAO,MAAM,6BAA6B,GACxC,QAAQ,SAAS,EACjB,SAAS,YAAY,EACrB,UAAU;IAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,KAC9C,yBAOD,CAAA;AAEF,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,SAAS,EAAE,QAAQ,CAAC,KAAG,CAuBvE,CAAA;AAwED,UAAU,+BAA+B;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,yBAAyB,GACpC,aAAa,aAAa,CAAC,sBAAsB,CAAC,KACjD,aAAa,CAAC,+BAA+B,CAsB/C,CAAA;AAED,eAAO,MAAM,4BAA4B,GACvC,aAAa,aAAa,CAAC,sBAAsB,CAAC,KACjD,IAKF,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,YAAY,sBAAsB,EAClC,OAAO,iBAAiB,EACxB,UAAU;IACR,QAAQ,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IACnD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAA;CAC9D,KACA,uBAQD,CAAA;AAEF,eAAO,MAAM,gBAAgB,GAC3B,UAAU,MAAM,EAChB,SAAS,aAAa,CAAC,uBAAuB,CAAC,KAC9C,kBAGD,CAAA;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,aAAa,CAAC,uBAAuB,CAAC,EAC/C,WAAW,uBAAuB,EAClC,UAAU;IACR,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACA,aAAa,CAAC,uBAAuB,CA4BpC,CAAA;AAEJ,eAAO,MAAM,uBAAuB,GAClC,QAAQ,kBAAkB,EAC1B,QAAQ,yBAAyB,KAChC,kBAKD,CAAA;AAEF,eAAO,MAAM,qBAAqB,GAAI,KAAK,SAAS,iBAAiB,EACnE,MAAM,MAAM,EACZ,cAAc,KAAK,EACnB,WAAW,uBAAuB,KACjC,KAAK,GAAG,iBACgE,CAAA"}
@@ -0,0 +1,184 @@
1
+ import { Context } from "effect";
2
+ import { factorOverridesOf, } from "./vector.js";
3
+ const FACTOR_PATH_PATTERN = /^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/;
4
+ export const SIGNAL_FACTOR_POLICY_PRECEDENCE = [
5
+ "signal-default",
6
+ "module",
7
+ "vector",
8
+ ];
9
+ export class SignalFactorPolicyTag extends Context.Tag("@skastr0/pulsar-core/SignalFactorPolicy")() {
10
+ }
11
+ export const makeSignalFactorPolicyContext = (signal, vector, options) => ({
12
+ signalId: signal.id,
13
+ precedence: SIGNAL_FACTOR_POLICY_PRECEDENCE,
14
+ vectorOverrides: factorOverridesOf(signal, vector),
15
+ ...(options?.vectorSourceRef !== undefined
16
+ ? { vectorSourceRef: options.vectorSourceRef }
17
+ : {}),
18
+ });
19
+ export const withConfigFactorLedger = (signal) => {
20
+ const configDefinitions = configFactorDefinitions(signal);
21
+ if (configDefinitions.length === 0)
22
+ return signal;
23
+ const existingDefinitions = signal.factorDefinitions ?? [];
24
+ const existingPaths = new Set(existingDefinitions.map((definition) => definition.path));
25
+ const extraDefinitions = configDefinitions.filter((definition) => !existingPaths.has(definition.path));
26
+ if (extraDefinitions.length === 0)
27
+ return signal;
28
+ return {
29
+ ...signal,
30
+ factorDefinitions: [...existingDefinitions, ...extraDefinitions],
31
+ factorLedger: (output) => {
32
+ const existingLedger = signal.factorLedger?.(output);
33
+ return makeFactorLedger(signal.id, [
34
+ ...(existingLedger?.entries ?? []),
35
+ ...extraDefinitions.map((definition) => makeFactorEntry(definition, definition.defaultValue ?? null, {
36
+ source: "signal-default",
37
+ })),
38
+ ]);
39
+ },
40
+ };
41
+ };
42
+ const configFactorDefinitions = (signal) => {
43
+ const config = signal.defaultConfig;
44
+ if (config === null || typeof config !== "object" || Array.isArray(config))
45
+ return [];
46
+ return Object.entries(config)
47
+ .flatMap(([key, value]) => {
48
+ const factorValue = toSignalFactorValue(value);
49
+ if (factorValue === undefined)
50
+ return [];
51
+ return [{
52
+ path: `config.${normalizeFactorPathSegment(key)}`,
53
+ title: `Config ${key.replaceAll("_", " ")}`,
54
+ valueKind: signalFactorValueKind(factorValue),
55
+ scoreRole: configScoreRole(key, factorValue),
56
+ defaultValue: factorValue,
57
+ }];
58
+ });
59
+ };
60
+ const normalizeFactorPathSegment = (value) => value
61
+ .replace(/[A-Z]/g, (match) => `_${match.toLowerCase()}`)
62
+ .replace(/[^a-zA-Z0-9._-]+/g, "_")
63
+ .replace(/^_+|_+$/g, "")
64
+ .toLowerCase();
65
+ const configScoreRole = (key, value) => {
66
+ if (typeof value === "number")
67
+ return key.includes("weight") ? "weight" : "threshold";
68
+ if (typeof value === "boolean")
69
+ return "threshold";
70
+ return "metadata";
71
+ };
72
+ const signalFactorValueKind = (value) => {
73
+ if (value === null)
74
+ return "null";
75
+ if (Array.isArray(value))
76
+ return "array";
77
+ if (typeof value === "object")
78
+ return "object";
79
+ if (typeof value === "string")
80
+ return "string";
81
+ if (typeof value === "number")
82
+ return "number";
83
+ return "boolean";
84
+ };
85
+ const toSignalFactorValue = (value) => {
86
+ if (value === null ||
87
+ typeof value === "string" ||
88
+ typeof value === "number" ||
89
+ typeof value === "boolean") {
90
+ return value;
91
+ }
92
+ if (Array.isArray(value)) {
93
+ const items = value.map(toSignalFactorValue);
94
+ return items.every((item) => item !== undefined)
95
+ ? items
96
+ : undefined;
97
+ }
98
+ if (typeof value === "object") {
99
+ const entries = Object.entries(value)
100
+ .map(([key, item]) => [key, toSignalFactorValue(item)]);
101
+ if (!entries.every((entry) => entry[1] !== undefined)) {
102
+ return undefined;
103
+ }
104
+ return Object.fromEntries(entries);
105
+ }
106
+ return undefined;
107
+ };
108
+ export const validateFactorDefinitions = (definitions) => {
109
+ const issues = [];
110
+ const seen = new Set();
111
+ for (const definition of definitions) {
112
+ if (!FACTOR_PATH_PATTERN.test(definition.path)) {
113
+ issues.push({
114
+ path: definition.path,
115
+ message: "Factor paths must be stable lowercase dot/underscore/hyphen paths.",
116
+ });
117
+ }
118
+ if (seen.has(definition.path)) {
119
+ issues.push({
120
+ path: definition.path,
121
+ message: "Factor path is declared more than once.",
122
+ });
123
+ }
124
+ seen.add(definition.path);
125
+ }
126
+ return issues;
127
+ };
128
+ export const assertValidFactorDefinitions = (definitions) => {
129
+ const issues = validateFactorDefinitions(definitions);
130
+ if (issues.length === 0)
131
+ return;
132
+ const detail = issues.map((issue) => `${issue.path}: ${issue.message}`).join("; ");
133
+ throw new Error(`Invalid signal factor definitions: ${detail}`);
134
+ };
135
+ export const makeFactorEntry = (definition, value, options) => ({
136
+ path: definition.path,
137
+ title: definition.title,
138
+ scoreRole: definition.scoreRole,
139
+ value,
140
+ source: options?.source ?? "computed",
141
+ affectsScore: options?.affectsScore ?? definition.scoreRole !== "metadata",
142
+ ...(options?.attribution !== undefined ? { attribution: options.attribution } : {}),
143
+ });
144
+ export const makeFactorLedger = (signalId, entries) => ({
145
+ signalId,
146
+ entries: [...entries].sort((left, right) => left.path.localeCompare(right.path)),
147
+ });
148
+ export const applyFactorOverrides = (entries, overrides, options) => entries.map((entry) => {
149
+ if (!Object.hasOwn(overrides, entry.path))
150
+ return entry;
151
+ const nextValue = overrides[entry.path] ?? null;
152
+ if (entry.source === "vector" && Object.is(entry.value, nextValue)) {
153
+ return entry;
154
+ }
155
+ const ruleId = options?.ruleId ?? "vector.factor-override";
156
+ const mutation = {
157
+ path: entry.path,
158
+ source: "vector",
159
+ action: entry.source === "module" ? "override-module-factor" : "override-factor",
160
+ before: entry.value,
161
+ after: nextValue,
162
+ ruleId,
163
+ ...(options?.sourceRef !== undefined ? { sourceRef: options.sourceRef } : {}),
164
+ };
165
+ return {
166
+ ...entry,
167
+ value: nextValue,
168
+ source: "vector",
169
+ attribution: {
170
+ ...entry.attribution,
171
+ ruleId,
172
+ ...(mutation.sourceRef !== undefined ? { sourceRef: mutation.sourceRef } : {}),
173
+ },
174
+ mutations: [...(entry.mutations ?? []), mutation],
175
+ };
176
+ });
177
+ export const applySignalFactorPolicy = (ledger, policy) => ({
178
+ signalId: ledger.signalId,
179
+ entries: applyFactorOverrides(ledger.entries, policy.vectorOverrides, {
180
+ ...(policy.vectorSourceRef !== undefined ? { sourceRef: policy.vectorSourceRef } : {}),
181
+ }),
182
+ });
183
+ export const overriddenFactorValue = (path, defaultValue, overrides) => Object.hasOwn(overrides, path) ? (overrides[path] ?? null) : defaultValue;
184
+ //# sourceMappingURL=factor-ledger.js.map