@lucern/confidence 0.3.0-alpha.6 → 0.3.0-alpha.8

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.
@@ -1,4 +1,4 @@
1
- import { DirichletOpinion, SLOpinion, Opinion } from '../../types.js';
1
+ import { Opinion, SLOpinion, DirichletOpinion } from '../../types.js';
2
2
 
3
3
  declare const DEFAULT_NON_INFORMATIVE_WEIGHT = 2;
4
4
  declare function opinionFromDirichlet(alpha: readonly number[], nonInformativeWeight: number, baseRate: readonly number[]): DirichletOpinion;
@@ -1,4 +1,4 @@
1
- import { EpistemicContractEvaluationResult, EpistemicContractStatus, VerificationConfidenceTrigger, EpistemicContractModulation, ContractModulationPlan, EpistemicContractRecord, EvidentialAction, EvidentialOperator, EvidentialEvaluatorConfig, EpistemicContractDirection, EvidentialMetricSnapshot, MetricCheckerEvaluatorConfig, ReferenceCheckCounterConfig, TemporalDeadlineEvaluatorConfig, MarketIndexComparatorConfig } from '../../types.js';
1
+ import { EvidentialOperator, EpistemicContractEvaluationResult, EvidentialEvaluatorConfig, EvidentialMetricSnapshot, EpistemicContractRecord, EpistemicContractModulation, ContractModulationPlan, EpistemicContractStatus, VerificationConfidenceTrigger, EvidentialAction, MarketIndexComparatorConfig, MetricCheckerEvaluatorConfig, ReferenceCheckCounterConfig, TemporalDeadlineEvaluatorConfig, EpistemicContractDirection } from '../../types.js';
2
2
 
3
3
  declare const BUILT_IN_EVIDENTIAL_EVALUATOR = "evidential";
4
4
  declare const BUILT_IN_EVIDENTIAL_ALIASES: Set<string>;
@@ -18,6 +18,9 @@ function generateContractId() {
18
18
  }
19
19
  return `contract-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
20
20
  }
21
+ function isRecord(value) {
22
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
23
+ }
21
24
  function deriveContractStatus(result, currentStatus) {
22
25
  if (currentStatus === "archived") {
23
26
  return currentStatus;
@@ -159,18 +162,17 @@ function pickFiniteNumber(config, keys) {
159
162
  return void 0;
160
163
  }
161
164
  function getEvaluatorInputRecord(inputData, nestedKey) {
162
- if (!inputData || typeof inputData !== "object") {
165
+ if (!isRecord(inputData)) {
163
166
  return {};
164
167
  }
165
- const root = inputData;
166
- const nested = root[nestedKey];
167
- if (nested && typeof nested === "object") {
168
+ const nested = inputData[nestedKey];
169
+ if (isRecord(nested)) {
168
170
  return nested;
169
171
  }
170
- return root;
172
+ return inputData;
171
173
  }
172
174
  function parseEvidentialEvaluatorConfig(value) {
173
- if (!value || typeof value !== "object") {
175
+ if (!isRecord(value)) {
174
176
  throw new Error(
175
177
  "Evidential contracts require condition.evaluatorConfig with metric/operator/threshold."
176
178
  );
@@ -188,7 +190,7 @@ function parseEvidentialEvaluatorConfig(value) {
188
190
  if (typeof threshold !== "number" || !Number.isFinite(threshold)) {
189
191
  throw new Error("Evidential contracts require a numeric threshold.");
190
192
  }
191
- const actionParams = config.actionParams && typeof config.actionParams === "object" && config.actionParams !== null ? config.actionParams : void 0;
193
+ const actionParams = isRecord(config.actionParams) ? config.actionParams : void 0;
192
194
  return {
193
195
  metric,
194
196
  operator,
@@ -237,7 +239,7 @@ function buildEvidentialRationale(args) {
237
239
  return `${clause}; comparison ${args.comparisonSatisfied ? "passed" : "failed"}, resulting in ${args.result}.`;
238
240
  }
239
241
  function parseMetricCheckerConfig(value) {
240
- if (!value || typeof value !== "object") {
242
+ if (!isRecord(value)) {
241
243
  throw new Error(
242
244
  "metric_checker requires condition.evaluatorConfig with observedValue/operator/threshold."
243
245
  );
@@ -254,7 +256,7 @@ function parseMetricCheckerConfig(value) {
254
256
  };
255
257
  }
256
258
  function parseReferenceCheckCounterConfig(value) {
257
- if (!value || typeof value !== "object") {
259
+ if (!isRecord(value)) {
258
260
  throw new Error(
259
261
  "reference_check_counter requires condition.evaluatorConfig with tag/operator/threshold."
260
262
  );
@@ -277,7 +279,7 @@ function parseReferenceCheckCounterConfig(value) {
277
279
  };
278
280
  }
279
281
  function parseTemporalDeadlineConfig(value) {
280
- if (!value || typeof value !== "object") {
282
+ if (!isRecord(value)) {
281
283
  return {};
282
284
  }
283
285
  const config = value;
@@ -291,7 +293,7 @@ function parseTemporalDeadlineConfig(value) {
291
293
  };
292
294
  }
293
295
  function parseMarketIndexComparatorConfig(value) {
294
- if (!value || typeof value !== "object") {
296
+ if (!isRecord(value)) {
295
297
  throw new Error(
296
298
  "market_index_comparator requires condition.evaluatorConfig with subjectValue/benchmarkValue/operator/threshold."
297
299
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/v1/operations/contracts/epistemicContract.ts"],"names":[],"mappings":"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","file":"epistemicContract.js","sourcesContent":["import type {\n ContractModulationPlan,\n EpistemicContractDirection,\n EpistemicContractEvaluationResult,\n EpistemicContractModulation,\n EpistemicContractRecord,\n EpistemicContractStatus,\n EvidentialAction,\n EvidentialEvaluatorConfig,\n EvidentialMetricSnapshot,\n EvidentialOperator,\n MarketIndexComparatorConfig,\n MetricCheckerEvaluatorConfig,\n ReferenceCheckCounterConfig,\n TemporalDeadlineEvaluatorConfig,\n VerificationConfidenceTrigger,\n} from \"../../types\";\n\nexport const BUILT_IN_EVIDENTIAL_EVALUATOR = \"evidential\";\nexport const BUILT_IN_EVIDENTIAL_ALIASES = new Set([\n BUILT_IN_EVIDENTIAL_EVALUATOR,\n \"built_in_evidential\",\n \"builtin_evidential\",\n]);\nexport const BUILT_IN_METRIC_CHECKER = \"metric_checker\";\nexport const BUILT_IN_REFERENCE_CHECK_COUNTER = \"reference_check_counter\";\nexport const BUILT_IN_TEMPORAL_DEADLINE = \"temporal_deadline\";\nexport const BUILT_IN_MARKET_INDEX_COMPARATOR = \"market_index_comparator\";\n\nfunction clampConfidence(value: number): number {\n return Math.max(0, Math.min(1, value));\n}\n\nfunction generateContractId(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n return `contract-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nexport function deriveContractStatus(\n result: EpistemicContractEvaluationResult,\n currentStatus: EpistemicContractStatus\n): EpistemicContractStatus {\n if (currentStatus === \"archived\") {\n return currentStatus;\n }\n\n switch (result) {\n case \"confirmed\":\n return \"satisfied\";\n case \"disconfirmed\":\n return \"violated\";\n case \"expired\":\n return \"expired\";\n default:\n return currentStatus === \"satisfied\" ||\n currentStatus === \"violated\" ||\n currentStatus === \"expired\"\n ? \"active\"\n : currentStatus;\n }\n}\n\nexport function deriveVerificationTrigger(\n result: EpistemicContractEvaluationResult\n): VerificationConfidenceTrigger | null {\n switch (result) {\n case \"confirmed\":\n return \"verification_confirmed\";\n case \"disconfirmed\":\n return \"verification_disconfirmed\";\n case \"expired\":\n return \"verification_expired\";\n case \"partial\":\n return \"verification_partial\";\n default:\n return null;\n }\n}\n\nexport function deriveContractModulationPlan(args: {\n currentConfidence: number;\n modulation: EpistemicContractModulation;\n result: EpistemicContractEvaluationResult;\n resultConfidence?: number;\n}): ContractModulationPlan | null {\n const trigger = deriveVerificationTrigger(args.result);\n if (!trigger) {\n return null;\n }\n\n if (args.result === \"confirmed\") {\n const rawNext = args.currentConfidence + args.modulation.onConfirmed.delta;\n const confidenceAfter = clampConfidence(\n Math.min(\n args.modulation.onConfirmed.ceiling ?? Number.POSITIVE_INFINITY,\n rawNext\n )\n );\n return {\n trigger,\n confidenceBefore: args.currentConfidence,\n confidenceAfter,\n confidenceDelta: confidenceAfter - args.currentConfidence,\n };\n }\n\n if (args.result === \"disconfirmed\") {\n const rawNext =\n args.currentConfidence + args.modulation.onDisconfirmed.delta;\n const confidenceAfter = clampConfidence(\n Math.max(args.modulation.onDisconfirmed.floor ?? 0, rawNext)\n );\n return {\n trigger,\n confidenceBefore: args.currentConfidence,\n confidenceAfter,\n confidenceDelta: confidenceAfter - args.currentConfidence,\n };\n }\n\n if (args.result === \"expired\" && args.modulation.onExpired) {\n const confidenceAfter = clampConfidence(\n args.currentConfidence + args.modulation.onExpired.delta\n );\n return {\n trigger,\n confidenceBefore: args.currentConfidence,\n confidenceAfter,\n confidenceDelta: confidenceAfter - args.currentConfidence,\n };\n }\n\n if (args.result === \"partial\" && args.modulation.onPartial) {\n if ((args.resultConfidence ?? 0) < args.modulation.onPartial.threshold) {\n return null;\n }\n const confidenceAfter = clampConfidence(\n args.currentConfidence + args.modulation.onPartial.delta\n );\n return {\n trigger,\n confidenceBefore: args.currentConfidence,\n confidenceAfter,\n confidenceDelta: confidenceAfter - args.currentConfidence,\n };\n }\n\n return null;\n}\n\nexport function createInheritedContractRecord<\n TBeliefId = string,\n TTopicId = string | undefined,\n>(\n contract: EpistemicContractRecord<any, any>,\n args: {\n beliefNodeId: TBeliefId;\n topicId?: TTopicId;\n createdBy: string;\n now: number;\n }\n): EpistemicContractRecord<TBeliefId, TTopicId> {\n return {\n beliefNodeId: args.beliefNodeId,\n contractId: generateContractId(),\n title: contract.title,\n description: contract.description,\n conditionType: contract.conditionType,\n direction: contract.direction,\n condition: contract.condition,\n deadline: contract.deadline,\n compositeOf: contract.compositeOf,\n compositeOperator: contract.compositeOperator,\n modulation: contract.modulation,\n evaluationSchedule: contract.evaluationSchedule,\n periodicIntervalMs: contract.periodicIntervalMs,\n status: \"active\",\n lineageSource: \"inherited\",\n inheritedFromContractId: contract.contractId,\n inheritedFromBeliefNodeId: contract.beliefNodeId as TBeliefId,\n inheritedAt: args.now,\n topicId: args.topicId,\n createdAt: args.now,\n createdBy: args.createdBy,\n updatedAt: args.now,\n };\n}\n\nexport function normalizeEvidentialAction(\n value: unknown\n): EvidentialAction | undefined {\n return value === \"modulate_confidence\" ||\n value === \"flag_review\" ||\n value === \"archive\"\n ? value\n : undefined;\n}\n\nexport function parseComparisonOperator(\n value: unknown,\n evaluatorName: string\n): EvidentialOperator {\n if (\n value === \"gte\" ||\n value === \"lte\" ||\n value === \"eq\" ||\n value === \"gt\" ||\n value === \"lt\"\n ) {\n return value;\n }\n throw new Error(\n `${evaluatorName} requires operator to be one of gte, lte, eq, gt, or lt.`\n );\n}\n\nexport function parseNumericThreshold(\n value: unknown,\n evaluatorName: string\n): number {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n throw new Error(`${evaluatorName} requires a finite numeric threshold.`);\n}\n\nexport function pickFiniteNumber(\n config: Record<string, unknown>,\n keys: string[]\n): number | undefined {\n for (const key of keys) {\n const value = config[key];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n }\n return undefined;\n}\n\nexport function getEvaluatorInputRecord(\n inputData: unknown,\n nestedKey: string\n): Record<string, unknown> {\n if (!inputData || typeof inputData !== \"object\") {\n return {};\n }\n\n const root = inputData as Record<string, unknown>;\n const nested = root[nestedKey];\n if (nested && typeof nested === \"object\") {\n return nested as Record<string, unknown>;\n }\n return root;\n}\n\nexport function parseEvidentialEvaluatorConfig(\n value: unknown\n): EvidentialEvaluatorConfig {\n if (!value || typeof value !== \"object\") {\n throw new Error(\n \"Evidential contracts require condition.evaluatorConfig with metric/operator/threshold.\"\n );\n }\n\n const config = value as Record<string, unknown>;\n const metric = config.metric;\n const operator = config.operator;\n const threshold = config.threshold;\n\n if (\n metric !== \"evidence_count\" &&\n metric !== \"contradiction_status\" &&\n metric !== \"edge_freshness\" &&\n metric !== \"dependent_count\"\n ) {\n throw new Error(`Unsupported evidential metric: ${String(metric)}`);\n }\n\n if (\n operator !== \"gte\" &&\n operator !== \"lte\" &&\n operator !== \"eq\" &&\n operator !== \"gt\" &&\n operator !== \"lt\"\n ) {\n throw new Error(`Unsupported evidential operator: ${String(operator)}`);\n }\n\n if (typeof threshold !== \"number\" || !Number.isFinite(threshold)) {\n throw new Error(\"Evidential contracts require a numeric threshold.\");\n }\n\n const actionParams =\n config.actionParams &&\n typeof config.actionParams === \"object\" &&\n config.actionParams !== null\n ? (config.actionParams as Record<string, unknown>)\n : undefined;\n\n return {\n metric,\n operator,\n threshold,\n action: normalizeEvidentialAction(config.action),\n actionParams:\n actionParams &&\n (typeof actionParams.targetConfidence === \"number\" ||\n typeof actionParams.rationale === \"string\")\n ? {\n targetConfidence:\n typeof actionParams.targetConfidence === \"number\"\n ? actionParams.targetConfidence\n : undefined,\n rationale:\n typeof actionParams.rationale === \"string\"\n ? actionParams.rationale\n : undefined,\n }\n : undefined,\n };\n}\n\nexport function compareMetricValue(\n operator: EvidentialOperator,\n left: number,\n right: number\n): boolean {\n switch (operator) {\n case \"gte\":\n return left >= right;\n case \"lte\":\n return left <= right;\n case \"eq\":\n return left === right;\n case \"gt\":\n return left > right;\n case \"lt\":\n return left < right;\n default:\n return false;\n }\n}\n\nexport function resolveComparisonResult(\n direction: EpistemicContractDirection,\n comparisonSatisfied: boolean\n): EpistemicContractEvaluationResult {\n return direction === \"falsifies\"\n ? comparisonSatisfied\n ? \"disconfirmed\"\n : \"confirmed\"\n : comparisonSatisfied\n ? \"confirmed\"\n : \"disconfirmed\";\n}\n\nexport function buildComparisonRationale(args: {\n label: string;\n observedValue: number | null;\n operator: EvidentialOperator;\n threshold: number;\n comparisonSatisfied: boolean;\n result: EpistemicContractEvaluationResult;\n unit?: string;\n}): string {\n const renderedObserved =\n args.observedValue === null\n ? \"no data\"\n : `${args.observedValue}${args.unit ? ` ${args.unit}` : \"\"}`;\n const renderedThreshold = `${args.threshold}${args.unit ? ` ${args.unit}` : \"\"}`;\n const clause = `${args.label} observed ${renderedObserved} against ${args.operator} ${renderedThreshold}`;\n\n if (args.observedValue === null) {\n return `${clause}; evaluator returned ${args.result} because no current data was available.`;\n }\n\n return `${clause}; comparison ${\n args.comparisonSatisfied ? \"passed\" : \"failed\"\n }, resulting in ${args.result}.`;\n}\n\nexport function buildEvidentialRationale(args: {\n config: EvidentialEvaluatorConfig;\n snapshot: EvidentialMetricSnapshot;\n comparisonSatisfied: boolean;\n result: EpistemicContractEvaluationResult;\n}): string {\n const observed =\n args.snapshot.value === null ? \"no data\" : String(args.snapshot.value);\n const clause = `${args.snapshot.metric} observed ${observed} against ${args.config.operator} ${args.config.threshold}`;\n\n if (args.snapshot.value === null) {\n return `${clause}; evidential evaluator treated the comparison as unmet, resulting in ${args.result}.`;\n }\n\n return `${clause}; comparison ${\n args.comparisonSatisfied ? \"passed\" : \"failed\"\n }, resulting in ${args.result}.`;\n}\n\nexport function parseMetricCheckerConfig(\n value: unknown\n): MetricCheckerEvaluatorConfig {\n if (!value || typeof value !== \"object\") {\n throw new Error(\n \"metric_checker requires condition.evaluatorConfig with observedValue/operator/threshold.\"\n );\n }\n\n const config = value as Record<string, unknown>;\n return {\n metric:\n typeof config.metric === \"string\" && config.metric.length > 0\n ? config.metric\n : undefined,\n operator: parseComparisonOperator(config.operator, BUILT_IN_METRIC_CHECKER),\n threshold: parseNumericThreshold(config.threshold, BUILT_IN_METRIC_CHECKER),\n observedValue: pickFiniteNumber(config, [\"observedValue\", \"value\"]),\n currentValue: pickFiniteNumber(config, [\"currentValue\"]),\n metricValue: pickFiniteNumber(config, [\"metricValue\"]),\n unit:\n typeof config.unit === \"string\" && config.unit.length > 0\n ? config.unit\n : undefined,\n };\n}\n\nexport function parseReferenceCheckCounterConfig(\n value: unknown\n): ReferenceCheckCounterConfig {\n if (!value || typeof value !== \"object\") {\n throw new Error(\n \"reference_check_counter requires condition.evaluatorConfig with tag/operator/threshold.\"\n );\n }\n\n const config = value as Record<string, unknown>;\n if (typeof config.tag !== \"string\" || config.tag.trim().length === 0) {\n throw new Error(\"reference_check_counter requires a non-empty tag.\");\n }\n\n return {\n tag: config.tag.trim(),\n operator: parseComparisonOperator(\n config.operator,\n BUILT_IN_REFERENCE_CHECK_COUNTER\n ),\n threshold: parseNumericThreshold(\n config.threshold,\n BUILT_IN_REFERENCE_CHECK_COUNTER\n ),\n caseSensitive: config.caseSensitive === true,\n };\n}\n\nexport function parseTemporalDeadlineConfig(\n value: unknown\n): TemporalDeadlineEvaluatorConfig {\n if (!value || typeof value !== \"object\") {\n return {};\n }\n\n const config = value as Record<string, unknown>;\n return {\n label:\n typeof config.label === \"string\" && config.label.length > 0\n ? config.label\n : undefined,\n completed: config.completed === true,\n completedAt: pickFiniteNumber(config, [\"completedAt\"]),\n observedAt: pickFiniteNumber(config, [\"observedAt\"]),\n satisfiedAt: pickFiniteNumber(config, [\"satisfiedAt\"]),\n achievedAt: pickFiniteNumber(config, [\"achievedAt\"]),\n };\n}\n\nexport function parseMarketIndexComparatorConfig(\n value: unknown\n): MarketIndexComparatorConfig {\n if (!value || typeof value !== \"object\") {\n throw new Error(\n \"market_index_comparator requires condition.evaluatorConfig with subjectValue/benchmarkValue/operator/threshold.\"\n );\n }\n\n const config = value as Record<string, unknown>;\n return {\n subject:\n typeof config.subject === \"string\" && config.subject.length > 0\n ? config.subject\n : undefined,\n subjectValue: pickFiniteNumber(config, [\"subjectValue\", \"leftValue\"]),\n primaryValue: pickFiniteNumber(config, [\"primaryValue\"]),\n benchmark:\n typeof config.benchmark === \"string\" && config.benchmark.length > 0\n ? config.benchmark\n : undefined,\n benchmarkValue: pickFiniteNumber(config, [\"benchmarkValue\", \"rightValue\"]),\n comparisonValue: pickFiniteNumber(config, [\"comparisonValue\"]),\n operator: parseComparisonOperator(\n config.operator,\n BUILT_IN_MARKET_INDEX_COMPARATOR\n ),\n threshold: parseNumericThreshold(\n config.threshold,\n BUILT_IN_MARKET_INDEX_COMPARATOR\n ),\n };\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/v1/operations/contracts/epistemicContract.ts"],"names":[],"mappings":"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","file":"epistemicContract.js","sourcesContent":["import type {\n ContractModulationPlan,\n EpistemicContractDirection,\n EpistemicContractEvaluationResult,\n EpistemicContractModulation,\n EpistemicContractRecord,\n EpistemicContractStatus,\n EvidentialAction,\n EvidentialEvaluatorConfig,\n EvidentialMetricSnapshot,\n EvidentialOperator,\n MarketIndexComparatorConfig,\n MetricCheckerEvaluatorConfig,\n ReferenceCheckCounterConfig,\n TemporalDeadlineEvaluatorConfig,\n VerificationConfidenceTrigger,\n} from \"../../types\";\n\nexport const BUILT_IN_EVIDENTIAL_EVALUATOR = \"evidential\";\nexport const BUILT_IN_EVIDENTIAL_ALIASES = new Set([\n BUILT_IN_EVIDENTIAL_EVALUATOR,\n \"built_in_evidential\",\n \"builtin_evidential\",\n]);\nexport const BUILT_IN_METRIC_CHECKER = \"metric_checker\";\nexport const BUILT_IN_REFERENCE_CHECK_COUNTER = \"reference_check_counter\";\nexport const BUILT_IN_TEMPORAL_DEADLINE = \"temporal_deadline\";\nexport const BUILT_IN_MARKET_INDEX_COMPARATOR = \"market_index_comparator\";\n\nfunction clampConfidence(value: number): number {\n return Math.max(0, Math.min(1, value));\n}\n\nfunction generateContractId(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n return `contract-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function deriveContractStatus(\n result: EpistemicContractEvaluationResult,\n currentStatus: EpistemicContractStatus\n): EpistemicContractStatus {\n if (currentStatus === \"archived\") {\n return currentStatus;\n }\n\n switch (result) {\n case \"confirmed\":\n return \"satisfied\";\n case \"disconfirmed\":\n return \"violated\";\n case \"expired\":\n return \"expired\";\n default:\n return currentStatus === \"satisfied\" ||\n currentStatus === \"violated\" ||\n currentStatus === \"expired\"\n ? \"active\"\n : currentStatus;\n }\n}\n\nexport function deriveVerificationTrigger(\n result: EpistemicContractEvaluationResult\n): VerificationConfidenceTrigger | null {\n switch (result) {\n case \"confirmed\":\n return \"verification_confirmed\";\n case \"disconfirmed\":\n return \"verification_disconfirmed\";\n case \"expired\":\n return \"verification_expired\";\n case \"partial\":\n return \"verification_partial\";\n default:\n return null;\n }\n}\n\nexport function deriveContractModulationPlan(args: {\n currentConfidence: number;\n modulation: EpistemicContractModulation;\n result: EpistemicContractEvaluationResult;\n resultConfidence?: number;\n}): ContractModulationPlan | null {\n const trigger = deriveVerificationTrigger(args.result);\n if (!trigger) {\n return null;\n }\n\n if (args.result === \"confirmed\") {\n const rawNext = args.currentConfidence + args.modulation.onConfirmed.delta;\n const confidenceAfter = clampConfidence(\n Math.min(\n args.modulation.onConfirmed.ceiling ?? Number.POSITIVE_INFINITY,\n rawNext\n )\n );\n return {\n trigger,\n confidenceBefore: args.currentConfidence,\n confidenceAfter,\n confidenceDelta: confidenceAfter - args.currentConfidence,\n };\n }\n\n if (args.result === \"disconfirmed\") {\n const rawNext =\n args.currentConfidence + args.modulation.onDisconfirmed.delta;\n const confidenceAfter = clampConfidence(\n Math.max(args.modulation.onDisconfirmed.floor ?? 0, rawNext)\n );\n return {\n trigger,\n confidenceBefore: args.currentConfidence,\n confidenceAfter,\n confidenceDelta: confidenceAfter - args.currentConfidence,\n };\n }\n\n if (args.result === \"expired\" && args.modulation.onExpired) {\n const confidenceAfter = clampConfidence(\n args.currentConfidence + args.modulation.onExpired.delta\n );\n return {\n trigger,\n confidenceBefore: args.currentConfidence,\n confidenceAfter,\n confidenceDelta: confidenceAfter - args.currentConfidence,\n };\n }\n\n if (args.result === \"partial\" && args.modulation.onPartial) {\n if ((args.resultConfidence ?? 0) < args.modulation.onPartial.threshold) {\n return null;\n }\n const confidenceAfter = clampConfidence(\n args.currentConfidence + args.modulation.onPartial.delta\n );\n return {\n trigger,\n confidenceBefore: args.currentConfidence,\n confidenceAfter,\n confidenceDelta: confidenceAfter - args.currentConfidence,\n };\n }\n\n return null;\n}\n\nexport function createInheritedContractRecord<\n TBeliefId = string,\n TTopicId = string | undefined,\n>(\n contract: EpistemicContractRecord<any, any>,\n args: {\n beliefNodeId: TBeliefId;\n topicId?: TTopicId;\n createdBy: string;\n now: number;\n }\n): EpistemicContractRecord<TBeliefId, TTopicId> {\n return {\n beliefNodeId: args.beliefNodeId,\n contractId: generateContractId(),\n title: contract.title,\n description: contract.description,\n conditionType: contract.conditionType,\n direction: contract.direction,\n condition: contract.condition,\n deadline: contract.deadline,\n compositeOf: contract.compositeOf,\n compositeOperator: contract.compositeOperator,\n modulation: contract.modulation,\n evaluationSchedule: contract.evaluationSchedule,\n periodicIntervalMs: contract.periodicIntervalMs,\n status: \"active\",\n lineageSource: \"inherited\",\n inheritedFromContractId: contract.contractId,\n inheritedFromBeliefNodeId: contract.beliefNodeId as TBeliefId,\n inheritedAt: args.now,\n topicId: args.topicId,\n createdAt: args.now,\n createdBy: args.createdBy,\n updatedAt: args.now,\n };\n}\n\nexport function normalizeEvidentialAction(\n value: unknown\n): EvidentialAction | undefined {\n return value === \"modulate_confidence\" ||\n value === \"flag_review\" ||\n value === \"archive\"\n ? value\n : undefined;\n}\n\nexport function parseComparisonOperator(\n value: unknown,\n evaluatorName: string\n): EvidentialOperator {\n if (\n value === \"gte\" ||\n value === \"lte\" ||\n value === \"eq\" ||\n value === \"gt\" ||\n value === \"lt\"\n ) {\n return value;\n }\n throw new Error(\n `${evaluatorName} requires operator to be one of gte, lte, eq, gt, or lt.`\n );\n}\n\nexport function parseNumericThreshold(\n value: unknown,\n evaluatorName: string\n): number {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n throw new Error(`${evaluatorName} requires a finite numeric threshold.`);\n}\n\nexport function pickFiniteNumber(\n config: Record<string, unknown>,\n keys: string[]\n): number | undefined {\n for (const key of keys) {\n const value = config[key];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n }\n return undefined;\n}\n\nexport function getEvaluatorInputRecord(\n inputData: unknown,\n nestedKey: string\n): Record<string, unknown> {\n if (!isRecord(inputData)) {\n return {};\n }\n\n const nested = inputData[nestedKey];\n if (isRecord(nested)) {\n return nested;\n }\n return inputData;\n}\n\nexport function parseEvidentialEvaluatorConfig(\n value: unknown\n): EvidentialEvaluatorConfig {\n if (!isRecord(value)) {\n throw new Error(\n \"Evidential contracts require condition.evaluatorConfig with metric/operator/threshold.\"\n );\n }\n\n const config = value;\n const metric = config.metric;\n const operator = config.operator;\n const threshold = config.threshold;\n\n if (\n metric !== \"evidence_count\" &&\n metric !== \"contradiction_status\" &&\n metric !== \"edge_freshness\" &&\n metric !== \"dependent_count\"\n ) {\n throw new Error(`Unsupported evidential metric: ${String(metric)}`);\n }\n\n if (\n operator !== \"gte\" &&\n operator !== \"lte\" &&\n operator !== \"eq\" &&\n operator !== \"gt\" &&\n operator !== \"lt\"\n ) {\n throw new Error(`Unsupported evidential operator: ${String(operator)}`);\n }\n\n if (typeof threshold !== \"number\" || !Number.isFinite(threshold)) {\n throw new Error(\"Evidential contracts require a numeric threshold.\");\n }\n\n const actionParams =\n isRecord(config.actionParams) ? config.actionParams : undefined;\n\n return {\n metric,\n operator,\n threshold,\n action: normalizeEvidentialAction(config.action),\n actionParams:\n actionParams &&\n (typeof actionParams.targetConfidence === \"number\" ||\n typeof actionParams.rationale === \"string\")\n ? {\n targetConfidence:\n typeof actionParams.targetConfidence === \"number\"\n ? actionParams.targetConfidence\n : undefined,\n rationale:\n typeof actionParams.rationale === \"string\"\n ? actionParams.rationale\n : undefined,\n }\n : undefined,\n };\n}\n\nexport function compareMetricValue(\n operator: EvidentialOperator,\n left: number,\n right: number\n): boolean {\n switch (operator) {\n case \"gte\":\n return left >= right;\n case \"lte\":\n return left <= right;\n case \"eq\":\n return left === right;\n case \"gt\":\n return left > right;\n case \"lt\":\n return left < right;\n default:\n return false;\n }\n}\n\nexport function resolveComparisonResult(\n direction: EpistemicContractDirection,\n comparisonSatisfied: boolean\n): EpistemicContractEvaluationResult {\n return direction === \"falsifies\"\n ? comparisonSatisfied\n ? \"disconfirmed\"\n : \"confirmed\"\n : comparisonSatisfied\n ? \"confirmed\"\n : \"disconfirmed\";\n}\n\nexport function buildComparisonRationale(args: {\n label: string;\n observedValue: number | null;\n operator: EvidentialOperator;\n threshold: number;\n comparisonSatisfied: boolean;\n result: EpistemicContractEvaluationResult;\n unit?: string;\n}): string {\n const renderedObserved =\n args.observedValue === null\n ? \"no data\"\n : `${args.observedValue}${args.unit ? ` ${args.unit}` : \"\"}`;\n const renderedThreshold = `${args.threshold}${args.unit ? ` ${args.unit}` : \"\"}`;\n const clause = `${args.label} observed ${renderedObserved} against ${args.operator} ${renderedThreshold}`;\n\n if (args.observedValue === null) {\n return `${clause}; evaluator returned ${args.result} because no current data was available.`;\n }\n\n return `${clause}; comparison ${\n args.comparisonSatisfied ? \"passed\" : \"failed\"\n }, resulting in ${args.result}.`;\n}\n\nexport function buildEvidentialRationale(args: {\n config: EvidentialEvaluatorConfig;\n snapshot: EvidentialMetricSnapshot;\n comparisonSatisfied: boolean;\n result: EpistemicContractEvaluationResult;\n}): string {\n const observed =\n args.snapshot.value === null ? \"no data\" : String(args.snapshot.value);\n const clause = `${args.snapshot.metric} observed ${observed} against ${args.config.operator} ${args.config.threshold}`;\n\n if (args.snapshot.value === null) {\n return `${clause}; evidential evaluator treated the comparison as unmet, resulting in ${args.result}.`;\n }\n\n return `${clause}; comparison ${\n args.comparisonSatisfied ? \"passed\" : \"failed\"\n }, resulting in ${args.result}.`;\n}\n\nexport function parseMetricCheckerConfig(\n value: unknown\n): MetricCheckerEvaluatorConfig {\n if (!isRecord(value)) {\n throw new Error(\n \"metric_checker requires condition.evaluatorConfig with observedValue/operator/threshold.\"\n );\n }\n\n const config = value;\n return {\n metric:\n typeof config.metric === \"string\" && config.metric.length > 0\n ? config.metric\n : undefined,\n operator: parseComparisonOperator(config.operator, BUILT_IN_METRIC_CHECKER),\n threshold: parseNumericThreshold(config.threshold, BUILT_IN_METRIC_CHECKER),\n observedValue: pickFiniteNumber(config, [\"observedValue\", \"value\"]),\n currentValue: pickFiniteNumber(config, [\"currentValue\"]),\n metricValue: pickFiniteNumber(config, [\"metricValue\"]),\n unit:\n typeof config.unit === \"string\" && config.unit.length > 0\n ? config.unit\n : undefined,\n };\n}\n\nexport function parseReferenceCheckCounterConfig(\n value: unknown\n): ReferenceCheckCounterConfig {\n if (!isRecord(value)) {\n throw new Error(\n \"reference_check_counter requires condition.evaluatorConfig with tag/operator/threshold.\"\n );\n }\n\n const config = value;\n if (typeof config.tag !== \"string\" || config.tag.trim().length === 0) {\n throw new Error(\"reference_check_counter requires a non-empty tag.\");\n }\n\n return {\n tag: config.tag.trim(),\n operator: parseComparisonOperator(\n config.operator,\n BUILT_IN_REFERENCE_CHECK_COUNTER\n ),\n threshold: parseNumericThreshold(\n config.threshold,\n BUILT_IN_REFERENCE_CHECK_COUNTER\n ),\n caseSensitive: config.caseSensitive === true,\n };\n}\n\nexport function parseTemporalDeadlineConfig(\n value: unknown\n): TemporalDeadlineEvaluatorConfig {\n if (!isRecord(value)) {\n return {};\n }\n\n const config = value;\n return {\n label:\n typeof config.label === \"string\" && config.label.length > 0\n ? config.label\n : undefined,\n completed: config.completed === true,\n completedAt: pickFiniteNumber(config, [\"completedAt\"]),\n observedAt: pickFiniteNumber(config, [\"observedAt\"]),\n satisfiedAt: pickFiniteNumber(config, [\"satisfiedAt\"]),\n achievedAt: pickFiniteNumber(config, [\"achievedAt\"]),\n };\n}\n\nexport function parseMarketIndexComparatorConfig(\n value: unknown\n): MarketIndexComparatorConfig {\n if (!isRecord(value)) {\n throw new Error(\n \"market_index_comparator requires condition.evaluatorConfig with subjectValue/benchmarkValue/operator/threshold.\"\n );\n }\n\n const config = value;\n return {\n subject:\n typeof config.subject === \"string\" && config.subject.length > 0\n ? config.subject\n : undefined,\n subjectValue: pickFiniteNumber(config, [\"subjectValue\", \"leftValue\"]),\n primaryValue: pickFiniteNumber(config, [\"primaryValue\"]),\n benchmark:\n typeof config.benchmark === \"string\" && config.benchmark.length > 0\n ? config.benchmark\n : undefined,\n benchmarkValue: pickFiniteNumber(config, [\"benchmarkValue\", \"rightValue\"]),\n comparisonValue: pickFiniteNumber(config, [\"comparisonValue\"]),\n operator: parseComparisonOperator(\n config.operator,\n BUILT_IN_MARKET_INDEX_COMPARATOR\n ),\n threshold: parseNumericThreshold(\n config.threshold,\n BUILT_IN_MARKET_INDEX_COMPARATOR\n ),\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { DecayTier, DeadlineUrgencyTier, DeadlineUrgency, BeliefLifecycleBucket, EffectiveDecay, RescoringSchedule, Opinion } from '../../types.js';
1
+ import { DeadlineUrgencyTier, DecayTier, DeadlineUrgency, BeliefLifecycleBucket, EffectiveDecay, Opinion, RescoringSchedule } from '../../types.js';
2
2
 
3
3
  declare const DECAY_TIERS: Record<string, DecayTier>;
4
4
  declare const DEADLINE_URGENCY: Record<string, DeadlineUrgencyTier>;
@@ -1,4 +1,4 @@
1
- import { Opinion, EdgeMetadata, PropagationResult } from '../../types.js';
1
+ import { Opinion, PropagationResult, EdgeMetadata } from '../../types.js';
2
2
 
3
3
  declare function applyNegativeSupport(source: Opinion, target: Opinion, weight: number, metadata?: EdgeMetadata): PropagationResult;
4
4
  declare function applyNegativeEvidence(source: Opinion, target: Opinion, weight: number): PropagationResult;
@@ -1028,6 +1028,9 @@ function generateContractId() {
1028
1028
  }
1029
1029
  return `contract-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
1030
1030
  }
1031
+ function isRecord(value) {
1032
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
1033
+ }
1031
1034
  function deriveContractStatus(result, currentStatus) {
1032
1035
  if (currentStatus === "archived") {
1033
1036
  return currentStatus;
@@ -1169,18 +1172,17 @@ function pickFiniteNumber(config, keys) {
1169
1172
  return void 0;
1170
1173
  }
1171
1174
  function getEvaluatorInputRecord(inputData, nestedKey) {
1172
- if (!inputData || typeof inputData !== "object") {
1175
+ if (!isRecord(inputData)) {
1173
1176
  return {};
1174
1177
  }
1175
- const root = inputData;
1176
- const nested = root[nestedKey];
1177
- if (nested && typeof nested === "object") {
1178
+ const nested = inputData[nestedKey];
1179
+ if (isRecord(nested)) {
1178
1180
  return nested;
1179
1181
  }
1180
- return root;
1182
+ return inputData;
1181
1183
  }
1182
1184
  function parseEvidentialEvaluatorConfig(value) {
1183
- if (!value || typeof value !== "object") {
1185
+ if (!isRecord(value)) {
1184
1186
  throw new Error(
1185
1187
  "Evidential contracts require condition.evaluatorConfig with metric/operator/threshold."
1186
1188
  );
@@ -1198,7 +1200,7 @@ function parseEvidentialEvaluatorConfig(value) {
1198
1200
  if (typeof threshold !== "number" || !Number.isFinite(threshold)) {
1199
1201
  throw new Error("Evidential contracts require a numeric threshold.");
1200
1202
  }
1201
- const actionParams = config.actionParams && typeof config.actionParams === "object" && config.actionParams !== null ? config.actionParams : void 0;
1203
+ const actionParams = isRecord(config.actionParams) ? config.actionParams : void 0;
1202
1204
  return {
1203
1205
  metric,
1204
1206
  operator,
@@ -1247,7 +1249,7 @@ function buildEvidentialRationale(args) {
1247
1249
  return `${clause}; comparison ${args.comparisonSatisfied ? "passed" : "failed"}, resulting in ${args.result}.`;
1248
1250
  }
1249
1251
  function parseMetricCheckerConfig(value) {
1250
- if (!value || typeof value !== "object") {
1252
+ if (!isRecord(value)) {
1251
1253
  throw new Error(
1252
1254
  "metric_checker requires condition.evaluatorConfig with observedValue/operator/threshold."
1253
1255
  );
@@ -1264,7 +1266,7 @@ function parseMetricCheckerConfig(value) {
1264
1266
  };
1265
1267
  }
1266
1268
  function parseReferenceCheckCounterConfig(value) {
1267
- if (!value || typeof value !== "object") {
1269
+ if (!isRecord(value)) {
1268
1270
  throw new Error(
1269
1271
  "reference_check_counter requires condition.evaluatorConfig with tag/operator/threshold."
1270
1272
  );
@@ -1287,7 +1289,7 @@ function parseReferenceCheckCounterConfig(value) {
1287
1289
  };
1288
1290
  }
1289
1291
  function parseTemporalDeadlineConfig(value) {
1290
- if (!value || typeof value !== "object") {
1292
+ if (!isRecord(value)) {
1291
1293
  return {};
1292
1294
  }
1293
1295
  const config = value;
@@ -1301,7 +1303,7 @@ function parseTemporalDeadlineConfig(value) {
1301
1303
  };
1302
1304
  }
1303
1305
  function parseMarketIndexComparatorConfig(value) {
1304
- if (!value || typeof value !== "object") {
1306
+ if (!isRecord(value)) {
1305
1307
  throw new Error(
1306
1308
  "market_index_comparator requires condition.evaluatorConfig with subjectValue/benchmarkValue/operator/threshold."
1307
1309
  );