@lucern/graph-primitives 1.0.28 → 1.0.30

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 (319) hide show
  1. package/dist/{beliefDecay-DZ6tkLYq.d.ts → beliefDecay-BmkEk5OJ.d.ts} +3 -3
  2. package/dist/beliefDecay.d.ts +1 -1
  3. package/dist/beliefDecay.js +448 -314
  4. package/dist/beliefDecay.js.map +1 -1
  5. package/dist/{beliefEvidenceLinks-CWOXxxJg.d.ts → beliefEvidenceLinks-BzfjON_6.d.ts} +13 -13
  6. package/dist/beliefEvidenceLinks.d.ts +1 -1
  7. package/dist/beliefEvidenceLinks.js +843 -624
  8. package/dist/beliefEvidenceLinks.js.map +1 -1
  9. package/dist/beliefEvidenceLinks.operational.d.ts +7 -5
  10. package/dist/beliefEvidenceLinks.operational.js +91 -18
  11. package/dist/beliefEvidenceLinks.operational.js.map +1 -1
  12. package/dist/beliefLifecycle.js.map +1 -1
  13. package/dist/confidencePropagationDispatch.d.ts +28 -27
  14. package/dist/confidencePropagationDispatch.js +157 -99
  15. package/dist/confidencePropagationDispatch.js.map +1 -1
  16. package/dist/{contradictions-51VLsESq.d.ts → contradictions-BATPuZTL.d.ts} +10 -10
  17. package/dist/contradictions.d.ts +1 -1
  18. package/dist/contradictions.js +398 -228
  19. package/dist/contradictions.js.map +1 -1
  20. package/dist/convex.d.ts +65 -30
  21. package/dist/convex.js +7 -3
  22. package/dist/convex.js.map +1 -1
  23. package/dist/debug.js.map +1 -1
  24. package/dist/edgeValidation.js +293 -85
  25. package/dist/edgeValidation.js.map +1 -1
  26. package/dist/edges/contains.d.ts +1 -1
  27. package/dist/edges/contains.js.map +1 -1
  28. package/dist/edges/contradicts.d.ts +1 -1
  29. package/dist/edges/contradicts.js.map +1 -1
  30. package/dist/edges/{dependsOn.d.ts → depends-on.d.ts} +1 -1
  31. package/dist/edges/{dependsOn.js → depends-on.js} +4 -4
  32. package/dist/edges/depends-on.js.map +1 -0
  33. package/dist/edges/{derivedFrom.d.ts → derived-from.d.ts} +1 -1
  34. package/dist/edges/{derivedFrom.js → derived-from.js} +3 -3
  35. package/dist/edges/derived-from.js.map +1 -0
  36. package/dist/edges/elaborates.d.ts +1 -1
  37. package/dist/edges/elaborates.js.map +1 -1
  38. package/dist/edges/index.d.ts +7 -3
  39. package/dist/edges/index.js +7 -4
  40. package/dist/edges/index.js.map +1 -1
  41. package/dist/edges/informs.d.ts +1 -1
  42. package/dist/edges/informs.js.map +1 -1
  43. package/dist/edges/{propagationTypes.d.ts → propagation-types.d.ts} +14 -14
  44. package/dist/edges/{propagationTypes.js → propagation-types.js} +3 -3
  45. package/dist/edges/propagation-types.js.map +1 -0
  46. package/dist/edges/refutes.d.ts +1 -1
  47. package/dist/edges/refutes.js.map +1 -1
  48. package/dist/edges/supports.d.ts +1 -1
  49. package/dist/edges/supports.js.map +1 -1
  50. package/dist/edges/tests.d.ts +1 -1
  51. package/dist/edges/tests.js.map +1 -1
  52. package/dist/edges/utils.d.ts +1 -1
  53. package/dist/edges/utils.js.map +1 -1
  54. package/dist/embeddingTrigger.d.ts +14 -6
  55. package/dist/embeddingTrigger.js +11 -14
  56. package/dist/embeddingTrigger.js.map +1 -1
  57. package/dist/{entityBridge-DMaKooYn.d.ts → entityBridge-BhVDM3pc.d.ts} +5 -5
  58. package/dist/entityBridge.d.ts +1 -1
  59. package/dist/entityBridge.js +602 -225
  60. package/dist/entityBridge.js.map +1 -1
  61. package/dist/entityCanonicalMatch.d.ts +14 -12
  62. package/dist/entityCanonicalMatch.js.map +1 -1
  63. package/dist/{entityLifecycle-CvgSK5FV.d.ts → entityLifecycle-BsfCz9pS.d.ts} +5 -9
  64. package/dist/entityLifecycle.d.ts +1 -1
  65. package/dist/entityLifecycle.js +857 -515
  66. package/dist/entityLifecycle.js.map +1 -1
  67. package/dist/{entityValidation-KLZ_Xl2D.d.ts → entityValidation-B1yNEHJx.d.ts} +7 -6
  68. package/dist/entityValidation.d.ts +3 -1
  69. package/dist/entityValidation.js +60 -8
  70. package/dist/entityValidation.js.map +1 -1
  71. package/dist/{epistemicAnswers-C5ib4z6_.d.ts → epistemicAnswers-f47YMu9U.d.ts} +6 -6
  72. package/dist/epistemicAnswers.d.ts +1 -1
  73. package/dist/epistemicAnswers.js +587 -545
  74. package/dist/epistemicAnswers.js.map +1 -1
  75. package/dist/epistemicBeliefs.admin.d.ts +8 -8
  76. package/dist/epistemicBeliefs.admin.js +366 -203
  77. package/dist/epistemicBeliefs.admin.js.map +1 -1
  78. package/dist/epistemicBeliefs.backfills.d.ts +8 -8
  79. package/dist/epistemicBeliefs.backfills.js +655 -308
  80. package/dist/epistemicBeliefs.backfills.js.map +1 -1
  81. package/dist/epistemicBeliefs.confidence.d.ts +19 -14
  82. package/dist/epistemicBeliefs.confidence.js +634 -423
  83. package/dist/epistemicBeliefs.confidence.js.map +1 -1
  84. package/dist/epistemicBeliefs.core.d.ts +6 -6
  85. package/dist/epistemicBeliefs.core.js +719 -411
  86. package/dist/epistemicBeliefs.core.js.map +1 -1
  87. package/dist/epistemicBeliefs.d.ts +11 -8
  88. package/dist/epistemicBeliefs.forkEvidence.d.ts +2 -0
  89. package/dist/epistemicBeliefs.forkEvidence.js +8 -28
  90. package/dist/epistemicBeliefs.forkEvidence.js.map +1 -1
  91. package/dist/epistemicBeliefs.helpers.d.ts +69 -74
  92. package/dist/epistemicBeliefs.helpers.js +359 -248
  93. package/dist/epistemicBeliefs.helpers.js.map +1 -1
  94. package/dist/epistemicBeliefs.internal.d.ts +5 -5
  95. package/dist/epistemicBeliefs.internal.js +1246 -1044
  96. package/dist/epistemicBeliefs.internal.js.map +1 -1
  97. package/dist/epistemicBeliefs.js +4922 -3608
  98. package/dist/epistemicBeliefs.js.map +1 -1
  99. package/dist/epistemicBeliefs.lifecycle.d.ts +5 -5
  100. package/dist/epistemicBeliefs.lifecycle.js +1137 -818
  101. package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
  102. package/dist/epistemicBeliefs.links.d.ts +7 -7
  103. package/dist/epistemicBeliefs.links.js +408 -307
  104. package/dist/epistemicBeliefs.links.js.map +1 -1
  105. package/dist/epistemicBeliefs.queries.d.ts +4 -4
  106. package/dist/epistemicBeliefs.queries.js +175 -20
  107. package/dist/epistemicBeliefs.queries.js.map +1 -1
  108. package/dist/epistemicBeliefs.topicAnchor.d.ts +6 -4
  109. package/dist/epistemicBeliefs.topicAnchor.js +12 -5
  110. package/dist/epistemicBeliefs.topicAnchor.js.map +1 -1
  111. package/dist/epistemicContracts.d.ts +28 -3
  112. package/dist/epistemicContracts.evaluators.d.ts +2 -0
  113. package/dist/epistemicContracts.evaluators.js +1063 -613
  114. package/dist/epistemicContracts.evaluators.js.map +1 -1
  115. package/dist/epistemicContracts.handlers.d.ts +15 -32
  116. package/dist/epistemicContracts.handlers.js +2086 -1644
  117. package/dist/epistemicContracts.handlers.js.map +1 -1
  118. package/dist/epistemicContracts.js +1131 -672
  119. package/dist/epistemicContracts.js.map +1 -1
  120. package/dist/epistemicContracts.metrics.d.ts +2 -0
  121. package/dist/epistemicContracts.metrics.js +375 -158
  122. package/dist/epistemicContracts.metrics.js.map +1 -1
  123. package/dist/epistemicContracts.types.d.ts +87 -81
  124. package/dist/epistemicEdgeCreation.d.ts +2 -0
  125. package/dist/epistemicEdgeCreation.js +87 -16
  126. package/dist/epistemicEdgeCreation.js.map +1 -1
  127. package/dist/{epistemicEdges-BF-cn4i3.d.ts → epistemicEdges-BGBh0QSP.d.ts} +4 -7
  128. package/dist/epistemicEdges.d.ts +6 -5
  129. package/dist/epistemicEdges.handlers.d.ts +3 -3
  130. package/dist/epistemicEdges.handlers.js +129 -24
  131. package/dist/epistemicEdges.handlers.js.map +1 -1
  132. package/dist/epistemicEdges.helpers.d.ts +6 -4
  133. package/dist/epistemicEdges.helpers.js +37 -2
  134. package/dist/epistemicEdges.helpers.js.map +1 -1
  135. package/dist/epistemicEdges.js +1969 -1205
  136. package/dist/epistemicEdges.js.map +1 -1
  137. package/dist/epistemicEdges.mutations.d.ts +7 -7
  138. package/dist/epistemicEdges.mutations.js +960 -583
  139. package/dist/epistemicEdges.mutations.js.map +1 -1
  140. package/dist/epistemicEdges.queries.d.ts +16 -16
  141. package/dist/epistemicEdges.queries.js +639 -367
  142. package/dist/epistemicEdges.queries.js.map +1 -1
  143. package/dist/epistemicEdges.types.d.ts +10 -8
  144. package/dist/epistemicEvidence.d.ts +4 -1
  145. package/dist/epistemicEvidence.js +937 -536
  146. package/dist/epistemicEvidence.js.map +1 -1
  147. package/dist/epistemicEvidenceHelpers.d.ts +26 -10
  148. package/dist/epistemicEvidenceHelpers.js +239 -200
  149. package/dist/epistemicEvidenceHelpers.js.map +1 -1
  150. package/dist/epistemicEvidenceMutations.d.ts +8 -8
  151. package/dist/epistemicEvidenceMutations.js +844 -696
  152. package/dist/epistemicEvidenceMutations.js.map +1 -1
  153. package/dist/epistemicEvidenceQueries.d.ts +8 -8
  154. package/dist/epistemicEvidenceQueries.js +514 -238
  155. package/dist/epistemicEvidenceQueries.js.map +1 -1
  156. package/dist/epistemicHelpers.d.ts +4 -2
  157. package/dist/epistemicHelpers.js +308 -134
  158. package/dist/epistemicHelpers.js.map +1 -1
  159. package/dist/epistemicInsert.d.ts +16 -4
  160. package/dist/epistemicInsert.js +6 -3
  161. package/dist/epistemicInsert.js.map +1 -1
  162. package/dist/epistemicLayerRules.d.ts +10 -8
  163. package/dist/epistemicLayerRules.js +1 -5
  164. package/dist/epistemicLayerRules.js.map +1 -1
  165. package/dist/{epistemicLinking-CfE00tHJ.d.ts → epistemicLinking-CsCDv2cN.d.ts} +3 -3
  166. package/dist/epistemicLinking.d.ts +1 -1
  167. package/dist/epistemicLinking.js +177 -100
  168. package/dist/epistemicLinking.js.map +1 -1
  169. package/dist/epistemicNodeCreation.d.ts +2 -0
  170. package/dist/epistemicNodeCreation.js +203 -40
  171. package/dist/epistemicNodeCreation.js.map +1 -1
  172. package/dist/{epistemicNodes-BCQxpYx_.d.ts → epistemicNodes-CokAgBHg.d.ts} +3 -3
  173. package/dist/epistemicNodes.d.ts +3 -3
  174. package/dist/epistemicNodes.helpers.d.ts +24 -15
  175. package/dist/epistemicNodes.helpers.js.map +1 -1
  176. package/dist/epistemicNodes.internal.d.ts +6 -6
  177. package/dist/epistemicNodes.internal.js +389 -319
  178. package/dist/epistemicNodes.internal.js.map +1 -1
  179. package/dist/epistemicNodes.js +704 -508
  180. package/dist/epistemicNodes.js.map +1 -1
  181. package/dist/epistemicNodes.mutations.d.ts +6 -6
  182. package/dist/epistemicNodes.mutations.js +564 -467
  183. package/dist/epistemicNodes.mutations.js.map +1 -1
  184. package/dist/epistemicNodes.queries.d.ts +8 -8
  185. package/dist/epistemicNodes.queries.js +311 -314
  186. package/dist/epistemicNodes.queries.js.map +1 -1
  187. package/dist/epistemicNodes.validators.d.ts +2 -2
  188. package/dist/epistemicNodes.validators.js.map +1 -1
  189. package/dist/epistemicQuestions.conviction.d.ts +8 -8
  190. package/dist/epistemicQuestions.conviction.js +665 -484
  191. package/dist/epistemicQuestions.conviction.js.map +1 -1
  192. package/dist/epistemicQuestions.create.d.ts +4 -4
  193. package/dist/epistemicQuestions.create.js +640 -612
  194. package/dist/epistemicQuestions.create.js.map +1 -1
  195. package/dist/epistemicQuestions.d.ts +8 -5
  196. package/dist/epistemicQuestions.evidence.d.ts +2 -2
  197. package/dist/epistemicQuestions.evidence.js +475 -383
  198. package/dist/epistemicQuestions.evidence.js.map +1 -1
  199. package/dist/epistemicQuestions.helpers.d.ts +125 -24
  200. package/dist/epistemicQuestions.helpers.js +240 -209
  201. package/dist/epistemicQuestions.helpers.js.map +1 -1
  202. package/dist/epistemicQuestions.js +3474 -2823
  203. package/dist/epistemicQuestions.js.map +1 -1
  204. package/dist/epistemicQuestions.lifecycle.d.ts +2 -2
  205. package/dist/epistemicQuestions.lifecycle.js +607 -546
  206. package/dist/epistemicQuestions.lifecycle.js.map +1 -1
  207. package/dist/epistemicQuestions.queries.d.ts +12 -7
  208. package/dist/epistemicQuestions.queries.js +305 -244
  209. package/dist/epistemicQuestions.queries.js.map +1 -1
  210. package/dist/epistemicQuestions.sprint.d.ts +2 -2
  211. package/dist/epistemicQuestions.sprint.js +600 -394
  212. package/dist/epistemicQuestions.sprint.js.map +1 -1
  213. package/dist/epistemicQuestions.tail.d.ts +6 -6
  214. package/dist/epistemicQuestions.tail.js +572 -433
  215. package/dist/epistemicQuestions.tail.js.map +1 -1
  216. package/dist/{epistemicSources-dlKj58Jp.d.ts → epistemicSources-DQtaEkWs.d.ts} +4 -4
  217. package/dist/epistemicSources.d.ts +1 -1
  218. package/dist/epistemicSources.js +352 -312
  219. package/dist/epistemicSources.js.map +1 -1
  220. package/dist/evaluators/index.d.ts +8 -6
  221. package/dist/evaluators/index.js +399 -167
  222. package/dist/evaluators/index.js.map +1 -1
  223. package/dist/evaluators/lint-checker-evaluator.d.ts +16 -0
  224. package/dist/evaluators/{lintCheckerEvaluator.js → lint-checker-evaluator.js} +10 -5
  225. package/dist/evaluators/lint-checker-evaluator.js.map +1 -0
  226. package/dist/evaluators/{sentryCheckerEvaluator.d.ts → sentry-checker-evaluator.d.ts} +7 -2
  227. package/dist/evaluators/{sentryCheckerEvaluator.js → sentry-checker-evaluator.js} +3 -3
  228. package/dist/evaluators/sentry-checker-evaluator.js.map +1 -0
  229. package/dist/evaluators/shared.d.ts +2 -2
  230. package/dist/evaluators/shared.js +3 -1
  231. package/dist/evaluators/shared.js.map +1 -1
  232. package/dist/evaluators/{testRunnerEvaluator.d.ts → test-runner-evaluator.d.ts} +6 -1
  233. package/dist/evaluators/{testRunnerEvaluator.js → test-runner-evaluator.js} +6 -4
  234. package/dist/evaluators/test-runner-evaluator.js.map +1 -0
  235. package/dist/evaluators/tsc-checker-evaluator.d.ts +16 -0
  236. package/dist/evaluators/{tscCheckerEvaluator.js → tsc-checker-evaluator.js} +10 -5
  237. package/dist/evaluators/tsc-checker-evaluator.js.map +1 -0
  238. package/dist/graphTypes.js +6 -2
  239. package/dist/graphTypes.js.map +1 -1
  240. package/dist/helpers.d.ts +2 -0
  241. package/dist/helpers.js +313 -93
  242. package/dist/helpers.js.map +1 -1
  243. package/dist/{index-C-Kyd7hD.d.ts → index-DZxyC9Pb.d.ts} +7 -6
  244. package/dist/index.d.ts +87 -83
  245. package/dist/index.js +15677 -10594
  246. package/dist/index.js.map +1 -1
  247. package/dist/invariantEnforcement.d.ts +3 -3
  248. package/dist/invariantEnforcement.js.map +1 -1
  249. package/dist/logicalRoleInference.d.ts +2 -0
  250. package/dist/logicalRoleInference.js +1 -1
  251. package/dist/logicalRoleInference.js.map +1 -1
  252. package/dist/matcherFeedbackUtils.d.ts +2 -2
  253. package/dist/matcherFeedbackUtils.js.map +1 -1
  254. package/dist/{ontology-matching-C6rrz2VP.d.ts → ontology-matching-C-mYFrir.d.ts} +16 -16
  255. package/dist/ontology-matching.d.ts +1 -1
  256. package/dist/{ontologyApproval-CFYmqKmk.d.ts → ontologyApproval-BVt0feJi.d.ts} +10 -10
  257. package/dist/ontologyApproval.d.ts +1 -1
  258. package/dist/ontologyApproval.js +7 -1
  259. package/dist/ontologyApproval.js.map +1 -1
  260. package/dist/ontologyDefinitions.d.ts +14 -24
  261. package/dist/ontologyDefinitions.js +269 -34
  262. package/dist/ontologyDefinitions.js.map +1 -1
  263. package/dist/ontologyHelpers.d.ts +13 -13
  264. package/dist/ontologyHelpers.js.map +1 -1
  265. package/dist/{ontologyRegistry-B67rPJ16.d.ts → ontologyRegistry-CljS-ENv.d.ts} +2 -2
  266. package/dist/ontologyRegistry.d.ts +1 -1
  267. package/dist/ontologyRegistry.js +34 -6
  268. package/dist/ontologyRegistry.js.map +1 -1
  269. package/dist/{projectionReconciliation-jww2fBI0.d.ts → projectionReconciliation-DnrSgHSQ.d.ts} +4 -4
  270. package/dist/projectionReconciliation.d.ts +1 -1
  271. package/dist/projectionReconciliation.js +57 -10
  272. package/dist/projectionReconciliation.js.map +1 -1
  273. package/dist/{projectionStaleness-CmdbpjVK.d.ts → projectionStaleness-C8ImQ2zP.d.ts} +17 -17
  274. package/dist/projectionStaleness.d.ts +1 -1
  275. package/dist/projectionStaleness.js +8 -2
  276. package/dist/projectionStaleness.js.map +1 -1
  277. package/dist/proof-attestation.json +1 -1
  278. package/dist/{questionEvidenceLinks-DFlyPpAj.d.ts → questionEvidenceLinks-_nPRa-LY.d.ts} +10 -10
  279. package/dist/questionEvidenceLinks.d.ts +1 -1
  280. package/dist/questionEvidenceLinks.js +564 -347
  281. package/dist/questionEvidenceLinks.js.map +1 -1
  282. package/dist/{resolverTypes-CC8Ea2E2.d.ts → resolverTypes-BOXPxLET.d.ts} +8 -7
  283. package/dist/resolverTypes.d.ts +4 -2
  284. package/dist/{resolvers-Br1a6eLV.d.ts → resolvers-B1TIBmRO.d.ts} +3 -1
  285. package/dist/resolvers.d.ts +5 -3
  286. package/dist/resolvers.js +121 -77
  287. package/dist/resolvers.js.map +1 -1
  288. package/dist/scopeResolverCompat.d.ts +10 -7
  289. package/dist/scopeResolverCompat.js +106 -123
  290. package/dist/scopeResolverCompat.js.map +1 -1
  291. package/dist/{text-matching-DNg4M5Wd.d.ts → text-matching-DzFooju6.d.ts} +7 -7
  292. package/dist/text-matching.d.ts +1 -1
  293. package/dist/topicOntologyResolver.d.ts +22 -21
  294. package/dist/topicOntologyResolver.js +54 -32
  295. package/dist/topicOntologyResolver.js.map +1 -1
  296. package/dist/topicProjectOverlay.d.ts +30 -20
  297. package/dist/topicProjectOverlay.js +120 -76
  298. package/dist/topicProjectOverlay.js.map +1 -1
  299. package/dist/{topicScope-7zhyeGl7.d.ts → topicScope-DJVa0mLa.d.ts} +22 -7
  300. package/dist/topicScope.d.ts +3 -1
  301. package/dist/topicScope.js +104 -119
  302. package/dist/topicScope.js.map +1 -1
  303. package/dist/workflowBridge.d.ts +26 -15
  304. package/dist/workflowBridge.js +140 -144
  305. package/dist/workflowBridge.js.map +1 -1
  306. package/dist/workspaceIsolation.d.ts +14 -12
  307. package/dist/workspaceIsolation.js +108 -122
  308. package/dist/workspaceIsolation.js.map +1 -1
  309. package/package.json +4 -4
  310. package/dist/edges/dependsOn.js.map +0 -1
  311. package/dist/edges/derivedFrom.js.map +0 -1
  312. package/dist/edges/propagationTypes.js.map +0 -1
  313. package/dist/evaluators/lintCheckerEvaluator.d.ts +0 -11
  314. package/dist/evaluators/lintCheckerEvaluator.js.map +0 -1
  315. package/dist/evaluators/sentryCheckerEvaluator.js.map +0 -1
  316. package/dist/evaluators/testRunnerEvaluator.js.map +0 -1
  317. package/dist/evaluators/tscCheckerEvaluator.d.ts +0 -11
  318. package/dist/evaluators/tscCheckerEvaluator.js.map +0 -1
  319. package/dist/{epistemicQuestions-bwHd2FWE.d.ts → epistemicQuestions-Do1fhYm5.d.ts} +4 -4
@@ -1,4 +1,4 @@
1
- import { parseEvidentialEvaluatorConfig, compareMetricValue, buildEvidentialRationale, parseMetricCheckerConfig, getEvaluatorInputRecord, pickFiniteNumber, resolveComparisonResult, buildComparisonRationale, parseReferenceCheckCounterConfig, parseTemporalDeadlineConfig, parseMarketIndexComparatorConfig } from '@lucern/confidence';
1
+ import { parseEvidentialEvaluatorConfig, compareMetricValue, resolveComparisonResult, buildEvidentialRationale, parseMetricCheckerConfig, getEvaluatorInputRecord, pickFiniteNumber, buildComparisonRationale, parseReferenceCheckCounterConfig, parseTemporalDeadlineConfig, parseMarketIndexComparatorConfig } from '@lucern/confidence';
2
2
 
3
3
  // src/debug.ts
4
4
  function isGraphPrimitiveDebugEnabled() {
@@ -18,9 +18,7 @@ var ACTIVE_CONTRADICTION_STATUSES = /* @__PURE__ */ new Set([
18
18
  "investigating",
19
19
  "accepted_as_permanent"
20
20
  ]);
21
- var DEPENDENT_EDGE_TYPES = /* @__PURE__ */ new Set([
22
- "depends_on"
23
- ]);
21
+ var DEPENDENT_EDGE_TYPES = /* @__PURE__ */ new Set(["depends_on"]);
24
22
  function classifyContradictionStatus(status) {
25
23
  if (typeof status !== "string") {
26
24
  return "active";
@@ -33,6 +31,99 @@ function classifyContradictionStatus(status) {
33
31
  }
34
32
  return "resolved";
35
33
  }
34
+ function isRecord(value) {
35
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
36
+ }
37
+ function readOptionalNumber(value) {
38
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
39
+ }
40
+ function readOptionalString(value) {
41
+ return typeof value === "string" && value.trim().length > 0 ? value : void 0;
42
+ }
43
+ function readConvexId(value) {
44
+ const normalized = readOptionalString(value);
45
+ return normalized;
46
+ }
47
+ function readMetricNodeDoc(value) {
48
+ if (!isRecord(value)) {
49
+ return null;
50
+ }
51
+ const id = readConvexId(value._id);
52
+ const nodeType = readOptionalString(value.nodeType);
53
+ if (!(id && nodeType)) {
54
+ return null;
55
+ }
56
+ const node = { _id: id, nodeType };
57
+ const globalId = readOptionalString(value.globalId);
58
+ if (globalId !== void 0) {
59
+ node.globalId = globalId;
60
+ }
61
+ if ("metadata" in value) {
62
+ node.metadata = value.metadata;
63
+ }
64
+ const status = readOptionalString(value.status);
65
+ if (status !== void 0) {
66
+ node.status = status;
67
+ }
68
+ return node;
69
+ }
70
+ function readIncomingEdgeRow(value) {
71
+ if (!isRecord(value)) {
72
+ return null;
73
+ }
74
+ const fromNodeId = readOptionalString(value.fromNodeId);
75
+ if (!fromNodeId) {
76
+ return null;
77
+ }
78
+ const edge = { fromNodeId };
79
+ const id = readConvexId(value._id);
80
+ if (id !== void 0) {
81
+ edge._id = id;
82
+ }
83
+ const edgeType = readOptionalString(value.edgeType);
84
+ if (edgeType !== void 0) {
85
+ edge.edgeType = edgeType;
86
+ }
87
+ const fromGlobalId = readOptionalString(value.fromGlobalId);
88
+ if (fromGlobalId !== void 0) {
89
+ edge.fromGlobalId = fromGlobalId;
90
+ }
91
+ const fromUuid = readOptionalString(value.fromUuid);
92
+ if (fromUuid !== void 0) {
93
+ edge.fromUuid = fromUuid;
94
+ }
95
+ const sourceGlobalId = readOptionalString(value.sourceGlobalId);
96
+ if (sourceGlobalId !== void 0) {
97
+ edge.sourceGlobalId = sourceGlobalId;
98
+ }
99
+ const targetGlobalId = readOptionalString(value.targetGlobalId);
100
+ if (targetGlobalId !== void 0) {
101
+ edge.targetGlobalId = targetGlobalId;
102
+ }
103
+ const toGlobalId = readOptionalString(value.toGlobalId);
104
+ if (toGlobalId !== void 0) {
105
+ edge.toGlobalId = toGlobalId;
106
+ }
107
+ const toNodeId = readOptionalString(value.toNodeId);
108
+ if (toNodeId !== void 0) {
109
+ edge.toNodeId = toNodeId;
110
+ }
111
+ const toUuid = readOptionalString(value.toUuid);
112
+ if (toUuid !== void 0) {
113
+ edge.toUuid = toUuid;
114
+ }
115
+ const weight = readOptionalNumber(value.weight);
116
+ if (weight !== void 0) {
117
+ edge.weight = weight;
118
+ }
119
+ for (const timestampField of ["_creationTime", "createdAt", "updatedAt"]) {
120
+ const timestamp = readOptionalNumber(value[timestampField]);
121
+ if (timestamp !== void 0) {
122
+ edge[timestampField] = timestamp;
123
+ }
124
+ }
125
+ return edge;
126
+ }
36
127
  function getEdgeTimestamp(edge) {
37
128
  if (typeof edge.updatedAt === "number") {
38
129
  return edge.updatedAt;
@@ -45,22 +136,86 @@ function getEdgeTimestamp(edge) {
45
136
  }
46
137
  return null;
47
138
  }
139
+ async function collectNodeEndpointRefs(ctx, nodeId) {
140
+ const refs = /* @__PURE__ */ new Set([String(nodeId)]);
141
+ const node = readMetricNodeDoc(await ctx.db.get(nodeId));
142
+ if (node?.globalId) {
143
+ refs.add(node.globalId);
144
+ }
145
+ return [...refs];
146
+ }
147
+ async function collectIncomingEdgeRows(ctx, nodeId, edgeType) {
148
+ const refs = await collectNodeEndpointRefs(ctx, nodeId);
149
+ const seen = /* @__PURE__ */ new Set();
150
+ const edges = [];
151
+ for (const ref of refs) {
152
+ const rows = edgeType === void 0 ? await ctx.db.query("epistemicEdges").withIndex("by_to", (q) => q.eq("toNodeId", ref)).collect() : await ctx.db.query("epistemicEdges").withIndex(
153
+ "by_to_type",
154
+ (q) => q.eq("toNodeId", ref).eq("edgeType", edgeType)
155
+ ).collect();
156
+ for (const row of rows) {
157
+ const edge = readIncomingEdgeRow(row);
158
+ if (!edge) {
159
+ continue;
160
+ }
161
+ if (edgeType !== void 0 && edge.edgeType !== edgeType) {
162
+ continue;
163
+ }
164
+ const key = edge._id === void 0 ? `${edge.fromNodeId}->${edge.toNodeId ?? ref}:${edge.edgeType ?? ""}` : String(edge._id);
165
+ if (seen.has(key)) {
166
+ continue;
167
+ }
168
+ seen.add(key);
169
+ edges.push(edge);
170
+ }
171
+ }
172
+ return edges;
173
+ }
174
+ function sourceEndpointRefs(edge) {
175
+ return [
176
+ edge.fromNodeId,
177
+ edge.sourceGlobalId,
178
+ edge.fromGlobalId,
179
+ edge.fromUuid
180
+ ].filter((value) => value !== void 0);
181
+ }
182
+ async function resolveEndpointNode(ctx, refs) {
183
+ const candidates = refs.map((value) => value.trim()).filter(
184
+ (value, index, values) => value.length > 0 && values.indexOf(value) === index
185
+ );
186
+ for (const candidate of candidates) {
187
+ try {
188
+ const direct = readMetricNodeDoc(
189
+ await ctx.db.get(candidate)
190
+ );
191
+ if (direct) {
192
+ return direct;
193
+ }
194
+ } catch {
195
+ }
196
+ const byGlobalId = readMetricNodeDoc(
197
+ await ctx.db.query("epistemicNodes").withIndex("by_globalId", (q) => q.eq("globalId", candidate)).first()
198
+ );
199
+ if (byGlobalId) {
200
+ return byGlobalId;
201
+ }
202
+ }
203
+ return null;
204
+ }
48
205
  async function getEvidenceLinks(ctx, beliefNodeId) {
49
- const edges = await ctx.db.query("epistemicEdges").withIndex(
50
- "by_to_type",
51
- (q) => q.eq("toNodeId", beliefNodeId).eq("edgeType", "informs")
52
- ).collect();
206
+ const edges = await collectIncomingEdgeRows(ctx, beliefNodeId, "informs");
53
207
  if (edges.length === 0) {
54
208
  return [];
55
209
  }
56
- const nodes = await Promise.all(edges.map((edge) => ctx.db.get(edge.fromNodeId)));
57
- return edges.flatMap((edge, index) => {
58
- const node = nodes[index];
59
- if (!node || node.nodeType !== "evidence" || node.status === "archived") {
60
- return [];
210
+ const links = [];
211
+ for (const edge of edges) {
212
+ const node = await resolveEndpointNode(ctx, sourceEndpointRefs(edge));
213
+ if (node?.nodeType !== "evidence" || node.status === "archived") {
214
+ continue;
61
215
  }
62
- return [{ edge, node }];
63
- });
216
+ links.push({ edge, node });
217
+ }
218
+ return links;
64
219
  }
65
220
  function getEvidenceTags(node) {
66
221
  const metadata = node.metadata && typeof node.metadata === "object" ? node.metadata : null;
@@ -86,7 +241,8 @@ async function computeTaggedEvidenceCount(args) {
86
241
  };
87
242
  }
88
243
  async function computeContradictionCounts(ctx, beliefNodeId) {
89
- const contradictions = await ctx.db.query("contradictions").withIndex("by_beliefId", (q) => q.eq("beliefId", beliefNodeId)).collect();
244
+ const contradictionDb = ctx.db;
245
+ const contradictions = await contradictionDb.query("contradictions").withIndex("by_beliefId", (q) => q.eq("beliefId", beliefNodeId)).collect();
90
246
  return contradictions.reduce(
91
247
  (counts, contradiction) => {
92
248
  const status = contradiction.resolutionStatus ?? contradiction.status ?? "unresolved";
@@ -122,18 +278,16 @@ async function computeEvidenceFreshness(ctx, beliefNodeId, now = Date.now()) {
122
278
  };
123
279
  }
124
280
  async function computeDependentBeliefCount(ctx, beliefNodeId) {
125
- const incomingEdges = await ctx.db.query("epistemicEdges").withIndex("by_to", (q) => q.eq("toNodeId", beliefNodeId)).collect();
281
+ const incomingEdges = await collectIncomingEdgeRows(ctx, beliefNodeId);
126
282
  const dependencyEdges = incomingEdges.filter(
127
- (edge) => DEPENDENT_EDGE_TYPES.has(edge.edgeType)
283
+ (edge) => edge.edgeType ? DEPENDENT_EDGE_TYPES.has(edge.edgeType) : false
128
284
  );
129
285
  if (dependencyEdges.length === 0) {
130
286
  return 0;
131
287
  }
132
- const dependentBeliefs = await Promise.all(
133
- dependencyEdges.map((edge) => ctx.db.get(edge.fromNodeId))
134
- );
135
288
  const uniqueBeliefIds = /* @__PURE__ */ new Set();
136
- for (const node of dependentBeliefs) {
289
+ for (const edge of dependencyEdges) {
290
+ const node = await resolveEndpointNode(ctx, sourceEndpointRefs(edge));
137
291
  if (node && node.nodeType === "belief" && node.status !== "archived" && node.status !== "deleted") {
138
292
  uniqueBeliefIds.add(String(node._id));
139
293
  }
@@ -143,7 +297,10 @@ async function computeDependentBeliefCount(ctx, beliefNodeId) {
143
297
  async function snapshotEvidentialMetric(args) {
144
298
  switch (args.metric) {
145
299
  case "evidence_count": {
146
- const count = await computeEvidenceCountMetric(args.ctx, args.beliefNodeId);
300
+ const count = await computeEvidenceCountMetric(
301
+ args.ctx,
302
+ args.beliefNodeId
303
+ );
147
304
  return {
148
305
  metric: args.metric,
149
306
  value: count,
@@ -151,7 +308,10 @@ async function snapshotEvidentialMetric(args) {
151
308
  };
152
309
  }
153
310
  case "contradiction_status": {
154
- const counts = await computeContradictionCounts(args.ctx, args.beliefNodeId);
311
+ const counts = await computeContradictionCounts(
312
+ args.ctx,
313
+ args.beliefNodeId
314
+ );
155
315
  return {
156
316
  metric: args.metric,
157
317
  value: counts.activeCount,
@@ -171,7 +331,10 @@ async function snapshotEvidentialMetric(args) {
171
331
  };
172
332
  }
173
333
  case "dependent_count": {
174
- const count = await computeDependentBeliefCount(args.ctx, args.beliefNodeId);
334
+ const count = await computeDependentBeliefCount(
335
+ args.ctx,
336
+ args.beliefNodeId
337
+ );
175
338
  return {
176
339
  metric: args.metric,
177
340
  value: count,
@@ -187,7 +350,9 @@ async function snapshotEvidentialMetric(args) {
187
350
  }
188
351
  }
189
352
  async function evaluateBuiltInEvidentialContract(args) {
190
- const config = parseEvidentialEvaluatorConfig(args.contract.condition.evaluatorConfig);
353
+ const config = parseEvidentialEvaluatorConfig(
354
+ args.contract.condition.evaluatorConfig
355
+ );
191
356
  const snapshot = await snapshotEvidentialMetric({
192
357
  ctx: args.ctx,
193
358
  beliefNodeId: args.belief._id,
@@ -195,7 +360,10 @@ async function evaluateBuiltInEvidentialContract(args) {
195
360
  now: args.now
196
361
  });
197
362
  const comparisonSatisfied = snapshot.value !== null && compareMetricValue(config.operator, snapshot.value, config.threshold);
198
- const result = args.contract.direction === "falsifies" ? comparisonSatisfied ? "disconfirmed" : "confirmed" : comparisonSatisfied ? "confirmed" : "disconfirmed";
363
+ const result = resolveComparisonResult(
364
+ args.contract.direction,
365
+ comparisonSatisfied
366
+ );
199
367
  return {
200
368
  result,
201
369
  rationale: buildEvidentialRationale({
@@ -215,57 +383,66 @@ async function evaluateBuiltInEvidentialContract(args) {
215
383
  }
216
384
  };
217
385
  }
218
- async function evaluateMetricCheckerContract(args) {
219
- const config = parseMetricCheckerConfig(args.contract.condition.evaluatorConfig);
220
- const input = getEvaluatorInputRecord(args.inputData, "metricData");
221
- const metric = typeof input.metric === "string" && input.metric.length > 0 ? input.metric : config.metric;
222
- const observedValue = pickFiniteNumber(input, [
223
- "observedValue",
224
- "currentValue",
225
- "metricValue",
226
- "value"
227
- ]) ?? config.observedValue ?? config.currentValue ?? config.metricValue ?? null;
228
- if (observedValue === null) {
386
+ function evaluateMetricCheckerContract(args) {
387
+ return Promise.resolve().then(() => {
388
+ const config = parseMetricCheckerConfig(
389
+ args.contract.condition.evaluatorConfig
390
+ );
391
+ const input = getEvaluatorInputRecord(args.inputData, "metricData");
392
+ const metric = typeof input.metric === "string" && input.metric.length > 0 ? input.metric : config.metric;
393
+ const observedValue = pickFiniteNumber(input, [
394
+ "observedValue",
395
+ "currentValue",
396
+ "metricValue",
397
+ "value"
398
+ ]) ?? config.observedValue ?? config.currentValue ?? config.metricValue ?? null;
399
+ if (observedValue === null) {
400
+ return {
401
+ result: "inconclusive",
402
+ rationale: `metric_checker is awaiting data for ${metric ?? args.contract.condition.expression}.`,
403
+ data: {
404
+ metric,
405
+ observedValue: null,
406
+ operator: config.operator,
407
+ threshold: config.threshold,
408
+ unit: config.unit
409
+ }
410
+ };
411
+ }
412
+ const comparisonSatisfied = compareMetricValue(
413
+ config.operator,
414
+ observedValue,
415
+ config.threshold
416
+ );
417
+ const result = resolveComparisonResult(
418
+ args.contract.direction,
419
+ comparisonSatisfied
420
+ );
229
421
  return {
230
- result: "inconclusive",
231
- rationale: `metric_checker is awaiting data for ${metric ?? args.contract.condition.expression}.`,
422
+ result,
423
+ rationale: buildComparisonRationale({
424
+ label: metric ?? "metric",
425
+ observedValue,
426
+ operator: config.operator,
427
+ threshold: config.threshold,
428
+ comparisonSatisfied,
429
+ result,
430
+ unit: config.unit
431
+ }),
232
432
  data: {
233
433
  metric,
234
- observedValue: null,
434
+ observedValue,
235
435
  operator: config.operator,
236
436
  threshold: config.threshold,
237
437
  unit: config.unit
238
438
  }
239
439
  };
240
- }
241
- const comparisonSatisfied = compareMetricValue(
242
- config.operator,
243
- observedValue,
244
- config.threshold
245
- );
246
- const result = resolveComparisonResult(args.contract.direction, comparisonSatisfied);
247
- return {
248
- result,
249
- rationale: buildComparisonRationale({
250
- label: metric ?? "metric",
251
- observedValue,
252
- operator: config.operator,
253
- threshold: config.threshold,
254
- comparisonSatisfied,
255
- result,
256
- unit: config.unit
257
- }),
258
- data: {
259
- metric,
260
- observedValue,
261
- operator: config.operator,
262
- threshold: config.threshold,
263
- unit: config.unit
264
- }
265
- };
440
+ });
266
441
  }
267
442
  async function evaluateReferenceCheckCounterContract(args) {
268
- const config = parseReferenceCheckCounterConfig(args.contract.condition.evaluatorConfig);
443
+ const config = parseReferenceCheckCounterConfig(
444
+ args.contract.condition.evaluatorConfig
445
+ );
269
446
  const input = getEvaluatorInputRecord(args.inputData, "referenceCheckData");
270
447
  const tag = typeof input.tag === "string" && input.tag.trim().length > 0 ? input.tag.trim() : config.tag;
271
448
  const snapshot = await computeTaggedEvidenceCount({
@@ -279,7 +456,10 @@ async function evaluateReferenceCheckCounterContract(args) {
279
456
  snapshot.count,
280
457
  config.threshold
281
458
  );
282
- const result = resolveComparisonResult(args.contract.direction, comparisonSatisfied);
459
+ const result = resolveComparisonResult(
460
+ args.contract.direction,
461
+ comparisonSatisfied
462
+ );
283
463
  return {
284
464
  result,
285
465
  rationale: buildComparisonRationale({
@@ -301,130 +481,167 @@ async function evaluateReferenceCheckCounterContract(args) {
301
481
  }
302
482
  };
303
483
  }
304
- async function evaluateTemporalDeadlineContract(args) {
305
- if (typeof args.contract.deadline !== "number" || !Number.isFinite(args.contract.deadline)) {
306
- throw new Error(
307
- "temporal_deadline requires contract.deadline to be set to a finite timestamp."
308
- );
309
- }
310
- const config = parseTemporalDeadlineConfig(args.contract.condition.evaluatorConfig);
311
- const input = getEvaluatorInputRecord(args.inputData, "temporalData");
312
- const label = (typeof input.label === "string" && input.label.length > 0 ? input.label : config.label) ?? args.contract.title ?? args.contract.condition.expression;
313
- const completedAt = pickFiniteNumber(input, [
314
- "completedAt",
315
- "observedAt",
316
- "satisfiedAt",
317
- "achievedAt"
318
- ]) ?? config.completedAt ?? config.observedAt ?? config.satisfiedAt ?? config.achievedAt;
319
- const completed = input.completed === true || config.completed === true || completedAt !== void 0;
320
- if (completed) {
321
- if (completedAt !== void 0 && completedAt > args.contract.deadline) {
322
- return {
323
- result: "expired",
324
- rationale: `${label} completed at ${completedAt}, after deadline ${args.contract.deadline}.`,
325
- data: {
326
- label,
327
- deadline: args.contract.deadline,
328
- completed: true,
329
- completedAt,
330
- missedDeadline: true,
331
- overdueByMs: completedAt - args.contract.deadline
332
- }
333
- };
334
- }
335
- const result = args.contract.direction === "falsifies" ? "disconfirmed" : "confirmed";
484
+ function resolveCompletedTemporalDeadlineResult(args) {
485
+ const { completedAt, context, deadline, label } = args;
486
+ if (completedAt !== void 0 && completedAt > deadline) {
336
487
  return {
337
- result,
338
- rationale: `${label} completed before deadline ${args.contract.deadline}.`,
488
+ result: "expired",
489
+ rationale: `${label} completed at ${completedAt}, after deadline ${deadline}.`,
339
490
  data: {
340
491
  label,
341
- deadline: args.contract.deadline,
492
+ deadline,
342
493
  completed: true,
343
- completedAt: completedAt ?? null,
344
- missedDeadline: false
494
+ completedAt,
495
+ missedDeadline: true,
496
+ overdueByMs: completedAt - deadline
345
497
  }
346
498
  };
347
499
  }
348
- if (args.now > args.contract.deadline) {
500
+ const result = context.contract.direction === "falsifies" ? "disconfirmed" : "confirmed";
501
+ return {
502
+ result,
503
+ rationale: `${label} completed before deadline ${deadline}.`,
504
+ data: {
505
+ label,
506
+ deadline,
507
+ completed: true,
508
+ completedAt: completedAt ?? null,
509
+ missedDeadline: false
510
+ }
511
+ };
512
+ }
513
+ function resolveOpenTemporalDeadlineResult(args) {
514
+ const { context, deadline, label } = args;
515
+ if (context.now > deadline) {
349
516
  return {
350
517
  result: "expired",
351
- rationale: `${label} missed deadline ${args.contract.deadline}; temporal contract expired.`,
518
+ rationale: `${label} missed deadline ${deadline}; temporal contract expired.`,
352
519
  data: {
353
520
  label,
354
- deadline: args.contract.deadline,
521
+ deadline,
355
522
  completed: false,
356
- overdueByMs: args.now - args.contract.deadline
523
+ overdueByMs: context.now - deadline
357
524
  }
358
525
  };
359
526
  }
360
527
  return {
361
528
  result: "inconclusive",
362
- rationale: `${label} is still before deadline ${args.contract.deadline}; awaiting outcome.`,
529
+ rationale: `${label} is still before deadline ${deadline}; awaiting outcome.`,
363
530
  data: {
364
531
  label,
365
- deadline: args.contract.deadline,
532
+ deadline,
366
533
  completed: false,
367
- timeRemainingMs: args.contract.deadline - args.now
534
+ timeRemainingMs: deadline - context.now
368
535
  }
369
536
  };
370
537
  }
371
- async function evaluateMarketIndexComparatorContract(args) {
372
- const config = parseMarketIndexComparatorConfig(args.contract.condition.evaluatorConfig);
373
- const input = getEvaluatorInputRecord(args.inputData, "marketIndexData");
374
- const subject = typeof input.subject === "string" && input.subject.length > 0 ? input.subject : config.subject;
375
- const benchmark = typeof input.benchmark === "string" && input.benchmark.length > 0 ? input.benchmark : config.benchmark;
376
- const subjectValue = pickFiniteNumber(input, ["subjectValue", "primaryValue", "leftValue"]) ?? config.subjectValue ?? config.primaryValue ?? null;
377
- const benchmarkValue = pickFiniteNumber(input, ["benchmarkValue", "comparisonValue", "rightValue"]) ?? config.benchmarkValue ?? config.comparisonValue ?? null;
378
- if (subjectValue === null || benchmarkValue === null) {
538
+ function evaluateTemporalDeadlineContract(args) {
539
+ return Promise.resolve().then(() => {
540
+ if (typeof args.contract.deadline !== "number" || !Number.isFinite(args.contract.deadline)) {
541
+ throw new Error(
542
+ "temporal_deadline requires contract.deadline to be set to a finite timestamp."
543
+ );
544
+ }
545
+ const deadline = args.contract.deadline;
546
+ const config = parseTemporalDeadlineConfig(
547
+ args.contract.condition.evaluatorConfig
548
+ );
549
+ const input = getEvaluatorInputRecord(args.inputData, "temporalData");
550
+ const label = (typeof input.label === "string" && input.label.length > 0 ? input.label : config.label) ?? args.contract.title ?? args.contract.condition.expression;
551
+ const completedAt = pickFiniteNumber(input, [
552
+ "completedAt",
553
+ "observedAt",
554
+ "satisfiedAt",
555
+ "achievedAt"
556
+ ]) ?? config.completedAt ?? config.observedAt ?? config.satisfiedAt ?? config.achievedAt;
557
+ const completed = input.completed === true || config.completed === true || completedAt !== void 0;
558
+ if (completed) {
559
+ return resolveCompletedTemporalDeadlineResult({
560
+ completedAt,
561
+ context: args,
562
+ deadline,
563
+ label
564
+ });
565
+ }
566
+ return resolveOpenTemporalDeadlineResult({
567
+ context: args,
568
+ deadline,
569
+ label
570
+ });
571
+ });
572
+ }
573
+ function evaluateMarketIndexComparatorContract(args) {
574
+ return Promise.resolve().then(() => {
575
+ const config = parseMarketIndexComparatorConfig(
576
+ args.contract.condition.evaluatorConfig
577
+ );
578
+ const input = getEvaluatorInputRecord(args.inputData, "marketIndexData");
579
+ const subject = typeof input.subject === "string" && input.subject.length > 0 ? input.subject : config.subject;
580
+ const benchmark = typeof input.benchmark === "string" && input.benchmark.length > 0 ? input.benchmark : config.benchmark;
581
+ const subjectValue = pickFiniteNumber(input, ["subjectValue", "primaryValue", "leftValue"]) ?? config.subjectValue ?? config.primaryValue ?? null;
582
+ const benchmarkValue = pickFiniteNumber(input, [
583
+ "benchmarkValue",
584
+ "comparisonValue",
585
+ "rightValue"
586
+ ]) ?? config.benchmarkValue ?? config.comparisonValue ?? null;
587
+ if (subjectValue === null || benchmarkValue === null) {
588
+ return {
589
+ result: "inconclusive",
590
+ rationale: "market_index_comparator is awaiting both subject and benchmark values.",
591
+ data: {
592
+ subject,
593
+ subjectValue,
594
+ benchmark,
595
+ benchmarkValue,
596
+ operator: config.operator,
597
+ threshold: config.threshold
598
+ }
599
+ };
600
+ }
601
+ if (benchmarkValue === 0) {
602
+ throw new Error(
603
+ "market_index_comparator cannot compare against a zero benchmark value."
604
+ );
605
+ }
606
+ const differentialPercent = (subjectValue - benchmarkValue) / Math.abs(benchmarkValue) * 100;
607
+ const comparisonSatisfied = compareMetricValue(
608
+ config.operator,
609
+ differentialPercent,
610
+ config.threshold
611
+ );
612
+ const result = resolveComparisonResult(
613
+ args.contract.direction,
614
+ comparisonSatisfied
615
+ );
379
616
  return {
380
- result: "inconclusive",
381
- rationale: "market_index_comparator is awaiting both subject and benchmark values.",
617
+ result,
618
+ rationale: buildComparisonRationale({
619
+ label: `${subject ?? "subject"} vs ${benchmark ?? "benchmark"} differential`,
620
+ observedValue: differentialPercent,
621
+ operator: config.operator,
622
+ threshold: config.threshold,
623
+ comparisonSatisfied,
624
+ result,
625
+ unit: "%"
626
+ }),
382
627
  data: {
383
628
  subject,
384
629
  subjectValue,
385
630
  benchmark,
386
631
  benchmarkValue,
632
+ differentialPercent,
387
633
  operator: config.operator,
388
634
  threshold: config.threshold
389
635
  }
390
636
  };
391
- }
392
- if (benchmarkValue === 0) {
393
- throw new Error(
394
- "market_index_comparator cannot compare against a zero benchmark value."
395
- );
396
- }
397
- const differentialPercent = (subjectValue - benchmarkValue) / Math.abs(benchmarkValue) * 100;
398
- const comparisonSatisfied = compareMetricValue(
399
- config.operator,
400
- differentialPercent,
401
- config.threshold
402
- );
403
- const result = resolveComparisonResult(args.contract.direction, comparisonSatisfied);
404
- return {
405
- result,
406
- rationale: buildComparisonRationale({
407
- label: `${subject ?? "subject"} vs ${benchmark ?? "benchmark"} differential`,
408
- observedValue: differentialPercent,
409
- operator: config.operator,
410
- threshold: config.threshold,
411
- comparisonSatisfied,
412
- result,
413
- unit: "%"
414
- }),
415
- data: {
416
- subject,
417
- subjectValue,
418
- benchmark,
419
- benchmarkValue,
420
- differentialPercent,
421
- operator: config.operator,
422
- threshold: config.threshold
423
- }
424
- };
637
+ });
425
638
  }
426
639
  var METRIC_COMPARATOR_EVALUATOR_NAMES = {
427
- evidentialAliases: /* @__PURE__ */ new Set(["evidential", "built_in_evidential", "builtin_evidential"]),
640
+ evidentialAliases: /* @__PURE__ */ new Set([
641
+ "evidential",
642
+ "built_in_evidential",
643
+ "builtin_evidential"
644
+ ]),
428
645
  metricChecker: "metric_checker",
429
646
  referenceCheckCounter: "reference_check_counter",
430
647
  temporalDeadline: "temporal_deadline",
@@ -472,7 +689,12 @@ function ensureBuiltInEvaluators() {
472
689
  }
473
690
  }
474
691
 
692
+ // src/epistemicContracts.ts
693
+ var getRegisteredEpistemicEvaluators2 = getRegisteredEpistemicEvaluators;
694
+
475
695
  // src/evaluators/shared.ts
696
+ var WINDOWS_PATH_SEPARATORS = /\\/g;
697
+ var LEADING_DOT_SLASH = /^\.\//;
476
698
  function asArray(value) {
477
699
  return Array.isArray(value) ? value : [];
478
700
  }
@@ -514,7 +736,7 @@ function extractTextCandidates(value) {
514
736
  return Array.from(new Set(candidates));
515
737
  }
516
738
  function normalizeFilePath(value) {
517
- return value.replace(/\\/g, "/").replace(/^\.\//, "");
739
+ return value.replace(WINDOWS_PATH_SEPARATORS, "/").replace(LEADING_DOT_SLASH, "");
518
740
  }
519
741
  function normalizeToolResultEnvelope(value) {
520
742
  const record = asRecord(value);
@@ -568,7 +790,7 @@ function somePatternMatches(filePath, patterns) {
568
790
  return patterns.some((pattern) => patternMatchesPath(filePath, pattern));
569
791
  }
570
792
 
571
- // src/evaluators/lintCheckerEvaluator.ts
793
+ // src/evaluators/lint-checker-evaluator.ts
572
794
  function parseConfig(condition) {
573
795
  const record = asRecord(condition.evaluatorConfig);
574
796
  if (!record) {
@@ -640,7 +862,10 @@ var lintCheckerEvaluator = {
640
862
  }
641
863
  const envelope = normalizeToolResultEnvelope(args.resultData);
642
864
  const exitCode = asNumber(envelope.exitCode);
643
- const matchedDiagnostics = getMatchedDiagnostics(args.contract, args.resultData);
865
+ const matchedDiagnostics = getMatchedDiagnostics(
866
+ args.contract,
867
+ args.resultData
868
+ );
644
869
  if (matchedDiagnostics.length === 0 && exitCode !== 0 && exitCode !== null) {
645
870
  return {
646
871
  result: "inconclusive",
@@ -666,7 +891,7 @@ var lintCheckerEvaluator = {
666
891
  }
667
892
  };
668
893
 
669
- // src/evaluators/sentryCheckerEvaluator.ts
894
+ // src/evaluators/sentry-checker-evaluator.ts
670
895
  function parseConfig2(condition) {
671
896
  const record = asRecord(condition.evaluatorConfig);
672
897
  if (!record) {
@@ -751,7 +976,7 @@ var sentryCheckerEvaluator = {
751
976
  }
752
977
  };
753
978
 
754
- // src/evaluators/testRunnerEvaluator.ts
979
+ // src/evaluators/test-runner-evaluator.ts
755
980
  function parseConfig3(condition) {
756
981
  const record = asRecord(condition.evaluatorConfig);
757
982
  if (!record) {
@@ -897,7 +1122,7 @@ var testRunnerEvaluator = {
897
1122
  }
898
1123
  };
899
1124
 
900
- // src/evaluators/tscCheckerEvaluator.ts
1125
+ // src/evaluators/tsc-checker-evaluator.ts
901
1126
  function parseConfig4(condition) {
902
1127
  const record = asRecord(condition.evaluatorConfig);
903
1128
  if (!record) {
@@ -982,7 +1207,10 @@ var tscCheckerEvaluator = {
982
1207
  }
983
1208
  const envelope = normalizeToolResultEnvelope(args.resultData);
984
1209
  const exitCode = asNumber(envelope.exitCode);
985
- const matchedDiagnostics = getMatchedDiagnostics2(args.contract, args.resultData);
1210
+ const matchedDiagnostics = getMatchedDiagnostics2(
1211
+ args.contract,
1212
+ args.resultData
1213
+ );
986
1214
  if (matchedDiagnostics.length === 0 && exitCode !== 0 && exitCode !== null) {
987
1215
  return {
988
1216
  result: "inconclusive",
@@ -1014,6 +1242,10 @@ var ENGINEERING_EPISTEMIC_EVALUATORS = [
1014
1242
  lintCheckerEvaluator,
1015
1243
  sentryCheckerEvaluator
1016
1244
  ];
1245
+ var lintCheckerEvaluator2 = lintCheckerEvaluator;
1246
+ var sentryCheckerEvaluator2 = sentryCheckerEvaluator;
1247
+ var testRunnerEvaluator2 = testRunnerEvaluator;
1248
+ var tscCheckerEvaluator2 = tscCheckerEvaluator;
1017
1249
  var ENGINEERING_EVALUATOR_NAMES = new Set(
1018
1250
  ENGINEERING_EPISTEMIC_EVALUATORS.map((evaluator) => evaluator.name)
1019
1251
  );
@@ -1034,10 +1266,10 @@ var RESEARCH_EVALUATOR_NAMES = [
1034
1266
  "temporal_deadline"
1035
1267
  ];
1036
1268
  function registerAllResearchEvaluators() {
1037
- const registered = new Set(getRegisteredEpistemicEvaluators());
1269
+ const registered = new Set(getRegisteredEpistemicEvaluators2());
1038
1270
  return RESEARCH_EVALUATOR_NAMES.filter((name) => registered.has(name));
1039
1271
  }
1040
1272
 
1041
- export { ENGINEERING_EPISTEMIC_EVALUATORS, ENGINEERING_EVALUATOR_NAMES, RESEARCH_EVALUATOR_NAMES, getEngineeringEpistemicEvaluator, lintCheckerEvaluator, registerAllEngineeringEvaluators, registerAllResearchEvaluators, sentryCheckerEvaluator, testRunnerEvaluator, tscCheckerEvaluator };
1273
+ export { ENGINEERING_EPISTEMIC_EVALUATORS, ENGINEERING_EVALUATOR_NAMES, RESEARCH_EVALUATOR_NAMES, getEngineeringEpistemicEvaluator, lintCheckerEvaluator2 as lintCheckerEvaluator, registerAllEngineeringEvaluators, registerAllResearchEvaluators, sentryCheckerEvaluator2 as sentryCheckerEvaluator, testRunnerEvaluator2 as testRunnerEvaluator, tscCheckerEvaluator2 as tscCheckerEvaluator };
1042
1274
  //# sourceMappingURL=index.js.map
1043
1275
  //# sourceMappingURL=index.js.map