@lucern/confidence 0.3.0-alpha.17 → 0.3.0-alpha.2

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 { Opinion, SLOpinion, DirichletOpinion } from '../../types.js';
1
+ import { DirichletOpinion, SLOpinion, Opinion } 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 { EvidentialOperator, EpistemicContractEvaluationResult, EvidentialEvaluatorConfig, EvidentialMetricSnapshot, EpistemicContractRecord, EpistemicContractModulation, ContractModulationPlan, EpistemicContractStatus, VerificationConfidenceTrigger, EvidentialAction, MarketIndexComparatorConfig, MetricCheckerEvaluatorConfig, ReferenceCheckCounterConfig, TemporalDeadlineEvaluatorConfig, EpistemicContractDirection } from '../../types.js';
1
+ import { EpistemicContractEvaluationResult, EpistemicContractStatus, VerificationConfidenceTrigger, EpistemicContractModulation, ContractModulationPlan, EpistemicContractRecord, EvidentialAction, EvidentialOperator, EvidentialEvaluatorConfig, EpistemicContractDirection, EvidentialMetricSnapshot, MetricCheckerEvaluatorConfig, ReferenceCheckCounterConfig, TemporalDeadlineEvaluatorConfig, MarketIndexComparatorConfig } 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,9 +18,6 @@ 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
- }
24
21
  function deriveContractStatus(result, currentStatus) {
25
22
  if (currentStatus === "archived") {
26
23
  return currentStatus;
@@ -162,17 +159,18 @@ function pickFiniteNumber(config, keys) {
162
159
  return void 0;
163
160
  }
164
161
  function getEvaluatorInputRecord(inputData, nestedKey) {
165
- if (!isRecord(inputData)) {
162
+ if (!inputData || typeof inputData !== "object") {
166
163
  return {};
167
164
  }
168
- const nested = inputData[nestedKey];
169
- if (isRecord(nested)) {
165
+ const root = inputData;
166
+ const nested = root[nestedKey];
167
+ if (nested && typeof nested === "object") {
170
168
  return nested;
171
169
  }
172
- return inputData;
170
+ return root;
173
171
  }
174
172
  function parseEvidentialEvaluatorConfig(value) {
175
- if (!isRecord(value)) {
173
+ if (!value || typeof value !== "object") {
176
174
  throw new Error(
177
175
  "Evidential contracts require condition.evaluatorConfig with metric/operator/threshold."
178
176
  );
@@ -190,7 +188,7 @@ function parseEvidentialEvaluatorConfig(value) {
190
188
  if (typeof threshold !== "number" || !Number.isFinite(threshold)) {
191
189
  throw new Error("Evidential contracts require a numeric threshold.");
192
190
  }
193
- const actionParams = isRecord(config.actionParams) ? config.actionParams : void 0;
191
+ const actionParams = config.actionParams && typeof config.actionParams === "object" && config.actionParams !== null ? config.actionParams : void 0;
194
192
  return {
195
193
  metric,
196
194
  operator,
@@ -239,7 +237,7 @@ function buildEvidentialRationale(args) {
239
237
  return `${clause}; comparison ${args.comparisonSatisfied ? "passed" : "failed"}, resulting in ${args.result}.`;
240
238
  }
241
239
  function parseMetricCheckerConfig(value) {
242
- if (!isRecord(value)) {
240
+ if (!value || typeof value !== "object") {
243
241
  throw new Error(
244
242
  "metric_checker requires condition.evaluatorConfig with observedValue/operator/threshold."
245
243
  );
@@ -256,7 +254,7 @@ function parseMetricCheckerConfig(value) {
256
254
  };
257
255
  }
258
256
  function parseReferenceCheckCounterConfig(value) {
259
- if (!isRecord(value)) {
257
+ if (!value || typeof value !== "object") {
260
258
  throw new Error(
261
259
  "reference_check_counter requires condition.evaluatorConfig with tag/operator/threshold."
262
260
  );
@@ -279,7 +277,7 @@ function parseReferenceCheckCounterConfig(value) {
279
277
  };
280
278
  }
281
279
  function parseTemporalDeadlineConfig(value) {
282
- if (!isRecord(value)) {
280
+ if (!value || typeof value !== "object") {
283
281
  return {};
284
282
  }
285
283
  const config = value;
@@ -293,7 +291,7 @@ function parseTemporalDeadlineConfig(value) {
293
291
  };
294
292
  }
295
293
  function parseMarketIndexComparatorConfig(value) {
296
- if (!isRecord(value)) {
294
+ if (!value || typeof value !== "object") {
297
295
  throw new Error(
298
296
  "market_index_comparator requires condition.evaluatorConfig with subjectValue/benchmarkValue/operator/threshold."
299
297
  );
@@ -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\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
+ {"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,4 +1,4 @@
1
- import { DeadlineUrgencyTier, DecayTier, DeadlineUrgency, BeliefLifecycleBucket, EffectiveDecay, Opinion, RescoringSchedule } from '../../types.js';
1
+ import { DecayTier, DeadlineUrgencyTier, DeadlineUrgency, BeliefLifecycleBucket, EffectiveDecay, RescoringSchedule, Opinion } 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, PropagationResult, EdgeMetadata } from '../../types.js';
1
+ import { Opinion, EdgeMetadata, PropagationResult } 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,9 +1028,6 @@ 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
- }
1034
1031
  function deriveContractStatus(result, currentStatus) {
1035
1032
  if (currentStatus === "archived") {
1036
1033
  return currentStatus;
@@ -1172,17 +1169,18 @@ function pickFiniteNumber(config, keys) {
1172
1169
  return void 0;
1173
1170
  }
1174
1171
  function getEvaluatorInputRecord(inputData, nestedKey) {
1175
- if (!isRecord(inputData)) {
1172
+ if (!inputData || typeof inputData !== "object") {
1176
1173
  return {};
1177
1174
  }
1178
- const nested = inputData[nestedKey];
1179
- if (isRecord(nested)) {
1175
+ const root = inputData;
1176
+ const nested = root[nestedKey];
1177
+ if (nested && typeof nested === "object") {
1180
1178
  return nested;
1181
1179
  }
1182
- return inputData;
1180
+ return root;
1183
1181
  }
1184
1182
  function parseEvidentialEvaluatorConfig(value) {
1185
- if (!isRecord(value)) {
1183
+ if (!value || typeof value !== "object") {
1186
1184
  throw new Error(
1187
1185
  "Evidential contracts require condition.evaluatorConfig with metric/operator/threshold."
1188
1186
  );
@@ -1200,7 +1198,7 @@ function parseEvidentialEvaluatorConfig(value) {
1200
1198
  if (typeof threshold !== "number" || !Number.isFinite(threshold)) {
1201
1199
  throw new Error("Evidential contracts require a numeric threshold.");
1202
1200
  }
1203
- const actionParams = isRecord(config.actionParams) ? config.actionParams : void 0;
1201
+ const actionParams = config.actionParams && typeof config.actionParams === "object" && config.actionParams !== null ? config.actionParams : void 0;
1204
1202
  return {
1205
1203
  metric,
1206
1204
  operator,
@@ -1249,7 +1247,7 @@ function buildEvidentialRationale(args) {
1249
1247
  return `${clause}; comparison ${args.comparisonSatisfied ? "passed" : "failed"}, resulting in ${args.result}.`;
1250
1248
  }
1251
1249
  function parseMetricCheckerConfig(value) {
1252
- if (!isRecord(value)) {
1250
+ if (!value || typeof value !== "object") {
1253
1251
  throw new Error(
1254
1252
  "metric_checker requires condition.evaluatorConfig with observedValue/operator/threshold."
1255
1253
  );
@@ -1266,7 +1264,7 @@ function parseMetricCheckerConfig(value) {
1266
1264
  };
1267
1265
  }
1268
1266
  function parseReferenceCheckCounterConfig(value) {
1269
- if (!isRecord(value)) {
1267
+ if (!value || typeof value !== "object") {
1270
1268
  throw new Error(
1271
1269
  "reference_check_counter requires condition.evaluatorConfig with tag/operator/threshold."
1272
1270
  );
@@ -1289,7 +1287,7 @@ function parseReferenceCheckCounterConfig(value) {
1289
1287
  };
1290
1288
  }
1291
1289
  function parseTemporalDeadlineConfig(value) {
1292
- if (!isRecord(value)) {
1290
+ if (!value || typeof value !== "object") {
1293
1291
  return {};
1294
1292
  }
1295
1293
  const config = value;
@@ -1303,7 +1301,7 @@ function parseTemporalDeadlineConfig(value) {
1303
1301
  };
1304
1302
  }
1305
1303
  function parseMarketIndexComparatorConfig(value) {
1306
- if (!isRecord(value)) {
1304
+ if (!value || typeof value !== "object") {
1307
1305
  throw new Error(
1308
1306
  "market_index_comparator requires condition.evaluatorConfig with subjectValue/benchmarkValue/operator/threshold."
1309
1307
  );