@lucern/graph-primitives 1.0.29 → 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.
- package/dist/{beliefDecay-DZ6tkLYq.d.ts → beliefDecay-BmkEk5OJ.d.ts} +3 -3
- package/dist/beliefDecay.d.ts +1 -1
- package/dist/beliefDecay.js +448 -314
- package/dist/beliefDecay.js.map +1 -1
- package/dist/{beliefEvidenceLinks-CWOXxxJg.d.ts → beliefEvidenceLinks-BzfjON_6.d.ts} +13 -13
- package/dist/beliefEvidenceLinks.d.ts +1 -1
- package/dist/beliefEvidenceLinks.js +843 -624
- package/dist/beliefEvidenceLinks.js.map +1 -1
- package/dist/beliefEvidenceLinks.operational.d.ts +7 -5
- package/dist/beliefEvidenceLinks.operational.js +91 -18
- package/dist/beliefEvidenceLinks.operational.js.map +1 -1
- package/dist/beliefLifecycle.js.map +1 -1
- package/dist/confidencePropagationDispatch.d.ts +28 -27
- package/dist/confidencePropagationDispatch.js +157 -99
- package/dist/confidencePropagationDispatch.js.map +1 -1
- package/dist/{contradictions-51VLsESq.d.ts → contradictions-BATPuZTL.d.ts} +10 -10
- package/dist/contradictions.d.ts +1 -1
- package/dist/contradictions.js +395 -225
- package/dist/contradictions.js.map +1 -1
- package/dist/convex.d.ts +65 -30
- package/dist/convex.js +7 -3
- package/dist/convex.js.map +1 -1
- package/dist/debug.js.map +1 -1
- package/dist/edgeValidation.js +293 -85
- package/dist/edgeValidation.js.map +1 -1
- package/dist/edges/contains.d.ts +1 -1
- package/dist/edges/contains.js.map +1 -1
- package/dist/edges/contradicts.d.ts +1 -1
- package/dist/edges/contradicts.js.map +1 -1
- package/dist/edges/{dependsOn.d.ts → depends-on.d.ts} +1 -1
- package/dist/edges/{dependsOn.js → depends-on.js} +4 -4
- package/dist/edges/depends-on.js.map +1 -0
- package/dist/edges/{derivedFrom.d.ts → derived-from.d.ts} +1 -1
- package/dist/edges/{derivedFrom.js → derived-from.js} +3 -3
- package/dist/edges/derived-from.js.map +1 -0
- package/dist/edges/elaborates.d.ts +1 -1
- package/dist/edges/elaborates.js.map +1 -1
- package/dist/edges/index.d.ts +7 -3
- package/dist/edges/index.js +7 -4
- package/dist/edges/index.js.map +1 -1
- package/dist/edges/informs.d.ts +1 -1
- package/dist/edges/informs.js.map +1 -1
- package/dist/edges/{propagationTypes.d.ts → propagation-types.d.ts} +14 -14
- package/dist/edges/{propagationTypes.js → propagation-types.js} +3 -3
- package/dist/edges/propagation-types.js.map +1 -0
- package/dist/edges/refutes.d.ts +1 -1
- package/dist/edges/refutes.js.map +1 -1
- package/dist/edges/supports.d.ts +1 -1
- package/dist/edges/supports.js.map +1 -1
- package/dist/edges/tests.d.ts +1 -1
- package/dist/edges/tests.js.map +1 -1
- package/dist/edges/utils.d.ts +1 -1
- package/dist/edges/utils.js.map +1 -1
- package/dist/embeddingTrigger.d.ts +14 -6
- package/dist/embeddingTrigger.js +11 -14
- package/dist/embeddingTrigger.js.map +1 -1
- package/dist/{entityBridge-DMaKooYn.d.ts → entityBridge-BhVDM3pc.d.ts} +5 -5
- package/dist/entityBridge.d.ts +1 -1
- package/dist/entityBridge.js +602 -225
- package/dist/entityBridge.js.map +1 -1
- package/dist/entityCanonicalMatch.d.ts +14 -12
- package/dist/entityCanonicalMatch.js.map +1 -1
- package/dist/{entityLifecycle-CvgSK5FV.d.ts → entityLifecycle-BsfCz9pS.d.ts} +5 -9
- package/dist/entityLifecycle.d.ts +1 -1
- package/dist/entityLifecycle.js +854 -480
- package/dist/entityLifecycle.js.map +1 -1
- package/dist/{entityValidation-KLZ_Xl2D.d.ts → entityValidation-B1yNEHJx.d.ts} +7 -6
- package/dist/entityValidation.d.ts +3 -1
- package/dist/entityValidation.js +60 -8
- package/dist/entityValidation.js.map +1 -1
- package/dist/{epistemicAnswers-C5ib4z6_.d.ts → epistemicAnswers-f47YMu9U.d.ts} +6 -6
- package/dist/epistemicAnswers.d.ts +1 -1
- package/dist/epistemicAnswers.js +587 -545
- package/dist/epistemicAnswers.js.map +1 -1
- package/dist/epistemicBeliefs.admin.d.ts +8 -8
- package/dist/epistemicBeliefs.admin.js +365 -166
- package/dist/epistemicBeliefs.admin.js.map +1 -1
- package/dist/epistemicBeliefs.backfills.d.ts +8 -8
- package/dist/epistemicBeliefs.backfills.js +655 -289
- package/dist/epistemicBeliefs.backfills.js.map +1 -1
- package/dist/epistemicBeliefs.confidence.d.ts +19 -15
- package/dist/epistemicBeliefs.confidence.js +633 -386
- package/dist/epistemicBeliefs.confidence.js.map +1 -1
- package/dist/epistemicBeliefs.core.d.ts +6 -6
- package/dist/epistemicBeliefs.core.js +717 -371
- package/dist/epistemicBeliefs.core.js.map +1 -1
- package/dist/epistemicBeliefs.d.ts +11 -9
- package/dist/epistemicBeliefs.forkEvidence.d.ts +2 -0
- package/dist/epistemicBeliefs.forkEvidence.js +8 -8
- package/dist/epistemicBeliefs.forkEvidence.js.map +1 -1
- package/dist/epistemicBeliefs.helpers.d.ts +68 -49
- package/dist/epistemicBeliefs.helpers.js +358 -211
- package/dist/epistemicBeliefs.helpers.js.map +1 -1
- package/dist/epistemicBeliefs.internal.d.ts +5 -5
- package/dist/epistemicBeliefs.internal.js +1248 -1026
- package/dist/epistemicBeliefs.internal.js.map +1 -1
- package/dist/epistemicBeliefs.js +4942 -3590
- package/dist/epistemicBeliefs.js.map +1 -1
- package/dist/epistemicBeliefs.lifecycle.d.ts +5 -5
- package/dist/epistemicBeliefs.lifecycle.js +1138 -781
- package/dist/epistemicBeliefs.lifecycle.js.map +1 -1
- package/dist/epistemicBeliefs.links.d.ts +7 -7
- package/dist/epistemicBeliefs.links.js +404 -267
- package/dist/epistemicBeliefs.links.js.map +1 -1
- package/dist/epistemicBeliefs.queries.d.ts +4 -4
- package/dist/epistemicBeliefs.queries.js +175 -20
- package/dist/epistemicBeliefs.queries.js.map +1 -1
- package/dist/epistemicBeliefs.topicAnchor.d.ts +6 -4
- package/dist/epistemicBeliefs.topicAnchor.js +12 -5
- package/dist/epistemicBeliefs.topicAnchor.js.map +1 -1
- package/dist/epistemicContracts.d.ts +28 -3
- package/dist/epistemicContracts.evaluators.d.ts +2 -0
- package/dist/epistemicContracts.evaluators.js +1062 -576
- package/dist/epistemicContracts.evaluators.js.map +1 -1
- package/dist/epistemicContracts.handlers.d.ts +15 -32
- package/dist/epistemicContracts.handlers.js +1829 -1351
- package/dist/epistemicContracts.handlers.js.map +1 -1
- package/dist/epistemicContracts.js +1131 -636
- package/dist/epistemicContracts.js.map +1 -1
- package/dist/epistemicContracts.metrics.d.ts +2 -0
- package/dist/epistemicContracts.metrics.js +375 -158
- package/dist/epistemicContracts.metrics.js.map +1 -1
- package/dist/epistemicContracts.types.d.ts +87 -81
- package/dist/epistemicEdgeCreation.d.ts +2 -0
- package/dist/epistemicEdgeCreation.js +87 -16
- package/dist/epistemicEdgeCreation.js.map +1 -1
- package/dist/{epistemicEdges-BF-cn4i3.d.ts → epistemicEdges-BGBh0QSP.d.ts} +4 -7
- package/dist/epistemicEdges.d.ts +6 -5
- package/dist/epistemicEdges.handlers.d.ts +3 -3
- package/dist/epistemicEdges.handlers.js +129 -24
- package/dist/epistemicEdges.handlers.js.map +1 -1
- package/dist/epistemicEdges.helpers.d.ts +6 -4
- package/dist/epistemicEdges.helpers.js +37 -2
- package/dist/epistemicEdges.helpers.js.map +1 -1
- package/dist/epistemicEdges.js +1966 -1202
- package/dist/epistemicEdges.js.map +1 -1
- package/dist/epistemicEdges.mutations.d.ts +7 -7
- package/dist/epistemicEdges.mutations.js +956 -579
- package/dist/epistemicEdges.mutations.js.map +1 -1
- package/dist/epistemicEdges.queries.d.ts +16 -16
- package/dist/epistemicEdges.queries.js +639 -367
- package/dist/epistemicEdges.queries.js.map +1 -1
- package/dist/epistemicEdges.types.d.ts +10 -8
- package/dist/epistemicEvidence.d.ts +4 -1
- package/dist/epistemicEvidence.js +933 -532
- package/dist/epistemicEvidence.js.map +1 -1
- package/dist/epistemicEvidenceHelpers.d.ts +26 -10
- package/dist/epistemicEvidenceHelpers.js +239 -200
- package/dist/epistemicEvidenceHelpers.js.map +1 -1
- package/dist/epistemicEvidenceMutations.d.ts +8 -8
- package/dist/epistemicEvidenceMutations.js +840 -692
- package/dist/epistemicEvidenceMutations.js.map +1 -1
- package/dist/epistemicEvidenceQueries.d.ts +8 -8
- package/dist/epistemicEvidenceQueries.js +514 -238
- package/dist/epistemicEvidenceQueries.js.map +1 -1
- package/dist/epistemicHelpers.d.ts +4 -2
- package/dist/epistemicHelpers.js +308 -134
- package/dist/epistemicHelpers.js.map +1 -1
- package/dist/epistemicInsert.d.ts +16 -4
- package/dist/epistemicInsert.js +6 -3
- package/dist/epistemicInsert.js.map +1 -1
- package/dist/epistemicLayerRules.d.ts +10 -8
- package/dist/epistemicLayerRules.js +1 -5
- package/dist/epistemicLayerRules.js.map +1 -1
- package/dist/{epistemicLinking-CfE00tHJ.d.ts → epistemicLinking-CsCDv2cN.d.ts} +3 -3
- package/dist/epistemicLinking.d.ts +1 -1
- package/dist/epistemicLinking.js +177 -100
- package/dist/epistemicLinking.js.map +1 -1
- package/dist/epistemicNodeCreation.d.ts +2 -0
- package/dist/epistemicNodeCreation.js +203 -40
- package/dist/epistemicNodeCreation.js.map +1 -1
- package/dist/{epistemicNodes-BCQxpYx_.d.ts → epistemicNodes-CokAgBHg.d.ts} +3 -3
- package/dist/epistemicNodes.d.ts +3 -3
- package/dist/epistemicNodes.helpers.d.ts +24 -15
- package/dist/epistemicNodes.helpers.js.map +1 -1
- package/dist/epistemicNodes.internal.d.ts +6 -6
- package/dist/epistemicNodes.internal.js +389 -319
- package/dist/epistemicNodes.internal.js.map +1 -1
- package/dist/epistemicNodes.js +700 -504
- package/dist/epistemicNodes.js.map +1 -1
- package/dist/epistemicNodes.mutations.d.ts +6 -6
- package/dist/epistemicNodes.mutations.js +560 -463
- package/dist/epistemicNodes.mutations.js.map +1 -1
- package/dist/epistemicNodes.queries.d.ts +8 -8
- package/dist/epistemicNodes.queries.js +311 -314
- package/dist/epistemicNodes.queries.js.map +1 -1
- package/dist/epistemicNodes.validators.d.ts +2 -2
- package/dist/epistemicNodes.validators.js.map +1 -1
- package/dist/epistemicQuestions.conviction.d.ts +8 -8
- package/dist/epistemicQuestions.conviction.js +665 -484
- package/dist/epistemicQuestions.conviction.js.map +1 -1
- package/dist/epistemicQuestions.create.d.ts +4 -4
- package/dist/epistemicQuestions.create.js +640 -612
- package/dist/epistemicQuestions.create.js.map +1 -1
- package/dist/epistemicQuestions.d.ts +8 -5
- package/dist/epistemicQuestions.evidence.d.ts +2 -2
- package/dist/epistemicQuestions.evidence.js +475 -383
- package/dist/epistemicQuestions.evidence.js.map +1 -1
- package/dist/epistemicQuestions.helpers.d.ts +125 -24
- package/dist/epistemicQuestions.helpers.js +240 -209
- package/dist/epistemicQuestions.helpers.js.map +1 -1
- package/dist/epistemicQuestions.js +3474 -2823
- package/dist/epistemicQuestions.js.map +1 -1
- package/dist/epistemicQuestions.lifecycle.d.ts +2 -2
- package/dist/epistemicQuestions.lifecycle.js +607 -546
- package/dist/epistemicQuestions.lifecycle.js.map +1 -1
- package/dist/epistemicQuestions.queries.d.ts +12 -7
- package/dist/epistemicQuestions.queries.js +305 -244
- package/dist/epistemicQuestions.queries.js.map +1 -1
- package/dist/epistemicQuestions.sprint.d.ts +2 -2
- package/dist/epistemicQuestions.sprint.js +600 -394
- package/dist/epistemicQuestions.sprint.js.map +1 -1
- package/dist/epistemicQuestions.tail.d.ts +6 -6
- package/dist/epistemicQuestions.tail.js +572 -433
- package/dist/epistemicQuestions.tail.js.map +1 -1
- package/dist/{epistemicSources-dlKj58Jp.d.ts → epistemicSources-DQtaEkWs.d.ts} +4 -4
- package/dist/epistemicSources.d.ts +1 -1
- package/dist/epistemicSources.js +351 -311
- package/dist/epistemicSources.js.map +1 -1
- package/dist/evaluators/index.d.ts +8 -6
- package/dist/evaluators/index.js +399 -167
- package/dist/evaluators/index.js.map +1 -1
- package/dist/evaluators/lint-checker-evaluator.d.ts +16 -0
- package/dist/evaluators/{lintCheckerEvaluator.js → lint-checker-evaluator.js} +10 -5
- package/dist/evaluators/lint-checker-evaluator.js.map +1 -0
- package/dist/evaluators/{sentryCheckerEvaluator.d.ts → sentry-checker-evaluator.d.ts} +7 -2
- package/dist/evaluators/{sentryCheckerEvaluator.js → sentry-checker-evaluator.js} +3 -3
- package/dist/evaluators/sentry-checker-evaluator.js.map +1 -0
- package/dist/evaluators/shared.d.ts +2 -2
- package/dist/evaluators/shared.js +3 -1
- package/dist/evaluators/shared.js.map +1 -1
- package/dist/evaluators/{testRunnerEvaluator.d.ts → test-runner-evaluator.d.ts} +6 -1
- package/dist/evaluators/{testRunnerEvaluator.js → test-runner-evaluator.js} +6 -4
- package/dist/evaluators/test-runner-evaluator.js.map +1 -0
- package/dist/evaluators/tsc-checker-evaluator.d.ts +16 -0
- package/dist/evaluators/{tscCheckerEvaluator.js → tsc-checker-evaluator.js} +10 -5
- package/dist/evaluators/tsc-checker-evaluator.js.map +1 -0
- package/dist/graphTypes.js +6 -2
- package/dist/graphTypes.js.map +1 -1
- package/dist/helpers.d.ts +2 -0
- package/dist/helpers.js +313 -93
- package/dist/helpers.js.map +1 -1
- package/dist/{index-C-Kyd7hD.d.ts → index-DZxyC9Pb.d.ts} +7 -6
- package/dist/index.d.ts +86 -83
- package/dist/index.js +16914 -11760
- package/dist/index.js.map +1 -1
- package/dist/invariantEnforcement.d.ts +3 -3
- package/dist/invariantEnforcement.js.map +1 -1
- package/dist/logicalRoleInference.d.ts +2 -0
- package/dist/logicalRoleInference.js +1 -1
- package/dist/logicalRoleInference.js.map +1 -1
- package/dist/matcherFeedbackUtils.d.ts +2 -2
- package/dist/matcherFeedbackUtils.js.map +1 -1
- package/dist/{ontology-matching-C6rrz2VP.d.ts → ontology-matching-C-mYFrir.d.ts} +16 -16
- package/dist/ontology-matching.d.ts +1 -1
- package/dist/{ontologyApproval-CFYmqKmk.d.ts → ontologyApproval-BVt0feJi.d.ts} +10 -10
- package/dist/ontologyApproval.d.ts +1 -1
- package/dist/ontologyApproval.js +7 -1
- package/dist/ontologyApproval.js.map +1 -1
- package/dist/ontologyDefinitions.d.ts +14 -24
- package/dist/ontologyDefinitions.js +269 -34
- package/dist/ontologyDefinitions.js.map +1 -1
- package/dist/ontologyHelpers.d.ts +13 -13
- package/dist/ontologyHelpers.js.map +1 -1
- package/dist/{ontologyRegistry-B67rPJ16.d.ts → ontologyRegistry-CljS-ENv.d.ts} +2 -2
- package/dist/ontologyRegistry.d.ts +1 -1
- package/dist/ontologyRegistry.js +34 -6
- package/dist/ontologyRegistry.js.map +1 -1
- package/dist/{projectionReconciliation-jww2fBI0.d.ts → projectionReconciliation-DnrSgHSQ.d.ts} +4 -4
- package/dist/projectionReconciliation.d.ts +1 -1
- package/dist/projectionReconciliation.js +57 -10
- package/dist/projectionReconciliation.js.map +1 -1
- package/dist/{projectionStaleness-CmdbpjVK.d.ts → projectionStaleness-C8ImQ2zP.d.ts} +17 -17
- package/dist/projectionStaleness.d.ts +1 -1
- package/dist/projectionStaleness.js +8 -2
- package/dist/projectionStaleness.js.map +1 -1
- package/dist/proof-attestation.json +1 -1
- package/dist/{questionEvidenceLinks-DFlyPpAj.d.ts → questionEvidenceLinks-_nPRa-LY.d.ts} +10 -10
- package/dist/questionEvidenceLinks.d.ts +1 -1
- package/dist/questionEvidenceLinks.js +564 -347
- package/dist/questionEvidenceLinks.js.map +1 -1
- package/dist/{resolverTypes-CC8Ea2E2.d.ts → resolverTypes-BOXPxLET.d.ts} +8 -7
- package/dist/resolverTypes.d.ts +4 -2
- package/dist/{resolvers-Br1a6eLV.d.ts → resolvers-B1TIBmRO.d.ts} +3 -1
- package/dist/resolvers.d.ts +5 -3
- package/dist/resolvers.js +121 -77
- package/dist/resolvers.js.map +1 -1
- package/dist/scopeResolverCompat.d.ts +10 -7
- package/dist/scopeResolverCompat.js +106 -123
- package/dist/scopeResolverCompat.js.map +1 -1
- package/dist/{text-matching-DNg4M5Wd.d.ts → text-matching-DzFooju6.d.ts} +7 -7
- package/dist/text-matching.d.ts +1 -1
- package/dist/topicOntologyResolver.d.ts +22 -21
- package/dist/topicOntologyResolver.js +54 -32
- package/dist/topicOntologyResolver.js.map +1 -1
- package/dist/topicProjectOverlay.d.ts +30 -20
- package/dist/topicProjectOverlay.js +120 -76
- package/dist/topicProjectOverlay.js.map +1 -1
- package/dist/{topicScope-7zhyeGl7.d.ts → topicScope-DJVa0mLa.d.ts} +22 -7
- package/dist/topicScope.d.ts +3 -1
- package/dist/topicScope.js +104 -119
- package/dist/topicScope.js.map +1 -1
- package/dist/workflowBridge.d.ts +26 -15
- package/dist/workflowBridge.js +140 -144
- package/dist/workflowBridge.js.map +1 -1
- package/dist/workspaceIsolation.d.ts +14 -12
- package/dist/workspaceIsolation.js +108 -122
- package/dist/workspaceIsolation.js.map +1 -1
- package/package.json +4 -4
- package/dist/edges/dependsOn.js.map +0 -1
- package/dist/edges/derivedFrom.js.map +0 -1
- package/dist/edges/propagationTypes.js.map +0 -1
- package/dist/evaluators/lintCheckerEvaluator.d.ts +0 -11
- package/dist/evaluators/lintCheckerEvaluator.js.map +0 -1
- package/dist/evaluators/sentryCheckerEvaluator.js.map +0 -1
- package/dist/evaluators/testRunnerEvaluator.js.map +0 -1
- package/dist/evaluators/tscCheckerEvaluator.d.ts +0 -11
- package/dist/evaluators/tscCheckerEvaluator.js.map +0 -1
- package/dist/{epistemicQuestions-bwHd2FWE.d.ts → epistemicQuestions-Do1fhYm5.d.ts} +4 -4
package/dist/evaluators/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseEvidentialEvaluatorConfig, compareMetricValue, buildEvidentialRationale, parseMetricCheckerConfig, getEvaluatorInputRecord, pickFiniteNumber,
|
|
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
|
|
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
|
|
57
|
-
|
|
58
|
-
const node =
|
|
59
|
-
if (
|
|
60
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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 =
|
|
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
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
"
|
|
224
|
-
"
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
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
|
|
231
|
-
rationale:
|
|
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
|
|
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(
|
|
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(
|
|
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
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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
|
|
488
|
+
result: "expired",
|
|
489
|
+
rationale: `${label} completed at ${completedAt}, after deadline ${deadline}.`,
|
|
339
490
|
data: {
|
|
340
491
|
label,
|
|
341
|
-
deadline
|
|
492
|
+
deadline,
|
|
342
493
|
completed: true,
|
|
343
|
-
completedAt
|
|
344
|
-
missedDeadline:
|
|
494
|
+
completedAt,
|
|
495
|
+
missedDeadline: true,
|
|
496
|
+
overdueByMs: completedAt - deadline
|
|
345
497
|
}
|
|
346
498
|
};
|
|
347
499
|
}
|
|
348
|
-
|
|
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 ${
|
|
518
|
+
rationale: `${label} missed deadline ${deadline}; temporal contract expired.`,
|
|
352
519
|
data: {
|
|
353
520
|
label,
|
|
354
|
-
deadline
|
|
521
|
+
deadline,
|
|
355
522
|
completed: false,
|
|
356
|
-
overdueByMs:
|
|
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 ${
|
|
529
|
+
rationale: `${label} is still before deadline ${deadline}; awaiting outcome.`,
|
|
363
530
|
data: {
|
|
364
531
|
label,
|
|
365
|
-
deadline
|
|
532
|
+
deadline,
|
|
366
533
|
completed: false,
|
|
367
|
-
timeRemainingMs:
|
|
534
|
+
timeRemainingMs: deadline - context.now
|
|
368
535
|
}
|
|
369
536
|
};
|
|
370
537
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
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
|
|
381
|
-
rationale:
|
|
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([
|
|
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(
|
|
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/
|
|
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(
|
|
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/
|
|
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/
|
|
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/
|
|
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(
|
|
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(
|
|
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
|