deepthinking-mcp 5.0.0 → 5.0.1
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/index.js +71 -24
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../src/tools/thinking.ts","../src/types/core.ts","../src/types/session.ts","../src/types/modes/recommendations.ts","../src/types/index.ts","../src/utils/errors.ts","../src/utils/sanitization.ts","../src/utils/logger.ts","../src/cache/lru.ts","../src/config/index.ts","../src/validation/cache.ts","../src/session/SessionMetricsCalculator.ts","../src/session/manager.ts","../src/session/index.ts","../src/utils/type-guards.ts","../src/services/ThoughtFactory.ts","../src/export/visual/utils.ts","../src/export/visual/causal.ts","../src/export/visual/temporal.ts","../src/export/visual/game-theory.ts","../src/export/visual/bayesian.ts","../src/export/visual/sequential.ts","../src/export/visual/shannon.ts","../src/export/visual/abductive.ts","../src/export/visual/counterfactual.ts","../src/export/visual/analogical.ts","../src/export/visual/evidential.ts","../src/export/visual/first-principles.ts","../src/export/visual/systems-thinking.ts","../src/export/visual/scientific-method.ts","../src/export/visual/optimization.ts","../src/export/visual/formal-logic.ts","../src/export/visual/index.ts","../src/services/ExportService.ts","../src/services/ModeRouter.ts","../src/services/index.ts","../src/index.ts","../src/tools/definitions.ts","../src/tools/json-schemas.ts","../src/tools/schemas/base.ts","../src/tools/schemas/shared.ts","../src/tools/schemas/modes/core.ts","../src/tools/schemas/modes/mathematics.ts","../src/tools/schemas/modes/temporal.ts","../src/tools/schemas/modes/probabilistic.ts","../src/tools/schemas/modes/causal.ts","../src/tools/schemas/modes/strategic.ts","../src/tools/schemas/modes/analytical.ts","../src/tools/schemas/modes/scientific.ts"],"names":["z","LogLevel","DEFAULT_CONFIG","logger","init_session","randomUUID","result","__filename","fileURLToPath","__dirname","SessionManager","ThoughtFactory","ExportService","ModeRouter","ThinkingToolSchema","session"],"mappings":"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","file":"index.js","sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","/**\n * Legacy thinking tool for DeepThinking MCP v4.4.0\n * DEPRECATED: Use focused tools (deepthinking_*) instead\n *\n * This file provides backward compatibility only.\n * Zod schema kept for runtime validation. JSON schema is hand-written.\n */\n\nimport { z } from 'zod';\n\n/**\n * Zod schema for runtime validation (internal use)\n */\nexport const ThinkingToolSchema = z.object({\n sessionId: z.string().optional(),\n mode: z.enum(['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'inductive', 'deductive', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential', 'firstprinciples', 'systemsthinking', 'scientificmethod', 'optimization', 'formallogic']).default('hybrid'),\n thought: z.string(),\n thoughtNumber: z.number().int().positive(),\n totalThoughts: z.number().int().positive(),\n nextThoughtNeeded: z.boolean(),\n isRevision: z.boolean().optional(),\n revisesThought: z.string().optional(),\n revisionReason: z.string().optional(),\n branchFrom: z.string().optional(),\n branchId: z.string().optional(),\n stage: z.enum(['problem_definition', 'constraints', 'model', 'proof', 'implementation']).optional(),\n uncertainty: z.number().min(0).max(1).optional(),\n dependencies: z.array(z.string()).optional(),\n assumptions: z.array(z.string()).optional(),\n thoughtType: z.string().optional(),\n mathematicalModel: z.object({\n latex: z.string(),\n symbolic: z.string(),\n ascii: z.string().optional(),\n }).optional(),\n proofStrategy: z.object({\n type: z.enum(['direct', 'contradiction', 'induction', 'construction', 'contrapositive']),\n steps: z.array(z.string()),\n }).optional(),\n tensorProperties: z.object({\n rank: z.tuple([z.number(), z.number()]),\n components: z.string(),\n latex: z.string(),\n symmetries: z.array(z.string()),\n invariants: z.array(z.string()),\n transformation: z.enum(['covariant', 'contravariant', 'mixed']),\n }).optional(),\n physicalInterpretation: z.object({\n quantity: z.string(),\n units: z.string(),\n conservationLaws: z.array(z.string()),\n }).optional(),\n // Inductive reasoning properties (Phase 5, v5.0.0)\n pattern: z.string().optional(),\n generalization: z.string().optional(),\n confidence: z.number().min(0).max(1).optional(),\n counterexamples: z.array(z.string()).optional(),\n sampleSize: z.number().int().min(1).optional(),\n // Deductive reasoning properties (Phase 5, v5.0.0)\n premises: z.array(z.string()).optional(),\n logicForm: z.string().optional(),\n validityCheck: z.boolean().optional(),\n soundnessCheck: z.boolean().optional(),\n // Abductive reasoning properties (v2.0)\n observations: z.union([\n z.array(z.string()), // For inductive reasoning - simple strings\n z.array(z.object({ // For abductive reasoning - structured objects\n id: z.string(),\n description: z.string(),\n confidence: z.number().min(0).max(1),\n })),\n ]).optional(),\n hypotheses: z.array(z.object({\n id: z.string(),\n // Abductive fields\n explanation: z.string().optional(),\n assumptions: z.array(z.string()).optional(),\n predictions: z.array(z.string()).optional(),\n score: z.number().optional(),\n // Evidential fields\n name: z.string().optional(),\n description: z.string().optional(),\n mutuallyExclusive: z.boolean().optional(),\n subsets: z.array(z.string()).optional(),\n })).optional(),\n evaluationCriteria: z.object({\n parsimony: z.number(),\n explanatoryPower: z.number(),\n plausibility: z.number(),\n testability: z.boolean(),\n }).optional(),\n evidence: z.array(z.object({\n id: z.string(),\n description: z.string(),\n // Abductive fields\n hypothesisId: z.string().optional(),\n type: z.enum(['supporting', 'contradicting', 'neutral']).optional(),\n strength: z.number().min(0).max(1).optional(),\n // Evidential fields\n source: z.string().optional(),\n reliability: z.number().min(0).max(1).optional(),\n timestamp: z.number().optional(),\n supports: z.array(z.string()).optional(),\n contradicts: z.array(z.string()).optional(),\n })).optional(),\n bestExplanation: z.object({\n id: z.string(),\n explanation: z.string(),\n assumptions: z.array(z.string()),\n predictions: z.array(z.string()),\n score: z.number(),\n }).optional(),\n // Causal reasoning properties (v2.0)\n causalGraph: z.object({\n nodes: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.enum(['cause', 'effect', 'mediator', 'confounder']),\n description: z.string(),\n })),\n edges: z.array(z.object({\n from: z.string(),\n to: z.string(),\n strength: z.number(),\n confidence: z.number().min(0).max(1),\n })),\n }).optional(),\n interventions: z.array(z.object({\n nodeId: z.string(),\n action: z.string(),\n expectedEffects: z.array(z.object({\n nodeId: z.string(),\n expectedChange: z.string(),\n confidence: z.number(),\n })),\n })).optional(),\n mechanisms: z.array(z.object({\n from: z.string(),\n to: z.string(),\n description: z.string(),\n type: z.enum(['direct', 'indirect', 'feedback']),\n })).optional(),\n confounders: z.array(z.object({\n nodeId: z.string(),\n affects: z.array(z.string()),\n description: z.string(),\n })).optional(),\n // Bayesian reasoning properties (v2.0)\n hypothesis: z.object({\n id: z.string(),\n statement: z.string(),\n }).optional(),\n prior: z.object({\n probability: z.number().min(0).max(1),\n justification: z.string(),\n }).optional(),\n likelihood: z.object({\n probability: z.number().min(0).max(1),\n description: z.string(),\n }).optional(),\n posterior: z.object({\n probability: z.number().min(0).max(1),\n calculation: z.string(),\n }).optional(),\n bayesFactor: z.number().optional(),\n // Counterfactual reasoning properties (v2.0)\n actual: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n conditions: z.array(z.object({\n factor: z.string(),\n value: z.string(),\n })),\n outcomes: z.array(z.object({\n description: z.string(),\n impact: z.enum(['positive', 'negative', 'neutral']),\n magnitude: z.number().optional(),\n })),\n }).optional(),\n counterfactuals: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n conditions: z.array(z.object({\n factor: z.string(),\n value: z.string(),\n })),\n outcomes: z.array(z.object({\n description: z.string(),\n impact: z.enum(['positive', 'negative', 'neutral']),\n magnitude: z.number().optional(),\n })),\n })).optional(),\n comparison: z.object({\n differences: z.array(z.object({\n aspect: z.string(),\n actual: z.string(),\n counterfactual: z.string(),\n significance: z.enum(['high', 'medium', 'low']),\n })),\n insights: z.array(z.string()),\n lessons: z.array(z.string()),\n }).optional(),\n interventionPoint: z.object({\n description: z.string(),\n alternatives: z.array(z.string()),\n }).optional(),\n causalChains: z.array(z.object({\n intervention: z.string(),\n steps: z.array(z.string()),\n finalOutcome: z.string(),\n })).optional(),\n // Analogical reasoning properties (v2.0)\n sourceDomain: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n entities: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n })),\n relations: z.array(z.object({\n id: z.string(),\n type: z.string(),\n from: z.string(),\n to: z.string(),\n })),\n }).optional(),\n targetDomain: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n entities: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n })),\n relations: z.array(z.object({\n id: z.string(),\n type: z.string(),\n from: z.string(),\n to: z.string(),\n })),\n }).optional(),\n mapping: z.array(z.object({\n sourceEntityId: z.string(),\n targetEntityId: z.string(),\n justification: z.string(),\n confidence: z.number().min(0).max(1),\n })).optional(),\n insights: z.array(z.object({\n description: z.string(),\n sourceEvidence: z.string(),\n targetApplication: z.string(),\n })).optional(),\n inferences: z.array(z.object({\n sourcePattern: z.string(),\n targetPrediction: z.string(),\n confidence: z.number().min(0).max(1),\n needsVerification: z.boolean(),\n })).optional(),\n limitations: z.array(z.string()).optional(),\n analogyStrength: z.number().min(0).max(1).optional(),\n // Temporal reasoning properties (Phase 3, v2.1)\n timeline: z.object({\n id: z.string(),\n name: z.string(),\n timeUnit: z.enum(['milliseconds', 'seconds', 'minutes', 'hours', 'days', 'months', 'years']),\n startTime: z.number().optional(),\n endTime: z.number().optional(),\n events: z.array(z.string()),\n }).optional(),\n events: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n timestamp: z.number(),\n duration: z.number().optional(),\n type: z.enum(['instant', 'interval']),\n properties: z.record(z.string(), z.any()),\n })).optional(),\n intervals: z.array(z.object({\n id: z.string(),\n name: z.string(),\n start: z.number(),\n end: z.number(),\n overlaps: z.array(z.string()).optional(),\n contains: z.array(z.string()).optional(),\n })).optional(),\n constraints: z.array(z.object({\n id: z.string(),\n type: z.enum(['before', 'after', 'during', 'overlaps', 'meets', 'starts', 'finishes', 'equals']),\n subject: z.string(),\n object: z.string(),\n confidence: z.number().min(0).max(1),\n })).optional(),\n relations: z.array(z.object({\n id: z.string(),\n from: z.string(),\n to: z.string(),\n relationType: z.enum(['causes', 'enables', 'prevents', 'precedes', 'follows']),\n strength: z.number().min(0).max(1),\n delay: z.number().optional(),\n })).optional(),\n // Game theory properties (Phase 3, v2.2)\n game: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['normal_form', 'extensive_form', 'cooperative', 'non_cooperative']),\n numPlayers: z.number().int().min(2),\n isZeroSum: z.boolean(),\n isPerfectInformation: z.boolean(),\n }).optional(),\n players: z.array(z.object({\n id: z.string(),\n name: z.string(),\n role: z.string().optional(),\n isRational: z.boolean(),\n availableStrategies: z.array(z.string()),\n })).optional(),\n strategies: z.array(z.object({\n id: z.string(),\n playerId: z.string(),\n name: z.string(),\n description: z.string(),\n isPure: z.boolean(),\n probability: z.number().min(0).max(1).optional(),\n })).optional(),\n payoffMatrix: z.object({\n players: z.array(z.string()),\n dimensions: z.array(z.number()),\n payoffs: z.array(z.object({\n strategyProfile: z.array(z.string()),\n payoffs: z.array(z.number()),\n })),\n }).optional(),\n nashEquilibria: z.array(z.object({\n id: z.string(),\n strategyProfile: z.array(z.string()),\n payoffs: z.array(z.number()),\n type: z.enum(['pure', 'mixed']),\n isStrict: z.boolean(),\n stability: z.number().min(0).max(1),\n })).optional(),\n dominantStrategies: z.array(z.object({\n playerId: z.string(),\n strategyId: z.string(),\n type: z.enum(['strictly_dominant', 'weakly_dominant']),\n dominatesStrategies: z.array(z.string()),\n justification: z.string(),\n })).optional(),\n gameTree: z.object({\n rootNode: z.string(),\n nodes: z.array(z.object({\n id: z.string(),\n type: z.enum(['decision', 'chance', 'terminal']),\n playerId: z.string().optional(),\n parentNode: z.string().optional(),\n childNodes: z.array(z.string()),\n action: z.string().optional(),\n probability: z.number().min(0).max(1).optional(),\n payoffs: z.array(z.number()).optional(),\n })),\n informationSets: z.array(z.object({\n id: z.string(),\n playerId: z.string(),\n nodes: z.array(z.string()),\n availableActions: z.array(z.string()),\n })).optional(),\n }).optional(),\n\n // Evidential properties (Phase 3, v2.3)\n frameOfDiscernment: z.array(z.string()).optional(),\n beliefFunctions: z.array(z.object({\n id: z.string(),\n source: z.string(),\n massAssignments: z.array(z.object({\n hypothesisSet: z.array(z.string()),\n mass: z.number().min(0).max(1),\n justification: z.string(),\n })),\n conflictMass: z.number().optional(),\n })).optional(),\n combinedBelief: z.object({\n id: z.string(),\n source: z.string(),\n massAssignments: z.array(z.object({\n hypothesisSet: z.array(z.string()),\n mass: z.number().min(0).max(1),\n justification: z.string(),\n })),\n conflictMass: z.number().optional(),\n }).optional(),\n plausibility: z.object({\n id: z.string(),\n assignments: z.array(z.object({\n hypothesisSet: z.array(z.string()),\n plausibility: z.number().min(0).max(1),\n belief: z.number().min(0).max(1),\n uncertaintyInterval: z.tuple([z.number(), z.number()]),\n })),\n }).optional(),\n decisions: z.array(z.object({\n id: z.string(),\n name: z.string(),\n selectedHypothesis: z.array(z.string()),\n confidence: z.number().min(0).max(1),\n reasoning: z.string(),\n alternatives: z.array(z.object({\n hypothesis: z.array(z.string()),\n expectedUtility: z.number(),\n risk: z.number(),\n })),\n })).optional(),\n // First-Principles properties (Phase 3, v3.1.0)\n question: z.string().optional(),\n principles: z.array(z.object({\n id: z.string(),\n type: z.enum(['axiom', 'definition', 'observation', 'logical_inference', 'assumption']),\n statement: z.string(),\n justification: z.string(),\n dependsOn: z.array(z.string()).optional(),\n confidence: z.number().min(0).max(1).optional(),\n })).optional(),\n derivationSteps: z.array(z.object({\n stepNumber: z.number().int().positive(),\n principle: z.string(),\n inference: z.string(),\n logicalForm: z.string().optional(),\n confidence: z.number().min(0).max(1),\n })).optional(),\n conclusion: z.union([\n z.string(), // For deductive reasoning - simple conclusion\n z.object({ // For first-principles reasoning - structured conclusion\n statement: z.string(),\n derivationChain: z.array(z.number()),\n certainty: z.number().min(0).max(1),\n limitations: z.array(z.string()).optional(),\n }),\n ]).optional(),\n alternativeInterpretations: z.array(z.string()).optional(),\n\n // Systems Thinking properties (Phase 4, v3.2.0)\n system: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n boundary: z.string(),\n purpose: z.string(),\n timeHorizon: z.string().optional(),\n }).optional(),\n components: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.enum(['stock', 'flow', 'variable', 'parameter', 'delay']),\n description: z.string(),\n unit: z.string().optional(),\n initialValue: z.number().optional(),\n formula: z.string().optional(),\n influencedBy: z.array(z.string()).optional(),\n })).optional(),\n feedbackLoops: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.enum(['reinforcing', 'balancing']),\n description: z.string(),\n components: z.array(z.string()),\n polarity: z.enum(['+', '-']),\n strength: z.number().min(0).max(1),\n delay: z.number().optional(),\n dominance: z.enum(['early', 'middle', 'late']).optional(),\n })).optional(),\n leveragePoints: z.array(z.object({\n id: z.string(),\n name: z.string(),\n location: z.string(),\n description: z.string(),\n effectiveness: z.number().min(0).max(1),\n difficulty: z.number().min(0).max(1),\n type: z.enum(['parameter', 'feedback', 'structure', 'goal', 'paradigm']),\n interventionExamples: z.array(z.string()),\n })).optional(),\n behaviors: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n pattern: z.enum(['growth', 'decline', 'oscillation', 'equilibrium', 'chaos', 'overshoot_collapse']),\n causes: z.array(z.string()),\n timeframe: z.string(),\n unintendedConsequences: z.array(z.string()).optional(),\n })).optional(),\n\n // Scientific Method properties (Phase 4, v3.2.0)\n researchQuestion: z.object({\n id: z.string(),\n question: z.string(),\n background: z.string(),\n rationale: z.string(),\n significance: z.string(),\n variables: z.object({\n independent: z.array(z.string()),\n dependent: z.array(z.string()),\n control: z.array(z.string()),\n }),\n }).optional(),\n scientificHypotheses: z.array(z.object({\n id: z.string(),\n type: z.enum(['null', 'alternative', 'directional', 'non_directional']),\n statement: z.string(),\n prediction: z.string(),\n rationale: z.string(),\n testable: z.boolean(),\n falsifiable: z.boolean(),\n })).optional(),\n experiment: z.object({\n id: z.string(),\n type: z.enum(['experimental', 'quasi_experimental', 'observational', 'correlational']),\n design: z.string(),\n sampleSize: z.number().int().positive(),\n sampleSizeJustification: z.string().optional(),\n randomization: z.boolean(),\n blinding: z.enum(['none', 'single', 'double', 'triple']).optional(),\n controls: z.array(z.string()),\n procedure: z.array(z.string()),\n materials: z.array(z.string()).optional(),\n duration: z.string().optional(),\n ethicalConsiderations: z.array(z.string()).optional(),\n }).optional(),\n dataCollection: z.object({\n id: z.string(),\n method: z.array(z.string()),\n instruments: z.array(z.string()),\n dataQuality: z.object({\n completeness: z.number().min(0).max(1),\n reliability: z.number().min(0).max(1),\n validity: z.number().min(0).max(1),\n }),\n limitations: z.array(z.string()).optional(),\n }).optional(),\n statisticalAnalysis: z.object({\n id: z.string(),\n tests: z.array(z.object({\n id: z.string(),\n name: z.string(),\n hypothesisTested: z.string(),\n testStatistic: z.number(),\n pValue: z.number().min(0).max(1),\n confidenceInterval: z.tuple([z.number(), z.number()]).optional(),\n alpha: z.number().min(0).max(1),\n result: z.enum(['reject_null', 'fail_to_reject_null']),\n interpretation: z.string(),\n })),\n summary: z.string(),\n effectSize: z.object({\n type: z.string(),\n value: z.number(),\n interpretation: z.string(),\n }).optional(),\n powerAnalysis: z.object({\n power: z.number().min(0).max(1),\n alpha: z.number().min(0).max(1),\n interpretation: z.string(),\n }).optional(),\n }).optional(),\n scientificConclusion: z.object({\n id: z.string(),\n statement: z.string(),\n supportedHypotheses: z.array(z.string()),\n rejectedHypotheses: z.array(z.string()),\n confidence: z.number().min(0).max(1),\n limitations: z.array(z.string()),\n alternativeExplanations: z.array(z.string()).optional(),\n futureDirections: z.array(z.string()),\n replicationConsiderations: z.array(z.string()),\n practicalImplications: z.array(z.string()).optional(),\n theoreticalImplications: z.array(z.string()).optional(),\n }).optional(),\n\n // Optimization properties (Phase 4, v3.2.0)\n optimizationProblem: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['linear', 'nonlinear', 'integer', 'mixed_integer', 'constraint_satisfaction', 'multi_objective']),\n approach: z.enum(['exact', 'heuristic', 'metaheuristic', 'approximation']).optional(),\n complexity: z.string().optional(),\n }).optional(),\n decisionVariables: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['continuous', 'integer', 'binary', 'categorical']),\n unit: z.string().optional(),\n semantics: z.string(),\n })).optional(),\n optimizationConstraints: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['hard', 'soft']),\n formula: z.string(),\n variables: z.array(z.string()),\n penalty: z.number().optional(),\n rationale: z.string(),\n priority: z.number().optional(),\n })).optional(),\n objectives: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['minimize', 'maximize']),\n formula: z.string(),\n variables: z.array(z.string()),\n weight: z.number().min(0).max(1).optional(),\n units: z.string().optional(),\n idealValue: z.number().optional(),\n acceptableRange: z.tuple([z.number(), z.number()]).optional(),\n })).optional(),\n solution: z.object({\n id: z.string(),\n type: z.enum(['optimal', 'feasible', 'infeasible', 'unbounded', 'approximate']),\n variableValues: z.record(z.string(), z.union([z.number(), z.string()])),\n objectiveValues: z.record(z.string(), z.number()),\n quality: z.number().min(0).max(1),\n computationTime: z.number().optional(),\n iterations: z.number().optional(),\n method: z.string().optional(),\n guarantees: z.array(z.string()).optional(),\n }).optional(),\n sensitivityAnalysis: z.object({\n id: z.string(),\n robustness: z.number().min(0).max(1),\n criticalConstraints: z.array(z.string()),\n shadowPrices: z.record(z.string(), z.number()).optional(),\n recommendations: z.array(z.string()),\n }).optional(),\n\n // Formal Logic properties (Phase 4, v3.2.0)\n propositions: z.array(z.object({\n id: z.string(),\n symbol: z.string(),\n statement: z.string(),\n truthValue: z.boolean().optional(),\n type: z.enum(['atomic', 'compound']),\n formula: z.string().optional(),\n })).optional(),\n logicalInferences: z.array(z.object({\n id: z.string(),\n rule: z.enum(['modus_ponens', 'modus_tollens', 'hypothetical_syllogism', 'disjunctive_syllogism', 'conjunction', 'simplification', 'addition', 'resolution', 'contradiction', 'excluded_middle']),\n premises: z.array(z.string()),\n conclusion: z.string(),\n justification: z.string(),\n valid: z.boolean(),\n })).optional(),\n logicalProof: z.object({\n id: z.string(),\n theorem: z.string(),\n technique: z.enum(['direct', 'contradiction', 'contrapositive', 'cases', 'induction', 'natural_deduction', 'resolution', 'semantic_tableaux']),\n steps: z.array(z.object({\n stepNumber: z.number().int().positive(),\n statement: z.string(),\n formula: z.string().optional(),\n justification: z.string(),\n rule: z.enum(['modus_ponens', 'modus_tollens', 'hypothetical_syllogism', 'disjunctive_syllogism', 'conjunction', 'simplification', 'addition', 'resolution', 'contradiction', 'excluded_middle']).optional(),\n referencesSteps: z.array(z.number()).optional(),\n isAssumption: z.boolean().optional(),\n dischargesAssumption: z.number().optional(),\n })),\n conclusion: z.string(),\n valid: z.boolean(),\n completeness: z.number().min(0).max(1),\n assumptions: z.array(z.string()).optional(),\n }).optional(),\n truthTable: z.object({\n id: z.string(),\n propositions: z.array(z.string()),\n formula: z.string().optional(),\n rows: z.array(z.object({\n rowNumber: z.number().int().positive(),\n assignments: z.record(z.string(), z.boolean()),\n result: z.boolean(),\n })),\n isTautology: z.boolean(),\n isContradiction: z.boolean(),\n isContingent: z.boolean(),\n }).optional(),\n satisfiability: z.object({\n id: z.string(),\n formula: z.string(),\n satisfiable: z.boolean(),\n model: z.record(z.string(), z.boolean()).optional(),\n method: z.enum(['dpll', 'cdcl', 'resolution', 'truth_table', 'other']),\n complexity: z.string().optional(),\n explanation: z.string(),\n }).optional(),\n\n action: z.enum(['add_thought', 'summarize', 'export', 'switch_mode', 'get_session', 'recommend_mode']).default('add_thought'),\n exportFormat: z.enum(['markdown', 'latex', 'json', 'html', 'jupyter', 'mermaid', 'dot', 'ascii']).optional(),\n newMode: z.enum(['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'inductive', 'deductive', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential', 'firstprinciples', 'systemsthinking', 'scientificmethod', 'optimization', 'formallogic']).optional(),\n // Mode recommendation parameters (v2.4)\n problemType: z.string().optional(),\n problemCharacteristics: z.object({\n domain: z.string(),\n complexity: z.enum(['low', 'medium', 'high']),\n uncertainty: z.enum(['low', 'medium', 'high']),\n timeDependent: z.boolean(),\n multiAgent: z.boolean(),\n requiresProof: z.boolean(),\n requiresQuantification: z.boolean(),\n hasIncompleteInfo: z.boolean(),\n requiresExplanation: z.boolean(),\n hasAlternatives: z.boolean(),\n }).optional(),\n includeCombinations: z.boolean().optional(),\n});\n\nexport type ThinkingToolInput = z.infer<typeof ThinkingToolSchema>;\n\n/**\n * Legacy tool definition - DEPRECATED\n *\n * Use the focused tools instead:\n * - deepthinking_core, deepthinking_math, deepthinking_temporal\n * - deepthinking_probabilistic, deepthinking_causal, deepthinking_strategic\n * - deepthinking_analytical, deepthinking_scientific, deepthinking_session\n *\n * NOTE: This tool accepts a superset of all focused tool properties for backward compatibility.\n * The schema lists all possible properties but most are optional.\n */\nexport const thinkingTool = {\n name: 'deepthinking',\n description: '[DEPRECATED] Use deepthinking_* tools instead. Legacy tool supporting 18 reasoning modes with auto-routing to focused tools.',\n inputSchema: {\n type: \"object\" as const,\n properties: {\n sessionId: { type: \"string\" },\n mode: {\n type: \"string\",\n enum: ['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'inductive', 'deductive', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential', 'firstprinciples', 'systemsthinking', 'scientificmethod', 'optimization', 'formallogic'],\n default: 'hybrid'\n },\n thought: { type: \"string\", minLength: 1 },\n thoughtNumber: { type: \"integer\", minimum: 1 },\n totalThoughts: { type: \"integer\", minimum: 1 },\n nextThoughtNeeded: { type: \"boolean\" },\n isRevision: { type: \"boolean\" },\n revisesThought: { type: \"string\" },\n revisionReason: { type: \"string\" },\n branchFrom: { type: \"string\" },\n branchId: { type: \"string\" },\n stage: {\n type: \"string\",\n enum: ['problem_definition', 'constraints', 'model', 'proof', 'implementation']\n },\n uncertainty: { type: \"number\", minimum: 0, maximum: 1 },\n dependencies: { type: \"array\", items: { type: \"string\" } },\n assumptions: { type: \"array\", items: { type: \"string\" } },\n thoughtType: { type: \"string\" },\n // Math/Physics properties\n mathematicalModel: {\n type: \"object\",\n properties: {\n latex: { type: \"string\" },\n symbolic: { type: \"string\" },\n ascii: { type: \"string\" }\n },\n additionalProperties: false\n },\n proofStrategy: {\n type: \"object\",\n properties: {\n type: { type: \"string\", enum: ['direct', 'contradiction', 'induction', 'construction', 'contrapositive'] },\n steps: { type: \"array\", items: { type: \"string\" } }\n },\n additionalProperties: false\n },\n tensorProperties: {\n type: \"object\",\n properties: {\n rank: { type: \"array\", items: { type: \"number\" }, minItems: 2, maxItems: 2 },\n components: { type: \"string\" },\n latex: { type: \"string\" },\n symmetries: { type: \"array\", items: { type: \"string\" } },\n invariants: { type: \"array\", items: { type: \"string\" } },\n transformation: { type: \"string\", enum: ['covariant', 'contravariant', 'mixed'] }\n },\n additionalProperties: false\n },\n // All other optional properties from various modes (simplified for legacy compatibility)\n // Most users should migrate to focused tools for full schema validation\n },\n required: [\"thought\", \"thoughtNumber\", \"totalThoughts\", \"nextThoughtNeeded\"],\n additionalProperties: true // Allow extra properties for backward compatibility\n }\n};\n","/**\n * Core type definitions for the DeepThinking MCP server v3.2.0\n * Supports 18 thinking modes: Sequential, Shannon, Mathematics, Physics, Hybrid,\n * Abductive, Causal, Bayesian, Counterfactual, Analogical, Temporal, GameTheory, Evidential, FirstPrinciples,\n * SystemsThinking, ScientificMethod, Optimization, FormalLogic\n */\n\n// Import Phase 3 mode types\nimport type { TemporalThought } from './modes/temporal.js';\nimport type { GameTheoryThought } from './modes/gametheory.js';\nimport type { EvidentialThought } from './modes/evidential.js';\nimport type { FirstPrinciplesThought } from './modes/firstprinciples.js';\n\n// Import Phase 4 mode types (v3.2.0)\nimport type { SystemsThinkingThought } from './modes/systemsthinking.js';\nimport type { ScientificMethodThought } from './modes/scientificmethod.js';\nimport type { OptimizationThought } from './modes/optimization.js';\nimport type { FormalLogicThought } from './modes/formallogic.js';\n\n/**\n * Available thinking modes\n */\nexport enum ThinkingMode {\n // ===== Fully Implemented Modes =====\n SEQUENTIAL = 'sequential',\n SHANNON = 'shannon',\n MATHEMATICS = 'mathematics',\n PHYSICS = 'physics',\n HYBRID = 'hybrid',\n\n // ===== Implemented - Advanced Modes (Phase 4) =====\n METAREASONING = 'metareasoning', // Phase 4 (v3.3.0) - Self-reflection and strategy selection\n RECURSIVE = 'recursive', // Phase 4 (v3.3.0) - Recursive problem decomposition\n MODAL = 'modal', // Phase 4 (v3.3.0) - Possibility and necessity reasoning\n STOCHASTIC = 'stochastic', // Phase 4 (v3.3.0) - Probabilistic state transitions\n CONSTRAINT = 'constraint', // Phase 4 (v3.3.0) - Constraint satisfaction\n OPTIMIZATION = 'optimization', // Phase 4 (v3.2.0) - Optimization strategies\n\n // ===== Experimental - Limited Implementation =====\n // These modes have validators and type definitions but limited runtime logic\n INDUCTIVE = 'inductive', // ⚠️ Experimental (Phase 5 v5.0.0) - Inductive reasoning\n DEDUCTIVE = 'deductive', // ⚠️ Experimental (Phase 5 v5.0.0) - Deductive reasoning\n ABDUCTIVE = 'abductive', // ⚠️ Experimental - Inference to best explanation\n CAUSAL = 'causal', // ⚠️ Experimental - Causal reasoning\n BAYESIAN = 'bayesian', // ⚠️ Experimental - Bayesian inference\n COUNTERFACTUAL = 'counterfactual', // ⚠️ Experimental - What-if scenarios\n ANALOGICAL = 'analogical', // ⚠️ Experimental - Reasoning by analogy\n TEMPORAL = 'temporal', // ⚠️ Experimental (Phase 3 v2.1) - Temporal logic\n GAMETHEORY = 'gametheory', // ⚠️ Experimental (Phase 3 v2.2) - Game theory analysis\n EVIDENTIAL = 'evidential', // ⚠️ Experimental (Phase 3 v2.3) - Evidence-based reasoning\n FIRSTPRINCIPLES = 'firstprinciples', // ⚠️ Experimental (Phase 3 v3.1.0) - First principles thinking\n SYSTEMSTHINKING = 'systemsthinking', // ⚠️ Experimental (Phase 4 v3.2.0) - Systems thinking\n SCIENTIFICMETHOD = 'scientificmethod', // ⚠️ Experimental (Phase 4 v3.2.0) - Scientific method\n FORMALLOGIC = 'formallogic', // ⚠️ Experimental (Phase 4 v3.2.0) - Formal logic\n\n CUSTOM = 'custom'\n}\n\n/**\n * Modes with full implementation including specialized thought creation logic\n */\nexport const FULLY_IMPLEMENTED_MODES: ReadonlyArray<ThinkingMode> = [\n ThinkingMode.SEQUENTIAL,\n ThinkingMode.SHANNON,\n ThinkingMode.MATHEMATICS,\n ThinkingMode.PHYSICS,\n ThinkingMode.HYBRID,\n ThinkingMode.METAREASONING,\n ThinkingMode.RECURSIVE,\n ThinkingMode.MODAL,\n ThinkingMode.STOCHASTIC,\n ThinkingMode.CONSTRAINT,\n ThinkingMode.OPTIMIZATION,\n ThinkingMode.INDUCTIVE, // Phase 5 v5.0.0\n ThinkingMode.DEDUCTIVE, // Phase 5 v5.0.0\n];\n\n/**\n * Experimental modes - have validators but limited runtime implementation\n * These modes will create base thoughts without specialized logic\n */\nexport const EXPERIMENTAL_MODES: ReadonlyArray<ThinkingMode> = [\n ThinkingMode.ABDUCTIVE,\n ThinkingMode.CAUSAL,\n ThinkingMode.BAYESIAN,\n ThinkingMode.COUNTERFACTUAL,\n ThinkingMode.ANALOGICAL,\n ThinkingMode.TEMPORAL,\n ThinkingMode.GAMETHEORY,\n ThinkingMode.EVIDENTIAL,\n ThinkingMode.FIRSTPRINCIPLES,\n ThinkingMode.SYSTEMSTHINKING,\n ThinkingMode.SCIENTIFICMETHOD,\n ThinkingMode.FORMALLOGIC,\n];\n\n/**\n * Check if a mode is fully implemented\n */\nexport function isFullyImplemented(mode: ThinkingMode): boolean {\n return FULLY_IMPLEMENTED_MODES.includes(mode);\n}\n\n/**\n * Shannon methodology stages\n */\nexport enum ShannonStage {\n PROBLEM_DEFINITION = 'problem_definition',\n CONSTRAINTS = 'constraints',\n MODEL = 'model',\n PROOF = 'proof',\n IMPLEMENTATION = 'implementation'\n}\n\n/**\n * Base thought interface\n */\nexport interface BaseThought {\n id: string;\n sessionId: string;\n thoughtNumber: number;\n totalThoughts: number;\n content: string;\n timestamp: Date;\n mode: ThinkingMode;\n nextThoughtNeeded: boolean;\n isRevision?: boolean;\n revisesThought?: string;\n tags?: string[];\n importance?: number;\n}\n\n/**\n * Extended thought types for mathematical and physics reasoning\n */\nexport type ExtendedThoughtType =\n | 'problem_definition' | 'constraints' | 'model' | 'proof' | 'implementation'\n | 'axiom_definition' | 'theorem_statement' | 'proof_construction'\n | 'lemma_derivation' | 'corollary' | 'counterexample'\n | 'algebraic_manipulation' | 'symbolic_computation' | 'numerical_analysis'\n | 'symmetry_analysis' | 'gauge_theory' | 'field_equations'\n | 'lagrangian' | 'hamiltonian' | 'conservation_law'\n | 'dimensional_analysis' | 'tensor_formulation' | 'differential_geometry'\n | 'decomposition' | 'synthesis' | 'abstraction' | 'analogy' | 'metacognition';\n\n/**\n * Mathematical model representation\n */\nexport interface MathematicalModel {\n latex: string;\n symbolic: string;\n ascii?: string;\n tensorRank?: number;\n dimensions?: number[];\n invariants?: string[];\n symmetries?: string[];\n complexity?: string;\n stabilityNotes?: string;\n validated?: boolean;\n validationMethod?: string;\n}\n\n/**\n * Tensor properties for physics modeling\n */\nexport interface TensorProperties {\n rank: [number, number];\n components: string;\n latex: string;\n symmetries: string[];\n invariants: string[];\n transformation: 'covariant' | 'contravariant' | 'mixed';\n indexStructure?: string;\n coordinateSystem?: string;\n}\n\n/**\n * Physical interpretation\n */\nexport interface PhysicalInterpretation {\n quantity: string;\n units: string;\n conservationLaws: string[];\n constraints?: string[];\n observables?: string[];\n}\n\n/**\n * Proof strategy for mathematical reasoning\n */\nexport interface ProofStrategy {\n type: 'direct' | 'contradiction' | 'induction' | 'construction' | 'contrapositive';\n steps: string[];\n baseCase?: string;\n inductiveStep?: string;\n completeness: number;\n}\n\n/**\n * Theorem definition\n */\nexport interface Theorem {\n name: string;\n statement: string;\n hypotheses: string[];\n conclusion: string;\n proof?: string;\n references?: Reference[];\n}\n\n/**\n * Reference to external sources\n */\nexport interface Reference {\n type: 'paper' | 'book' | 'arxiv' | 'url' | 'theorem';\n citation: string;\n relevance: string;\n url?: string;\n}\n\n// ========== EXISTING MODES ==========\n\n/**\n * Sequential-mode thought\n */\nexport interface SequentialThought extends BaseThought {\n mode: ThinkingMode.SEQUENTIAL;\n revisionReason?: string;\n buildUpon?: string[];\n branchFrom?: string;\n branchId?: string;\n needsMoreThoughts?: boolean;\n}\n\n/**\n * Shannon-mode thought\n */\nexport interface ShannonThought extends BaseThought {\n mode: ThinkingMode.SHANNON;\n stage: ShannonStage;\n uncertainty: number;\n dependencies: string[];\n assumptions: string[];\n recheckStep?: {\n stepToRecheck: string;\n reason: string;\n newInformation?: string;\n };\n confidenceFactors?: {\n dataQuality: number;\n methodologyRobustness: number;\n assumptionValidity: number;\n };\n alternativeApproaches?: string[];\n knownLimitations?: string[];\n}\n\n/**\n * Mathematical thought\n */\nexport interface MathematicsThought extends BaseThought {\n mode: ThinkingMode.MATHEMATICS;\n thoughtType: ExtendedThoughtType;\n mathematicalModel?: MathematicalModel;\n proofStrategy?: ProofStrategy;\n theorems?: Theorem[];\n dependencies: string[];\n assumptions: string[];\n uncertainty: number;\n logicalForm?: {\n premises: string[];\n conclusion: string;\n rules: string[];\n };\n references?: Reference[];\n}\n\n/**\n * Physics thought\n */\nexport interface PhysicsThought extends BaseThought {\n mode: ThinkingMode.PHYSICS;\n thoughtType: ExtendedThoughtType;\n tensorProperties?: TensorProperties;\n physicalInterpretation?: PhysicalInterpretation;\n conservationLaws?: string[];\n dimensionalAnalysis?: {\n isConsistent: boolean;\n dimensions: Record<string, string>;\n issues?: string[];\n };\n mathematicalModel?: MathematicalModel;\n dependencies: string[];\n assumptions: string[];\n uncertainty: number;\n fieldTheoryContext?: {\n fields: string[];\n interactions: string[];\n symmetryGroup: string;\n gaugeSymmetries?: string[];\n };\n}\n\n/**\n * Hybrid-mode thought\n */\nexport interface HybridThought extends BaseThought {\n mode: ThinkingMode.HYBRID;\n thoughtType?: ExtendedThoughtType;\n stage?: ShannonStage;\n uncertainty?: number;\n dependencies?: string[];\n assumptions?: string[];\n revisionReason?: string;\n mathematicalModel?: MathematicalModel;\n tensorProperties?: TensorProperties;\n physicalInterpretation?: PhysicalInterpretation;\n primaryMode: 'sequential' | 'shannon' | 'mathematics' | 'physics';\n secondaryFeatures: string[];\n switchReason?: string;\n}\n\n// ========== NEW MODES (v2.0) ==========\n\n// ===== ABDUCTIVE REASONING =====\n\n/**\n * Observation requiring explanation\n */\nexport interface Observation {\n id: string;\n description: string;\n timestamp?: string;\n confidence: number; // 0-1\n}\n\n/**\n * Hypothesis explaining observations\n */\nexport interface Hypothesis {\n id: string;\n explanation: string;\n assumptions: string[];\n predictions: string[];\n score: number; // Overall ranking score\n}\n\n/**\n * Evidence supporting or refuting hypotheses\n */\nexport interface Evidence {\n hypothesisId: string;\n type: 'supporting' | 'contradicting' | 'neutral';\n description: string;\n strength: number; // 0-1\n}\n\n/**\n * Criteria for evaluating hypotheses\n */\nexport interface EvaluationCriteria {\n parsimony: number; // Simplicity score (0-1)\n explanatoryPower: number; // How well it explains observations (0-1)\n plausibility: number; // Prior probability (0-1)\n testability: boolean; // Can it be tested?\n}\n\n/**\n * Abductive reasoning thought\n */\nexport interface AbductiveThought extends BaseThought {\n mode: ThinkingMode.ABDUCTIVE;\n observations: Observation[];\n hypotheses: Hypothesis[];\n currentHypothesis?: Hypothesis;\n evaluationCriteria: EvaluationCriteria;\n evidence: Evidence[];\n bestExplanation?: Hypothesis;\n}\n\n// ===== INDUCTIVE REASONING =====\n\n/**\n * Inductive reasoning thought\n * Reasoning from specific observations to general principles\n */\nexport interface InductiveThought extends BaseThought {\n mode: ThinkingMode.INDUCTIVE;\n observations: string[]; // Specific cases observed\n pattern?: string; // Identified pattern\n generalization: string; // General principle formed\n confidence: number; // 0-1: Strength of inference\n counterexamples?: string[]; // Known exceptions\n sampleSize?: number; // Number of observations\n}\n\n// ===== DEDUCTIVE REASONING =====\n\n/**\n * Deductive reasoning thought\n * Reasoning from general principles to specific conclusions\n */\nexport interface DeductiveThought extends BaseThought {\n mode: ThinkingMode.DEDUCTIVE;\n premises: string[]; // General principles\n conclusion: string; // Specific conclusion\n logicForm?: string; // e.g., \"modus ponens\", \"modus tollens\"\n validityCheck: boolean; // Is the deduction logically valid?\n soundnessCheck?: boolean; // Are the premises true?\n}\n\n// ===== CAUSAL REASONING =====\n\n/**\n * Node in causal graph\n */\nexport interface CausalNode {\n id: string;\n name: string;\n type: 'cause' | 'effect' | 'mediator' | 'confounder';\n description: string;\n}\n\n/**\n * Edge in causal graph (causal relationship)\n */\nexport interface CausalEdge {\n from: string; // node id\n to: string; // node id\n strength: number; // -1 to 1 (negative = inhibitory)\n confidence: number; // 0-1\n mechanism?: string;\n formula?: string; // LaTeX formula for mathematical relationship\n}\n\n/**\n * Causal graph structure\n */\nexport interface CausalGraph {\n nodes: CausalNode[];\n edges: CausalEdge[];\n}\n\n/**\n * Intervention on causal system\n */\nexport interface Intervention {\n nodeId: string;\n action: string;\n expectedEffects: {\n nodeId: string;\n expectedChange: string;\n confidence: number;\n }[];\n}\n\n/**\n * Causal mechanism description\n */\nexport interface CausalMechanism {\n from: string;\n to: string;\n description: string;\n type: 'direct' | 'indirect' | 'feedback';\n formula?: string; // LaTeX formula describing the mechanism\n}\n\n/**\n * Confounding variable\n */\nexport interface Confounder {\n nodeId: string;\n affects: string[]; // node ids\n description: string;\n}\n\n/**\n * Counterfactual scenario for causal analysis\n */\nexport interface CounterfactualScenario {\n description: string;\n modifiedNodes: { nodeId: string; newValue: string }[];\n predictedOutcome: string;\n}\n\n/**\n * Causal reasoning thought\n */\nexport interface CausalThought extends BaseThought {\n mode: ThinkingMode.CAUSAL;\n causalGraph: CausalGraph;\n interventions?: Intervention[];\n counterfactuals?: CounterfactualScenario[];\n mechanisms: CausalMechanism[];\n confounders?: Confounder[];\n}\n\n// ===== BAYESIAN REASONING =====\n\n/**\n * Hypothesis for Bayesian analysis\n */\nexport interface BayesianHypothesis {\n id: string;\n statement: string;\n alternatives?: string[];\n}\n\n/**\n * Prior probability\n */\nexport interface PriorProbability {\n probability: number; // 0-1\n justification: string;\n latex?: string; // LaTeX formula for prior distribution\n}\n\n/**\n * Likelihood of evidence\n */\nexport interface Likelihood {\n probability: number; // 0-1\n description: string;\n latex?: string; // LaTeX formula for likelihood function\n}\n\n/**\n * Evidence for Bayesian update\n */\nexport interface BayesianEvidence {\n id: string;\n description: string;\n likelihoodGivenHypothesis: number; // P(E|H)\n likelihoodGivenNotHypothesis: number; // P(E|¬H)\n timestamp?: string;\n}\n\n/**\n * Posterior probability (updated belief)\n */\nexport interface PosteriorProbability {\n probability: number; // 0-1\n calculation: string; // Show the math\n latex?: string; // LaTeX formula for Bayesian update calculation\n}\n\n/**\n * Sensitivity analysis for Bayesian reasoning\n */\nexport interface SensitivityAnalysis {\n priorRange: [number, number];\n posteriorRange: [number, number];\n}\n\n/**\n * Bayesian reasoning thought\n */\nexport interface BayesianThought extends BaseThought {\n mode: ThinkingMode.BAYESIAN;\n hypothesis: BayesianHypothesis;\n prior: PriorProbability;\n likelihood: Likelihood;\n evidence: BayesianEvidence[];\n posterior: PosteriorProbability;\n bayesFactor?: number; // Strength of evidence\n sensitivity?: SensitivityAnalysis;\n}\n\n// ===== COUNTERFACTUAL REASONING =====\n\n/**\n * Condition in a scenario\n */\nexport interface Condition {\n factor: string;\n value: string;\n isIntervention?: boolean; // Was this changed from actual?\n}\n\n/**\n * Outcome of a scenario\n */\nexport interface Outcome {\n description: string;\n impact: 'positive' | 'negative' | 'neutral';\n magnitude?: number; // 0-1\n}\n\n/**\n * Scenario (actual or counterfactual)\n */\nexport interface Scenario {\n id: string;\n name: string;\n description: string;\n conditions: Condition[];\n outcomes: Outcome[];\n likelihood?: number; // How plausible is this scenario?\n}\n\n/**\n * Difference between actual and counterfactual\n */\nexport interface Difference {\n aspect: string;\n actual: string;\n counterfactual: string;\n significance: 'high' | 'medium' | 'low';\n}\n\n/**\n * Causal chain from intervention to outcome\n */\nexport interface CausalChain {\n intervention: string;\n steps: string[];\n finalOutcome: string;\n}\n\n/**\n * Point of intervention in timeline\n */\nexport interface InterventionPoint {\n description: string;\n timestamp?: string;\n timing: string;\n feasibility: number; // 0-1\n expectedImpact: number; // 0-1\n alternatives: string[];\n}\n\n/**\n * Comparison between scenarios\n */\nexport interface CounterfactualComparison {\n differences: Difference[];\n insights: string[];\n lessons: string[];\n}\n\n/**\n * Counterfactual reasoning thought\n */\nexport interface CounterfactualThought extends BaseThought {\n mode: ThinkingMode.COUNTERFACTUAL;\n actual: Scenario;\n counterfactuals: Scenario[];\n comparison: CounterfactualComparison;\n interventionPoint: InterventionPoint;\n causalChains?: CausalChain[];\n}\n\n// ===== ANALOGICAL REASONING =====\n\n/**\n * Entity in a domain\n */\nexport interface Entity {\n id: string;\n name: string;\n type: string;\n description: string;\n}\n\n/**\n * Relation between entities\n */\nexport interface Relation {\n id: string;\n type: string;\n from: string; // entity id\n to: string; // entity id\n description: string;\n}\n\n/**\n * Property of an entity\n */\nexport interface Property {\n entityId: string;\n name: string;\n value: string;\n}\n\n/**\n * Domain (source or target)\n */\nexport interface Domain {\n id: string;\n name: string;\n description: string;\n entities: Entity[];\n relations: Relation[];\n properties: Property[];\n}\n\n/**\n * Mapping between source and target domains\n */\nexport interface Mapping {\n sourceEntityId: string;\n targetEntityId: string;\n justification: string;\n confidence: number; // 0-1\n}\n\n/**\n * Insight from analogy\n */\nexport interface Insight {\n description: string;\n sourceEvidence: string;\n targetApplication: string;\n novelty: number; // 0-1\n}\n\n/**\n * Inference based on analogy\n */\nexport interface Inference {\n sourcePattern: string;\n targetPrediction: string;\n confidence: number; // 0-1\n needsVerification: boolean;\n}\n\n/**\n * Analogical reasoning thought\n */\nexport interface AnalogicalThought extends BaseThought {\n mode: ThinkingMode.ANALOGICAL;\n sourceDomain: Domain;\n targetDomain: Domain;\n mapping: Mapping[];\n insights: Insight[];\n inferences: Inference[];\n limitations: string[];\n analogyStrength: number; // 0-1\n}\n\n// ========== UNION TYPES ==========\n\n/**\n * Union type of all thoughts\n */\nexport type Thought =\n | SequentialThought\n | ShannonThought\n | MathematicsThought\n | PhysicsThought\n | HybridThought\n | InductiveThought\n | DeductiveThought\n | AbductiveThought\n | CausalThought\n | BayesianThought\n | CounterfactualThought\n | AnalogicalThought\n | TemporalThought\n | GameTheoryThought\n | EvidentialThought\n | FirstPrinciplesThought\n | SystemsThinkingThought\n | ScientificMethodThought\n | OptimizationThought\n | FormalLogicThought;\n\n// ========== TYPE GUARDS ==========\n\n/**\n * Type guards for existing modes\n */\nexport function isSequentialThought(thought: Thought): thought is SequentialThought {\n return thought.mode === ThinkingMode.SEQUENTIAL;\n}\n\nexport function isShannonThought(thought: Thought): thought is ShannonThought {\n return thought.mode === ThinkingMode.SHANNON;\n}\n\nexport function isMathematicsThought(thought: Thought): thought is MathematicsThought {\n return thought.mode === ThinkingMode.MATHEMATICS;\n}\n\nexport function isPhysicsThought(thought: Thought): thought is PhysicsThought {\n return thought.mode === ThinkingMode.PHYSICS;\n}\n\nexport function isHybridThought(thought: Thought): thought is HybridThought {\n return thought.mode === ThinkingMode.HYBRID;\n}\n\n/**\n * Type guards for new modes (v2.0)\n */\nexport function isInductiveThought(thought: Thought): thought is InductiveThought {\n return thought.mode === ThinkingMode.INDUCTIVE;\n}\n\nexport function isDeductiveThought(thought: Thought): thought is DeductiveThought {\n return thought.mode === ThinkingMode.DEDUCTIVE;\n}\n\nexport function isAbductiveThought(thought: Thought): thought is AbductiveThought {\n return thought.mode === ThinkingMode.ABDUCTIVE;\n}\n\nexport function isCausalThought(thought: Thought): thought is CausalThought {\n return thought.mode === ThinkingMode.CAUSAL;\n}\n\nexport function isBayesianThought(thought: Thought): thought is BayesianThought {\n return thought.mode === ThinkingMode.BAYESIAN;\n}\n\nexport function isCounterfactualThought(thought: Thought): thought is CounterfactualThought {\n return thought.mode === ThinkingMode.COUNTERFACTUAL;\n}\n\nexport function isAnalogicalThought(thought: Thought): thought is AnalogicalThought {\n return thought.mode === ThinkingMode.ANALOGICAL;\n}\n\n/**\n * Type guards for Phase 3 modes (v2.1+)\n */\nexport function isTemporalThought(thought: Thought): thought is TemporalThought {\n return thought.mode === ThinkingMode.TEMPORAL;\n}\n\nexport function isGameTheoryThought(thought: Thought): thought is GameTheoryThought {\n return thought.mode === ThinkingMode.GAMETHEORY;\n}\n\nexport function isEvidentialThought(thought: Thought): thought is EvidentialThought {\n return thought.mode === ThinkingMode.EVIDENTIAL;\n}\n\nexport function isFirstPrinciplesThought(thought: Thought): thought is FirstPrinciplesThought {\n return thought.mode === ThinkingMode.FIRSTPRINCIPLES;\n}\n\n/**\n * Type guards for Phase 4 modes (v3.2.0)\n */\nexport function isSystemsThinkingThought(thought: Thought): thought is SystemsThinkingThought {\n return thought.mode === ThinkingMode.SYSTEMSTHINKING;\n}\n\nexport function isScientificMethodThought(thought: Thought): thought is ScientificMethodThought {\n return thought.mode === ThinkingMode.SCIENTIFICMETHOD;\n}\n\nexport function isOptimizationThought(thought: Thought): thought is OptimizationThought {\n return thought.mode === ThinkingMode.OPTIMIZATION;\n}\n\nexport function isFormalLogicThought(thought: Thought): thought is FormalLogicThought {\n return thought.mode === ThinkingMode.FORMALLOGIC;\n}\n\n// Re-export Phase 3 types\nexport type { TemporalThought, GameTheoryThought, EvidentialThought, FirstPrinciplesThought };\n\n// Re-export Phase 4 types\nexport type { SystemsThinkingThought, ScientificMethodThought, OptimizationThought, FormalLogicThought };\n","/**\n * Session types for managing thinking sessions\n */\n\nimport { Thought, ThinkingMode } from './core.js';\n\n/**\n * Thinking session\n */\nexport interface ThinkingSession {\n // Identification\n id: string;\n title: string;\n \n // Configuration\n mode: ThinkingMode;\n domain?: string;\n config: SessionConfig;\n \n // Content\n thoughts: Thought[];\n \n // Metadata\n createdAt: Date;\n updatedAt: Date;\n author?: string;\n \n // State\n currentThoughtNumber: number;\n isComplete: boolean;\n \n // Analytics\n metrics: SessionMetrics;\n \n // Optional features\n collaborators?: string[];\n tags?: string[];\n attachments?: Attachment[];\n}\n\n/**\n * Session configuration\n */\nexport interface SessionConfig {\n // Mode-specific settings\n modeConfig: ModeConfig;\n \n // Feature flags\n enableAutoSave: boolean;\n enableValidation: boolean;\n enableVisualization: boolean;\n \n // Integration settings\n integrations: {\n mathMcp?: { url: string; enabled: boolean };\n wolfram?: { appId: string; enabled: boolean };\n arxiv?: { enabled: boolean };\n };\n \n // Export preferences\n exportFormats: ExportFormat[];\n autoExportOnComplete: boolean;\n \n // Performance settings\n maxThoughtsInMemory: number;\n compressionThreshold: number;\n}\n\n/**\n * Mode-specific configuration\n */\nexport interface ModeConfig {\n mode: ThinkingMode;\n strictValidation?: boolean;\n allowModeSwitch?: boolean;\n customSettings?: Record<string, unknown>;\n}\n\n/**\n * Session metrics\n */\nexport interface SessionMetrics {\n totalThoughts: number;\n thoughtsByType: Record<string, number>;\n averageUncertainty: number;\n revisionCount: number;\n timeSpent: number;\n dependencyDepth: number;\n customMetrics: Map<string, unknown>;\n\n // Validation cache statistics\n cacheStats?: {\n hits: number;\n misses: number;\n hitRate: number;\n size: number;\n maxSize: number;\n };\n\n // Running totals for incremental calculation (internal use)\n // These fields are internal implementation details for O(1) average calculation\n _uncertaintySum?: number;\n _uncertaintyCount?: number;\n}\n\n/**\n * Session metadata for listings\n */\nexport interface SessionMetadata {\n id: string;\n title: string;\n createdAt: Date;\n updatedAt: Date;\n thoughtCount: number;\n mode: ThinkingMode;\n isComplete: boolean;\n}\n\n/**\n * Export formats\n */\nexport type ExportFormat = 'markdown' | 'latex' | 'json' | 'html' | 'jupyter' | 'mermaid';\n\n/**\n * Attachment\n */\nexport interface Attachment {\n id: string;\n filename: string;\n mimeType: string;\n size: number;\n url?: string;\n data?: Buffer;\n}\n\n/**\n * Validation result\n */\nexport interface ValidationResult {\n isValid: boolean;\n confidence: number;\n \n issues: ValidationIssue[];\n \n strengthMetrics: {\n logicalSoundness: number;\n empiricalSupport: number;\n mathematicalRigor: number;\n physicalConsistency?: number;\n };\n \n tensorValidation?: {\n rankCorrect: boolean;\n symmetriesVerified: boolean;\n invariantsChecked: boolean;\n dimensionsConsistent: boolean;\n };\n \n suggestions?: string[];\n}\n\n/**\n * Validation issue\n */\nexport interface ValidationIssue {\n severity: 'error' | 'warning' | 'info';\n thoughtNumber: number;\n description: string;\n suggestion: string;\n category: 'logical' | 'mathematical' | 'physical' | 'structural';\n}\n","/**\n * Mode Recommendation System (v2.4)\n * Intelligent system to recommend which reasoning modes to use based on problem characteristics\n */\n\nimport { ThinkingMode } from '../core.js';\n\nexport interface ProblemCharacteristics {\n domain: string;\n complexity: 'low' | 'medium' | 'high';\n uncertainty: 'low' | 'medium' | 'high';\n timeDependent: boolean;\n multiAgent: boolean;\n requiresProof: boolean;\n requiresQuantification: boolean;\n hasIncompleteInfo: boolean;\n requiresExplanation: boolean;\n hasAlternatives: boolean;\n}\n\nexport interface ModeRecommendation {\n mode: ThinkingMode;\n score: number; // 0-1, how well suited\n reasoning: string;\n strengths: string[];\n limitations: string[];\n examples: string[];\n}\n\nexport interface CombinationRecommendation {\n modes: ThinkingMode[];\n sequence: 'parallel' | 'sequential' | 'hybrid';\n rationale: string;\n benefits: string[];\n synergies: string[];\n}\n\nexport class ModeRecommender {\n /**\n * Recommends reasoning modes based on problem characteristics\n * Returns modes ranked by suitability score\n */\n recommendModes(characteristics: ProblemCharacteristics): ModeRecommendation[] {\n const recommendations: ModeRecommendation[] = [];\n\n // Temporal reasoning\n if (characteristics.timeDependent) {\n recommendations.push({\n mode: ThinkingMode.TEMPORAL,\n score: 0.9,\n reasoning: 'Problem involves time-dependent events and sequences',\n strengths: ['Event sequencing', 'Temporal causality', 'Timeline construction'],\n limitations: ['Limited strategic reasoning'],\n examples: ['Process modeling', 'Event correlation', 'Timeline debugging'],\n });\n }\n\n // Game theory\n if (characteristics.multiAgent) {\n recommendations.push({\n mode: ThinkingMode.GAMETHEORY,\n score: 0.85,\n reasoning: 'Problem involves strategic interactions between agents',\n strengths: ['Equilibrium analysis', 'Strategic reasoning', 'Multi-agent dynamics'],\n limitations: ['Assumes rationality', 'Complex computations'],\n examples: ['Competitive analysis', 'Auction design', 'Negotiation'],\n });\n }\n\n // Evidential reasoning\n if (characteristics.hasIncompleteInfo && characteristics.uncertainty === 'high') {\n recommendations.push({\n mode: ThinkingMode.EVIDENTIAL,\n score: 0.88,\n reasoning: 'Problem has incomplete information and high uncertainty',\n strengths: ['Handles ignorance', 'Evidence combination', 'Uncertainty intervals'],\n limitations: ['Computational complexity', 'Requires careful mass assignment'],\n examples: ['Sensor fusion', 'Diagnostic reasoning', 'Intelligence analysis'],\n });\n }\n\n // Abductive reasoning\n if (characteristics.requiresExplanation) {\n recommendations.push({\n mode: ThinkingMode.ABDUCTIVE,\n score: 0.87,\n reasoning: 'Problem requires finding best explanations',\n strengths: ['Hypothesis generation', 'Root cause analysis', 'Explanation quality'],\n limitations: ['May miss non-obvious explanations'],\n examples: ['Debugging', 'Diagnosis', 'Scientific discovery'],\n });\n }\n\n // Causal reasoning\n if (characteristics.timeDependent && characteristics.requiresExplanation) {\n recommendations.push({\n mode: ThinkingMode.CAUSAL,\n score: 0.86,\n reasoning: 'Problem requires understanding cause-effect relationships',\n strengths: ['Intervention analysis', 'Causal graphs', 'Impact assessment'],\n limitations: ['Requires domain knowledge', 'Difficult to identify confounders'],\n examples: ['Impact analysis', 'System design', 'Policy evaluation'],\n });\n }\n\n // Bayesian reasoning\n if (characteristics.requiresQuantification && characteristics.uncertainty !== 'low') {\n recommendations.push({\n mode: ThinkingMode.BAYESIAN,\n score: 0.84,\n reasoning: 'Problem requires probabilistic reasoning with evidence updates',\n strengths: ['Principled uncertainty', 'Evidence integration', 'Prior knowledge'],\n limitations: ['Requires probability estimates', 'Computationally intensive'],\n examples: ['A/B testing', 'Risk assessment', 'Predictive modeling'],\n });\n }\n\n // Counterfactual reasoning\n if (characteristics.hasAlternatives) {\n recommendations.push({\n mode: ThinkingMode.COUNTERFACTUAL,\n score: 0.82,\n reasoning: 'Problem benefits from analyzing alternative scenarios',\n strengths: ['What-if analysis', 'Post-mortem insights', 'Decision comparison'],\n limitations: ['Speculative', 'Difficult to validate'],\n examples: ['Post-mortems', 'Strategic planning', 'Architecture decisions'],\n });\n }\n\n // Analogical reasoning\n if (characteristics.complexity === 'high' && characteristics.requiresExplanation) {\n recommendations.push({\n mode: ThinkingMode.ANALOGICAL,\n score: 0.80,\n reasoning: 'Problem can benefit from cross-domain analogies',\n strengths: ['Creative insights', 'Knowledge transfer', 'Pattern recognition'],\n limitations: ['Analogies may be superficial', 'Requires diverse knowledge'],\n examples: ['Novel problem solving', 'Design thinking', 'Innovation'],\n });\n }\n\n // Mathematical reasoning\n if (characteristics.requiresProof) {\n recommendations.push({\n mode: ThinkingMode.MATHEMATICS,\n score: 0.95,\n reasoning: 'Problem requires formal proofs and symbolic reasoning',\n strengths: ['Rigorous proofs', 'Symbolic computation', 'Theorem proving'],\n limitations: ['Limited to mathematical domains'],\n examples: ['Algorithm correctness', 'Complexity analysis', 'Formal verification'],\n });\n }\n\n // Physics reasoning\n if (characteristics.domain === 'physics' || characteristics.domain === 'engineering') {\n recommendations.push({\n mode: ThinkingMode.PHYSICS,\n score: 0.90,\n reasoning: 'Problem involves physical systems or tensor mathematics',\n strengths: ['Field theory', 'Conservation laws', 'Tensor analysis'],\n limitations: ['Specialized to physics domains'],\n examples: ['Physical modeling', 'System dynamics', 'Engineering analysis'],\n });\n }\n\n // Shannon methodology\n if (characteristics.complexity === 'high' && characteristics.requiresProof) {\n recommendations.push({\n mode: ThinkingMode.SHANNON,\n score: 0.88,\n reasoning: 'Complex problem requiring systematic decomposition',\n strengths: ['Systematic approach', 'Problem decomposition', 'Rigorous analysis'],\n limitations: ['Time-intensive', 'Requires discipline'],\n examples: ['Complex system design', 'Research problems', 'Novel algorithms'],\n });\n }\n\n // Sequential reasoning (default fallback)\n if (recommendations.length === 0) {\n recommendations.push({\n mode: ThinkingMode.SEQUENTIAL,\n score: 0.70,\n reasoning: 'General-purpose iterative reasoning',\n strengths: ['Flexible', 'Adaptable', 'Iterative refinement'],\n limitations: ['May lack structure for complex problems'],\n examples: ['General problem solving', 'Exploration', 'Brainstorming'],\n });\n }\n\n // Sort by score (highest first)\n return recommendations.sort((a, b) => b.score - a.score);\n }\n\n /**\n * Recommends combinations of reasoning modes that work well together\n */\n recommendCombinations(characteristics: ProblemCharacteristics): CombinationRecommendation[] {\n const combinations: CombinationRecommendation[] = [];\n\n // Temporal + Causal\n if (characteristics.timeDependent && characteristics.requiresExplanation) {\n combinations.push({\n modes: [ThinkingMode.TEMPORAL, ThinkingMode.CAUSAL],\n sequence: 'sequential',\n rationale: 'Build timeline first, then analyze causal relationships',\n benefits: ['Complete temporal-causal model', 'Root cause with timeline context'],\n synergies: ['Temporal events inform causal nodes', 'Causal edges explain temporal sequences'],\n });\n }\n\n // Abductive + Bayesian\n if (characteristics.requiresExplanation && characteristics.requiresQuantification) {\n combinations.push({\n modes: [ThinkingMode.ABDUCTIVE, ThinkingMode.BAYESIAN],\n sequence: 'sequential',\n rationale: 'Generate hypotheses, then quantify with probabilities',\n benefits: ['Systematic hypothesis generation', 'Quantified belief updates'],\n synergies: ['Abductive hypotheses become Bayesian hypotheses', 'Bayesian updates refine explanations'],\n });\n }\n\n // Game Theory + Counterfactual\n if (characteristics.multiAgent && characteristics.hasAlternatives) {\n combinations.push({\n modes: [ThinkingMode.GAMETHEORY, ThinkingMode.COUNTERFACTUAL],\n sequence: 'hybrid',\n rationale: 'Analyze equilibria, then explore alternative strategies',\n benefits: ['Strategic analysis + scenario exploration', 'Robustness testing'],\n synergies: ['Equilibria as actual scenarios', 'Strategy changes as interventions'],\n });\n }\n\n // Evidential + Causal\n if (characteristics.hasIncompleteInfo && characteristics.timeDependent) {\n combinations.push({\n modes: [ThinkingMode.EVIDENTIAL, ThinkingMode.CAUSAL],\n sequence: 'parallel',\n rationale: 'Combine uncertain evidence while modeling causal structure',\n benefits: ['Handles uncertainty and causality', 'Evidence fusion with causal reasoning'],\n synergies: ['Belief functions inform causal strengths', 'Causal structure guides evidence combination'],\n });\n }\n\n // Temporal + Game Theory\n if (characteristics.timeDependent && characteristics.multiAgent) {\n combinations.push({\n modes: [ThinkingMode.TEMPORAL, ThinkingMode.GAMETHEORY],\n sequence: 'sequential',\n rationale: 'Model event sequences, then analyze strategic interactions over time',\n benefits: ['Dynamic game analysis', 'Time-dependent strategies'],\n synergies: ['Temporal events as game stages', 'Strategies evolve over timeline'],\n });\n }\n\n // Analogical + Abductive\n if (characteristics.requiresExplanation && characteristics.complexity === 'high') {\n combinations.push({\n modes: [ThinkingMode.ANALOGICAL, ThinkingMode.ABDUCTIVE],\n sequence: 'parallel',\n rationale: 'Use analogies to inspire hypotheses while systematically generating explanations',\n benefits: ['Creative hypothesis generation', 'Cross-domain insights'],\n synergies: ['Analogies suggest hypotheses', 'Hypotheses validated by analogical reasoning'],\n });\n }\n\n // Mathematics + Shannon (for complex proofs)\n if (characteristics.requiresProof && characteristics.complexity === 'high') {\n combinations.push({\n modes: [ThinkingMode.SHANNON, ThinkingMode.MATHEMATICS],\n sequence: 'hybrid',\n rationale: 'Use Shannon methodology to structure complex mathematical proofs',\n benefits: ['Systematic proof construction', 'Clear problem decomposition'],\n synergies: ['Shannon stages guide proof strategy', 'Mathematical rigor validates each stage'],\n });\n }\n\n return combinations;\n }\n\n /**\n * Get a simple mode recommendation based on a few key characteristics\n * Simplified version for quick recommendations\n */\n quickRecommend(problemType: string): ThinkingMode {\n const typeMap: Record<string, ThinkingMode> = {\n 'debugging': ThinkingMode.ABDUCTIVE,\n 'proof': ThinkingMode.MATHEMATICS,\n 'timeline': ThinkingMode.TEMPORAL,\n 'strategy': ThinkingMode.GAMETHEORY,\n 'uncertainty': ThinkingMode.EVIDENTIAL,\n 'causality': ThinkingMode.CAUSAL,\n 'probability': ThinkingMode.BAYESIAN,\n 'what-if': ThinkingMode.COUNTERFACTUAL,\n 'analogy': ThinkingMode.ANALOGICAL,\n 'physics': ThinkingMode.PHYSICS,\n 'systematic': ThinkingMode.SHANNON,\n };\n\n return typeMap[problemType.toLowerCase()] || ThinkingMode.SEQUENTIAL;\n }\n}\n","/**\n * Type definitions index\n * Exports all types for the DeepThinking MCP server\n *\n * Note: All thought types are exported from core.ts to avoid duplicate exports.\n * Mode-specific types are imported by core.ts and re-exported from there.\n */\n\nexport * from './core.js';\nexport * from './session.js';\n\n// Export mode recommendation types (doesn't conflict with core exports)\nexport * from './modes/recommendations.js';\n","/**\n * Custom error classes for DeepThinking MCP\n * Provides structured error handling with proper error codes and context\n *\n * STANDARDIZED ERROR FORMAT:\n * All errors extend DeepThinkingError and include:\n * - message: Human-readable error description\n * - code: Machine-readable error code (SCREAMING_SNAKE_CASE)\n * - context: Additional error context (sanitized, no PII)\n * - timestamp: When the error occurred\n * - stack: Stack trace for debugging\n *\n * USAGE GUIDELINES:\n * 1. Use specific error classes when available (e.g., SessionNotFoundError)\n * 2. Use ErrorFactory for common error patterns\n * 3. Never expose sensitive data in error messages or context\n * 4. Include relevant context for debugging (IDs, not content)\n * 5. Log errors with appropriate severity level\n *\n * ERROR CODE CONVENTIONS:\n * - SESSION_*: Session lifecycle errors\n * - VALIDATION_*: Input/data validation errors\n * - RESOURCE_*: Resource limits and availability\n * - SECURITY_*: Security and authentication errors\n * - RATE_LIMIT_*: Rate limiting errors\n * - EXPORT_*: Export and serialization errors\n */\n\n/**\n * Base error class for all DeepThinking MCP errors\n */\nexport class DeepThinkingError extends Error {\n public readonly code: string;\n public readonly context?: Record<string, unknown>;\n public readonly timestamp: Date;\n\n constructor(message: string, code: string, context?: Record<string, unknown>) {\n super(message);\n this.name = this.constructor.name;\n this.code = code;\n this.context = context;\n this.timestamp = new Date();\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n /**\n * Convert error to JSON for logging/serialization\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n context: this.context,\n timestamp: this.timestamp.toISOString(),\n stack: this.stack,\n };\n }\n}\n\n/**\n * Session-related errors\n */\nexport class SessionError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'SESSION_ERROR', context);\n }\n}\n\n/**\n * Session not found error\n */\nexport class SessionNotFoundError extends DeepThinkingError {\n constructor(sessionId: string) {\n super(`Session not found: ${sessionId}`, 'SESSION_NOT_FOUND', { sessionId });\n }\n}\n\n/**\n * Session already exists error\n */\nexport class SessionAlreadyExistsError extends DeepThinkingError {\n constructor(sessionId: string) {\n super(`Session already exists: ${sessionId}`, 'SESSION_ALREADY_EXISTS', { sessionId });\n }\n}\n\n/**\n * Validation errors\n */\nexport class ValidationError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'VALIDATION_ERROR', context);\n }\n}\n\n/**\n * Input validation error\n */\nexport class InputValidationError extends DeepThinkingError {\n constructor(fieldName: string, reason: string, value?: unknown) {\n super(`Invalid ${fieldName}: ${reason}`, 'INPUT_VALIDATION_ERROR', {\n fieldName,\n reason,\n value: typeof value === 'object' ? '[object]' : value,\n });\n }\n}\n\n/**\n * Configuration errors\n */\nexport class ConfigurationError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'CONFIGURATION_ERROR', context);\n }\n}\n\n/**\n * Invalid mode error\n */\nexport class InvalidModeError extends DeepThinkingError {\n constructor(mode: string, validModes: string[]) {\n super(`Invalid thinking mode: ${mode}`, 'INVALID_MODE', { mode, validModes });\n }\n}\n\n/**\n * Thought processing errors\n */\nexport class ThoughtProcessingError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'THOUGHT_PROCESSING_ERROR', context);\n }\n}\n\n/**\n * Export errors\n */\nexport class ExportError extends DeepThinkingError {\n constructor(message: string, format: string, context?: Record<string, unknown>) {\n super(message, 'EXPORT_ERROR', { ...context, format });\n }\n}\n\n/**\n * Resource limit errors\n */\nexport class ResourceLimitError extends DeepThinkingError {\n constructor(resource: string, limit: number, actual: number) {\n super(\n `Resource limit exceeded for ${resource}: ${actual} > ${limit}`,\n 'RESOURCE_LIMIT_EXCEEDED',\n { resource, limit, actual }\n );\n }\n}\n\n/**\n * Error factory for creating appropriate error types\n */\nexport class ErrorFactory {\n static sessionNotFound(sessionId: string): SessionNotFoundError {\n return new SessionNotFoundError(sessionId);\n }\n\n static invalidInput(fieldName: string, reason: string, value?: unknown): InputValidationError {\n return new InputValidationError(fieldName, reason, value);\n }\n\n static invalidMode(mode: string, validModes: string[]): InvalidModeError {\n return new InvalidModeError(mode, validModes);\n }\n\n static resourceLimit(resource: string, limit: number, actual: number): ResourceLimitError {\n return new ResourceLimitError(resource, limit, actual);\n }\n\n static exportFailed(format: string, reason: string): ExportError {\n return new ExportError(`Export failed: ${reason}`, format);\n }\n}\n\n/**\n * Rate limiting errors\n */\nexport class RateLimitError extends DeepThinkingError {\n constructor(operation: string, limit?: number, windowMs?: number) {\n const message = limit\n ? `Rate limit exceeded for ${operation}: ${limit} requests per ${windowMs}ms`\n : `Rate limit exceeded for ${operation}`;\n\n super(message, 'RATE_LIMIT_EXCEEDED', { operation, limit, windowMs });\n }\n}\n\n/**\n * Security-related errors\n */\nexport class SecurityError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'SECURITY_ERROR', context);\n }\n}\n\n/**\n * Path traversal security error\n */\nexport class PathTraversalError extends DeepThinkingError {\n constructor(attemptedPath: string) {\n super('Path traversal attempt detected', 'PATH_TRAVERSAL_DETECTED', { attemptedPath });\n }\n}\n\n/**\n * Storage and persistence errors\n */\nexport class StorageError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'STORAGE_ERROR', context);\n }\n}\n\n/**\n * Backup operation errors\n */\nexport class BackupError extends DeepThinkingError {\n constructor(message: string, backupId?: string, context?: Record<string, unknown>) {\n super(message, 'BACKUP_ERROR', { ...context, backupId });\n }\n}\n","/**\n * Input sanitization utilities for DeepThinking MCP\n * Provides basic security and validation for user inputs\n */\n\n/**\n * Maximum allowed lengths for string inputs\n */\nexport const MAX_LENGTHS = {\n THOUGHT_CONTENT: 100000, // 100KB for thought content\n TITLE: 500,\n DOMAIN: 200,\n AUTHOR: 300,\n SESSION_ID: 100,\n HYPOTHESIS: 5000,\n DESCRIPTION: 10000,\n STRING_FIELD: 1000,\n};\n\n/**\n * Sanitize and validate a string input\n * @param input - The string to sanitize\n * @param maxLength - Maximum allowed length (default: MAX_LENGTHS.STRING_FIELD)\n * @param fieldName - Name of the field for error messages\n * @returns Sanitized string\n * @throws Error if input is invalid\n */\nexport function sanitizeString(\n input: string,\n maxLength: number = MAX_LENGTHS.STRING_FIELD,\n fieldName: string = 'input'\n): string {\n if (typeof input !== 'string') {\n throw new Error(`${fieldName} must be a string`);\n }\n\n // Trim whitespace\n const trimmed = input.trim();\n\n // Check length\n if (trimmed.length === 0) {\n throw new Error(`${fieldName} cannot be empty`);\n }\n\n if (trimmed.length > maxLength) {\n throw new Error(`${fieldName} exceeds maximum length of ${maxLength} characters`);\n }\n\n // Check for null bytes (potential injection)\n if (trimmed.includes('\\0')) {\n throw new Error(`${fieldName} contains invalid null bytes`);\n }\n\n return trimmed;\n}\n\n/**\n * Sanitize an optional string input\n */\nexport function sanitizeOptionalString(\n input: string | undefined,\n maxLength: number = MAX_LENGTHS.STRING_FIELD,\n fieldName: string = 'input'\n): string | undefined {\n if (input === undefined || input === null || input === '') {\n return undefined;\n }\n return sanitizeString(input, maxLength, fieldName);\n}\n\n/**\n * Validate a session ID (should be a valid UUID v4)\n */\nexport function validateSessionId(sessionId: string): string {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\n if (!uuidRegex.test(sessionId)) {\n throw new Error(`Invalid session ID format: ${sessionId}`);\n }\n\n return sessionId;\n}\n\n/**\n * Sanitize numeric input and ensure it's within range\n */\nexport function sanitizeNumber(\n input: number,\n min: number = -Infinity,\n max: number = Infinity,\n fieldName: string = 'number'\n): number {\n if (typeof input !== 'number' || isNaN(input)) {\n throw new Error(`${fieldName} must be a valid number`);\n }\n\n if (!isFinite(input)) {\n throw new Error(`${fieldName} must be a finite number`);\n }\n\n if (input < min || input > max) {\n throw new Error(`${fieldName} must be between ${min} and ${max}`);\n }\n\n return input;\n}\n\n/**\n * Sanitize an array of strings\n */\nexport function sanitizeStringArray(\n input: string[],\n maxLength: number = MAX_LENGTHS.STRING_FIELD,\n maxItems: number = 1000,\n fieldName: string = 'array'\n): string[] {\n if (!Array.isArray(input)) {\n throw new Error(`${fieldName} must be an array`);\n }\n\n if (input.length > maxItems) {\n throw new Error(`${fieldName} exceeds maximum of ${maxItems} items`);\n }\n\n return input.map((item, index) =>\n sanitizeString(item, maxLength, `${fieldName}[${index}]`)\n );\n}\n\n/**\n * Sanitize thought content (allows larger size)\n */\nexport function sanitizeThoughtContent(content: string): string {\n return sanitizeString(content, MAX_LENGTHS.THOUGHT_CONTENT, 'thought content');\n}\n\n/**\n * Sanitize session title\n */\nexport function sanitizeTitle(title: string | undefined): string {\n if (!title) {\n return 'Untitled Session';\n }\n return sanitizeString(title, MAX_LENGTHS.TITLE, 'title');\n}\n\n/**\n * Sanitize domain name\n */\nexport function sanitizeDomain(domain: string | undefined): string | undefined {\n return sanitizeOptionalString(domain, MAX_LENGTHS.DOMAIN, 'domain');\n}\n\n/**\n * Sanitize author name\n */\nexport function sanitizeAuthor(author: string | undefined): string | undefined {\n return sanitizeOptionalString(author, MAX_LENGTHS.AUTHOR, 'author');\n}\n\n/**\n * Escape HTML special characters to prevent XSS\n * @param text - Text to escape\n * @returns HTML-safe string\n */\nexport function escapeHtml(text: string): string {\n const htmlEscapeMap: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n };\n\n return text.replace(/[&<>\"'\\/]/g, (char) => htmlEscapeMap[char] || char);\n}\n\n/**\n * Escape LaTeX special characters to prevent injection\n * @param text - Text to escape\n * @returns LaTeX-safe string\n */\nexport function escapeLatex(text: string): string {\n const latexEscapeMap: Record<string, string> = {\n '\\\\': '\\\\textbackslash{}',\n '{': '\\\\{',\n '}': '\\\\}',\n '$': '\\\\$',\n '&': '\\\\&',\n '%': '\\\\%',\n '#': '\\\\#',\n '_': '\\\\_',\n '~': '\\\\textasciitilde{}',\n '^': '\\\\textasciicircum{}',\n };\n\n return text.replace(/[\\\\{}$&%#_~^]/g, (char) => latexEscapeMap[char] || char);\n}\n","/**\n * Logging utility for DeepThinking MCP\n * Provides structured logging with levels and context\n */\n\nimport { ILogger } from '../interfaces/ILogger.js';\n\n/**\n * Log levels\n */\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n SILENT = 4,\n}\n\n/**\n * Log entry structure\n */\nexport interface LogEntry {\n level: LogLevel;\n message: string;\n timestamp: Date;\n context?: Record<string, unknown>;\n error?: Error;\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n minLevel: LogLevel;\n enableConsole: boolean;\n enableTimestamps: boolean;\n prettyPrint: boolean;\n}\n\n/**\n * Default logger configuration\n */\nconst DEFAULT_CONFIG: LoggerConfig = {\n minLevel: LogLevel.INFO,\n enableConsole: true,\n enableTimestamps: true,\n prettyPrint: true,\n};\n\n/**\n * Simple logger implementation\n */\nexport class Logger implements ILogger {\n private config: LoggerConfig;\n private logs: LogEntry[] = [];\n\n constructor(config?: Partial<LoggerConfig>) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Log a debug message\n */\n debug(message: string, context?: Record<string, unknown>): void {\n this.log(LogLevel.DEBUG, message, context);\n }\n\n /**\n * Log an info message\n */\n info(message: string, context?: Record<string, unknown>): void {\n this.log(LogLevel.INFO, message, context);\n }\n\n /**\n * Log a warning message\n */\n warn(message: string, context?: Record<string, unknown>): void {\n this.log(LogLevel.WARN, message, context);\n }\n\n /**\n * Log an error message\n */\n error(message: string, error?: Error, context?: Record<string, unknown>): void {\n this.log(LogLevel.ERROR, message, context, error);\n }\n\n /**\n * Internal log method\n */\n private log(\n level: LogLevel,\n message: string,\n context?: Record<string, unknown>,\n error?: Error\n ): void {\n if (level < this.config.minLevel) {\n return;\n }\n\n const entry: LogEntry = {\n level,\n message,\n timestamp: new Date(),\n context,\n error,\n };\n\n this.logs.push(entry);\n\n if (this.config.enableConsole) {\n this.writeToConsole(entry);\n }\n }\n\n /**\n * Write log entry to console\n */\n private writeToConsole(entry: LogEntry): void {\n const levelName = LogLevel[entry.level];\n const timestamp = this.config.enableTimestamps\n ? `[${entry.timestamp.toISOString()}] `\n : '';\n\n let message = `${timestamp}${levelName}: ${entry.message}`;\n\n if (entry.context && this.config.prettyPrint) {\n message += `\\n Context: ${JSON.stringify(entry.context, null, 2)}`;\n }\n\n if (entry.error) {\n message += `\\n Error: ${entry.error.message}`;\n if (entry.error.stack && this.config.prettyPrint) {\n message += `\\n Stack: ${entry.error.stack}`;\n }\n }\n\n switch (entry.level) {\n case LogLevel.DEBUG:\n case LogLevel.INFO:\n console.log(message);\n break;\n case LogLevel.WARN:\n console.warn(message);\n break;\n case LogLevel.ERROR:\n console.error(message);\n break;\n }\n }\n\n /**\n * Get all log entries\n */\n getLogs(minLevel?: LogLevel): LogEntry[] {\n if (minLevel !== undefined) {\n return this.logs.filter(log => log.level >= minLevel);\n }\n return [...this.logs];\n }\n\n /**\n * Clear all logs\n */\n clearLogs(): void {\n this.logs = [];\n }\n\n /**\n * Set minimum log level\n */\n setLevel(level: LogLevel): void {\n this.config.minLevel = level;\n }\n\n /**\n * Export logs as JSON\n */\n exportLogs(): string {\n return JSON.stringify(this.logs.map(log => ({\n ...log,\n level: LogLevel[log.level],\n timestamp: log.timestamp.toISOString(),\n })), null, 2);\n }\n}\n\n/**\n * Global logger instance\n */\nexport const logger = new Logger();\n\n/**\n * Create a logger instance with custom config\n */\nexport function createLogger(config?: Partial<LoggerConfig>): Logger {\n return new Logger(config);\n}\n","/**\n * LRU Cache (v3.4.0)\n * Phase 4 Task 9.6: Least Recently Used cache implementation\n */\n\nimport type { Cache, CacheConfig, CacheEntry, CacheStats } from './types.js';\n\n/**\n * LRU (Least Recently Used) cache\n */\nexport class LRUCache<T> implements Cache<T> {\n private cache: Map<string, CacheEntry<T>>;\n private config: Required<CacheConfig>;\n private stats: CacheStats;\n\n constructor(config: Partial<CacheConfig> = {}) {\n this.cache = new Map();\n this.config = {\n /**\n * Default max cache size: 100 entries\n * Reasoning:\n * - Validation cache typically stores session/thought validation results\n * - Average entry size: ~1-2KB (validation result + metadata)\n * - 100 entries = ~100-200KB memory usage\n * - Sufficient for most use cases (covers recent validations)\n * - Prevents unbounded memory growth in long-running processes\n * - Can be overridden via config parameter for high-traffic scenarios\n */\n maxSize: config.maxSize || 100,\n strategy: 'lru',\n ttl: config.ttl || 0,\n enableStats: config.enableStats !== false,\n onEvict: config.onEvict || (() => {}),\n };\n\n this.stats = {\n size: 0,\n maxSize: this.config.maxSize,\n hits: 0,\n misses: 0,\n hitRate: 0,\n evictions: 0,\n sets: 0,\n deletes: 0,\n memoryUsage: 0,\n avgAccessTime: 0,\n };\n }\n\n /**\n * Get value by key\n */\n get(key: string): T | undefined {\n const entry = this.cache.get(key);\n\n if (!entry) {\n if (this.config.enableStats) {\n this.stats.misses++;\n this.updateHitRate();\n }\n return undefined;\n }\n\n // Check expiration\n if (entry.expiresAt && entry.expiresAt < new Date()) {\n this.delete(key);\n if (this.config.enableStats) {\n this.stats.misses++;\n this.updateHitRate();\n }\n return undefined;\n }\n\n // Update access time (LRU behavior)\n entry.lastAccessedAt = new Date();\n entry.accessCount++;\n\n // Move to end (most recently used)\n this.cache.delete(key);\n this.cache.set(key, entry);\n\n if (this.config.enableStats) {\n this.stats.hits++;\n this.updateHitRate();\n }\n\n return entry.value;\n }\n\n /**\n * Set value for key\n */\n set(key: string, value: T, ttl?: number): void {\n // Check if key exists\n const existing = this.cache.get(key);\n if (existing) {\n this.cache.delete(key);\n } else if (this.cache.size >= this.config.maxSize) {\n // Evict least recently used (first entry)\n this.evictLRU();\n }\n\n // Create entry\n const now = new Date();\n const effectiveTtl = ttl ?? this.config.ttl;\n const entry: CacheEntry<T> = {\n key,\n value,\n createdAt: now,\n lastAccessedAt: now,\n accessCount: 0,\n expiresAt: effectiveTtl ? new Date(now.getTime() + effectiveTtl) : undefined,\n size: this.estimateSize(value),\n };\n\n this.cache.set(key, entry);\n\n if (this.config.enableStats) {\n this.stats.sets++;\n this.stats.size = this.cache.size;\n this.stats.memoryUsage += entry.size || 0;\n }\n }\n\n /**\n * Check if key exists\n */\n has(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n\n // Check expiration\n if (entry.expiresAt && entry.expiresAt < new Date()) {\n this.delete(key);\n return false;\n }\n\n return true;\n }\n\n /**\n * Delete entry by key\n */\n delete(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n\n this.cache.delete(key);\n\n if (this.config.enableStats) {\n this.stats.deletes++;\n this.stats.size = this.cache.size;\n this.stats.memoryUsage -= entry.size || 0;\n }\n\n return true;\n }\n\n /**\n * Clear all entries\n */\n clear(): void {\n this.cache.clear();\n\n if (this.config.enableStats) {\n this.stats.size = 0;\n this.stats.memoryUsage = 0;\n }\n }\n\n /**\n * Get cache size\n */\n size(): number {\n return this.cache.size;\n }\n\n /**\n * Get cache statistics\n */\n getStats(): CacheStats {\n return { ...this.stats };\n }\n\n /**\n * Get all keys\n */\n keys(): string[] {\n return Array.from(this.cache.keys());\n }\n\n /**\n * Get all values\n */\n values(): T[] {\n return Array.from(this.cache.values()).map(e => e.value);\n }\n\n /**\n * Get all entries\n */\n entries(): Array<[string, T]> {\n return Array.from(this.cache.entries()).map(([k, v]) => [k, v.value]);\n }\n\n /**\n * Evict least recently used entry\n */\n private evictLRU(): void {\n // First entry is least recently used\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n const entry = this.cache.get(firstKey);\n this.cache.delete(firstKey);\n\n if (this.config.onEvict && entry) {\n this.config.onEvict(firstKey, entry.value);\n }\n\n if (this.config.enableStats) {\n this.stats.evictions++;\n this.stats.size = this.cache.size;\n if (entry) {\n this.stats.memoryUsage -= entry.size || 0;\n }\n }\n }\n }\n\n /**\n * Update hit rate\n */\n private updateHitRate(): void {\n const total = this.stats.hits + this.stats.misses;\n this.stats.hitRate = total > 0 ? this.stats.hits / total : 0;\n }\n\n /**\n * Estimate entry size\n */\n private estimateSize(value: T): number {\n try {\n return JSON.stringify(value).length * 2; // Rough estimate (UTF-16)\n } catch {\n return 0;\n }\n }\n\n /**\n * Clean expired entries\n */\n cleanExpired(): number {\n let cleaned = 0;\n const now = new Date();\n\n for (const [key, entry] of this.cache) {\n if (entry.expiresAt && entry.expiresAt < now) {\n this.delete(key);\n cleaned++;\n }\n }\n\n return cleaned;\n }\n}\n","/**\n * Centralized configuration for DeepThinking MCP Server\n *\n * All configurable values should be defined here to enable\n * easy environment-based configuration and deployment flexibility.\n */\n\n/**\n * Server configuration\n */\nexport interface ServerConfig {\n /** Maximum number of thoughts to keep in memory per session */\n maxThoughtsInMemory: number;\n\n /** Threshold for compressing old thoughts */\n compressionThreshold: number;\n\n /** Maximum content length in characters */\n maxContentLength: number;\n\n /** Validation tolerance for mathematical checks (e.g., mass sum) */\n validationTolerance: number;\n\n /** Maximum number of active sessions to keep in memory */\n maxActiveSessions: number;\n\n /** Session timeout in milliseconds (0 = no timeout) */\n sessionTimeoutMs: number;\n\n /** Enable validation result caching */\n enableValidationCache: boolean;\n\n /** Validation cache max size (number of entries) */\n validationCacheMaxSize: number;\n\n /** Enable session persistence to disk */\n enablePersistence: boolean;\n\n /** Directory for session persistence (if enabled) */\n persistenceDir: string;\n\n /** Log level: 'debug' | 'info' | 'warn' | 'error' */\n logLevel: 'debug' | 'info' | 'warn' | 'error';\n\n /** Enable performance metrics logging */\n enablePerformanceMetrics: boolean;\n}\n\n/**\n * Default configuration values\n */\nconst defaultConfig: ServerConfig = {\n maxThoughtsInMemory: parseInt(process.env.MCP_MAX_THOUGHTS || '1000', 10),\n compressionThreshold: parseInt(process.env.MCP_COMPRESSION_THRESHOLD || '500', 10),\n maxContentLength: parseInt(process.env.MCP_MAX_CONTENT_LENGTH || '10000', 10),\n validationTolerance: parseFloat(process.env.MCP_VALIDATION_TOLERANCE || '0.01'),\n maxActiveSessions: parseInt(process.env.MCP_MAX_SESSIONS || '100', 10),\n sessionTimeoutMs: parseInt(process.env.MCP_SESSION_TIMEOUT_MS || '0', 10),\n enableValidationCache: process.env.MCP_ENABLE_VALIDATION_CACHE !== 'false',\n validationCacheMaxSize: parseInt(process.env.MCP_VALIDATION_CACHE_SIZE || '1000', 10),\n enablePersistence: process.env.MCP_ENABLE_PERSISTENCE === 'true',\n persistenceDir: process.env.MCP_PERSISTENCE_DIR || './.deepthinking-sessions',\n logLevel: (process.env.MCP_LOG_LEVEL || 'info') as ServerConfig['logLevel'],\n enablePerformanceMetrics: process.env.MCP_ENABLE_PERF_METRICS === 'true',\n};\n\n/**\n * Current active configuration (can be overridden)\n */\nlet activeConfig: ServerConfig = { ...defaultConfig };\n\n/**\n * Get the current configuration\n */\nexport function getConfig(): Readonly<ServerConfig> {\n return Object.freeze({ ...activeConfig });\n}\n\n/**\n * Update configuration (for testing or runtime changes)\n *\n * @param updates - Partial configuration to merge with existing config\n * @returns The updated configuration\n */\nexport function updateConfig(updates: Partial<ServerConfig>): Readonly<ServerConfig> {\n activeConfig = { ...activeConfig, ...updates };\n return getConfig();\n}\n\n/**\n * Reset configuration to defaults\n */\nexport function resetConfig(): void {\n activeConfig = { ...defaultConfig };\n}\n\n/**\n * Validate configuration values\n *\n * @throws Error if configuration is invalid\n */\nexport function validateConfig(config: ServerConfig): void {\n if (config.maxThoughtsInMemory < 1) {\n throw new Error('maxThoughtsInMemory must be at least 1');\n }\n\n if (config.compressionThreshold < 0) {\n throw new Error('compressionThreshold must be non-negative');\n }\n\n if (config.maxContentLength < 1) {\n throw new Error('maxContentLength must be at least 1');\n }\n\n if (config.validationTolerance < 0 || config.validationTolerance > 1) {\n throw new Error('validationTolerance must be between 0 and 1');\n }\n\n if (config.maxActiveSessions < 1) {\n throw new Error('maxActiveSessions must be at least 1');\n }\n\n if (config.sessionTimeoutMs < 0) {\n throw new Error('sessionTimeoutMs must be non-negative');\n }\n\n if (config.validationCacheMaxSize < 0) {\n throw new Error('validationCacheMaxSize must be non-negative');\n }\n\n if (!['debug', 'info', 'warn', 'error'].includes(config.logLevel)) {\n throw new Error('logLevel must be one of: debug, info, warn, error');\n }\n}\n\n// Validate default config on load\nvalidateConfig(activeConfig);\n\n/**\n * Export constants for common use\n */\nexport const CONFIG = getConfig();\n","/**\n * Validation result caching for performance optimization\n *\n * Caches validation results to avoid redundant validation of unchanging content.\n * Uses content-based hashing for cache keys to ensure correctness.\n */\n\nimport { getConfig } from '../config/index.js';\nimport { ValidationResult } from '../types/session.js';\nimport { createHash } from 'crypto';\n\n/**\n * Validation result entry\n */\nexport interface ValidationCacheEntry {\n /** Cached validation result */\n result: ValidationResult;\n\n /** Timestamp of validation */\n timestamp: number;\n\n /** Number of times this cache entry was hit */\n hitCount: number;\n}\n\n/**\n * LRU Cache for validation results\n */\nexport class ValidationCache {\n private cache: Map<string, ValidationCacheEntry>;\n private maxSize: number;\n private hits: number = 0;\n private misses: number = 0;\n\n constructor(maxSize?: number) {\n const config = getConfig();\n this.maxSize = maxSize || config.validationCacheMaxSize;\n this.cache = new Map();\n }\n\n /**\n * Generate a cache key from thought content\n *\n * Uses SHA-256 hash of JSON-serialized content for reliable cache keys\n *\n * @param content - Content to hash\n * @returns Cache key\n */\n private generateKey(content: unknown): string {\n const json = JSON.stringify(content);\n return createHash('sha256').update(json).digest('hex');\n }\n\n /**\n * Get validation result from cache\n *\n * @param content - Content to look up\n * @returns Cached result or undefined if not found\n */\n get(content: unknown): ValidationCacheEntry | undefined {\n const key = this.generateKey(content);\n const entry = this.cache.get(key);\n\n if (entry) {\n this.hits++;\n entry.hitCount++;\n\n // Move to end (LRU)\n this.cache.delete(key);\n this.cache.set(key, entry);\n\n return entry;\n }\n\n this.misses++;\n return undefined;\n }\n\n /**\n * Store validation result in cache\n *\n * @param content - Content that was validated\n * @param result - Validation result to cache\n */\n set(content: unknown, result: ValidationResult): void {\n const key = this.generateKey(content);\n\n // If cache is full, remove least recently used (first entry)\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey !== undefined) {\n this.cache.delete(firstKey);\n }\n }\n\n const entry: ValidationCacheEntry = {\n result,\n timestamp: Date.now(),\n hitCount: 0,\n };\n\n this.cache.set(key, entry);\n }\n\n /**\n * Check if content is in cache\n *\n * @param content - Content to check\n * @returns true if cached\n */\n has(content: unknown): boolean {\n const key = this.generateKey(content);\n return this.cache.has(key);\n }\n\n /**\n * Clear all cached validation results\n */\n clear(): void {\n this.cache.clear();\n this.hits = 0;\n this.misses = 0;\n }\n\n /**\n * Get cache statistics\n */\n getStats(): {\n size: number;\n maxSize: number;\n hits: number;\n misses: number;\n hitRate: number;\n } {\n const total = this.hits + this.misses;\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hits: this.hits,\n misses: this.misses,\n hitRate: total > 0 ? this.hits / total : 0,\n };\n }\n\n /**\n * Resize the cache\n *\n * @param newSize - New maximum cache size\n */\n resize(newSize: number): void {\n this.maxSize = newSize;\n\n // If cache is now too large, trim it\n if (this.cache.size > newSize) {\n const keysToDelete = this.cache.size - newSize;\n const keys = Array.from(this.cache.keys());\n\n for (let i = 0; i < keysToDelete; i++) {\n this.cache.delete(keys[i]);\n }\n }\n }\n\n /**\n * Get entries sorted by hit count (most used first)\n */\n getTopEntries(limit: number = 10): Array<{ key: string; entry: ValidationCacheEntry }> {\n const entries = Array.from(this.cache.entries())\n .map(([key, entry]) => ({ key, entry }))\n .sort((a, b) => b.entry.hitCount - a.entry.hitCount);\n\n return entries.slice(0, limit);\n }\n\n /**\n * Remove entries older than a certain age\n *\n * @param maxAgeMs - Maximum age in milliseconds\n * @returns Number of entries removed\n */\n evictOld(maxAgeMs: number): number {\n const now = Date.now();\n let removed = 0;\n\n for (const [key, entry] of this.cache.entries()) {\n if (now - entry.timestamp > maxAgeMs) {\n this.cache.delete(key);\n removed++;\n }\n }\n\n return removed;\n }\n}\n\n/**\n * Global validation cache instance\n */\nexport const validationCache = new ValidationCache();\n","/**\n * Session Metrics Calculator (v3.4.5)\n * Sprint 3 Task 3.4: Extract metrics logic from SessionManager\n *\n * Handles all session metrics calculations including:\n * - Basic metrics (thought counts, revisions, time spent)\n * - Mode-specific metrics (temporal, game theory, evidential)\n * - Incremental calculations for performance (O(1) updates)\n * - Cache statistics tracking\n *\n * RESPONSIBILITY:\n * - Initialize session metrics\n * - Update metrics incrementally as thoughts are added\n * - Calculate mode-specific custom metrics\n * - Track validation cache statistics\n *\n * EXTRACTED FROM: src/session/manager.ts (metrics methods)\n */\n\nimport { ThinkingSession, SessionMetrics, Thought } from '../types/index.js';\nimport { isTemporalThought, isGameTheoryThought, isEvidentialThought } from '../types/core.js';\nimport { validationCache } from '../validation/cache.js';\n\n/**\n * Session Metrics Calculator - Handles all metrics computations\n *\n * Provides efficient, incremental metrics updates using O(1) algorithms\n * where possible. Tracks both generic and mode-specific metrics.\n *\n * @example\n * ```typescript\n * const calculator = new SessionMetricsCalculator();\n *\n * // Initialize metrics for new session\n * session.metrics = calculator.initializeMetrics();\n *\n * // Update metrics after adding thought\n * calculator.updateMetrics(session, newThought);\n * ```\n */\nexport class SessionMetricsCalculator {\n /**\n * Initialize metrics for a new session\n *\n * Creates a fresh metrics object with all counters set to zero\n * and cache statistics initialized.\n *\n * @returns Initialized session metrics\n *\n * @example\n * ```typescript\n * const metrics = calculator.initializeMetrics();\n * session.metrics = metrics;\n * ```\n */\n initializeMetrics(): SessionMetrics {\n return {\n totalThoughts: 0,\n thoughtsByType: {},\n averageUncertainty: 0,\n revisionCount: 0,\n timeSpent: 0,\n dependencyDepth: 0,\n customMetrics: new Map(),\n cacheStats: {\n hits: 0,\n misses: 0,\n hitRate: 0,\n size: 0,\n maxSize: 0,\n },\n };\n }\n\n /**\n * Update session metrics after adding a thought\n *\n * Performs incremental updates using O(1) algorithms for performance.\n * Handles mode-specific metrics for temporal, game theory, and evidential modes.\n *\n * **Performance Optimizations**:\n * - Incremental thoughtsByType counter (O(1) vs O(n) recalculation)\n * - Running average for uncertainty (O(1) vs O(n) recalculation)\n * - Max dependency depth tracking (O(1) comparison)\n *\n * @param session - Session to update (modified in-place)\n * @param thought - Newly added thought\n *\n * @example\n * ```typescript\n * calculator.updateMetrics(session, newThought);\n * console.log(session.metrics.totalThoughts); // Incremented\n * ```\n */\n updateMetrics(session: ThinkingSession, thought: Thought): void {\n const metrics = session.metrics;\n\n // Update total thoughts\n metrics.totalThoughts = session.thoughts.length;\n\n // Update thoughtsByType incrementally (O(1) instead of recalculating)\n const thoughtType = thought.mode || 'unknown';\n metrics.thoughtsByType[thoughtType] = (metrics.thoughtsByType[thoughtType] || 0) + 1;\n\n // Update revision count\n if (thought.isRevision) {\n metrics.revisionCount++;\n }\n\n // Update time spent (in milliseconds)\n metrics.timeSpent = session.updatedAt.getTime() - session.createdAt.getTime();\n\n // Update average uncertainty incrementally (O(1) instead of O(n))\n if ('uncertainty' in thought && typeof (thought as any).uncertainty === 'number') {\n const uncertaintyValue = (thought as any).uncertainty;\n const currentSum = metrics._uncertaintySum || 0;\n const currentCount = metrics._uncertaintyCount || 0;\n\n const newSum = currentSum + uncertaintyValue;\n const newCount = currentCount + 1;\n\n metrics._uncertaintySum = newSum;\n metrics._uncertaintyCount = newCount;\n metrics.averageUncertainty = newSum / newCount;\n }\n\n // Update dependency depth\n if ('dependencies' in thought && thought.dependencies) {\n const deps = (thought as any).dependencies as string[];\n if (deps && deps.length > metrics.dependencyDepth) {\n metrics.dependencyDepth = deps.length;\n }\n }\n\n // Update mode-specific metrics\n this.updateModeSpecificMetrics(metrics, thought);\n\n // Update validation cache statistics\n this.updateCacheStats(session);\n }\n\n /**\n * Update mode-specific custom metrics\n *\n * Calculates and stores metrics unique to specific thinking modes:\n * - Temporal: events, timeline, relations, constraints, intervals\n * - Game Theory: players, strategies, equilibria, game type\n * - Evidential: hypotheses, evidence, belief functions, decisions\n *\n * @param metrics - Session metrics to update\n * @param thought - Thought to analyze\n */\n private updateModeSpecificMetrics(metrics: SessionMetrics, thought: Thought): void {\n // Temporal-specific metrics (Phase 3, v2.1)\n if (isTemporalThought(thought)) {\n if (thought.events) {\n metrics.customMetrics.set('totalEvents', thought.events.length);\n }\n if (thought.timeline) {\n metrics.customMetrics.set('timelineUnit', thought.timeline.timeUnit);\n }\n if (thought.relations) {\n const causalRelations = thought.relations.filter(r => r.relationType === 'causes');\n metrics.customMetrics.set('causalRelations', causalRelations.length);\n }\n if (thought.constraints) {\n metrics.customMetrics.set('temporalConstraints', thought.constraints.length);\n }\n if (thought.intervals) {\n metrics.customMetrics.set('timeIntervals', thought.intervals.length);\n }\n }\n\n // Game theory-specific metrics (Phase 3, v2.2)\n if (isGameTheoryThought(thought)) {\n if (thought.players) {\n metrics.customMetrics.set('numPlayers', thought.players.length);\n }\n if (thought.strategies) {\n metrics.customMetrics.set('totalStrategies', thought.strategies.length);\n const mixedStrategies = thought.strategies.filter(s => !s.isPure);\n metrics.customMetrics.set('mixedStrategies', mixedStrategies.length);\n }\n if (thought.nashEquilibria) {\n metrics.customMetrics.set('nashEquilibria', thought.nashEquilibria.length);\n const pureEquilibria = thought.nashEquilibria.filter(e => e.type === 'pure');\n metrics.customMetrics.set('pureNashEquilibria', pureEquilibria.length);\n }\n if (thought.dominantStrategies) {\n metrics.customMetrics.set('dominantStrategies', thought.dominantStrategies.length);\n }\n if (thought.game) {\n metrics.customMetrics.set('gameType', thought.game.type);\n metrics.customMetrics.set('isZeroSum', thought.game.isZeroSum);\n }\n }\n\n // Evidential-specific metrics (Phase 3, v2.3)\n if (isEvidentialThought(thought)) {\n if (thought.hypotheses) {\n metrics.customMetrics.set('totalHypotheses', thought.hypotheses.length);\n }\n if (thought.evidence) {\n metrics.customMetrics.set('totalEvidence', thought.evidence.length);\n const avgReliability = thought.evidence.reduce((sum, e) => sum + e.reliability, 0) / thought.evidence.length;\n metrics.customMetrics.set('avgEvidenceReliability', avgReliability);\n }\n if (thought.beliefFunctions) {\n metrics.customMetrics.set('beliefFunctions', thought.beliefFunctions.length);\n }\n if (thought.combinedBelief) {\n metrics.customMetrics.set('hasCombinedBelief', true);\n if (thought.combinedBelief.conflictMass !== undefined) {\n metrics.customMetrics.set('conflictMass', thought.combinedBelief.conflictMass);\n }\n }\n if (thought.decisions) {\n metrics.customMetrics.set('decisions', thought.decisions.length);\n }\n }\n }\n\n /**\n * Update validation cache statistics in session metrics\n *\n * Retrieves current validation cache statistics and updates the\n * session metrics with the latest values.\n *\n * @param session - Session to update\n *\n * @example\n * ```typescript\n * calculator.updateCacheStats(session);\n * console.log(session.metrics.cacheStats.hitRate); // Updated\n * ```\n */\n private updateCacheStats(session: ThinkingSession): void {\n const cacheStats = validationCache.getStats();\n session.metrics.cacheStats = {\n hits: cacheStats.hits,\n misses: cacheStats.misses,\n hitRate: cacheStats.hitRate,\n size: cacheStats.size,\n maxSize: cacheStats.maxSize,\n };\n }\n}\n","/**\n * Session Manager for DeepThinking MCP (v3.4.5)\n * Sprint 3 Task 3.4: Refactored to use SessionMetricsCalculator\n *\n * Manages thinking sessions, persistence, and coordinates with metrics calculator.\n */\n\nimport { randomUUID } from 'crypto';\nimport {\n ThinkingSession,\n SessionConfig,\n SessionMetadata,\n Thought,\n ThinkingMode\n} from '../types/index.js';\nimport { SessionNotFoundError } from '../utils/errors.js';\nimport { sanitizeString, sanitizeThoughtContent, validateSessionId, MAX_LENGTHS } from '../utils/sanitization.js';\nimport { createLogger, LogLevel } from '../utils/logger.js';\nimport { ILogger } from '../interfaces/ILogger.js';\nimport { SessionStorage } from './storage/interface.js';\nimport { LRUCache } from '../cache/lru.js';\nimport { SessionMetricsCalculator } from './SessionMetricsCalculator.js';\n\n/**\n * Default session configuration\n */\nconst DEFAULT_CONFIG: SessionConfig = {\n modeConfig: {\n mode: ThinkingMode.HYBRID,\n strictValidation: false,\n allowModeSwitch: true\n },\n enableAutoSave: true,\n enableValidation: true,\n enableVisualization: true,\n integrations: {},\n exportFormats: ['markdown', 'latex', 'json'],\n autoExportOnComplete: false,\n maxThoughtsInMemory: 1000,\n compressionThreshold: 500\n};\n\n/**\n * Session Manager - Manages thinking session lifecycle and analytics\n *\n * The SessionManager provides a centralized interface for creating, managing,\n * and analyzing deep thinking sessions across all 13 reasoning modes.\n *\n * @example\n * ```typescript\n * const manager = new SessionManager();\n * const session = await manager.createSession({\n * title: 'Problem Analysis',\n * mode: ThinkingMode.SEQUENTIAL\n * });\n *\n * await manager.addThought(session.id, {\n * thought: 'Initial analysis...',\n * thoughtNumber: 1,\n * totalThoughts: 5,\n * nextThoughtNeeded: true\n * });\n * ```\n */\nexport class SessionManager {\n private activeSessions: LRUCache<ThinkingSession>;\n private config: Partial<SessionConfig>;\n private logger: ILogger;\n private storage?: SessionStorage;\n private metricsCalculator: SessionMetricsCalculator;\n\n /**\n * Creates a new SessionManager instance\n *\n * @param config - Optional default configuration applied to all new sessions\n * @param logger - Optional logger instance or log level (default: INFO level logger)\n * @param storage - Optional persistent storage backend for sessions\n *\n * @example\n * ```typescript\n * // Memory-only mode with default logger\n * const manager = new SessionManager({\n * enableAutoSave: true,\n * maxThoughtsInMemory: 500\n * });\n *\n * // With custom logger (DI)\n * import { createLogger, LogLevel } from './utils/logger.js';\n * const logger = createLogger({ minLevel: LogLevel.DEBUG });\n * const manager = new SessionManager({}, logger);\n *\n * // With file-based persistence (backward compatible)\n * import { FileSessionStore } from './storage/file-store.js';\n * const storage = new FileSessionStore('./sessions');\n * await storage.initialize();\n * const manager = new SessionManager({}, LogLevel.INFO, storage);\n * ```\n */\n constructor(\n config?: Partial<SessionConfig>,\n logger?: ILogger | LogLevel,\n storage?: SessionStorage\n ) {\n // Initialize LRU cache for sessions (max 1000 sessions, ~10-50MB)\n this.activeSessions = new LRUCache<ThinkingSession>({\n maxSize: 1000,\n enableStats: true,\n onEvict: async (key: string, session: ThinkingSession) => {\n // Auto-save evicted sessions to persistent storage if available\n if (this.storage && session.config.enableAutoSave) {\n try {\n await this.storage.saveSession(session);\n this.logger.debug('Evicted session saved to storage', { sessionId: key });\n } catch (error) {\n this.logger.error('Failed to save evicted session', error as Error, { sessionId: key });\n }\n }\n }\n });\n this.config = config || {};\n this.storage = storage;\n\n // Support both ILogger injection (DI) and LogLevel (backward compatibility)\n if (logger && typeof logger === 'object' && 'info' in logger) {\n this.logger = logger;\n } else {\n this.logger = createLogger({\n minLevel: (logger as LogLevel) || LogLevel.INFO,\n enableConsole: true\n });\n }\n this.metricsCalculator = new SessionMetricsCalculator();\n }\n\n /**\n * Create a new thinking session\n *\n * Creates and initializes a new thinking session with the specified configuration.\n * Sessions are stored in memory and tracked until explicitly deleted.\n *\n * @param options - Session creation options\n * @param options.title - Session title (default: 'Untitled Session')\n * @param options.mode - Thinking mode to use (default: HYBRID)\n * @param options.domain - Problem domain (e.g., 'mathematics', 'physics')\n * @param options.author - Session creator/author\n * @param options.config - Session-specific configuration overrides\n * @returns Promise resolving to the created session\n *\n * @example\n * ```typescript\n * const session = await manager.createSession({\n * title: 'Mathematical Proof',\n * mode: ThinkingMode.MATHEMATICS,\n * domain: 'number-theory',\n * author: 'user@example.com'\n * });\n * ```\n */\n async createSession(options: {\n title?: string;\n mode?: ThinkingMode;\n domain?: string;\n author?: string;\n config?: Partial<SessionConfig>;\n } = {}): Promise<ThinkingSession> {\n // Validate inputs\n const title = options.title\n ? sanitizeString(options.title, MAX_LENGTHS.TITLE, 'title')\n : 'Untitled Session';\n\n const domain = options.domain\n ? sanitizeString(options.domain, MAX_LENGTHS.DOMAIN, 'domain')\n : undefined;\n\n const author = options.author\n ? sanitizeString(options.author, MAX_LENGTHS.AUTHOR, 'author')\n : undefined;\n\n const sessionId = randomUUID();\n const now = new Date();\n\n const session: ThinkingSession = {\n id: sessionId,\n title,\n mode: options.mode || ThinkingMode.HYBRID,\n domain,\n config: this.mergeConfig(options.config),\n thoughts: [],\n createdAt: now,\n updatedAt: now,\n author,\n currentThoughtNumber: 0,\n isComplete: false,\n metrics: this.metricsCalculator.initializeMetrics(),\n tags: [],\n collaborators: author ? [author] : []\n };\n\n this.activeSessions.set(sessionId, session);\n\n // Auto-save to storage if enabled\n if (this.storage && session.config.enableAutoSave) {\n try {\n await this.storage.saveSession(session);\n this.logger.debug('Session persisted to storage', { sessionId });\n } catch (error) {\n this.logger.error('Failed to persist session', error as Error, { sessionId });\n // Don't throw - session is still created in memory\n }\n }\n\n this.logger.info('Session created', {\n sessionId,\n title,\n mode: session.mode,\n domain,\n author\n });\n\n return session;\n }\n\n /**\n * Get a session by ID\n *\n * Retrieves a session by its unique identifier. If the session is not in memory\n * but storage is available, it will attempt to load from storage.\n *\n * @param sessionId - Unique UUID v4 identifier of the session\n * @returns Promise resolving to the session, or null if not found\n *\n * @example\n * ```typescript\n * const session = await manager.getSession('550e8400-e29b-41d4-a716-446655440000');\n * if (session) {\n * console.log(`Session: ${session.title}`);\n * console.log(`Thoughts: ${session.thoughts.length}`);\n * }\n * ```\n */\n async getSession(sessionId: string): Promise<ThinkingSession | null> {\n // Check memory first\n let session = this.activeSessions.get(sessionId);\n\n // If not in memory and storage is available, try loading from storage\n if (!session && this.storage) {\n try {\n session = (await this.storage.loadSession(sessionId)) ?? undefined;\n if (session) {\n // Add to active sessions cache\n this.activeSessions.set(sessionId, session);\n this.logger.debug('Session loaded from storage', { sessionId });\n }\n } catch (error) {\n this.logger.error('Failed to load session from storage', error as Error, { sessionId });\n }\n }\n\n return session || null;\n }\n\n /**\n * Add a thought to a session\n *\n * Adds a new thought to an existing session and automatically updates:\n * - Session metrics (uses O(1) incremental calculation)\n * - Thought timestamps\n * - Session completion status\n * - Mode-specific analytics\n *\n * @param sessionId - ID of the session to add thought to\n * @param thought - The thought object to add\n * @returns Promise resolving to the updated session\n * @throws Error if session is not found\n *\n * @example\n * ```typescript\n * await manager.addThought(session.id, {\n * thought: 'Initial hypothesis: the problem can be solved using...',\n * thoughtNumber: 1,\n * totalThoughts: 5,\n * nextThoughtNeeded: true,\n * uncertainty: 0.3\n * });\n * ```\n */\n async addThought(sessionId: string, thought: Thought): Promise<ThinkingSession> {\n // Validate session ID\n validateSessionId(sessionId);\n\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n this.logger.error('Session not found', undefined, { sessionId });\n throw new SessionNotFoundError(sessionId);\n }\n\n // Validate thought content\n if (thought.content) {\n thought.content = sanitizeThoughtContent(thought.content);\n }\n\n // Update thought with session metadata\n thought.sessionId = sessionId;\n thought.timestamp = new Date();\n\n // Add thought to session\n session.thoughts.push(thought);\n session.currentThoughtNumber = thought.thoughtNumber;\n session.updatedAt = new Date();\n\n // Update metrics\n this.metricsCalculator.updateMetrics(session, thought);\n\n // Check if session is complete\n if (!thought.nextThoughtNeeded) {\n session.isComplete = true;\n this.logger.info('Session completed', {\n sessionId,\n title: session.title,\n totalThoughts: session.thoughts.length\n });\n }\n\n // Auto-save to storage if enabled\n if (this.storage && session.config.enableAutoSave) {\n try {\n await this.storage.saveSession(session);\n this.logger.debug('Session persisted after thought added', { sessionId });\n } catch (error) {\n this.logger.error('Failed to persist session', error as Error, { sessionId });\n // Don't throw - thought is still added in memory\n }\n }\n\n this.logger.debug('Thought added', {\n sessionId,\n thoughtNumber: thought.thoughtNumber,\n totalThoughts: session.thoughts.length\n });\n\n return session;\n }\n\n /**\n * Update session mode (switch reasoning approach mid-session)\n *\n * Changes the thinking mode of an active session. This is useful when\n * the problem requires a different reasoning approach.\n *\n * @param sessionId - ID of the session to update\n * @param newMode - New thinking mode to switch to\n * @param reason - Optional reason for the mode switch\n * @returns Promise resolving to the updated session\n * @throws Error if session is not found\n *\n * @example\n * ```typescript\n * await manager.switchMode(\n * session.id,\n * ThinkingMode.CAUSAL,\n * 'Need to analyze cause-effect relationships'\n * );\n * ```\n */\n async switchMode(\n sessionId: string,\n newMode: ThinkingMode,\n reason?: string\n ): Promise<ThinkingSession> {\n // Validate session ID\n validateSessionId(sessionId);\n\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n this.logger.error('Session not found', undefined, { sessionId });\n throw new SessionNotFoundError(sessionId);\n }\n\n const oldMode = session.mode;\n session.mode = newMode;\n session.config.modeConfig.mode = newMode;\n session.updatedAt = new Date();\n\n // Auto-save to storage if enabled\n if (this.storage && session.config.enableAutoSave) {\n try {\n await this.storage.saveSession(session);\n this.logger.debug('Session persisted after mode switch', { sessionId });\n } catch (error) {\n this.logger.error('Failed to persist session', error as Error, { sessionId });\n }\n }\n\n this.logger.info('Session mode switched', {\n sessionId,\n oldMode,\n newMode,\n reason\n });\n\n return session;\n }\n\n /**\n * List all active sessions with metadata\n *\n * Returns summary information for all sessions. If storage is available,\n * includes both in-memory sessions and persisted sessions.\n *\n * @param includeStoredSessions - Whether to include sessions from storage (default: true)\n * @returns Promise resolving to array of session metadata\n *\n * @example\n * ```typescript\n * const sessions = await manager.listSessions();\n * sessions.forEach(s => {\n * console.log(`${s.title}: ${s.thoughtCount} thoughts (${s.mode})`);\n * });\n * ```\n */\n async listSessions(includeStoredSessions: boolean = true): Promise<SessionMetadata[]> {\n const memoryMetadata = Array.from(this.activeSessions.values()).map(session => ({\n id: session.id,\n title: session.title,\n createdAt: session.createdAt,\n updatedAt: session.updatedAt,\n thoughtCount: session.thoughts.length,\n mode: session.mode,\n isComplete: session.isComplete\n }));\n\n // If no storage or not including stored sessions, return memory sessions only\n if (!this.storage || !includeStoredSessions) {\n return memoryMetadata;\n }\n\n // Get stored sessions and merge with memory sessions\n try {\n const storedMetadata = await this.storage.listSessions();\n const memoryIds = new Set(memoryMetadata.map(s => s.id));\n\n // Combine memory sessions with stored sessions (avoiding duplicates)\n const combined = [\n ...memoryMetadata,\n ...storedMetadata.filter(s => !memoryIds.has(s.id))\n ];\n\n return combined;\n } catch (error) {\n this.logger.error('Failed to list stored sessions', error as Error);\n return memoryMetadata; // Return memory sessions if storage fails\n }\n }\n\n /**\n * Delete a session\n *\n * Removes a session from memory and storage (if available).\n * This operation cannot be undone.\n *\n * @param sessionId - ID of the session to delete\n * @returns Promise that resolves when deletion is complete\n *\n * @example\n * ```typescript\n * await manager.deleteSession('old-session-id');\n * ```\n */\n async deleteSession(sessionId: string): Promise<void> {\n const session = this.activeSessions.get(sessionId);\n const deletedFromMemory = this.activeSessions.delete(sessionId);\n\n // Also delete from storage if available\n if (this.storage) {\n try {\n await this.storage.deleteSession(sessionId);\n this.logger.debug('Session deleted from storage', { sessionId });\n } catch (error) {\n this.logger.error('Failed to delete session from storage', error as Error, { sessionId });\n }\n }\n\n if (deletedFromMemory && session) {\n this.logger.info('Session deleted', {\n sessionId,\n title: session.title,\n thoughtCount: session.thoughts.length\n });\n } else {\n this.logger.warn('Attempted to delete non-existent session from memory', { sessionId });\n }\n }\n\n /**\n * Generate a text summary of a session\n *\n * Creates a markdown-formatted summary including:\n * - Session metadata (title, mode, status)\n * - Total thought count\n * - Key thoughts (first 100 characters of each)\n *\n * @param sessionId - ID of the session to summarize\n * @returns Promise resolving to markdown-formatted summary\n * @throws Error if session is not found\n *\n * @example\n * ```typescript\n * const summary = await manager.generateSummary(session.id);\n * console.log(summary);\n * // Output:\n * // # Mathematical Proof\n * // Mode: mathematics\n * // Total Thoughts: 15\n * // Status: Complete\n * // ...\n * ```\n */\n async generateSummary(sessionId: string): Promise<string> {\n // Validate session ID\n validateSessionId(sessionId);\n\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n throw new SessionNotFoundError(sessionId);\n }\n\n let summary = `# ${session.title}\\n\\n`;\n summary += `Mode: ${session.mode}\\n`;\n summary += `Total Thoughts: ${session.thoughts.length}\\n`;\n summary += `Status: ${session.isComplete ? 'Complete' : 'In Progress'}\\n\\n`;\n\n summary += `## Key Thoughts:\\n\\n`;\n for (const thought of session.thoughts) {\n summary += `${thought.thoughtNumber}. ${thought.content.substring(0, 100)}...\\n`;\n }\n\n return summary;\n }\n\n /**\n * Merge configurations (private helper)\n *\n * Combines default config, instance config, and user config\n * with proper precedence: user > instance > default\n */\n private mergeConfig(userConfig?: Partial<SessionConfig>): SessionConfig {\n return {\n ...DEFAULT_CONFIG,\n ...this.config,\n ...userConfig\n } as SessionConfig;\n }\n\n}\n","/**\n * Session module exports (v4.3.0)\n * Sprint 9.2: Explicit exports for tree-shaking\n */\n\nexport { SessionManager } from './manager.js';\n","/**\n * Type guards for runtime type checking\n *\n * Provides safe type narrowing without using 'as any' assertions\n */\n\nimport { ExtendedThoughtType } from '../types/core.js';\n\n/**\n * Valid ExtendedThoughtType values\n */\nconst VALID_THOUGHT_TYPES: readonly ExtendedThoughtType[] = [\n 'problem_definition',\n 'constraints',\n 'model',\n 'proof',\n 'implementation',\n 'axiom_definition',\n 'theorem_statement',\n 'proof_construction',\n 'lemma_derivation',\n 'corollary',\n 'counterexample',\n 'algebraic_manipulation',\n 'symbolic_computation',\n 'numerical_analysis',\n 'symmetry_analysis',\n 'gauge_theory',\n 'field_equations',\n 'lagrangian',\n 'hamiltonian',\n 'conservation_law',\n 'dimensional_analysis',\n 'tensor_formulation',\n 'differential_geometry',\n 'decomposition',\n 'synthesis',\n 'abstraction',\n 'analogy',\n 'metacognition',\n] as const;\n\n/**\n * Type guard for ExtendedThoughtType\n *\n * @param value - Value to check\n * @returns true if value is a valid ExtendedThoughtType\n */\nexport function isExtendedThoughtType(value: unknown): value is ExtendedThoughtType {\n return typeof value === 'string' && VALID_THOUGHT_TYPES.includes(value as ExtendedThoughtType);\n}\n\n/**\n * Validate and cast to ExtendedThoughtType\n *\n * @param value - Value to validate\n * @param fallback - Fallback value if invalid (optional)\n * @returns Validated ExtendedThoughtType\n * @throws Error if value is invalid and no fallback provided\n */\nexport function toExtendedThoughtType(\n value: unknown,\n fallback?: ExtendedThoughtType\n): ExtendedThoughtType {\n if (isExtendedThoughtType(value)) {\n return value;\n }\n\n if (fallback !== undefined) {\n return fallback;\n }\n\n throw new Error(\n `Invalid ExtendedThoughtType: ${value}. Must be one of: ${VALID_THOUGHT_TYPES.join(', ')}`\n );\n}\n\n/**\n * Type guard for checking if value is a number\n */\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number' && !isNaN(value) && isFinite(value);\n}\n\n/**\n * Type guard for checking if value is a non-empty string\n */\nexport function isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0;\n}\n\n/**\n * Type guard for checking if value is an array\n */\nexport function isArray<T>(value: unknown, itemGuard?: (item: unknown) => item is T): value is T[] {\n if (!Array.isArray(value)) {\n return false;\n }\n\n if (itemGuard) {\n return value.every(itemGuard);\n }\n\n return true;\n}\n\n/**\n * Type guard for checking if value is a plain object\n */\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Safe type cast with runtime validation\n *\n * @param value - Value to cast\n * @param guard - Type guard function\n * @param errorMessage - Error message if validation fails\n * @returns Validated value\n * @throws Error if validation fails\n */\nexport function safeCast<T>(\n value: unknown,\n guard: (value: unknown) => value is T,\n errorMessage: string\n): T {\n if (guard(value)) {\n return value;\n }\n throw new Error(errorMessage);\n}\n","/**\n * Thought Factory Service (v3.4.5)\n * Sprint 3 Task 3.3: Extract thought creation logic from index.ts\n * Sprint 3 Task 3.2: Added dependency injection support\n *\n * Centralizes thought creation logic for all thinking modes.\n * Provides type-safe thought construction based on mode-specific requirements.\n *\n * RESPONSIBILITY:\n * - Create properly typed thought objects for all 18 thinking modes\n * - Apply mode-specific defaults and transformations\n * - Ensure thought structure consistency across modes\n *\n * EXTRACTED FROM: src/index.ts (createThought function)\n */\n\nimport { randomUUID } from 'crypto';\nimport {\n ThinkingMode,\n ShannonStage,\n SequentialThought,\n ShannonThought,\n MathematicsThought,\n PhysicsThought,\n InductiveThought,\n DeductiveThought,\n AbductiveThought,\n CausalThought,\n Thought,\n} from '../types/index.js';\nimport { ThinkingToolInput } from '../tools/thinking.js';\nimport { toExtendedThoughtType } from '../utils/type-guards.js';\nimport { ILogger } from '../interfaces/ILogger.js';\nimport { createLogger, LogLevel } from '../utils/logger.js';\n\n/**\n * Thought Factory - Creates mode-specific thought objects\n *\n * Handles the complexity of creating properly structured thought objects\n * for all 18 thinking modes, applying defaults and mode-specific logic.\n *\n * @example\n * ```typescript\n * const factory = new ThoughtFactory();\n * const thought = factory.createThought(input, sessionId);\n * await sessionManager.addThought(sessionId, thought);\n * ```\n */\nexport class ThoughtFactory {\n private logger: ILogger;\n\n constructor(logger?: ILogger) {\n this.logger = logger || createLogger({ minLevel: LogLevel.INFO, enableConsole: true });\n }\n /**\n * Create a thought object based on input and mode\n *\n * Generates a properly typed thought object with mode-specific fields\n * and default values. Each mode has unique required and optional fields.\n *\n * @param input - Thought input from MCP tool\n * @param sessionId - Session ID this thought belongs to\n * @returns Typed thought object ready for session storage\n *\n * @example\n * ```typescript\n * const thought = factory.createThought({\n * mode: 'mathematics',\n * thought: 'Analyzing the problem...',\n * thoughtNumber: 1,\n * totalThoughts: 5,\n * nextThoughtNeeded: true,\n * mathematicalModel: { equations: ['E = mc^2'] }\n * }, 'session-123');\n * ```\n */\n createThought(input: ThinkingToolInput, sessionId: string): Thought {\n this.logger.debug('Creating thought', {\n sessionId,\n mode: input.mode,\n thoughtNumber: input.thoughtNumber,\n totalThoughts: input.totalThoughts,\n isRevision: input.isRevision,\n });\n\n const baseThought = {\n id: randomUUID(),\n sessionId,\n thoughtNumber: input.thoughtNumber,\n totalThoughts: input.totalThoughts,\n content: input.thought,\n timestamp: new Date(),\n nextThoughtNeeded: input.nextThoughtNeeded,\n isRevision: input.isRevision,\n revisesThought: input.revisesThought,\n };\n\n switch (input.mode) {\n case 'sequential':\n return {\n ...baseThought,\n mode: ThinkingMode.SEQUENTIAL,\n revisionReason: input.revisionReason,\n branchFrom: input.branchFrom,\n branchId: input.branchId,\n } as SequentialThought;\n\n case 'shannon':\n return {\n ...baseThought,\n mode: ThinkingMode.SHANNON,\n stage: (input.stage as ShannonStage) || ShannonStage.PROBLEM_DEFINITION,\n uncertainty: input.uncertainty || 0.5,\n dependencies: input.dependencies || [],\n assumptions: input.assumptions || [],\n } as ShannonThought;\n\n case 'mathematics':\n return {\n ...baseThought,\n mode: ThinkingMode.MATHEMATICS,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'model'),\n mathematicalModel: input.mathematicalModel,\n proofStrategy: input.proofStrategy,\n dependencies: input.dependencies || [],\n assumptions: input.assumptions || [],\n uncertainty: input.uncertainty || 0.5,\n } as MathematicsThought;\n\n case 'physics':\n return {\n ...baseThought,\n mode: ThinkingMode.PHYSICS,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'model'),\n tensorProperties: input.tensorProperties,\n physicalInterpretation: input.physicalInterpretation,\n dependencies: input.dependencies || [],\n assumptions: input.assumptions || [],\n uncertainty: input.uncertainty || 0.5,\n } as PhysicsThought;\n\n case 'inductive':\n return {\n ...baseThought,\n mode: ThinkingMode.INDUCTIVE,\n observations: input.observations || [],\n pattern: input.pattern,\n generalization: input.generalization || '',\n confidence: input.confidence ?? 0.5,\n counterexamples: input.counterexamples || [],\n sampleSize: input.sampleSize,\n } as InductiveThought;\n\n case 'deductive':\n return {\n ...baseThought,\n mode: ThinkingMode.DEDUCTIVE,\n premises: input.premises || [],\n conclusion: input.conclusion || '',\n logicForm: input.logicForm,\n validityCheck: input.validityCheck ?? false,\n soundnessCheck: input.soundnessCheck,\n } as DeductiveThought;\n\n case 'abductive':\n return {\n ...baseThought,\n mode: ThinkingMode.ABDUCTIVE,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\n observations: input.observations || [],\n hypotheses: input.hypotheses || [],\n evaluationCriteria: input.evaluationCriteria,\n evidence: input.evidence || [],\n bestExplanation: input.bestExplanation,\n } as AbductiveThought;\n\n case 'causal':\n return {\n ...baseThought,\n mode: ThinkingMode.CAUSAL,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\n causalGraph: input.causalGraph,\n interventions: input.interventions || [],\n mechanisms: input.mechanisms || [],\n confounders: input.confounders || [],\n } as CausalThought;\n\n case 'bayesian':\n return {\n ...baseThought,\n mode: ThinkingMode.BAYESIAN,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\n hypothesis: input.hypothesis,\n prior: input.prior,\n likelihood: input.likelihood,\n evidence: input.evidence || [],\n posterior: input.posterior,\n bayesFactor: input.bayesFactor,\n } as any;\n\n case 'counterfactual':\n return {\n ...baseThought,\n mode: ThinkingMode.COUNTERFACTUAL,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\n actual: input.actual,\n counterfactuals: input.counterfactuals || [],\n comparison: input.comparison,\n interventionPoint: input.interventionPoint,\n causalChains: input.causalChains || [],\n } as any;\n\n case 'analogical':\n return {\n ...baseThought,\n mode: ThinkingMode.ANALOGICAL,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'analogy'),\n sourceDomain: input.sourceDomain,\n targetDomain: input.targetDomain,\n mapping: input.mapping || [],\n insights: input.insights || [],\n inferences: input.inferences || [],\n limitations: input.limitations || [],\n analogyStrength: input.analogyStrength,\n } as any;\n\n case 'temporal':\n return {\n ...baseThought,\n mode: ThinkingMode.TEMPORAL,\n thoughtType: input.thoughtType || 'event_definition',\n timeline: input.timeline,\n events: input.events || [],\n intervals: input.intervals || [],\n constraints: input.constraints || [],\n relations: input.relations || [],\n } as any;\n\n case 'gametheory':\n return {\n ...baseThought,\n mode: ThinkingMode.GAMETHEORY,\n thoughtType: input.thoughtType || 'game_definition',\n game: input.game,\n players: input.players || [],\n strategies: input.strategies || [],\n payoffMatrix: input.payoffMatrix,\n nashEquilibria: input.nashEquilibria || [],\n dominantStrategies: input.dominantStrategies || [],\n gameTree: input.gameTree,\n } as any;\n\n case 'evidential':\n return {\n ...baseThought,\n mode: ThinkingMode.EVIDENTIAL,\n thoughtType: input.thoughtType || 'hypothesis_definition',\n frameOfDiscernment: input.frameOfDiscernment,\n hypotheses: input.hypotheses || [],\n evidence: input.evidence || [],\n beliefFunctions: input.beliefFunctions || [],\n combinedBelief: input.combinedBelief,\n plausibility: input.plausibility,\n decisions: input.decisions || [],\n } as any;\n\n case ThinkingMode.FIRSTPRINCIPLES:\n return {\n ...baseThought,\n mode: ThinkingMode.FIRSTPRINCIPLES,\n question: input.question || '',\n principles: input.principles || [],\n derivationSteps: input.derivationSteps || [],\n conclusion: input.conclusion || { statement: '', derivationChain: [], certainty: 0 },\n alternativeInterpretations: input.alternativeInterpretations || [],\n } as any;\n\n case 'hybrid':\n default:\n return {\n ...baseThought,\n mode: ThinkingMode.HYBRID,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'synthesis'),\n stage: input.stage as ShannonStage,\n uncertainty: input.uncertainty,\n dependencies: input.dependencies,\n assumptions: input.assumptions,\n mathematicalModel: input.mathematicalModel,\n tensorProperties: input.tensorProperties,\n physicalInterpretation: input.physicalInterpretation,\n primaryMode: (input.mode || ThinkingMode.HYBRID) as any,\n secondaryFeatures: [],\n } as any;\n }\n }\n}\n","/**\n * Visual Export Utilities (v4.3.0)\n * Sprint 8 Task 8.1: Shared utilities for visual exporters\n */\n\n/**\n * Sanitize ID for use in diagram formats\n */\nexport function sanitizeId(id: string): string {\n return id.replace(/[^a-zA-Z0-9_]/g, '_');\n}\n","/**\n * Causal Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Causal graph export to Mermaid, DOT, ASCII\n */\n\nimport type { CausalThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export causal graph to visual format\n */\nexport function exportCausalGraph(thought: CausalThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return causalGraphToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return causalGraphToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return causalGraphToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction causalGraphToMermaid(\n thought: CausalThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TB\\n';\n\n if (!thought.causalGraph || !thought.causalGraph.nodes) {\n return mermaid + ' NoData[\"No causal graph data\"]\\n';\n }\n\n for (const node of thought.causalGraph.nodes) {\n const nodeId = sanitizeId(node.id);\n const label = includeLabels ? node.name : nodeId;\n\n let shape: [string, string];\n switch (node.type) {\n case 'cause':\n shape = ['([', '])'];\n break;\n case 'effect':\n shape = ['[[', ']]'];\n break;\n case 'mediator':\n shape = ['[', ']'];\n break;\n case 'confounder':\n shape = ['{', '}'];\n break;\n default:\n shape = ['[', ']'];\n }\n\n mermaid += ` ${nodeId}${shape[0]}${label}${shape[1]}\\n`;\n }\n\n mermaid += '\\n';\n\n for (const edge of thought.causalGraph.edges) {\n const fromId = sanitizeId(edge.from);\n const toId = sanitizeId(edge.to);\n\n if (includeMetrics && edge.strength !== undefined) {\n mermaid += ` ${fromId} --> |${edge.strength.toFixed(2)}| ${toId}\\n`;\n } else {\n mermaid += ` ${fromId} --> ${toId}\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const causes = thought.causalGraph.nodes.filter(n => n.type === 'cause');\n const effects = thought.causalGraph.nodes.filter(n => n.type === 'effect');\n\n for (const node of causes) {\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n mermaid += ` style ${sanitizeId(node.id)} fill:${color}\\n`;\n }\n\n for (const node of effects) {\n const color = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n mermaid += ` style ${sanitizeId(node.id)} fill:${color}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction causalGraphToDOT(\n thought: CausalThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph CausalGraph {\\n';\n dot += ' rankdir=TB;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n for (const node of thought.causalGraph.nodes) {\n const nodeId = sanitizeId(node.id);\n const label = includeLabels ? node.name : nodeId;\n\n let shape = 'box';\n switch (node.type) {\n case 'cause': shape = 'ellipse'; break;\n case 'effect': shape = 'doubleoctagon'; break;\n case 'mediator': shape = 'box'; break;\n case 'confounder': shape = 'diamond'; break;\n }\n\n dot += ` ${nodeId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n\n dot += '\\n';\n\n for (const edge of thought.causalGraph.edges) {\n const fromId = sanitizeId(edge.from);\n const toId = sanitizeId(edge.to);\n\n if (includeMetrics && edge.strength !== undefined) {\n dot += ` ${fromId} -> ${toId} [label=\"${edge.strength.toFixed(2)}\"];\\n`;\n } else {\n dot += ` ${fromId} -> ${toId};\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction causalGraphToASCII(thought: CausalThought): string {\n let ascii = 'Causal Graph:\\n';\n ascii += '=============\\n\\n';\n\n ascii += 'Nodes:\\n';\n for (const node of thought.causalGraph.nodes) {\n ascii += ` [${node.type.toUpperCase()}] ${node.name}: ${node.description}\\n`;\n }\n\n ascii += '\\nEdges:\\n';\n for (const edge of thought.causalGraph.edges) {\n const fromNode = thought.causalGraph.nodes.find(n => n.id === edge.from);\n const toNode = thought.causalGraph.nodes.find(n => n.id === edge.to);\n const strength = edge.strength !== undefined ? ` (strength: ${edge.strength.toFixed(2)})` : '';\n ascii += ` ${fromNode?.name} --> ${toNode?.name}${strength}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Temporal Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Timeline export to Mermaid, DOT, ASCII\n */\n\nimport type { TemporalThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export temporal timeline to visual format\n */\nexport function exportTemporalTimeline(thought: TemporalThought, options: VisualExportOptions): string {\n const { format, includeLabels = true } = options;\n\n switch (format) {\n case 'mermaid':\n return timelineToMermaidGantt(thought, includeLabels);\n case 'dot':\n return timelineToDOT(thought, includeLabels);\n case 'ascii':\n return timelineToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction timelineToMermaidGantt(thought: TemporalThought, includeLabels: boolean): string {\n let gantt = 'gantt\\n';\n gantt += ` title ${thought.timeline?.name || 'Timeline'}\\n`;\n gantt += ' dateFormat X\\n';\n gantt += ' axisFormat %s\\n\\n';\n\n if (!thought.events || thought.events.length === 0) {\n return gantt + ' No events\\n';\n }\n\n gantt += ' section Events\\n';\n\n for (const event of thought.events) {\n const label = includeLabels ? event.name : event.id;\n\n if (event.type === 'instant') {\n gantt += ` ${label} :milestone, ${event.timestamp}, 0s\\n`;\n } else if (event.type === 'interval' && event.duration) {\n gantt += ` ${label} :${event.timestamp}, ${event.duration}s\\n`;\n }\n }\n\n return gantt;\n}\n\nfunction timelineToDOT(thought: TemporalThought, includeLabels: boolean): string {\n let dot = 'digraph Timeline {\\n';\n dot += ' rankdir=LR;\\n';\n dot += ' node [shape=box];\\n\\n';\n\n if (!thought.events) {\n dot += '}\\n';\n return dot;\n }\n\n const sortedEvents = [...thought.events].sort((a, b) => a.timestamp - b.timestamp);\n\n for (const event of sortedEvents) {\n const nodeId = sanitizeId(event.id);\n const label = includeLabels ? `${event.name}\\\\n(t=${event.timestamp})` : nodeId;\n const shape = event.type === 'instant' ? 'ellipse' : 'box';\n\n dot += ` ${nodeId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n\n dot += '\\n';\n\n for (let i = 0; i < sortedEvents.length - 1; i++) {\n const from = sanitizeId(sortedEvents[i].id);\n const to = sanitizeId(sortedEvents[i + 1].id);\n dot += ` ${from} -> ${to};\\n`;\n }\n\n if (thought.relations) {\n dot += '\\n // Causal relations\\n';\n for (const rel of thought.relations) {\n const from = sanitizeId(rel.from);\n const to = sanitizeId(rel.to);\n dot += ` ${from} -> ${to} [style=dashed, label=\"${rel.relationType}\"];\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction timelineToASCII(thought: TemporalThought): string {\n let ascii = `Timeline: ${thought.timeline?.name || 'Untitled'}\\n`;\n ascii += '='.repeat(40) + '\\n\\n';\n\n if (!thought.events || thought.events.length === 0) {\n return ascii + 'No events\\n';\n }\n\n const sortedEvents = [...thought.events].sort((a, b) => a.timestamp - b.timestamp);\n\n for (const event of sortedEvents) {\n const marker = event.type === 'instant' ? '⦿' : '━';\n ascii += `t=${event.timestamp.toString().padStart(4)} ${marker} ${event.name}\\n`;\n if (event.duration) {\n ascii += ` ${'└'.padStart(5)}→ duration: ${event.duration}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Game Theory Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Game tree export to Mermaid, DOT, ASCII\n */\n\nimport type { GameTheoryThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export game tree to visual format\n */\nexport function exportGameTree(thought: GameTheoryThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return gameTreeToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return gameTreeToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return gameTreeToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction gameTreeToMermaid(\n thought: GameTheoryThought,\n _colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n if (!thought.game) {\n return mermaid + ' root[No game defined]\\n';\n }\n\n if (thought.gameTree && thought.gameTree.nodes) {\n for (const node of thought.gameTree.nodes) {\n const nodeId = sanitizeId(node.id);\n const label = includeLabels ? (node.action || node.id) : nodeId;\n const shape = node.type === 'terminal' ? ['[[', ']]'] : ['[', ']'];\n mermaid += ` ${nodeId}${shape[0]}${label}${shape[1]}\\n`;\n }\n\n mermaid += '\\n';\n\n for (const node of thought.gameTree.nodes) {\n if (node.childNodes && node.childNodes.length > 0) {\n for (const childId of node.childNodes) {\n const fromId = sanitizeId(node.id);\n const toId = sanitizeId(childId);\n const childNode = thought.gameTree.nodes.find(n => n.id === childId);\n\n if (includeMetrics && childNode?.action) {\n mermaid += ` ${fromId} --> |${childNode.action}| ${toId}\\n`;\n } else {\n mermaid += ` ${fromId} --> ${toId}\\n`;\n }\n }\n }\n }\n } else {\n mermaid += ' root[Game]\\n';\n if (thought.strategies) {\n for (const strategy of thought.strategies.slice(0, 5)) {\n const stratId = sanitizeId(strategy.id);\n mermaid += ` root --> ${stratId}[${strategy.name}]\\n`;\n }\n }\n }\n\n return mermaid;\n}\n\nfunction gameTreeToDOT(\n thought: GameTheoryThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph GameTree {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=circle];\\n\\n';\n\n if (!thought.game) {\n dot += ' root [label=\"No game\"];\\n}\\n';\n return dot;\n }\n\n if (thought.gameTree && thought.gameTree.nodes) {\n for (const node of thought.gameTree.nodes) {\n const nodeId = sanitizeId(node.id);\n const label = includeLabels ? (node.action || node.id) : nodeId;\n const shape = node.type === 'terminal' ? 'doublecircle' : 'circle';\n\n dot += ` ${nodeId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n\n dot += '\\n';\n\n for (const node of thought.gameTree.nodes) {\n if (node.childNodes && node.childNodes.length > 0) {\n for (const childId of node.childNodes) {\n const fromId = sanitizeId(node.id);\n const toId = sanitizeId(childId);\n const childNode = thought.gameTree.nodes.find(n => n.id === childId);\n\n if (includeMetrics && childNode?.action) {\n dot += ` ${fromId} -> ${toId} [label=\"${childNode.action}\"];\\n`;\n } else {\n dot += ` ${fromId} -> ${toId};\\n`;\n }\n }\n }\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction gameTreeToASCII(thought: GameTheoryThought): string {\n let ascii = `Game: ${thought.game?.name || 'Untitled'}\\n`;\n ascii += '='.repeat(40) + '\\n\\n';\n\n if (thought.strategies && thought.strategies.length > 0) {\n ascii += 'Strategies:\\n';\n for (const strategy of thought.strategies) {\n const strategyType = strategy.isPure ? 'Pure' : 'Mixed';\n ascii += ` • ${strategy.name} (${strategyType})\\n`;\n }\n }\n\n if (thought.nashEquilibria && thought.nashEquilibria.length > 0) {\n ascii += '\\nEquilibria:\\n';\n for (const eq of thought.nashEquilibria) {\n ascii += ` ⚖ ${eq.type}: ${eq.strategyProfile.join(', ')}\\n`;\n ascii += ` Payoffs: [${eq.payoffs.join(', ')}]\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Bayesian Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Bayesian network export to Mermaid, DOT, ASCII\n */\n\nimport type { BayesianThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\n\n/**\n * Export Bayesian network to visual format\n */\nexport function exportBayesianNetwork(thought: BayesianThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return bayesianToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return bayesianToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return bayesianToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction bayesianToMermaid(\n thought: BayesianThought,\n colorScheme: string,\n _includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph LR\\n';\n\n mermaid += ` H([Hypothesis])\\n`;\n mermaid += ` Prior[Prior: ${includeMetrics ? thought.prior.probability.toFixed(3) : '?'}]\\n`;\n mermaid += ` Evidence[Evidence]\\n`;\n mermaid += ` Posterior[[Posterior: ${includeMetrics ? thought.posterior.probability.toFixed(3) : '?'}]]\\n`;\n\n mermaid += '\\n';\n mermaid += ' Prior --> H\\n';\n mermaid += ' Evidence --> H\\n';\n mermaid += ' H --> Posterior\\n';\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const priorColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const posteriorColor = colorScheme === 'pastel' ? '#c8e6c9' : '#81c784';\n\n mermaid += ` style Prior fill:${priorColor}\\n`;\n mermaid += ` style Posterior fill:${posteriorColor}\\n`;\n }\n\n return mermaid;\n}\n\nfunction bayesianToDOT(\n thought: BayesianThought,\n _includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph BayesianNetwork {\\n';\n dot += ' rankdir=LR;\\n';\n dot += ' node [shape=ellipse];\\n\\n';\n\n const priorProb = includeMetrics ? `: ${thought.prior.probability.toFixed(3)}` : '';\n const posteriorProb = includeMetrics ? `: ${thought.posterior.probability.toFixed(3)}` : '';\n\n dot += ` Prior [label=\"Prior${priorProb}\"];\\n`;\n dot += ` Hypothesis [label=\"Hypothesis\", shape=box];\\n`;\n dot += ` Evidence [label=\"Evidence\"];\\n`;\n dot += ` Posterior [label=\"Posterior${posteriorProb}\", shape=doublecircle];\\n`;\n\n dot += '\\n';\n dot += ' Prior -> Hypothesis;\\n';\n dot += ' Evidence -> Hypothesis;\\n';\n dot += ' Hypothesis -> Posterior;\\n';\n\n dot += '}\\n';\n return dot;\n}\n\nfunction bayesianToASCII(thought: BayesianThought): string {\n let ascii = 'Bayesian Network:\\n';\n ascii += '=================\\n\\n';\n\n ascii += `Hypothesis: ${thought.hypothesis.statement}\\n\\n`;\n ascii += `Prior Probability: ${thought.prior.probability.toFixed(3)}\\n`;\n ascii += ` Justification: ${thought.prior.justification}\\n\\n`;\n\n if (thought.evidence && thought.evidence.length > 0) {\n ascii += 'Evidence:\\n';\n for (const ev of thought.evidence) {\n ascii += ` • ${ev.description}\\n`;\n }\n ascii += '\\n';\n }\n\n ascii += `Posterior Probability: ${thought.posterior.probability.toFixed(3)}\\n`;\n ascii += ` Calculation: ${thought.posterior.calculation}\\n`;\n\n if (thought.bayesFactor !== undefined) {\n ascii += `\\nBayes Factor: ${thought.bayesFactor.toFixed(2)}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Sequential Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Sequential dependency graph export to Mermaid, DOT, ASCII\n */\n\nimport type { SequentialThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export sequential dependency graph to visual format\n */\nexport function exportSequentialDependencyGraph(thought: SequentialThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true } = options;\n\n switch (format) {\n case 'mermaid':\n return sequentialToMermaid(thought, colorScheme, includeLabels);\n case 'dot':\n return sequentialToDOT(thought, includeLabels);\n case 'ascii':\n return sequentialToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction sequentialToMermaid(\n thought: SequentialThought,\n colorScheme: string,\n includeLabels: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n const nodeId = sanitizeId(thought.id);\n const label = includeLabels ? thought.content.substring(0, 50) + '...' : nodeId;\n\n mermaid += ` ${nodeId}[\"${label}\"]\\n`;\n\n if (thought.buildUpon && thought.buildUpon.length > 0) {\n mermaid += '\\n';\n for (const depId of thought.buildUpon) {\n const depNodeId = sanitizeId(depId);\n mermaid += ` ${depNodeId} --> ${nodeId}\\n`;\n }\n }\n\n if (thought.branchFrom) {\n const branchId = sanitizeId(thought.branchFrom);\n mermaid += ` ${branchId} -.->|branch| ${nodeId}\\n`;\n }\n\n if (thought.revisesThought) {\n const revisedId = sanitizeId(thought.revisesThought);\n mermaid += ` ${revisedId} ==>|revises| ${nodeId}\\n`;\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const color = thought.isRevision\n ? (colorScheme === 'pastel' ? '#fff3e0' : '#ffd699')\n : (colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff');\n mermaid += ` style ${nodeId} fill:${color}\\n`;\n }\n\n return mermaid;\n}\n\nfunction sequentialToDOT(thought: SequentialThought, includeLabels: boolean): string {\n let dot = 'digraph SequentialDependency {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n const nodeId = sanitizeId(thought.id);\n const label = includeLabels ? thought.content.substring(0, 50) + '...' : nodeId;\n\n dot += ` ${nodeId} [label=\"${label}\"];\\n`;\n\n if (thought.buildUpon && thought.buildUpon.length > 0) {\n for (const depId of thought.buildUpon) {\n const depNodeId = sanitizeId(depId);\n dot += ` ${depNodeId} -> ${nodeId};\\n`;\n }\n }\n\n if (thought.branchFrom) {\n const branchId = sanitizeId(thought.branchFrom);\n dot += ` ${branchId} -> ${nodeId} [style=dashed, label=\"branch\"];\\n`;\n }\n\n if (thought.revisesThought) {\n const revisedId = sanitizeId(thought.revisesThought);\n dot += ` ${revisedId} -> ${nodeId} [style=bold, label=\"revises\"];\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction sequentialToASCII(thought: SequentialThought): string {\n let ascii = 'Sequential Dependency Graph:\\n';\n ascii += '============================\\n\\n';\n\n ascii += `Current Thought: ${thought.id}\\n`;\n ascii += `Content: ${thought.content.substring(0, 100)}...\\n\\n`;\n\n if (thought.buildUpon && thought.buildUpon.length > 0) {\n ascii += 'Builds Upon:\\n';\n for (const depId of thought.buildUpon) {\n ascii += ` ↓ ${depId}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.branchFrom) {\n ascii += `Branches From: ${thought.branchFrom}\\n`;\n if (thought.branchId) {\n ascii += `Branch ID: ${thought.branchId}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.revisesThought) {\n ascii += `Revises: ${thought.revisesThought}\\n`;\n if (thought.revisionReason) {\n ascii += `Reason: ${thought.revisionReason}\\n`;\n }\n ascii += '\\n';\n }\n\n return ascii;\n}\n","/**\n * Shannon Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Shannon stage flow export to Mermaid, DOT, ASCII\n */\n\nimport type { ShannonThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export Shannon stage flow diagram to visual format\n */\nexport function exportShannonStageFlow(thought: ShannonThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return shannonToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return shannonToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return shannonToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nconst stages = [\n 'problem_definition',\n 'constraints',\n 'model',\n 'proof',\n 'implementation'\n];\n\nconst stageLabels: Record<string, string> = {\n problem_definition: 'Problem Definition',\n constraints: 'Constraints',\n model: 'Model',\n proof: 'Proof',\n implementation: 'Implementation'\n};\n\nfunction shannonToMermaid(\n thought: ShannonThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph LR\\n';\n\n for (let i = 0; i < stages.length; i++) {\n const stage = stages[i];\n const stageId = sanitizeId(stage);\n const label = includeLabels ? stageLabels[stage] : stageId;\n\n mermaid += ` ${stageId}[\"${label}\"]\\n`;\n\n if (i < stages.length - 1) {\n const nextStageId = sanitizeId(stages[i + 1]);\n mermaid += ` ${stageId} --> ${nextStageId}\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const currentStageId = sanitizeId(thought.stage);\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n mermaid += ` style ${currentStageId} fill:${color},stroke:#333,stroke-width:3px\\n`;\n }\n\n if (includeMetrics && thought.uncertainty !== undefined) {\n mermaid += `\\n uncertainty[\"Uncertainty: ${thought.uncertainty.toFixed(2)}\"]\\n`;\n mermaid += ` uncertainty -.-> ${sanitizeId(thought.stage)}\\n`;\n }\n\n return mermaid;\n}\n\nfunction shannonToDOT(\n thought: ShannonThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph ShannonStageFlow {\\n';\n dot += ' rankdir=LR;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n for (let i = 0; i < stages.length; i++) {\n const stage = stages[i];\n const stageId = sanitizeId(stage);\n const label = includeLabels ? stageLabels[stage] : stageId;\n\n const isCurrent = stage === thought.stage;\n const style = isCurrent ? ', style=filled, fillcolor=lightblue' : '';\n\n dot += ` ${stageId} [label=\"${label}\"${style}];\\n`;\n\n if (i < stages.length - 1) {\n const nextStageId = sanitizeId(stages[i + 1]);\n dot += ` ${stageId} -> ${nextStageId};\\n`;\n }\n }\n\n if (includeMetrics && thought.uncertainty !== undefined) {\n dot += `\\n uncertainty [label=\"Uncertainty: ${thought.uncertainty.toFixed(2)}\", shape=ellipse];\\n`;\n dot += ` uncertainty -> ${sanitizeId(thought.stage)} [style=dashed];\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction shannonToASCII(thought: ShannonThought): string {\n let ascii = 'Shannon Stage Flow:\\n';\n ascii += '===================\\n\\n';\n\n ascii += 'Flow: ';\n for (let i = 0; i < stages.length; i++) {\n const stage = stages[i];\n const isCurrent = stage === thought.stage;\n\n if (isCurrent) {\n ascii += `[${stageLabels[stage]}]`;\n } else {\n ascii += stageLabels[stage];\n }\n\n if (i < stages.length - 1) {\n ascii += ' → ';\n }\n }\n\n ascii += '\\n\\n';\n ascii += `Current Stage: ${stageLabels[thought.stage]}\\n`;\n ascii += `Uncertainty: ${thought.uncertainty.toFixed(2)}\\n`;\n\n if (thought.dependencies && thought.dependencies.length > 0) {\n ascii += '\\nDependencies:\\n';\n for (const dep of thought.dependencies) {\n ascii += ` • ${dep}\\n`;\n }\n }\n\n if (thought.assumptions && thought.assumptions.length > 0) {\n ascii += '\\nAssumptions:\\n';\n for (const assumption of thought.assumptions) {\n ascii += ` • ${assumption}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Abductive Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Abductive hypothesis export to Mermaid, DOT, ASCII\n */\n\nimport type { AbductiveThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export abductive hypothesis comparison to visual format\n */\nexport function exportAbductiveHypotheses(thought: AbductiveThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return abductiveToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return abductiveToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return abductiveToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction abductiveToMermaid(\n thought: AbductiveThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n mermaid += ' Observations[\"Observations\"]\\n';\n\n for (const hypothesis of thought.hypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n const label = includeLabels ? hypothesis.explanation.substring(0, 50) + '...' : hypId;\n const scoreLabel = includeMetrics ? ` (${hypothesis.score.toFixed(2)})` : '';\n\n mermaid += ` ${hypId}[\"${label}${scoreLabel}\"]\\n`;\n mermaid += ` Observations --> ${hypId}\\n`;\n }\n\n if (thought.bestExplanation && colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const bestId = sanitizeId(thought.bestExplanation.id);\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n mermaid += ` style ${bestId} fill:${color},stroke:#333,stroke-width:3px\\n`;\n }\n\n return mermaid;\n}\n\nfunction abductiveToDOT(\n thought: AbductiveThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph AbductiveHypotheses {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n dot += ' Observations [label=\"Observations\", shape=ellipse];\\n\\n';\n\n for (const hypothesis of thought.hypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n const label = includeLabels ? hypothesis.explanation.substring(0, 50) + '...' : hypId;\n const scoreLabel = includeMetrics ? ` (${hypothesis.score.toFixed(2)})` : '';\n\n const isBest = thought.bestExplanation?.id === hypothesis.id;\n const style = isBest ? ', style=filled, fillcolor=lightblue' : '';\n\n dot += ` ${hypId} [label=\"${label}${scoreLabel}\"${style}];\\n`;\n dot += ` Observations -> ${hypId};\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction abductiveToASCII(thought: AbductiveThought): string {\n let ascii = 'Abductive Hypothesis Comparison:\\n';\n ascii += '================================\\n\\n';\n\n ascii += 'Observations:\\n';\n for (const obs of thought.observations) {\n ascii += ` • ${obs.description} (confidence: ${obs.confidence.toFixed(2)})\\n`;\n }\n\n ascii += '\\nHypotheses:\\n';\n for (const hypothesis of thought.hypotheses) {\n const isBest = thought.bestExplanation?.id === hypothesis.id;\n const marker = isBest ? '★' : '•';\n\n ascii += ` ${marker} ${hypothesis.explanation}\\n`;\n ascii += ` Score: ${hypothesis.score.toFixed(2)}\\n`;\n ascii += ` Assumptions: ${hypothesis.assumptions.join(', ')}\\n`;\n ascii += '\\n';\n }\n\n if (thought.bestExplanation) {\n ascii += `Best Explanation: ${thought.bestExplanation.explanation}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Counterfactual Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Counterfactual scenario export to Mermaid, DOT, ASCII\n */\n\nimport type { CounterfactualThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export counterfactual scenario tree to visual format\n */\nexport function exportCounterfactualScenarios(thought: CounterfactualThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return counterfactualToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return counterfactualToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return counterfactualToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction counterfactualToMermaid(\n thought: CounterfactualThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n const interventionId = 'intervention';\n mermaid += ` ${interventionId}[\"${thought.interventionPoint.description}\"]\\n`;\n\n const actualId = sanitizeId(thought.actual.id);\n const actualLabel = includeLabels ? thought.actual.name : actualId;\n mermaid += ` ${actualId}[\"Actual: ${actualLabel}\"]\\n`;\n mermaid += ` ${interventionId} -->|no change| ${actualId}\\n`;\n\n for (const scenario of thought.counterfactuals) {\n const scenarioId = sanitizeId(scenario.id);\n const label = includeLabels ? scenario.name : scenarioId;\n const likelihoodLabel = includeMetrics && scenario.likelihood\n ? ` (${scenario.likelihood.toFixed(2)})`\n : '';\n\n mermaid += ` ${scenarioId}[\"CF: ${label}${likelihoodLabel}\"]\\n`;\n mermaid += ` ${interventionId} -->|intervene| ${scenarioId}\\n`;\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const actualColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n mermaid += ` style ${actualId} fill:${actualColor}\\n`;\n\n const cfColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n for (const scenario of thought.counterfactuals) {\n const scenarioId = sanitizeId(scenario.id);\n mermaid += ` style ${scenarioId} fill:${cfColor}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction counterfactualToDOT(\n thought: CounterfactualThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph CounterfactualScenarios {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n const interventionId = 'intervention';\n dot += ` ${interventionId} [label=\"${thought.interventionPoint.description}\", shape=diamond];\\n\\n`;\n\n const actualId = sanitizeId(thought.actual.id);\n const actualLabel = includeLabels ? thought.actual.name : actualId;\n dot += ` ${actualId} [label=\"Actual: ${actualLabel}\", style=filled, fillcolor=lightyellow];\\n`;\n dot += ` ${interventionId} -> ${actualId} [label=\"no change\"];\\n\\n`;\n\n for (const scenario of thought.counterfactuals) {\n const scenarioId = sanitizeId(scenario.id);\n const label = includeLabels ? scenario.name : scenarioId;\n const likelihoodLabel = includeMetrics && scenario.likelihood\n ? ` (${scenario.likelihood.toFixed(2)})`\n : '';\n\n dot += ` ${scenarioId} [label=\"CF: ${label}${likelihoodLabel}\", style=filled, fillcolor=lightblue];\\n`;\n dot += ` ${interventionId} -> ${scenarioId} [label=\"intervene\"];\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction counterfactualToASCII(thought: CounterfactualThought): string {\n let ascii = 'Counterfactual Scenario Tree:\\n';\n ascii += '=============================\\n\\n';\n\n ascii += `Intervention Point: ${thought.interventionPoint.description}\\n`;\n ascii += `Timing: ${thought.interventionPoint.timing}\\n`;\n ascii += `Feasibility: ${thought.interventionPoint.feasibility.toFixed(2)}\\n\\n`;\n\n ascii += '┌─ Actual Scenario:\\n';\n ascii += `│ ${thought.actual.name}\\n`;\n ascii += `│ ${thought.actual.description}\\n\\n`;\n\n ascii += '└─ Counterfactual Scenarios:\\n';\n for (const scenario of thought.counterfactuals) {\n const likelihoodStr = scenario.likelihood ? ` (likelihood: ${scenario.likelihood.toFixed(2)})` : '';\n ascii += ` ├─ ${scenario.name}${likelihoodStr}\\n`;\n ascii += ` │ ${scenario.description}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Analogical Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Analogical domain mapping export to Mermaid, DOT, ASCII\n */\n\nimport type { AnalogicalThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export analogical domain mapping to visual format\n */\nexport function exportAnalogicalMapping(thought: AnalogicalThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return analogicalToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return analogicalToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return analogicalToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction analogicalToMermaid(\n thought: AnalogicalThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph LR\\n';\n\n mermaid += ' subgraph Source[\"Source Domain\"]\\n';\n for (const entity of thought.sourceDomain.entities) {\n const entityId = sanitizeId('src_' + entity.id);\n const label = includeLabels ? entity.name : entityId;\n mermaid += ` ${entityId}[\"${label}\"]\\n`;\n }\n mermaid += ' end\\n\\n';\n\n mermaid += ' subgraph Target[\"Target Domain\"]\\n';\n for (const entity of thought.targetDomain.entities) {\n const entityId = sanitizeId('tgt_' + entity.id);\n const label = includeLabels ? entity.name : entityId;\n mermaid += ` ${entityId}[\"${label}\"]\\n`;\n }\n mermaid += ' end\\n\\n';\n\n for (const mapping of thought.mapping) {\n const srcId = sanitizeId('src_' + mapping.sourceEntityId);\n const tgtId = sanitizeId('tgt_' + mapping.targetEntityId);\n const confidenceLabel = includeMetrics ? `|${mapping.confidence.toFixed(2)}|` : '';\n\n mermaid += ` ${srcId} -.->${confidenceLabel} ${tgtId}\\n`;\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const srcColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n const tgtColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n\n for (const entity of thought.sourceDomain.entities) {\n const entityId = sanitizeId('src_' + entity.id);\n mermaid += ` style ${entityId} fill:${srcColor}\\n`;\n }\n\n for (const entity of thought.targetDomain.entities) {\n const entityId = sanitizeId('tgt_' + entity.id);\n mermaid += ` style ${entityId} fill:${tgtColor}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction analogicalToDOT(\n thought: AnalogicalThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph AnalogicalMapping {\\n';\n dot += ' rankdir=LR;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n dot += ' subgraph cluster_source {\\n';\n dot += ' label=\"Source Domain\";\\n';\n dot += ' style=filled;\\n';\n dot += ' fillcolor=lightyellow;\\n\\n';\n\n for (const entity of thought.sourceDomain.entities) {\n const entityId = sanitizeId('src_' + entity.id);\n const label = includeLabels ? entity.name : entityId;\n dot += ` ${entityId} [label=\"${label}\"];\\n`;\n }\n\n dot += ' }\\n\\n';\n\n dot += ' subgraph cluster_target {\\n';\n dot += ' label=\"Target Domain\";\\n';\n dot += ' style=filled;\\n';\n dot += ' fillcolor=lightblue;\\n\\n';\n\n for (const entity of thought.targetDomain.entities) {\n const entityId = sanitizeId('tgt_' + entity.id);\n const label = includeLabels ? entity.name : entityId;\n dot += ` ${entityId} [label=\"${label}\"];\\n`;\n }\n\n dot += ' }\\n\\n';\n\n for (const mapping of thought.mapping) {\n const srcId = sanitizeId('src_' + mapping.sourceEntityId);\n const tgtId = sanitizeId('tgt_' + mapping.targetEntityId);\n const confidenceLabel = includeMetrics ? `, label=\"${mapping.confidence.toFixed(2)}\"` : '';\n\n dot += ` ${srcId} -> ${tgtId} [style=dashed${confidenceLabel}];\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction analogicalToASCII(thought: AnalogicalThought): string {\n let ascii = 'Analogical Domain Mapping:\\n';\n ascii += '==========================\\n\\n';\n\n ascii += `Source Domain: ${thought.sourceDomain.name}\\n`;\n ascii += `${thought.sourceDomain.description}\\n\\n`;\n\n ascii += `Target Domain: ${thought.targetDomain.name}\\n`;\n ascii += `${thought.targetDomain.description}\\n\\n`;\n\n ascii += 'Mappings:\\n';\n for (const mapping of thought.mapping) {\n const srcEntity = thought.sourceDomain.entities.find(e => e.id === mapping.sourceEntityId);\n const tgtEntity = thought.targetDomain.entities.find(e => e.id === mapping.targetEntityId);\n\n if (srcEntity && tgtEntity) {\n ascii += ` ${srcEntity.name} ←→ ${tgtEntity.name} (confidence: ${mapping.confidence.toFixed(2)})\\n`;\n ascii += ` ${mapping.justification}\\n`;\n }\n }\n\n ascii += `\\nAnalogy Strength: ${thought.analogyStrength.toFixed(2)}\\n`;\n\n return ascii;\n}\n","/**\n * Evidential Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Evidential belief export to Mermaid, DOT, ASCII\n */\n\nimport type { EvidentialThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export evidential belief visualization to visual format\n */\nexport function exportEvidentialBeliefs(thought: EvidentialThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return evidentialToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return evidentialToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return evidentialToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction evidentialToMermaid(\n thought: EvidentialThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n mermaid += ' Frame[\"Frame of Discernment\"]\\n';\n\n if (thought.frameOfDiscernment) {\n for (const hypothesis of thought.frameOfDiscernment) {\n const hypId = sanitizeId(hypothesis);\n const label = includeLabels ? hypothesis : hypId;\n\n mermaid += ` ${hypId}[\"${label}\"]\\n`;\n mermaid += ` Frame --> ${hypId}\\n`;\n }\n }\n\n if (includeMetrics && (thought as any).massAssignments && (thought as any).massAssignments.length > 0) {\n mermaid += '\\n';\n for (const mass of (thought as any).massAssignments) {\n const massId = sanitizeId(mass.subset.join('_'));\n const label = `{${mass.subset.join(', ')}}`;\n mermaid += ` ${massId}[\"${label}: ${mass.mass.toFixed(3)}\"]\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome' && thought.frameOfDiscernment) {\n mermaid += '\\n';\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n for (const hypothesis of thought.frameOfDiscernment) {\n const hypId = sanitizeId(hypothesis);\n mermaid += ` style ${hypId} fill:${color}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction evidentialToDOT(\n thought: EvidentialThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph EvidentialBeliefs {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n dot += ' Frame [label=\"Frame of Discernment\", shape=ellipse];\\n\\n';\n\n if (thought.frameOfDiscernment) {\n for (const hypothesis of thought.frameOfDiscernment) {\n const hypId = sanitizeId(hypothesis);\n const label = includeLabels ? hypothesis : hypId;\n\n dot += ` ${hypId} [label=\"${label}\"];\\n`;\n dot += ` Frame -> ${hypId};\\n`;\n }\n }\n\n if (includeMetrics && (thought as any).massAssignments && (thought as any).massAssignments.length > 0) {\n dot += '\\n';\n for (const mass of (thought as any).massAssignments) {\n const massId = sanitizeId(mass.subset.join('_'));\n const label = `{${mass.subset.join(', ')}}: ${mass.mass.toFixed(3)}`;\n dot += ` ${massId} [label=\"${label}\", shape=note];\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction evidentialToASCII(thought: EvidentialThought): string {\n let ascii = 'Evidential Belief Visualization:\\n';\n ascii += '================================\\n\\n';\n\n ascii += 'Frame of Discernment:\\n';\n if (thought.frameOfDiscernment) {\n ascii += ` {${thought.frameOfDiscernment.join(', ')}}\\n\\n`;\n } else {\n ascii += ' (not defined)\\n\\n';\n }\n\n if ((thought as any).massAssignments && (thought as any).massAssignments.length > 0) {\n ascii += 'Mass Assignments:\\n';\n for (const mass of (thought as any).massAssignments) {\n ascii += ` m({${mass.subset.join(', ')}}) = ${mass.mass.toFixed(3)}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.beliefFunctions && thought.beliefFunctions.length > 0) {\n ascii += `Belief Functions: ${thought.beliefFunctions.length} defined\\n`;\n }\n\n if ((thought as any).plausibilityFunction) {\n ascii += `Plausibility: ${(thought as any).plausibilityFunction.toFixed(3)}\\n`;\n }\n\n return ascii;\n}\n","/**\n * First Principles Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: First principles derivation export to Mermaid, DOT, ASCII\n */\n\nimport type { FirstPrinciplesThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export first-principles derivation chain to visual format\n */\nexport function exportFirstPrinciplesDerivation(thought: FirstPrinciplesThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return firstPrinciplesToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return firstPrinciplesToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return firstPrinciplesToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction firstPrinciplesToMermaid(\n thought: FirstPrinciplesThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n mermaid += ` Q[\"Question: ${thought.question}\"]\\n`;\n mermaid += '\\n';\n\n for (const principle of thought.principles) {\n const principleId = sanitizeId(principle.id);\n const label = includeLabels\n ? `${principle.type.toUpperCase()}: ${principle.statement.substring(0, 50)}...`\n : principleId;\n\n let shape: [string, string];\n switch (principle.type) {\n case 'axiom':\n shape = ['([', '])'];\n break;\n case 'definition':\n shape = ['[[', ']]'];\n break;\n case 'observation':\n shape = ['[(', ')]'];\n break;\n case 'logical_inference':\n shape = ['[', ']'];\n break;\n case 'assumption':\n shape = ['{', '}'];\n break;\n default:\n shape = ['[', ']'];\n }\n\n mermaid += ` ${principleId}${shape[0]}${label}${shape[1]}\\n`;\n\n if (principle.dependsOn) {\n for (const depId of principle.dependsOn) {\n const sanitizedDepId = sanitizeId(depId);\n mermaid += ` ${sanitizedDepId} --> ${principleId}\\n`;\n }\n }\n }\n\n mermaid += '\\n';\n\n for (const step of thought.derivationSteps) {\n const stepId = `Step${step.stepNumber}`;\n const principleId = sanitizeId(step.principle);\n const label = includeLabels\n ? `Step ${step.stepNumber}: ${step.inference.substring(0, 50)}...`\n : stepId;\n\n mermaid += ` ${stepId}[\"${label}\"]\\n`;\n mermaid += ` ${principleId} -.->|applies| ${stepId}\\n`;\n\n if (includeMetrics && step.confidence !== undefined) {\n mermaid += ` ${stepId} -.->|conf: ${step.confidence.toFixed(2)}| ${stepId}\\n`;\n }\n }\n\n mermaid += '\\n';\n\n const conclusionLabel = includeLabels\n ? `Conclusion: ${thought.conclusion.statement.substring(0, 50)}...`\n : 'Conclusion';\n mermaid += ` C[\"${conclusionLabel}\"]\\n`;\n\n for (const stepNum of thought.conclusion.derivationChain) {\n mermaid += ` Step${stepNum} --> C\\n`;\n }\n\n if (includeMetrics) {\n mermaid += ` C -.->|certainty: ${thought.conclusion.certainty.toFixed(2)}| C\\n`;\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n\n const axiomColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const definitionColor = colorScheme === 'pastel' ? '#f3e5f5' : '#ce93d8';\n const observationColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n const inferenceColor = colorScheme === 'pastel' ? '#e8f5e9' : '#a5d6a7';\n const assumptionColor = colorScheme === 'pastel' ? '#ffebee' : '#ef9a9a';\n\n for (const principle of thought.principles) {\n const principleId = sanitizeId(principle.id);\n let color = axiomColor;\n switch (principle.type) {\n case 'axiom': color = axiomColor; break;\n case 'definition': color = definitionColor; break;\n case 'observation': color = observationColor; break;\n case 'logical_inference': color = inferenceColor; break;\n case 'assumption': color = assumptionColor; break;\n }\n mermaid += ` style ${principleId} fill:${color}\\n`;\n }\n\n const conclusionColor = colorScheme === 'pastel' ? '#c8e6c9' : '#66bb6a';\n mermaid += ` style C fill:${conclusionColor}\\n`;\n }\n\n return mermaid;\n}\n\nfunction firstPrinciplesToDOT(\n thought: FirstPrinciplesThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph FirstPrinciples {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n dot += ` Q [label=\"Question:\\\\n${thought.question}\", shape=ellipse, style=bold];\\n\\n`;\n\n for (const principle of thought.principles) {\n const principleId = sanitizeId(principle.id);\n const label = includeLabels\n ? `${principle.type.toUpperCase()}:\\\\n${principle.statement.substring(0, 60)}...`\n : principleId;\n\n let shape = 'box';\n switch (principle.type) {\n case 'axiom': shape = 'ellipse'; break;\n case 'definition': shape = 'box'; break;\n case 'observation': shape = 'cylinder'; break;\n case 'logical_inference': shape = 'box'; break;\n case 'assumption': shape = 'diamond'; break;\n }\n\n const confidenceLabel = includeMetrics && principle.confidence\n ? `\\\\nconf: ${principle.confidence.toFixed(2)}`\n : '';\n dot += ` ${principleId} [label=\"${label}${confidenceLabel}\", shape=${shape}];\\n`;\n\n if (principle.dependsOn) {\n for (const depId of principle.dependsOn) {\n const sanitizedDepId = sanitizeId(depId);\n dot += ` ${sanitizedDepId} -> ${principleId};\\n`;\n }\n }\n }\n\n dot += '\\n';\n\n for (const step of thought.derivationSteps) {\n const stepId = `Step${step.stepNumber}`;\n const principleId = sanitizeId(step.principle);\n const label = includeLabels\n ? `Step ${step.stepNumber}:\\\\n${step.inference.substring(0, 60)}...`\n : stepId;\n\n const confidenceLabel = includeMetrics\n ? `\\\\nconf: ${step.confidence.toFixed(2)}`\n : '';\n dot += ` ${stepId} [label=\"${label}${confidenceLabel}\"];\\n`;\n dot += ` ${principleId} -> ${stepId} [style=dashed, label=\"applies\"];\\n`;\n }\n\n dot += '\\n';\n\n const conclusionLabel = includeLabels\n ? `Conclusion:\\\\n${thought.conclusion.statement.substring(0, 60)}...`\n : 'Conclusion';\n const certaintyLabel = includeMetrics\n ? `\\\\ncertainty: ${thought.conclusion.certainty.toFixed(2)}`\n : '';\n dot += ` C [label=\"${conclusionLabel}${certaintyLabel}\", shape=doubleoctagon, style=bold];\\n`;\n\n for (const stepNum of thought.conclusion.derivationChain) {\n dot += ` Step${stepNum} -> C;\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction firstPrinciplesToASCII(thought: FirstPrinciplesThought): string {\n let ascii = 'First-Principles Derivation:\\n';\n ascii += '============================\\n\\n';\n\n ascii += `Question: ${thought.question}\\n\\n`;\n\n ascii += 'Foundational Principles:\\n';\n ascii += '------------------------\\n';\n for (const principle of thought.principles) {\n ascii += `[${principle.id}] ${principle.type.toUpperCase()}\\n`;\n ascii += ` Statement: ${principle.statement}\\n`;\n ascii += ` Justification: ${principle.justification}\\n`;\n if (principle.dependsOn && principle.dependsOn.length > 0) {\n ascii += ` Depends on: ${principle.dependsOn.join(', ')}\\n`;\n }\n if (principle.confidence !== undefined) {\n ascii += ` Confidence: ${principle.confidence.toFixed(2)}\\n`;\n }\n ascii += '\\n';\n }\n\n ascii += 'Derivation Chain:\\n';\n ascii += '----------------\\n';\n for (const step of thought.derivationSteps) {\n ascii += `Step ${step.stepNumber} (using principle: ${step.principle})\\n`;\n ascii += ` Inference: ${step.inference}\\n`;\n if (step.logicalForm) {\n ascii += ` Logical form: ${step.logicalForm}\\n`;\n }\n ascii += ` Confidence: ${step.confidence.toFixed(2)}\\n`;\n ascii += '\\n';\n }\n\n ascii += 'Conclusion:\\n';\n ascii += '----------\\n';\n ascii += `${thought.conclusion.statement}\\n`;\n ascii += `Derivation chain: Steps [${thought.conclusion.derivationChain.join(', ')}]\\n`;\n ascii += `Certainty: ${thought.conclusion.certainty.toFixed(2)}\\n`;\n\n if (thought.conclusion.limitations && thought.conclusion.limitations.length > 0) {\n ascii += '\\nLimitations:\\n';\n for (const limitation of thought.conclusion.limitations) {\n ascii += ` - ${limitation}\\n`;\n }\n }\n\n if (thought.alternativeInterpretations && thought.alternativeInterpretations.length > 0) {\n ascii += '\\nAlternative Interpretations:\\n';\n for (const alt of thought.alternativeInterpretations) {\n ascii += ` - ${alt}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Systems Thinking Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Systems thinking causal loop export to Mermaid, DOT, ASCII\n */\n\nimport type { SystemsThinkingThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export systems thinking causal loop diagram to visual format\n */\nexport function exportSystemsThinkingCausalLoops(thought: SystemsThinkingThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return systemsThinkingToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return systemsThinkingToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return systemsThinkingToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction systemsThinkingToMermaid(\n thought: SystemsThinkingThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TB\\n';\n\n if (thought.system) {\n mermaid += ` System[\"${thought.system.name}\"]\\n\\n`;\n }\n\n if (thought.components && thought.components.length > 0) {\n for (const component of thought.components) {\n const compId = sanitizeId(component.id);\n const label = includeLabels ? component.name : compId;\n const shape = component.type === 'stock' ? ['[[', ']]'] : ['[', ']'];\n mermaid += ` ${compId}${shape[0]}${label}${shape[1]}\\n`;\n }\n mermaid += '\\n';\n }\n\n if (thought.feedbackLoops && thought.feedbackLoops.length > 0) {\n for (const loop of thought.feedbackLoops) {\n const loopComponents = loop.components;\n\n for (let i = 0; i < loopComponents.length; i++) {\n const fromId = sanitizeId(loopComponents[i]);\n const toId = sanitizeId(loopComponents[(i + 1) % loopComponents.length]);\n\n const edgeLabel = includeMetrics\n ? `|${loop.type} (${loop.strength.toFixed(2)})| `\n : `|${loop.type}| `;\n\n const edgeStyle = loop.type === 'reinforcing' ? '-->' : '-..->';\n mermaid += ` ${fromId} ${edgeStyle}${edgeLabel}${toId}\\n`;\n }\n }\n mermaid += '\\n';\n }\n\n if (colorScheme !== 'monochrome' && thought.components) {\n const stockColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const flowColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n\n for (const component of thought.components) {\n const compId = sanitizeId(component.id);\n const color = component.type === 'stock' ? stockColor : flowColor;\n mermaid += ` style ${compId} fill:${color}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction systemsThinkingToDOT(\n thought: SystemsThinkingThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph SystemsThinking {\\n';\n dot += ' rankdir=TB;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n if (thought.components && thought.components.length > 0) {\n for (const component of thought.components) {\n const compId = sanitizeId(component.id);\n const label = includeLabels ? component.name : compId;\n const shape = component.type === 'stock' ? 'box' : 'ellipse';\n\n dot += ` ${compId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n dot += '\\n';\n }\n\n if (thought.feedbackLoops && thought.feedbackLoops.length > 0) {\n for (const loop of thought.feedbackLoops) {\n const loopComponents = loop.components;\n\n for (let i = 0; i < loopComponents.length; i++) {\n const fromId = sanitizeId(loopComponents[i]);\n const toId = sanitizeId(loopComponents[(i + 1) % loopComponents.length]);\n\n const edgeLabel = includeMetrics\n ? `, label=\"${loop.type} (${loop.strength.toFixed(2)})\"`\n : `, label=\"${loop.type}\"`;\n\n const edgeStyle = loop.type === 'reinforcing' ? 'solid' : 'dashed';\n dot += ` ${fromId} -> ${toId} [style=${edgeStyle}${edgeLabel}];\\n`;\n }\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction systemsThinkingToASCII(thought: SystemsThinkingThought): string {\n let ascii = 'Systems Thinking Model:\\n';\n ascii += '======================\\n\\n';\n\n if (thought.system) {\n ascii += `System: ${thought.system.name}\\n`;\n ascii += `${thought.system.description}\\n\\n`;\n }\n\n if (thought.components && thought.components.length > 0) {\n ascii += 'Components:\\n';\n for (const component of thought.components) {\n const typeIcon = component.type === 'stock' ? '[■]' : '(○)';\n ascii += ` ${typeIcon} ${component.name}: ${component.description}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.feedbackLoops && thought.feedbackLoops.length > 0) {\n ascii += 'Feedback Loops:\\n';\n for (const loop of thought.feedbackLoops) {\n const loopIcon = loop.type === 'reinforcing' ? '⊕' : '⊖';\n ascii += ` ${loopIcon} ${loop.name} (${loop.type})\\n`;\n ascii += ` Strength: ${loop.strength.toFixed(2)}\\n`;\n ascii += ` Components: ${loop.components.join(' → ')}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.leveragePoints && thought.leveragePoints.length > 0) {\n ascii += 'Leverage Points:\\n';\n for (const point of thought.leveragePoints) {\n ascii += ` ★ ${point.location} (effectiveness: ${point.effectiveness.toFixed(2)})\\n`;\n ascii += ` ${point.description}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Scientific Method Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Scientific method experiment export to Mermaid, DOT, ASCII\n */\n\nimport type { ScientificMethodThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export scientific method experiment flow to visual format\n */\nexport function exportScientificMethodExperiment(thought: ScientificMethodThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return scientificMethodToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return scientificMethodToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return scientificMethodToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction scientificMethodToMermaid(\n thought: ScientificMethodThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n if (thought.researchQuestion) {\n mermaid += ` RQ[\"Research Question: ${thought.researchQuestion.question.substring(0, 60)}...\"]\\n`;\n mermaid += '\\n';\n }\n\n if (thought.scientificHypotheses && thought.scientificHypotheses.length > 0) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n const label = includeLabels ? hypothesis.statement.substring(0, 50) + '...' : hypId;\n mermaid += ` ${hypId}[\"H: ${label}\"]\\n`;\n if (thought.researchQuestion) {\n mermaid += ` RQ --> ${hypId}\\n`;\n }\n }\n mermaid += '\\n';\n }\n\n if (thought.experiment) {\n mermaid += ` Exp[\"Experiment: ${thought.experiment.design}\"]\\n`;\n if (thought.scientificHypotheses && thought.scientificHypotheses.length > 0) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n mermaid += ` ${hypId} --> Exp\\n`;\n }\n }\n mermaid += '\\n';\n }\n\n if (thought.data) {\n mermaid += ` Data[\"Data Collection: ${(thought.experiment as any)?.sampleSize || 0} samples\"]\\n`;\n if (thought.experiment) {\n mermaid += ` Exp --> Data\\n`;\n }\n mermaid += '\\n';\n }\n\n if (thought.analysis) {\n mermaid += ` Stats[\"Statistical Analysis\"]\\n`;\n if (thought.data) {\n mermaid += ` Data --> Stats\\n`;\n }\n mermaid += '\\n';\n }\n\n if (thought.conclusion) {\n const conclusionId = 'Conclusion';\n const supportLabel = includeMetrics && thought.conclusion.confidence\n ? ` (conf: ${thought.conclusion.confidence.toFixed(2)})`\n : '';\n mermaid += ` ${conclusionId}[\"Conclusion: ${thought.conclusion.statement.substring(0, 50)}...${supportLabel}\"]\\n`;\n if (thought.analysis) {\n mermaid += ` Stats --> ${conclusionId}\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const questionColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n const hypothesisColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const conclusionColor = colorScheme === 'pastel' ? '#e8f5e9' : '#a5d6a7';\n\n if (thought.researchQuestion) {\n mermaid += ` style RQ fill:${questionColor}\\n`;\n }\n if (thought.scientificHypotheses) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n mermaid += ` style ${hypId} fill:${hypothesisColor}\\n`;\n }\n }\n if (thought.conclusion) {\n mermaid += ` style Conclusion fill:${conclusionColor}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction scientificMethodToDOT(\n thought: ScientificMethodThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph ScientificMethod {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n if (thought.researchQuestion) {\n const label = includeLabels ? thought.researchQuestion.question.substring(0, 60) + '...' : 'RQ';\n dot += ` RQ [label=\"Research Question:\\\\n${label}\", shape=ellipse];\\n\\n`;\n }\n\n if (thought.scientificHypotheses && thought.scientificHypotheses.length > 0) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n const label = includeLabels ? hypothesis.statement.substring(0, 50) + '...' : hypId;\n dot += ` ${hypId} [label=\"Hypothesis:\\\\n${label}\"];\\n`;\n if (thought.researchQuestion) {\n dot += ` RQ -> ${hypId};\\n`;\n }\n }\n dot += '\\n';\n }\n\n if (thought.experiment) {\n const label = includeLabels ? thought.experiment.design : 'Exp';\n dot += ` Exp [label=\"Experiment:\\\\n${label}\"];\\n`;\n if (thought.scientificHypotheses) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n dot += ` ${hypId} -> Exp;\\n`;\n }\n }\n dot += '\\n';\n }\n\n if (thought.data) {\n const sampleLabel = includeMetrics ? `\\\\nSamples: ${(thought.experiment as any)?.sampleSize || 0}` : '';\n dot += ` Data [label=\"Data Collection${sampleLabel}\"];\\n`;\n if (thought.experiment) {\n dot += ` Exp -> Data;\\n`;\n }\n }\n\n if (thought.analysis) {\n dot += ` Stats [label=\"Statistical Analysis\"];\\n`;\n if (thought.data) {\n dot += ` Data -> Stats;\\n`;\n }\n }\n\n if (thought.conclusion) {\n const label = includeLabels ? thought.conclusion.statement.substring(0, 50) + '...' : 'Conclusion';\n const confLabel = includeMetrics && thought.conclusion.confidence\n ? `\\\\nconf: ${thought.conclusion.confidence.toFixed(2)}`\n : '';\n dot += ` Conclusion [label=\"Conclusion:\\\\n${label}${confLabel}\", shape=doubleoctagon];\\n`;\n if (thought.analysis) {\n dot += ` Stats -> Conclusion;\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction scientificMethodToASCII(thought: ScientificMethodThought): string {\n let ascii = 'Scientific Method Process:\\n';\n ascii += '==========================\\n\\n';\n\n if (thought.researchQuestion) {\n ascii += `Research Question: ${thought.researchQuestion.question}\\n`;\n ascii += `Background: ${thought.researchQuestion.background}\\n\\n`;\n }\n\n if (thought.scientificHypotheses && thought.scientificHypotheses.length > 0) {\n ascii += 'Hypotheses:\\n';\n for (const hypothesis of thought.scientificHypotheses) {\n const typeIcon = hypothesis.type === 'null' ? 'H₀' : 'H₁';\n ascii += ` ${typeIcon} ${hypothesis.statement}\\n`;\n if (hypothesis.prediction) {\n ascii += ` Prediction: ${hypothesis.prediction}\\n`;\n }\n }\n ascii += '\\n';\n }\n\n if (thought.experiment) {\n ascii += `Experiment: ${thought.experiment.design}\\n`;\n ascii += `Type: ${thought.experiment.type}\\n`;\n ascii += `Design: ${thought.experiment.design}\\n\\n`;\n }\n\n if (thought.data) {\n ascii += 'Data Collection:\\n';\n ascii += ` Sample Size: ${(thought.experiment as any)?.sampleSize || 0}\\n`;\n ascii += ` Method: ${thought.data.method}\\n`;\n if (thought.data.dataQuality) {\n ascii += ` Quality:\\n`;\n ascii += ` Completeness: ${thought.data.dataQuality.completeness.toFixed(2)}\\n`;\n ascii += ` Reliability: ${thought.data.dataQuality.reliability.toFixed(2)}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.analysis && thought.analysis.tests) {\n ascii += 'Statistical Tests:\\n';\n for (const test of thought.analysis.tests) {\n ascii += ` • ${test.name}\\n`;\n ascii += ` p-value: ${test.pValue.toFixed(4)}, α: ${test.alpha}\\n`;\n ascii += ` Result: ${test.result}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.conclusion) {\n ascii += 'Conclusion:\\n';\n ascii += `${thought.conclusion.statement}\\n`;\n if ((thought.conclusion as any).supportedHypotheses) {\n ascii += `Supported hypotheses: ${(thought.conclusion as any).supportedHypotheses.join(', ')}\\n`;\n }\n if (thought.conclusion.confidence) {\n ascii += `Confidence: ${thought.conclusion.confidence.toFixed(2)}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Optimization Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Optimization constraint graph export to Mermaid, DOT, ASCII\n */\n\nimport type { OptimizationThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export optimization problem constraint graph to visual format\n */\nexport function exportOptimizationSolution(thought: OptimizationThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return optimizationToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return optimizationToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return optimizationToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction optimizationToMermaid(\n thought: OptimizationThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n if (thought.problem) {\n const problemLabel = includeLabels\n ? `Problem: ${thought.problem.name}`\n : 'Problem';\n mermaid += ` Problem[\"${problemLabel}\"]\\n\\n`;\n }\n\n if (thought.variables && thought.variables.length > 0) {\n mermaid += ' subgraph Variables[\"Decision Variables\"]\\n';\n for (const variable of thought.variables) {\n const varId = sanitizeId(variable.id);\n const label = includeLabels ? variable.name : varId;\n const domainLabel = includeMetrics && variable.domain\n ? ` [${(variable.domain as any).lowerBound},${(variable.domain as any).upperBound}]`\n : '';\n mermaid += ` ${varId}[\"${label}${domainLabel}\"]\\n`;\n }\n mermaid += ' end\\n\\n';\n }\n\n if (thought.optimizationConstraints && thought.optimizationConstraints.length > 0) {\n mermaid += ' subgraph Constraints[\"Constraints\"]\\n';\n for (const constraint of thought.optimizationConstraints) {\n const constId = sanitizeId(constraint.id);\n const label = includeLabels ? constraint.name : constId;\n mermaid += ` ${constId}[\"${label}\"]\\n`;\n }\n mermaid += ' end\\n\\n';\n }\n\n if (thought.objectives && thought.objectives.length > 0) {\n for (const objective of thought.objectives) {\n const objId = sanitizeId(objective.id);\n const label = includeLabels\n ? `${objective.type}: ${objective.name}`\n : objId;\n mermaid += ` ${objId}[\"${label}\"]\\n`;\n }\n mermaid += '\\n';\n }\n\n if (thought.solution) {\n const qualityLabel = includeMetrics && thought.solution.quality\n ? ` (quality: ${thought.solution.quality.toFixed(2)})`\n : '';\n mermaid += ` Solution[\"Solution${qualityLabel}\"]\\n`;\n if (thought.objectives) {\n for (const objective of thought.objectives) {\n const objId = sanitizeId(objective.id);\n mermaid += ` ${objId} --> Solution\\n`;\n }\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const solutionColor = colorScheme === 'pastel' ? '#e8f5e9' : '#a5d6a7';\n if (thought.solution) {\n mermaid += ` style Solution fill:${solutionColor}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction optimizationToDOT(\n thought: OptimizationThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph Optimization {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n if (thought.problem) {\n const label = includeLabels ? thought.problem.name : 'Problem';\n dot += ` Problem [label=\"Problem:\\\\n${label}\", shape=ellipse];\\n\\n`;\n }\n\n if (thought.variables && thought.variables.length > 0) {\n dot += ' subgraph cluster_variables {\\n';\n dot += ' label=\"Decision Variables\";\\n';\n for (const variable of thought.variables) {\n const varId = sanitizeId(variable.id);\n const label = includeLabels ? variable.name : varId;\n const domainLabel = includeMetrics && variable.domain\n ? `\\\\n[${(variable.domain as any).lowerBound}, ${(variable.domain as any).upperBound}]`\n : '';\n dot += ` ${varId} [label=\"${label}${domainLabel}\"];\\n`;\n }\n dot += ' }\\n\\n';\n }\n\n if (thought.optimizationConstraints && thought.optimizationConstraints.length > 0) {\n dot += ' subgraph cluster_constraints {\\n';\n dot += ' label=\"Constraints\";\\n';\n for (const constraint of thought.optimizationConstraints) {\n const constId = sanitizeId(constraint.id);\n const label = includeLabels ? constraint.name : constId;\n dot += ` ${constId} [label=\"${label}\", shape=diamond];\\n`;\n }\n dot += ' }\\n\\n';\n }\n\n if (thought.objectives) {\n for (const objective of thought.objectives) {\n const objId = sanitizeId(objective.id);\n const label = includeLabels ? `${objective.type}:\\\\n${objective.name}` : objId;\n dot += ` ${objId} [label=\"${label}\"];\\n`;\n }\n }\n\n if (thought.solution) {\n const qualityLabel = includeMetrics && thought.solution.quality\n ? `\\\\nquality: ${thought.solution.quality.toFixed(2)}`\n : '';\n dot += ` Solution [label=\"Solution${qualityLabel}\", shape=doubleoctagon, style=filled, fillcolor=lightgreen];\\n`;\n if (thought.objectives) {\n for (const objective of thought.objectives) {\n const objId = sanitizeId(objective.id);\n dot += ` ${objId} -> Solution;\\n`;\n }\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction optimizationToASCII(thought: OptimizationThought): string {\n let ascii = 'Optimization Problem:\\n';\n ascii += '====================\\n\\n';\n\n if (thought.problem) {\n ascii += `Problem: ${thought.problem.name}\\n`;\n ascii += `Type: ${thought.problem.type}\\n`;\n ascii += `${thought.problem.description}\\n\\n`;\n }\n\n if (thought.variables && thought.variables.length > 0) {\n ascii += 'Decision Variables:\\n';\n for (const variable of thought.variables) {\n const varType = (variable as any).type || 'unknown';\n ascii += ` ${variable.name} (${varType})\\n`;\n if (variable.domain) {\n ascii += ` Domain: [${(variable.domain as any).lowerBound}, ${(variable.domain as any).upperBound}]\\n`;\n }\n }\n ascii += '\\n';\n }\n\n if (thought.optimizationConstraints && thought.optimizationConstraints.length > 0) {\n ascii += 'Constraints:\\n';\n for (const constraint of thought.optimizationConstraints) {\n ascii += ` ${constraint.name} (${constraint.type})\\n`;\n ascii += ` ${constraint.formula}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.objectives && thought.objectives.length > 0) {\n ascii += 'Objectives:\\n';\n for (const objective of thought.objectives) {\n ascii += ` ${objective.type.toUpperCase()}: ${objective.name}\\n`;\n ascii += ` ${objective.formula}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.solution) {\n ascii += 'Solution:\\n';\n const solution = thought.solution as any;\n if (solution.status) {\n ascii += ` Status: ${solution.status}\\n`;\n }\n if (solution.optimalValue !== undefined) {\n ascii += ` Optimal Value: ${solution.optimalValue}\\n`;\n }\n if (solution.quality !== undefined) {\n ascii += ` Quality: ${solution.quality.toFixed(2)}\\n`;\n }\n if (solution.assignments) {\n ascii += ' Assignments:\\n';\n for (const [varId, value] of Object.entries(solution.assignments)) {\n ascii += ` ${varId} = ${value}\\n`;\n }\n }\n }\n\n return ascii;\n}\n","/**\n * Formal Logic Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Formal logic proof tree export to Mermaid, DOT, ASCII\n */\n\nimport type { FormalLogicThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export formal logic proof tree to visual format\n */\nexport function exportFormalLogicProof(thought: FormalLogicThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return formalLogicToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return formalLogicToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return formalLogicToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction formalLogicToMermaid(\n thought: FormalLogicThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n if (thought.propositions && thought.propositions.length > 0) {\n mermaid += ' subgraph Propositions[\"Propositions\"]\\n';\n for (const proposition of thought.propositions) {\n const propId = sanitizeId(proposition.id);\n const label = includeLabels\n ? `${proposition.symbol}: ${proposition.statement.substring(0, 40)}...`\n : proposition.symbol;\n const shape = proposition.type === 'atomic' ? ['[', ']'] : ['[[', ']]'];\n mermaid += ` ${propId}${shape[0]}${label}${shape[1]}\\n`;\n }\n mermaid += ' end\\n\\n';\n }\n\n if (thought.proof && thought.proof.steps && thought.proof.steps.length > 0) {\n mermaid += ' Theorem[\"Theorem\"]\\n';\n\n for (const step of thought.proof.steps) {\n const stepId = `Step${step.stepNumber}`;\n const label = includeLabels\n ? `${step.stepNumber}. ${step.statement.substring(0, 40)}...`\n : `Step ${step.stepNumber}`;\n\n mermaid += ` ${stepId}[\"${label}\"]\\n`;\n\n if (step.referencesSteps && step.referencesSteps.length > 0) {\n for (const refStep of step.referencesSteps) {\n mermaid += ` Step${refStep} --> ${stepId}\\n`;\n }\n }\n }\n\n const lastStep = thought.proof.steps[thought.proof.steps.length - 1];\n mermaid += ` Step${lastStep.stepNumber} --> Theorem\\n`;\n\n if (includeMetrics) {\n const completeness = (thought.proof.completeness * 100).toFixed(0);\n mermaid += `\\n Completeness[\"Completeness: ${completeness}%\"]\\n`;\n mermaid += ` Completeness -.-> Theorem\\n`;\n }\n }\n\n if (thought.logicalInferences && thought.logicalInferences.length > 0) {\n mermaid += '\\n';\n for (const inference of thought.logicalInferences) {\n const infId = sanitizeId(inference.id);\n const label = includeLabels ? inference.rule : infId;\n\n mermaid += ` ${infId}{{\"${label}\"}}\\n`;\n\n if (inference.premises) {\n for (const premiseId of inference.premises) {\n const propId = sanitizeId(premiseId);\n mermaid += ` ${propId} --> ${infId}\\n`;\n }\n }\n\n const conclusionId = sanitizeId(inference.conclusion);\n mermaid += ` ${infId} --> ${conclusionId}\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const atomicColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const compoundColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n\n if (thought.propositions) {\n for (const proposition of thought.propositions) {\n const propId = sanitizeId(proposition.id);\n const color = proposition.type === 'atomic' ? atomicColor : compoundColor;\n mermaid += ` style ${propId} fill:${color}\\n`;\n }\n }\n }\n\n return mermaid;\n}\n\nfunction formalLogicToDOT(\n thought: FormalLogicThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph FormalLogic {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n if (thought.propositions && thought.propositions.length > 0) {\n dot += ' subgraph cluster_propositions {\\n';\n dot += ' label=\"Propositions\";\\n';\n for (const proposition of thought.propositions) {\n const propId = sanitizeId(proposition.id);\n const label = includeLabels\n ? `${proposition.symbol}:\\\\n${proposition.statement.substring(0, 40)}...`\n : proposition.symbol;\n const shape = proposition.type === 'atomic' ? 'ellipse' : 'box';\n dot += ` ${propId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n dot += ' }\\n\\n';\n }\n\n if (thought.proof && thought.proof.steps && thought.proof.steps.length > 0) {\n dot += ` Theorem [label=\"Theorem:\\\\n${thought.proof.theorem.substring(0, 50)}...\", shape=doubleoctagon, style=bold];\\n\\n`;\n\n for (const step of thought.proof.steps) {\n const stepId = `Step${step.stepNumber}`;\n const label = includeLabels\n ? `${step.stepNumber}. ${step.statement.substring(0, 40)}...`\n : `Step ${step.stepNumber}`;\n const ruleLabel = step.rule ? `\\\\n(${step.rule})` : '';\n\n dot += ` ${stepId} [label=\"${label}${ruleLabel}\"];\\n`;\n\n if (step.referencesSteps) {\n for (const refStep of step.referencesSteps) {\n dot += ` Step${refStep} -> ${stepId};\\n`;\n }\n }\n }\n\n const lastStep = thought.proof.steps[thought.proof.steps.length - 1];\n dot += ` Step${lastStep.stepNumber} -> Theorem;\\n`;\n\n if (includeMetrics) {\n const completeness = (thought.proof.completeness * 100).toFixed(0);\n dot += `\\n Completeness [label=\"Completeness: ${completeness}%\", shape=note];\\n`;\n }\n }\n\n if (thought.logicalInferences && thought.logicalInferences.length > 0) {\n dot += '\\n';\n for (const inference of thought.logicalInferences) {\n const infId = sanitizeId(inference.id);\n const label = includeLabels ? inference.rule : infId;\n\n dot += ` ${infId} [label=\"${label}\", shape=diamond];\\n`;\n\n if (inference.premises) {\n for (const premiseId of inference.premises) {\n const propId = sanitizeId(premiseId);\n dot += ` ${propId} -> ${infId};\\n`;\n }\n }\n\n const conclusionId = sanitizeId(inference.conclusion);\n dot += ` ${infId} -> ${conclusionId};\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction formalLogicToASCII(thought: FormalLogicThought): string {\n let ascii = 'Formal Logic Proof:\\n';\n ascii += '==================\\n\\n';\n\n if (thought.propositions && thought.propositions.length > 0) {\n ascii += 'Propositions:\\n';\n for (const proposition of thought.propositions) {\n const typeMarker = proposition.type === 'atomic' ? '●' : '◆';\n ascii += ` ${typeMarker} ${proposition.symbol}: ${proposition.statement}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.logicalInferences && thought.logicalInferences.length > 0) {\n ascii += 'Inferences:\\n';\n for (const inference of thought.logicalInferences) {\n ascii += ` [${inference.rule}]\\n`;\n ascii += ` Premises: ${inference.premises.join(', ')}\\n`;\n ascii += ` Conclusion: ${inference.conclusion}\\n`;\n ascii += ` Valid: ${inference.valid ? '✓' : '✗'}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.proof) {\n ascii += `Proof: ${thought.proof.theorem}\\n`;\n ascii += `Technique: ${thought.proof.technique}\\n`;\n ascii += `Completeness: ${(thought.proof.completeness * 100).toFixed(0)}%\\n\\n`;\n\n if (thought.proof.steps && thought.proof.steps.length > 0) {\n ascii += 'Proof Steps:\\n';\n for (const step of thought.proof.steps) {\n ascii += ` ${step.stepNumber}. ${step.statement}\\n`;\n ascii += ` Justification: ${step.justification}\\n`;\n }\n ascii += '\\n';\n }\n\n ascii += `Conclusion: ${thought.proof.conclusion}\\n`;\n ascii += `Valid: ${thought.proof.valid ? '✓' : '✗'}\\n`;\n }\n\n if (thought.truthTable) {\n ascii += '\\nTruth Table:\\n';\n ascii += ` Tautology: ${thought.truthTable.isTautology ? '✓' : '✗'}\\n`;\n ascii += ` Contradiction: ${thought.truthTable.isContradiction ? '✓' : '✗'}\\n`;\n ascii += ` Contingent: ${thought.truthTable.isContingent ? '✓' : '✗'}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Visual Export Module (v4.3.0)\n * Sprint 8 Task 8.1: Modular visual exporter with lazy loading\n *\n * Exports thinking sessions to visual formats: Mermaid, DOT, ASCII\n * Split from monolithic 2546-line file into mode-specific modules\n */\n\n// Re-export types\nexport { type VisualFormat, type VisualExportOptions } from './types.js';\nexport { sanitizeId } from './utils.js';\n\n// Re-export mode-specific functions\nexport { exportCausalGraph } from './causal.js';\nexport { exportTemporalTimeline } from './temporal.js';\nexport { exportGameTree } from './game-theory.js';\nexport { exportBayesianNetwork } from './bayesian.js';\nexport { exportSequentialDependencyGraph } from './sequential.js';\nexport { exportShannonStageFlow } from './shannon.js';\nexport { exportAbductiveHypotheses } from './abductive.js';\nexport { exportCounterfactualScenarios } from './counterfactual.js';\nexport { exportAnalogicalMapping } from './analogical.js';\nexport { exportEvidentialBeliefs } from './evidential.js';\nexport { exportFirstPrinciplesDerivation } from './first-principles.js';\nexport { exportSystemsThinkingCausalLoops } from './systems-thinking.js';\nexport { exportScientificMethodExperiment } from './scientific-method.js';\nexport { exportOptimizationSolution } from './optimization.js';\nexport { exportFormalLogicProof } from './formal-logic.js';\n\n// Import types for unified class\nimport type {\n CausalThought,\n TemporalThought,\n GameTheoryThought,\n BayesianThought,\n SequentialThought,\n ShannonThought,\n AbductiveThought,\n CounterfactualThought,\n AnalogicalThought,\n EvidentialThought,\n FirstPrinciplesThought,\n SystemsThinkingThought,\n ScientificMethodThought,\n OptimizationThought,\n FormalLogicThought\n} from '../../types/index.js';\n\nimport type { VisualExportOptions } from './types.js';\n\n// Import exporters\nimport { exportCausalGraph } from './causal.js';\nimport { exportTemporalTimeline } from './temporal.js';\nimport { exportGameTree } from './game-theory.js';\nimport { exportBayesianNetwork } from './bayesian.js';\nimport { exportSequentialDependencyGraph } from './sequential.js';\nimport { exportShannonStageFlow } from './shannon.js';\nimport { exportAbductiveHypotheses } from './abductive.js';\nimport { exportCounterfactualScenarios } from './counterfactual.js';\nimport { exportAnalogicalMapping } from './analogical.js';\nimport { exportEvidentialBeliefs } from './evidential.js';\nimport { exportFirstPrinciplesDerivation } from './first-principles.js';\nimport { exportSystemsThinkingCausalLoops } from './systems-thinking.js';\nimport { exportScientificMethodExperiment } from './scientific-method.js';\nimport { exportOptimizationSolution } from './optimization.js';\nimport { exportFormalLogicProof } from './formal-logic.js';\n\n/**\n * Unified Visual Exporter for backward compatibility\n * Delegates to mode-specific exporters\n */\nexport class VisualExporter {\n exportCausalGraph(thought: CausalThought, options: VisualExportOptions): string {\n return exportCausalGraph(thought, options);\n }\n\n exportTemporalTimeline(thought: TemporalThought, options: VisualExportOptions): string {\n return exportTemporalTimeline(thought, options);\n }\n\n exportGameTree(thought: GameTheoryThought, options: VisualExportOptions): string {\n return exportGameTree(thought, options);\n }\n\n exportBayesianNetwork(thought: BayesianThought, options: VisualExportOptions): string {\n return exportBayesianNetwork(thought, options);\n }\n\n exportSequentialDependencyGraph(thought: SequentialThought, options: VisualExportOptions): string {\n return exportSequentialDependencyGraph(thought, options);\n }\n\n exportShannonStageFlow(thought: ShannonThought, options: VisualExportOptions): string {\n return exportShannonStageFlow(thought, options);\n }\n\n exportAbductiveHypotheses(thought: AbductiveThought, options: VisualExportOptions): string {\n return exportAbductiveHypotheses(thought, options);\n }\n\n exportCounterfactualScenarios(thought: CounterfactualThought, options: VisualExportOptions): string {\n return exportCounterfactualScenarios(thought, options);\n }\n\n exportAnalogicalMapping(thought: AnalogicalThought, options: VisualExportOptions): string {\n return exportAnalogicalMapping(thought, options);\n }\n\n exportEvidentialBeliefs(thought: EvidentialThought, options: VisualExportOptions): string {\n return exportEvidentialBeliefs(thought, options);\n }\n\n exportFirstPrinciplesDerivation(thought: FirstPrinciplesThought, options: VisualExportOptions): string {\n return exportFirstPrinciplesDerivation(thought, options);\n }\n\n exportSystemsThinkingCausalLoops(thought: SystemsThinkingThought, options: VisualExportOptions): string {\n return exportSystemsThinkingCausalLoops(thought, options);\n }\n\n exportScientificMethodExperiment(thought: ScientificMethodThought, options: VisualExportOptions): string {\n return exportScientificMethodExperiment(thought, options);\n }\n\n exportOptimizationSolution(thought: OptimizationThought, options: VisualExportOptions): string {\n return exportOptimizationSolution(thought, options);\n }\n\n exportFormalLogicProof(thought: FormalLogicThought, options: VisualExportOptions): string {\n return exportFormalLogicProof(thought, options);\n }\n}\n","/**\n * Export Service (v3.4.5)\n * Sprint 3 Task 3.3: Extract export logic from index.ts\n * Sprint 3 Task 3.2: Added dependency injection support\n *\n * Centralizes session export logic for multiple formats.\n * Handles conversion between internal session format and export formats.\n *\n * RESPONSIBILITY:\n * - Export sessions to various formats (JSON, Markdown, LaTeX, HTML, Jupyter)\n * - Handle visual exports (Mermaid, DOT, ASCII)\n * - Apply proper escaping and formatting for each format\n *\n * EXTRACTED FROM: src/index.ts (handleExport, exportTo* functions)\n */\n\nimport {\n ThinkingSession,\n ThinkingMode,\n CausalThought,\n TemporalThought,\n GameTheoryThought,\n BayesianThought,\n FirstPrinciplesThought,\n} from '../types/index.js';\nimport { VisualExporter, type VisualFormat } from '../export/visual/index.js';\nimport { escapeHtml, escapeLatex } from '../utils/sanitization.js';\nimport { ILogger } from '../interfaces/ILogger.js';\nimport { createLogger, LogLevel } from '../utils/logger.js';\n\n/**\n * Export Service - Handles session exports to multiple formats\n *\n * Provides a unified interface for exporting thinking sessions to\n * various formats including text (JSON, Markdown), document (LaTeX, HTML),\n * notebook (Jupyter), and visual (Mermaid, DOT, ASCII).\n *\n * @example\n * ```typescript\n * const exportService = new ExportService();\n * const markdown = exportService.exportSession(session, 'markdown');\n * const jupyter = exportService.exportSession(session, 'jupyter');\n * ```\n */\nexport class ExportService {\n private visualExporter: VisualExporter;\n private logger: ILogger;\n\n constructor(logger?: ILogger) {\n this.visualExporter = new VisualExporter();\n this.logger = logger || createLogger({ minLevel: LogLevel.INFO, enableConsole: true });\n }\n\n /**\n * Export a session to the specified format\n *\n * Main export method that routes to format-specific exporters.\n * Handles both standard formats (JSON, Markdown, etc.) and visual\n * formats (Mermaid, DOT, ASCII).\n *\n * @param session - The session to export\n * @param format - The desired export format\n * @returns Formatted string in the requested format\n * @throws {Error} If session has no thoughts for visual exports\n *\n * @example\n * ```typescript\n * const service = new ExportService();\n * const exported = service.exportSession(session, 'markdown');\n * ```\n */\n exportSession(\n session: ThinkingSession,\n format: 'json' | 'markdown' | 'latex' | 'html' | 'jupyter' | 'mermaid' | 'dot' | 'ascii'\n ): string {\n const startTime = Date.now();\n this.logger.debug('Export started', { sessionId: session.id, format, thoughtCount: session.thoughts.length });\n\n // Handle visual formats\n if (format === 'mermaid' || format === 'dot' || format === 'ascii') {\n const result = this.exportVisual(session, format);\n this.logger.debug('Export completed', {\n sessionId: session.id,\n format,\n duration: Date.now() - startTime,\n outputSize: result.length,\n });\n return result;\n }\n\n // Handle standard formats\n let result: string;\n switch (format) {\n case 'json':\n result = this.exportToJSON(session);\n break;\n case 'markdown':\n result = this.exportToMarkdown(session);\n break;\n case 'latex':\n result = this.exportToLatex(session);\n break;\n case 'html':\n result = this.exportToHTML(session);\n break;\n case 'jupyter':\n result = this.exportToJupyter(session);\n break;\n default:\n // Fallback to JSON for unknown formats\n result = this.exportToJSON(session);\n }\n\n this.logger.debug('Export completed', {\n sessionId: session.id,\n format,\n duration: Date.now() - startTime,\n outputSize: result.length,\n });\n\n return result;\n }\n\n /**\n * Export session to visual format (Mermaid, DOT, ASCII)\n *\n * Uses VisualExporter to generate visual representations\n * based on the session's thinking mode and thought structure.\n *\n * @param session - The session to export\n * @param format - Visual format (mermaid, dot, ascii)\n * @returns Visual representation as string\n * @throws {Error} If session has no thoughts\n */\n private exportVisual(session: ThinkingSession, format: VisualFormat): string {\n const lastThought = session.thoughts[session.thoughts.length - 1];\n\n if (!lastThought) {\n throw new Error('No thoughts in session to export');\n }\n\n // Determine which visual export method to use based on mode\n if (lastThought.mode === 'causal' && 'causalGraph' in lastThought) {\n return this.visualExporter.exportCausalGraph(lastThought as CausalThought, {\n format,\n colorScheme: 'default',\n includeLabels: true,\n includeMetrics: true,\n });\n }\n\n if (lastThought.mode === 'temporal' && 'timeline' in lastThought) {\n return this.visualExporter.exportTemporalTimeline(lastThought as TemporalThought, {\n format,\n includeLabels: true,\n });\n }\n\n if (lastThought.mode === 'gametheory' && 'game' in lastThought) {\n return this.visualExporter.exportGameTree(lastThought as GameTheoryThought, {\n format,\n colorScheme: 'default',\n includeLabels: true,\n includeMetrics: true,\n });\n }\n\n if (lastThought.mode === 'bayesian' && 'hypothesis' in lastThought) {\n return this.visualExporter.exportBayesianNetwork(lastThought as BayesianThought, {\n format,\n colorScheme: 'default',\n includeLabels: true,\n includeMetrics: true,\n });\n }\n\n if (lastThought.mode === ThinkingMode.FIRSTPRINCIPLES && 'question' in lastThought) {\n return this.visualExporter.exportFirstPrinciplesDerivation(lastThought as FirstPrinciplesThought, {\n format,\n colorScheme: 'default',\n });\n }\n\n // Generic thought sequence export for modes without specific visual exporters\n const thoughts = session.thoughts.map((t, i) =>\n `Thought ${i + 1} (${t.mode}):\\n${t.content}\\n`\n ).join('\\n');\n\n return `Session: ${session.title || 'Untitled'}\\nMode: ${lastThought.mode}\\n\\n${thoughts}`;\n }\n\n /**\n * Export session to JSON format\n *\n * Converts the session to JSON, handling Map serialization.\n *\n * @param session - The session to export\n * @returns JSON string with pretty printing\n */\n private exportToJSON(session: ThinkingSession): string {\n // Convert Map to Object for JSON serialization\n const sessionWithCustomMetrics = {\n ...session,\n metrics: {\n ...session.metrics,\n customMetrics: Object.fromEntries(session.metrics.customMetrics),\n },\n };\n\n return JSON.stringify(sessionWithCustomMetrics, null, 2);\n }\n\n /**\n * Export session to Markdown format\n *\n * Creates a human-readable Markdown document with session details\n * and all thoughts formatted as sections.\n *\n * @param session - The session to export\n * @returns Markdown-formatted string\n */\n private exportToMarkdown(session: ThinkingSession): string {\n const status = session.isComplete ? 'Complete' : 'In Progress';\n let md = `# Thinking Session: ${session.title}\\n\\n`;\n md += `**Mode**: ${session.mode}\\n`;\n md += `**Created**: ${session.createdAt.toISOString()}\\n`;\n md += `**Status**: ${status}\\n\\n`;\n md += `## Thoughts\\n\\n`;\n\n for (const thought of session.thoughts) {\n md += `### Thought ${thought.thoughtNumber}/${session.thoughts.length}\\n\\n`;\n md += `${thought.content}\\n\\n`;\n }\n\n return md;\n }\n\n /**\n * Export session to LaTeX format\n *\n * Generates a LaTeX document with proper escaping for special characters.\n * Ready for compilation with pdflatex.\n *\n * @param session - The session to export\n * @returns LaTeX document as string\n */\n private exportToLatex(session: ThinkingSession): string {\n const status = session.isComplete ? 'Complete' : 'In Progress';\n const safeTitle = escapeLatex(session.title);\n const safeMode = escapeLatex(session.mode);\n const safeStatus = escapeLatex(status);\n\n let latex = `\\\\documentclass{article}\\n`;\n latex += `\\\\usepackage[utf8]{inputenc}\\n`;\n latex += `\\\\title{${safeTitle}}\\n`;\n latex += `\\\\begin{document}\\n`;\n latex += `\\\\maketitle\\n\\n`;\n latex += `\\\\section{Session Details}\\n`;\n latex += `Mode: ${safeMode}\\\\\\\\\\n`;\n latex += `Status: ${safeStatus}\\\\\\\\\\n\\n`;\n latex += `\\\\section{Thoughts}\\n`;\n\n for (const thought of session.thoughts) {\n latex += `\\\\subsection{Thought ${thought.thoughtNumber}}\\n`;\n latex += `${escapeLatex(thought.content)}\\n\\n`;\n }\n\n latex += `\\\\end{document}\\n`;\n return latex;\n }\n\n /**\n * Export session to HTML format\n *\n * Generates a standalone HTML page with XSS protection via escaping.\n * Includes basic styling for readability.\n *\n * @param session - The session to export\n * @returns HTML document as string\n */\n private exportToHTML(session: ThinkingSession): string {\n const status = session.isComplete ? 'Complete' : 'In Progress';\n const safeTitle = escapeHtml(session.title);\n const safeMode = escapeHtml(session.mode);\n const safeStatus = escapeHtml(status);\n\n let html = `<!DOCTYPE html>\\n<html>\\n<head>\\n`;\n html += ` <meta charset=\"UTF-8\">\\n`;\n html += ` <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\\n`;\n html += ` <title>${safeTitle}</title>\\n`;\n html += ` <style>body { font-family: Arial, sans-serif; max-width: 800px; margin: 50px auto; padding: 0 20px; }</style>\\n`;\n html += `</head>\\n<body>\\n`;\n html += ` <h1>${safeTitle}</h1>\\n`;\n html += ` <p><strong>Mode:</strong> ${safeMode}</p>\\n`;\n html += ` <p><strong>Status:</strong> ${safeStatus}</p>\\n`;\n html += ` <h2>Thoughts</h2>\\n`;\n\n for (const thought of session.thoughts) {\n html += ` <div>\\n`;\n html += ` <h3>Thought ${thought.thoughtNumber}/${session.thoughts.length}</h3>\\n`;\n html += ` <p>${escapeHtml(thought.content)}</p>\\n`;\n html += ` </div>\\n`;\n }\n\n html += `</body>\\n</html>\\n`;\n return html;\n }\n\n /**\n * Export session to Jupyter Notebook format\n *\n * Creates a .ipynb file structure with Markdown cells for each thought.\n * Compatible with Jupyter Notebook and JupyterLab.\n *\n * @param session - The session to export\n * @returns JSON string representing Jupyter notebook\n */\n private exportToJupyter(session: ThinkingSession): string {\n const status = session.isComplete ? 'Complete' : 'In Progress';\n\n interface JupyterCell {\n cell_type: 'markdown' | 'code';\n metadata: Record<string, unknown>;\n source: string[];\n }\n\n interface JupyterNotebook {\n cells: JupyterCell[];\n metadata: Record<string, unknown>;\n nbformat: number;\n nbformat_minor: number;\n }\n\n const notebook: JupyterNotebook = {\n cells: [],\n metadata: {},\n nbformat: 4,\n nbformat_minor: 2,\n };\n\n // Add title cell\n notebook.cells.push({\n cell_type: 'markdown',\n metadata: {},\n source: [\n `# Thinking Session: ${session.title}\\n`,\n `\\n`,\n `**Mode**: ${session.mode}\\n`,\n `**Status**: ${status}\\n`,\n ],\n });\n\n // Add thought cells\n for (const thought of session.thoughts) {\n notebook.cells.push({\n cell_type: 'markdown',\n metadata: {},\n source: [\n `## Thought ${thought.thoughtNumber}/${session.thoughts.length}\\n`,\n `\\n`,\n `${thought.content}\\n`,\n ],\n });\n }\n\n return JSON.stringify(notebook, null, 2);\n }\n}\n","/**\n * Mode Router Service (v3.4.5)\n * Sprint 3 Task 3.3: Extract mode management logic from index.ts\n * Sprint 3 Task 3.2: Added dependency injection support\n *\n * Handles thinking mode operations including mode switching and recommendations.\n * Provides intelligent mode selection based on problem characteristics.\n *\n * RESPONSIBILITY:\n * - Switch sessions between thinking modes\n * - Recommend optimal modes for problem types\n * - Format mode recommendation responses\n *\n * EXTRACTED FROM: src/index.ts (handleSwitchMode, handleRecommendMode)\n */\n\nimport { ThinkingMode, ModeRecommender, ProblemCharacteristics } from '../types/index.js';\nimport { SessionManager } from '../session/index.js';\nimport { ILogger } from '../interfaces/ILogger.js';\nimport { createLogger, LogLevel } from '../utils/logger.js';\n\n/**\n * Mode recommendation result for formatting\n */\nexport interface ModeRecommendation {\n mode: string;\n score: number;\n reasoning: string;\n strengths: string[];\n limitations: string[];\n examples: string[];\n}\n\n/**\n * Mode combination recommendation\n */\nexport interface ModeCombinationRecommendation {\n modes: string[];\n sequence: string;\n rationale: string;\n benefits: string[];\n synergies: string[];\n}\n\n/**\n * Mode Router - Manages thinking mode operations\n *\n * Centralizes mode-related functionality including switching between\n * modes within a session and providing intelligent recommendations\n * based on problem characteristics.\n *\n * @example\n * ```typescript\n * const router = new ModeRouter(sessionManager);\n *\n * // Switch mode\n * await router.switchMode('session-123', ThinkingMode.MATHEMATICS, 'Better for this problem');\n *\n * // Get recommendations\n * const recommendations = router.recommendModes({ requiresProof: true, hasQuantities: true });\n * ```\n */\nexport class ModeRouter {\n private sessionManager: SessionManager;\n private recommender: ModeRecommender;\n private logger: ILogger;\n\n /**\n * Create a new ModeRouter\n *\n * @param sessionManager - Session manager instance for mode switching\n * @param logger - Optional logger for dependency injection\n *\n * @example\n * ```typescript\n * const router = new ModeRouter(sessionManager);\n * // Or with DI:\n * const router = new ModeRouter(sessionManager, customLogger);\n * ```\n */\n constructor(sessionManager: SessionManager, logger?: ILogger) {\n this.sessionManager = sessionManager;\n this.recommender = new ModeRecommender();\n this.logger = logger || createLogger({ minLevel: LogLevel.INFO, enableConsole: true });\n }\n\n /**\n * Switch a session to a new thinking mode\n *\n * Changes the thinking mode of an active session while preserving\n * existing thoughts. Useful when the problem characteristics change\n * or initial mode selection was suboptimal.\n *\n * @param sessionId - ID of the session to switch\n * @param newMode - The new thinking mode to use\n * @param reason - Reason for the mode switch (for logging)\n * @returns The updated session\n * @throws {Error} If session not found\n *\n * @example\n * ```typescript\n * const session = await router.switchMode(\n * 'session-123',\n * ThinkingMode.MATHEMATICS,\n * 'Problem requires mathematical proof'\n * );\n * ```\n */\n async switchMode(\n sessionId: string,\n newMode: ThinkingMode,\n reason: string\n ) {\n this.logger.info('Switching mode', {\n sessionId,\n newMode,\n reason,\n });\n const session = await this.sessionManager.switchMode(sessionId, newMode, reason);\n this.logger.debug('Mode switch completed', {\n sessionId,\n newMode,\n thoughtCount: session.thoughts.length,\n });\n return session;\n }\n\n /**\n * Get quick mode recommendation based on problem type\n *\n * Provides a fast, single-mode recommendation based on a simple\n * problem type string. Useful for quick suggestions without detailed\n * problem analysis.\n *\n * @param problemType - Simple problem type description\n * @returns Recommended thinking mode\n *\n * @example\n * ```typescript\n * const mode = router.quickRecommend('mathematical proof');\n * // Returns: ThinkingMode.MATHEMATICS\n * ```\n */\n quickRecommend(problemType: string): ThinkingMode {\n this.logger.debug('Quick recommend requested', { problemType });\n const mode = this.recommender.quickRecommend(problemType);\n this.logger.debug('Quick recommend result', { problemType, recommendedMode: mode });\n return mode;\n }\n\n /**\n * Get comprehensive mode recommendations\n *\n * Analyzes problem characteristics and returns ranked recommendations\n * for individual modes and optionally mode combinations.\n *\n * @param characteristics - Detailed problem characteristics\n * @param includeCombinations - Whether to include mode combinations\n * @returns Formatted recommendation response\n *\n * @example\n * ```typescript\n * const response = router.getRecommendations({\n * requiresProof: true,\n * hasQuantities: true,\n * hasUncertainty: false\n * }, true);\n * ```\n */\n getRecommendations(\n characteristics: ProblemCharacteristics,\n includeCombinations: boolean = false\n ): string {\n this.logger.debug('Getting mode recommendations', {\n characteristics,\n includeCombinations,\n });\n\n const modeRecs = this.recommender.recommendModes(characteristics);\n const combinationRecs = includeCombinations\n ? this.recommender.recommendCombinations(characteristics)\n : [];\n\n this.logger.debug('Recommendations generated', {\n modeCount: modeRecs.length,\n combinationCount: combinationRecs.length,\n topMode: modeRecs[0]?.mode,\n topScore: modeRecs[0]?.score,\n });\n\n let response = '# Mode Recommendations\\n\\n';\n\n // Single mode recommendations\n response += '## Individual Modes\\n\\n';\n for (const rec of modeRecs) {\n response += `### ${rec.mode} (Score: ${rec.score})\\n`;\n response += `**Reasoning**: ${rec.reasoning}\\n\\n`;\n response += `**Strengths**:\\n`;\n for (const strength of rec.strengths) {\n response += `- ${strength}\\n`;\n }\n response += `\\n**Limitations**:\\n`;\n for (const limitation of rec.limitations) {\n response += `- ${limitation}\\n`;\n }\n response += `\\n**Examples**: ${rec.examples.join(', ')}\\n\\n`;\n response += '---\\n\\n';\n }\n\n // Mode combinations\n if (combinationRecs.length > 0) {\n response += '## Recommended Mode Combinations\\n\\n';\n for (const combo of combinationRecs) {\n response += `### ${combo.modes.join(' + ')} (${combo.sequence})\\n`;\n response += `**Rationale**: ${combo.rationale}\\n\\n`;\n response += `**Benefits**:\\n`;\n for (const benefit of combo.benefits) {\n response += `- ${benefit}\\n`;\n }\n response += `\\n**Synergies**:\\n`;\n for (const synergy of combo.synergies) {\n response += `- ${synergy}\\n`;\n }\n response += '\\n---\\n\\n';\n }\n }\n\n return response;\n }\n\n /**\n * Format a quick recommendation response\n *\n * Creates a formatted response for quick recommendations.\n *\n * @param problemType - The problem type that was analyzed\n * @param recommendedMode - The recommended mode\n * @returns Formatted response string\n */\n formatQuickRecommendation(problemType: string, recommendedMode: ThinkingMode): string {\n return `Quick recommendation for \"${problemType}\":\\n\\n**Recommended Mode**: ${recommendedMode}\\n\\nFor more detailed recommendations, provide problemCharacteristics.`;\n }\n}\n","/**\n * Services module exports (v3.4.5)\n * Sprint 3 Task 3.3: Service layer for business logic\n *\n * Exports all service classes extracted from the main index.ts file.\n * Services encapsulate business logic and provide clean, testable interfaces.\n */\n\nexport { ThoughtFactory } from './ThoughtFactory.js';\nexport { ExportService } from './ExportService.js';\nexport { ModeRouter } from './ModeRouter.js';\n","#!/usr/bin/env node\n\n/**\n * DeepThinking MCP Server (v4.1.0)\n * Sprint 5: 9 focused tools replacing monolithic deepthinking tool\n * Sprint 9: Lazy service initialization for reduced startup time\n *\n * Tools:\n * - deepthinking_core: sequential, shannon, hybrid modes\n * - deepthinking_math: mathematics, physics modes\n * - deepthinking_temporal: temporal reasoning\n * - deepthinking_probabilistic: bayesian, evidential modes\n * - deepthinking_causal: causal, counterfactual, abductive modes\n * - deepthinking_strategic: gametheory, optimization modes\n * - deepthinking_analytical: analogical, firstprinciples modes\n * - deepthinking_scientific: scientificmethod, systemsthinking, formallogic modes\n * - deepthinking_session: summarize, export, get_session, switch_mode, recommend_mode\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\n\n// Import package.json for version sync\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst packageJson = JSON.parse(\n readFileSync(join(__dirname, '../package.json'), 'utf-8')\n);\n\n// Import new tool definitions and schemas\nimport { toolList, toolSchemas, isValidTool, modeToToolMap } from './tools/definitions.js';\nimport { thinkingTool } from './tools/thinking.js'; // Legacy tool for backward compatibility\nimport type { SessionManager } from './session/index.js';\nimport { ThinkingMode } from './types/index.js';\nimport type { ThoughtFactory, ExportService, ModeRouter } from './services/index.js';\n\n// Initialize server\nconst server = new Server(\n {\n name: packageJson.name,\n version: packageJson.version,\n },\n {\n capabilities: {\n tools: {},\n },\n }\n);\n\n/**\n * Lazy Service Initialization (Sprint 9.1)\n * Services are loaded on first use to reduce startup time\n */\nlet _sessionManager: SessionManager | null = null;\nlet _thoughtFactory: ThoughtFactory | null = null;\nlet _exportService: ExportService | null = null;\nlet _modeRouter: ModeRouter | null = null;\n\nasync function getSessionManager(): Promise<SessionManager> {\n if (!_sessionManager) {\n const { SessionManager } = await import('./session/index.js');\n _sessionManager = new SessionManager();\n }\n return _sessionManager;\n}\n\nasync function getThoughtFactory(): Promise<ThoughtFactory> {\n if (!_thoughtFactory) {\n const { ThoughtFactory } = await import('./services/index.js');\n _thoughtFactory = new ThoughtFactory();\n }\n return _thoughtFactory;\n}\n\nasync function getExportService(): Promise<ExportService> {\n if (!_exportService) {\n const { ExportService } = await import('./services/index.js');\n _exportService = new ExportService();\n }\n return _exportService;\n}\n\nasync function getModeRouter(): Promise<ModeRouter> {\n if (!_modeRouter) {\n const { ModeRouter } = await import('./services/index.js');\n const sessionManager = await getSessionManager();\n _modeRouter = new ModeRouter(sessionManager);\n }\n return _modeRouter;\n}\n\n// Register tool list handler - now returns all 9 focused tools + legacy\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: [\n ...toolList, // 9 new focused tools\n thinkingTool, // Legacy tool for backward compatibility\n ],\n };\n});\n\n// Register tool call handler\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n\n try {\n // Handle new focused tools\n if (isValidTool(name)) {\n const schema = toolSchemas[name as keyof typeof toolSchemas];\n const input = schema.parse(args);\n\n // Session action tool\n if (name === 'deepthinking_session') {\n return await handleSessionAction(input);\n }\n\n // All other tools are for adding thoughts\n return await handleAddThought(input, name);\n }\n\n // Handle legacy tool (backward compatibility)\n if (name === 'deepthinking') {\n const { ThinkingToolSchema } = await import('./tools/thinking.js');\n const input = ThinkingToolSchema.parse(args);\n\n // Add deprecation warning\n const deprecationWarning = '⚠️ DEPRECATED: The \"deepthinking\" tool is deprecated. ' +\n 'Use the focused tools instead: deepthinking_core, deepthinking_math, ' +\n 'deepthinking_temporal, deepthinking_probabilistic, deepthinking_causal, ' +\n 'deepthinking_strategic, deepthinking_analytical, deepthinking_scientific, ' +\n 'deepthinking_session. See docs/migration/v4.0-tool-splitting.md for details.\\n\\n';\n\n switch (input.action) {\n case 'add_thought': {\n const result = await handleAddThought(input, modeToToolMap[input.mode || 'hybrid'] || 'deepthinking_core');\n return prependWarning(result, deprecationWarning);\n }\n case 'summarize':\n case 'export':\n case 'switch_mode':\n case 'get_session':\n case 'recommend_mode': {\n const result = await handleSessionAction(input);\n return prependWarning(result, deprecationWarning);\n }\n default:\n throw new Error(`Unknown action: ${input.action}`);\n }\n }\n\n throw new Error(`Unknown tool: ${name}`);\n } catch (error) {\n return {\n content: [\n {\n type: 'text',\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n isError: true,\n };\n }\n});\n\n/**\n * Prepend a warning message to a tool result\n */\nfunction prependWarning(result: any, warning: string) {\n if (result.content && result.content[0] && result.content[0].type === 'text') {\n result.content[0].text = warning + result.content[0].text;\n }\n return result;\n}\n\n/**\n * Handle add_thought action for any thinking mode\n */\nasync function handleAddThought(input: any, _toolName: string) {\n const sessionManager = await getSessionManager();\n const thoughtFactory = await getThoughtFactory();\n\n let sessionId = input.sessionId;\n\n // Determine mode from tool name or input\n let mode: ThinkingMode = input.mode || ThinkingMode.HYBRID;\n\n // Create session if none provided\n if (!sessionId) {\n const session = await sessionManager.createSession({\n mode: mode,\n title: `Thinking Session ${new Date().toISOString()}`,\n });\n sessionId = session.id;\n }\n\n // Use ThoughtFactory to create thought\n const thought = thoughtFactory.createThought({ ...input, mode }, sessionId);\n const session = await sessionManager.addThought(sessionId, thought);\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n sessionId: session.id,\n thoughtId: thought.id,\n thoughtNumber: thought.thoughtNumber,\n mode: thought.mode,\n nextThoughtNeeded: thought.nextThoughtNeeded,\n sessionComplete: session.isComplete,\n totalThoughts: session.thoughts.length,\n }, null, 2),\n },\n ],\n };\n}\n\n/**\n * Handle session actions (summarize, export, switch_mode, get_session, recommend_mode)\n */\nasync function handleSessionAction(input: any) {\n const action = input.action;\n\n switch (action) {\n case 'summarize':\n return await handleSummarize(input);\n case 'export':\n return await handleExport(input);\n case 'switch_mode':\n return await handleSwitchMode(input);\n case 'get_session':\n return await handleGetSession(input);\n case 'recommend_mode':\n return await handleRecommendMode(input);\n default:\n throw new Error(`Unknown session action: ${action}`);\n }\n}\n\n/**\n * Handle summarize action\n */\nasync function handleSummarize(input: any) {\n if (!input.sessionId) {\n throw new Error('sessionId required for summarize action');\n }\n\n const sessionManager = await getSessionManager();\n const summary = await sessionManager.generateSummary(input.sessionId);\n\n return {\n content: [\n {\n type: 'text',\n text: summary,\n },\n ],\n };\n}\n\n/**\n * Handle export action\n */\nasync function handleExport(input: any) {\n if (!input.sessionId) {\n throw new Error('sessionId required for export action');\n }\n\n const sessionManager = await getSessionManager();\n const exportService = await getExportService();\n\n const session = await sessionManager.getSession(input.sessionId);\n if (!session) {\n throw new Error(`Session ${input.sessionId} not found`);\n }\n\n const format = input.exportFormat || 'json';\n const exported = exportService.exportSession(session, format as any);\n\n return {\n content: [{\n type: 'text' as const,\n text: exported,\n }],\n };\n}\n\n/**\n * Handle switch_mode action\n */\nasync function handleSwitchMode(input: any) {\n if (!input.sessionId || !input.newMode) {\n throw new Error('sessionId and newMode required for switch_mode action');\n }\n\n const modeRouter = await getModeRouter();\n const session = await modeRouter.switchMode(\n input.sessionId,\n input.newMode as ThinkingMode,\n 'User requested mode switch'\n );\n\n return {\n content: [\n {\n type: 'text',\n text: `Switched session ${session.id} to ${session.mode} mode`,\n },\n ],\n };\n}\n\n/**\n * Handle get_session action\n */\nasync function handleGetSession(input: any) {\n if (!input.sessionId) {\n throw new Error('sessionId required for get_session action');\n }\n\n const sessionManager = await getSessionManager();\n const session = await sessionManager.getSession(input.sessionId);\n if (!session) {\n throw new Error(`Session ${input.sessionId} not found`);\n }\n\n // Convert Map to object for JSON serialization\n const metricsWithCustom = {\n ...session.metrics,\n customMetrics: Object.fromEntries(session.metrics.customMetrics),\n };\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n id: session.id,\n title: session.title,\n mode: session.mode,\n thoughtCount: session.thoughts.length,\n isComplete: session.isComplete,\n metrics: metricsWithCustom,\n }, null, 2),\n },\n ],\n };\n}\n\n/**\n * Handle recommend_mode action\n */\nasync function handleRecommendMode(input: any) {\n const modeRouter = await getModeRouter();\n\n // Quick recommendation based on problem type\n if (input.problemType && !input.problemCharacteristics) {\n const recommendedMode = modeRouter.quickRecommend(input.problemType);\n const response = modeRouter.formatQuickRecommendation(input.problemType, recommendedMode);\n\n return {\n content: [{\n type: 'text' as const,\n text: response\n }],\n isError: false,\n };\n }\n\n // Comprehensive recommendations based on problem characteristics\n if (input.problemCharacteristics) {\n const response = modeRouter.getRecommendations(\n input.problemCharacteristics,\n input.includeCombinations || false\n );\n\n return {\n content: [{\n type: 'text' as const,\n text: response\n }],\n isError: false,\n };\n }\n\n // No valid input provided\n return {\n content: [{\n type: 'text' as const,\n text: 'Error: Please provide either problemType or problemCharacteristics for mode recommendations.'\n }],\n isError: true,\n };\n}\n\n/**\n * Main server startup\n */\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('DeepThinking MCP server running on stdio');\n}\n\nmain().catch((error) => {\n console.error('Fatal error:', error);\n process.exit(1);\n});\n","/**\n * Focused Tool Definitions (v4.4.0)\n * Sprint 5 Task 5.4: Split monolithic tool into 9 focused tools\n *\n * REFACTORED: Now using hand-written JSON schemas like working MCP servers\n * - Follows pattern from sequential-thinking-mcp and memory-mcp\n * - Zod schemas kept for runtime validation only\n */\n\nimport { jsonSchemas } from './json-schemas.js';\nimport { SessionActionSchema } from './schemas/base.js';\nimport { CoreModeSchema, StandardSchema } from './schemas/modes/core.js';\nimport { MathSchema } from './schemas/modes/mathematics.js';\nimport { TemporalSchema } from './schemas/modes/temporal.js';\nimport { ProbabilisticSchema } from './schemas/modes/probabilistic.js';\nimport { CausalSchema } from './schemas/modes/causal.js';\nimport { StrategicSchema } from './schemas/modes/strategic.js';\nimport { AnalyticalSchema } from './schemas/modes/analytical.js';\nimport { ScientificSchema } from './schemas/modes/scientific.js';\n\n/**\n * 10 focused tools with hand-written JSON schemas (v5.0.0)\n * Zod schemas used only for runtime validation\n * Phase 5: Added deepthinking_core for fundamental reasoning\n */\nexport const tools = {\n deepthinking_core: jsonSchemas[0],\n deepthinking_standard: jsonSchemas[1],\n deepthinking_math: jsonSchemas[2],\n deepthinking_temporal: jsonSchemas[3],\n deepthinking_probabilistic: jsonSchemas[4],\n deepthinking_causal: jsonSchemas[5],\n deepthinking_strategic: jsonSchemas[6],\n deepthinking_analytical: jsonSchemas[7],\n deepthinking_scientific: jsonSchemas[8],\n deepthinking_session: jsonSchemas[9],\n};\n\n/**\n * All tools as array for MCP ListTools\n */\nexport const toolList = jsonSchemas;\n\n/**\n * Tool name to schema mapping for validation\n */\nexport const toolSchemas = {\n deepthinking_core: CoreModeSchema,\n deepthinking_standard: StandardSchema,\n deepthinking_math: MathSchema,\n deepthinking_temporal: TemporalSchema,\n deepthinking_probabilistic: ProbabilisticSchema,\n deepthinking_causal: CausalSchema,\n deepthinking_strategic: StrategicSchema,\n deepthinking_analytical: AnalyticalSchema,\n deepthinking_scientific: ScientificSchema,\n deepthinking_session: SessionActionSchema,\n} as const;\n\n/**\n * Mode to tool name mapping for routing\n */\nexport const modeToToolMap: Record<string, string> = {\n // Core reasoning modes (fundamental)\n inductive: 'deepthinking_core',\n deductive: 'deepthinking_core',\n abductive: 'deepthinking_core',\n\n // Standard workflow modes\n sequential: 'deepthinking_standard',\n shannon: 'deepthinking_standard',\n hybrid: 'deepthinking_standard',\n\n // Math/Physics modes\n mathematics: 'deepthinking_math',\n physics: 'deepthinking_math',\n\n // Temporal mode\n temporal: 'deepthinking_temporal',\n\n // Probabilistic modes\n bayesian: 'deepthinking_probabilistic',\n evidential: 'deepthinking_probabilistic',\n\n // Causal modes (abductive moved to core)\n causal: 'deepthinking_causal',\n counterfactual: 'deepthinking_causal',\n\n // Strategic modes\n gametheory: 'deepthinking_strategic',\n optimization: 'deepthinking_strategic',\n\n // Analytical modes\n analogical: 'deepthinking_analytical',\n firstprinciples: 'deepthinking_analytical',\n\n // Scientific modes\n scientificmethod: 'deepthinking_scientific',\n systemsthinking: 'deepthinking_scientific',\n formallogic: 'deepthinking_scientific',\n};\n\n/**\n * Get the appropriate tool for a mode\n */\nexport function getToolForMode(mode: string): string {\n const tool = modeToToolMap[mode];\n if (!tool) {\n // Default to standard for unknown modes\n return 'deepthinking_standard';\n }\n return tool;\n}\n\n/**\n * Check if a tool name is valid\n */\nexport function isValidTool(toolName: string): boolean {\n return toolName in toolSchemas;\n}\n\n/**\n * Get schema for a tool\n */\nexport function getSchemaForTool(toolName: string) {\n if (!isValidTool(toolName)) {\n throw new Error(`Unknown tool: ${toolName}`);\n }\n return toolSchemas[toolName as keyof typeof toolSchemas];\n}\n","/**\n * Hand-Written JSON Schemas for MCP Tools (v4.4.0)\n *\n * Following the pattern used by working MCP servers (sequential-thinking-mcp, memory-mcp):\n * - JSON schemas are hand-written as plain JavaScript objects\n * - Conforming to JSON Schema draft 2020-12\n * - Zod schemas remain for runtime validation only\n */\n\n/**\n * Base properties shared by all thought-adding tools\n */\nconst baseThoughtProperties = {\n sessionId: {\n type: \"string\",\n description: \"Optional session ID. If not provided, a new session will be created.\"\n },\n thought: {\n type: \"string\",\n description: \"The current thought or reasoning step\",\n minLength: 1\n },\n thoughtNumber: {\n type: \"integer\",\n description: \"Current thought number in sequence\",\n minimum: 1\n },\n totalThoughts: {\n type: \"integer\",\n description: \"Estimated total number of thoughts needed\",\n minimum: 1\n },\n nextThoughtNeeded: {\n type: \"boolean\",\n description: \"Whether another thought step is needed\"\n },\n isRevision: {\n type: \"boolean\",\n description: \"Whether this thought revises previous thinking\"\n },\n revisesThought: {\n type: \"string\",\n description: \"ID of the thought being revised\"\n },\n revisionReason: {\n type: \"string\",\n description: \"Explanation for why revision is needed\"\n },\n branchFrom: {\n type: \"string\",\n description: \"ID of thought to branch from for alternative reasoning path\"\n },\n branchId: {\n type: \"string\",\n description: \"Identifier for this reasoning branch\"\n },\n uncertainty: {\n type: \"number\",\n description: \"Confidence level (0-1, where 1 is highest confidence)\",\n minimum: 0,\n maximum: 1\n },\n dependencies: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"IDs of thoughts this one depends on\"\n },\n assumptions: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Key assumptions made in this thought\"\n }\n} as const;\n\nconst baseThoughtRequired = [\"thought\", \"thoughtNumber\", \"totalThoughts\", \"nextThoughtNeeded\"] as const;\n\n/**\n * deepthinking_core - Fundamental reasoning modes\n */\nexport const deepthinking_core_schema = {\n name: \"deepthinking_core\",\n description: \"Core reasoning: inductive, deductive, abductive\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"inductive\", \"deductive\", \"abductive\"],\n description: \"Core reasoning mode\"\n },\n // Inductive properties\n observations: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Specific cases observed (inductive/abductive)\"\n },\n pattern: {\n type: \"string\",\n description: \"Identified pattern (inductive)\"\n },\n generalization: {\n type: \"string\",\n description: \"General principle formed (inductive)\"\n },\n confidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Strength of inference (inductive)\"\n },\n counterexamples: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Known exceptions (inductive)\"\n },\n sampleSize: {\n type: \"integer\",\n minimum: 1,\n description: \"Number of observations (inductive)\"\n },\n // Deductive properties\n premises: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"General principles (deductive)\"\n },\n conclusion: {\n type: \"string\",\n description: \"Specific conclusion (deductive)\"\n },\n logicForm: {\n type: \"string\",\n description: \"Logic form: modus ponens, modus tollens, etc. (deductive)\"\n },\n validityCheck: {\n type: \"boolean\",\n description: \"Is the deduction logically valid? (deductive)\"\n },\n soundnessCheck: {\n type: \"boolean\",\n description: \"Are the premises true? (deductive)\"\n },\n // Abductive properties\n hypotheses: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n explanation: { type: \"string\" },\n score: { type: \"number\" }\n },\n required: [\"id\", \"explanation\"],\n additionalProperties: false\n },\n description: \"Candidate explanations (abductive)\"\n },\n bestExplanation: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n explanation: { type: \"string\" },\n score: { type: \"number\" }\n },\n required: [\"id\", \"explanation\"],\n additionalProperties: false,\n description: \"Best explanation chosen (abductive)\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_standard - Sequential, Shannon, Hybrid modes\n */\nexport const deepthinking_standard_schema = {\n name: \"deepthinking_standard\",\n description: \"Standard workflows: sequential, shannon (5-stage), hybrid\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"sequential\", \"shannon\", \"hybrid\"],\n description: \"Thinking mode to use\"\n },\n stage: {\n type: \"string\",\n enum: [\"problem_definition\", \"constraints\", \"model\", \"proof\", \"implementation\"],\n description: \"Shannon methodology stage (only for shannon mode)\"\n },\n activeModes: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Active sub-modes for hybrid mode\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_math - Mathematics and Physics modes\n */\nexport const deepthinking_math_schema = {\n name: \"deepthinking_math\",\n description: \"Math/physics: proofs, tensors, LaTeX, conservation laws\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"mathematics\", \"physics\"],\n description: \"Mathematical reasoning mode\"\n },\n mathematicalModel: {\n type: \"object\",\n properties: {\n latex: { type: \"string\", description: \"LaTeX representation\" },\n symbolic: { type: \"string\", description: \"Symbolic notation\" },\n ascii: { type: \"string\", description: \"ASCII math representation\" }\n },\n required: [\"latex\", \"symbolic\"],\n additionalProperties: false,\n description: \"Mathematical model representation\"\n },\n proofStrategy: {\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"direct\", \"contradiction\", \"induction\", \"construction\", \"contrapositive\"],\n description: \"Type of mathematical proof\"\n },\n steps: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Proof steps\"\n }\n },\n required: [\"type\", \"steps\"],\n additionalProperties: false,\n description: \"Proof strategy being used\"\n },\n tensorProperties: {\n type: \"object\",\n properties: {\n rank: {\n type: \"array\",\n items: { type: \"integer\" },\n minItems: 2,\n maxItems: 2,\n description: \"Tensor rank as [contravariant, covariant]\"\n },\n components: { type: \"string\", description: \"Tensor components\" },\n latex: { type: \"string\", description: \"LaTeX representation\" },\n symmetries: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Symmetry properties\"\n },\n invariants: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Invariant quantities\"\n },\n transformation: {\n type: \"string\",\n enum: [\"covariant\", \"contravariant\", \"mixed\"],\n description: \"Transformation type\"\n }\n },\n required: [\"rank\", \"components\", \"latex\", \"transformation\"],\n additionalProperties: false,\n description: \"Tensor properties for physics calculations\"\n },\n physicalInterpretation: {\n type: \"object\",\n properties: {\n quantity: { type: \"string\", description: \"Physical quantity being described\" },\n units: { type: \"string\", description: \"Units of the quantity\" },\n conservationLaws: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Conservation laws applicable\"\n }\n },\n required: [\"quantity\", \"units\", \"conservationLaws\"],\n additionalProperties: false,\n description: \"Physical interpretation of the model\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_temporal - Temporal reasoning\n */\nexport const deepthinking_temporal_schema = {\n name: \"deepthinking_temporal\",\n description: \"Temporal: timelines, Allen intervals, event sequencing\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"temporal\"],\n description: \"Temporal reasoning mode\"\n },\n timeline: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"Timeline ID\" },\n name: { type: \"string\", description: \"Timeline name\" },\n timeUnit: {\n type: \"string\",\n enum: [\"milliseconds\", \"seconds\", \"minutes\", \"hours\", \"days\", \"months\", \"years\"],\n description: \"Time unit\"\n },\n events: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Event IDs in this timeline\"\n },\n startTime: { type: \"number\", description: \"Timeline start time (optional)\" },\n endTime: { type: \"number\", description: \"Timeline end time (optional)\" }\n },\n required: [\"id\", \"name\", \"timeUnit\", \"events\"],\n additionalProperties: false,\n description: \"Timeline definition\"\n },\n events: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n timestamp: { type: \"number\", description: \"Event timestamp as number\" },\n type: {\n type: \"string\",\n enum: [\"instant\", \"interval\"],\n description: \"Event type\"\n },\n duration: { type: \"number\", description: \"Event duration (optional)\" },\n properties: {\n type: \"object\",\n additionalProperties: true,\n description: \"Additional event properties\"\n }\n },\n required: [\"id\", \"name\", \"description\", \"timestamp\", \"type\"],\n additionalProperties: false\n },\n description: \"Temporal events\"\n },\n constraints: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n type: {\n type: \"string\",\n enum: [\"before\", \"after\", \"during\", \"simultaneous\"],\n description: \"Constraint type\"\n },\n subject: { type: \"string\", description: \"Subject event ID\" },\n object: { type: \"string\", description: \"Object event ID\" },\n confidence: { type: \"number\", minimum: 0, maximum: 1, description: \"Confidence in constraint\" }\n },\n required: [\"id\", \"type\", \"subject\", \"object\", \"confidence\"],\n additionalProperties: false\n },\n description: \"Temporal constraints\"\n },\n intervals: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n start: { type: \"number\", description: \"Interval start\" },\n end: { type: \"number\", description: \"Interval end\" },\n contains: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Event IDs contained in this interval\"\n },\n overlaps: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Interval IDs that overlap\"\n }\n },\n required: [\"id\", \"name\", \"start\", \"end\"],\n additionalProperties: false\n },\n description: \"Temporal intervals\"\n },\n relations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n from: { type: \"string\", description: \"Source event ID\" },\n to: { type: \"string\", description: \"Target event ID\" },\n relationType: {\n type: \"string\",\n enum: [\"before\", \"after\", \"during\", \"overlaps\", \"meets\", \"starts\", \"finishes\", \"equals\", \"causes\"],\n description: \"Relation type (Allen's interval algebra)\"\n },\n strength: { type: \"number\", minimum: 0, maximum: 1, description: \"Relation strength\" },\n delay: { type: \"number\", description: \"Temporal delay (optional)\" }\n },\n required: [\"id\", \"from\", \"to\", \"relationType\", \"strength\"],\n additionalProperties: false\n },\n description: \"Temporal relations between events\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_probabilistic - Bayesian and Evidential reasoning\n */\nexport const deepthinking_probabilistic_schema = {\n name: \"deepthinking_probabilistic\",\n description: \"Probabilistic: Bayesian updates, Dempster-Shafer belief\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"bayesian\", \"evidential\"],\n description: \"Probabilistic reasoning mode\"\n },\n priorProbability: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Prior probability before evidence\"\n },\n likelihood: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Likelihood of evidence given hypothesis\"\n },\n posteriorProbability: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Posterior probability after evidence\"\n },\n evidence: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Evidence considered\"\n },\n hypotheses: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n description: { type: \"string\" },\n probability: { type: \"number\", minimum: 0, maximum: 1 }\n },\n required: [\"id\", \"description\"],\n additionalProperties: false\n },\n description: \"Hypotheses under consideration\"\n },\n frameOfDiscernment: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Frame of discernment for Dempster-Shafer theory\"\n },\n massFunction: {\n type: \"object\",\n additionalProperties: { type: \"number\", minimum: 0, maximum: 1 },\n description: \"Mass function assignments\"\n },\n beliefFunction: {\n type: \"object\",\n additionalProperties: { type: \"number\", minimum: 0, maximum: 1 },\n description: \"Belief function values\"\n },\n plausibilityFunction: {\n type: \"object\",\n additionalProperties: { type: \"number\", minimum: 0, maximum: 1 },\n description: \"Plausibility function values\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_causal - Causal and Counterfactual reasoning\n */\nexport const deepthinking_causal_schema = {\n name: \"deepthinking_causal\",\n description: \"Causal: graphs, counterfactuals (abductive moved to core)\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"causal\", \"counterfactual\"],\n description: \"Causal reasoning mode\"\n },\n nodes: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n description: { type: \"string\" }\n },\n required: [\"id\", \"name\"],\n additionalProperties: false\n },\n description: \"Nodes in the causal graph\"\n },\n edges: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n from: { type: \"string\" },\n to: { type: \"string\" },\n strength: { type: \"number\", minimum: 0, maximum: 1 },\n type: { type: \"string\" }\n },\n required: [\"from\", \"to\"],\n additionalProperties: false\n },\n description: \"Causal edges in the graph\"\n },\n interventions: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n node: { type: \"string\" },\n value: { type: \"string\" },\n effect: { type: \"string\" }\n },\n required: [\"node\"],\n additionalProperties: false\n },\n description: \"Interventions applied to the causal graph\"\n },\n counterfactual: {\n type: \"object\",\n properties: {\n actual: { type: \"string\" },\n hypothetical: { type: \"string\" },\n consequence: { type: \"string\" }\n },\n additionalProperties: false,\n description: \"Counterfactual scenario\"\n },\n observations: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Observed phenomena for abductive reasoning\"\n },\n explanations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n hypothesis: { type: \"string\" },\n plausibility: { type: \"number\", minimum: 0, maximum: 1 }\n },\n required: [\"hypothesis\"],\n additionalProperties: false\n },\n description: \"Candidate explanations\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_strategic - Game Theory and Optimization\n */\nexport const deepthinking_strategic_schema = {\n name: \"deepthinking_strategic\",\n description: \"Strategic: game theory, Nash equilibria, optimization\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"gametheory\", \"optimization\"],\n description: \"Strategic reasoning mode\"\n },\n players: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n isRational: { type: \"boolean\", description: \"Whether player is rational\" },\n availableStrategies: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Strategy IDs available to this player\"\n },\n role: { type: \"string\", description: \"Player's role in the game\" }\n },\n required: [\"id\", \"name\", \"isRational\", \"availableStrategies\"],\n additionalProperties: false\n },\n description: \"Players in the game\"\n },\n strategies: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n playerId: { type: \"string\", description: \"ID of the player using this strategy\" },\n name: { type: \"string\", description: \"Strategy name\" },\n description: { type: \"string\", description: \"Strategy description\" },\n isPure: { type: \"boolean\", description: \"Whether this is a pure strategy\" },\n probability: { type: \"number\", minimum: 0, maximum: 1, description: \"Probability for mixed strategies\" }\n },\n required: [\"id\", \"playerId\", \"name\", \"description\", \"isPure\"],\n additionalProperties: false\n },\n description: \"Available strategies\"\n },\n payoffMatrix: {\n type: \"object\",\n properties: {\n players: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Player IDs in the matrix\"\n },\n dimensions: {\n type: \"array\",\n items: { type: \"number\" },\n description: \"Dimensions of the payoff matrix\"\n },\n payoffs: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n strategyProfile: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Strategy IDs for this profile\"\n },\n payoffs: {\n type: \"array\",\n items: { type: \"number\" },\n description: \"Payoff values for each player\"\n }\n },\n required: [\"strategyProfile\", \"payoffs\"],\n additionalProperties: false\n },\n description: \"Payoff entries\"\n }\n },\n required: [\"players\", \"dimensions\", \"payoffs\"],\n additionalProperties: false,\n description: \"Payoff matrix for the game\"\n },\n objectiveFunction: {\n type: \"string\",\n description: \"Function to optimize\"\n },\n constraints: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Optimization constraints\"\n },\n optimizationMethod: {\n type: \"string\",\n description: \"Method used for optimization\"\n },\n solution: {\n type: \"object\",\n properties: {\n value: { type: \"string\" },\n variables: {\n type: \"object\",\n additionalProperties: { type: \"number\" }\n }\n },\n additionalProperties: false,\n description: \"Optimization solution\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_analytical - Analogical and First Principles reasoning\n */\nexport const deepthinking_analytical_schema = {\n name: \"deepthinking_analytical\",\n description: \"Analytical: analogical mapping, first principles\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"analogical\", \"firstprinciples\"],\n description: \"Analytical reasoning mode\"\n },\n sourceAnalogy: {\n type: \"object\",\n properties: {\n domain: { type: \"string\" },\n elements: {\n type: \"array\",\n items: { type: \"string\" }\n },\n relations: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n additionalProperties: false,\n description: \"Source domain for analogy\"\n },\n targetAnalogy: {\n type: \"object\",\n properties: {\n domain: { type: \"string\" },\n elements: {\n type: \"array\",\n items: { type: \"string\" }\n },\n relations: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n additionalProperties: false,\n description: \"Target domain for analogy\"\n },\n mappings: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n source: { type: \"string\" },\n target: { type: \"string\" },\n confidence: { type: \"number\", minimum: 0, maximum: 1 }\n },\n required: [\"source\", \"target\"],\n additionalProperties: false\n },\n description: \"Mappings between domains\"\n },\n fundamentals: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Fundamental truths or axioms\"\n },\n derivedInsights: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Insights derived from first principles\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_scientific - Scientific Method, Systems Thinking, Formal Logic\n */\nexport const deepthinking_scientific_schema = {\n name: \"deepthinking_scientific\",\n description: \"Scientific: hypothesis testing, systems thinking, formal logic\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"scientificmethod\", \"systemsthinking\", \"formallogic\"],\n description: \"Scientific reasoning mode\"\n },\n hypothesis: {\n type: \"string\",\n description: \"Scientific hypothesis\"\n },\n predictions: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Testable predictions\"\n },\n experiments: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n description: { type: \"string\" },\n result: { type: \"string\" }\n },\n required: [\"id\", \"description\"],\n additionalProperties: false\n },\n description: \"Experiments conducted\"\n },\n systemComponents: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n role: { type: \"string\" }\n },\n required: [\"id\", \"name\"],\n additionalProperties: false\n },\n description: \"Components of the system\"\n },\n interactions: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n from: { type: \"string\" },\n to: { type: \"string\" },\n type: { type: \"string\" }\n },\n required: [\"from\", \"to\", \"type\"],\n additionalProperties: false\n },\n description: \"Interactions between components\"\n },\n feedbackLoops: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"positive\", \"negative\", \"neutral\"]\n },\n components: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n additionalProperties: false\n },\n description: \"Feedback loops in the system\"\n },\n premises: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Logical premises\"\n },\n conclusion: {\n type: \"string\",\n description: \"Logical conclusion\"\n },\n inference: {\n type: \"string\",\n description: \"Type of logical inference used\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_session - Session management actions\n */\nexport const deepthinking_session_schema = {\n name: \"deepthinking_session\",\n description: \"Session: summarize, export, get, switch_mode, recommend\",\n inputSchema: {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n description: \"Session ID (required for most actions except recommend_mode)\"\n },\n action: {\n type: \"string\",\n enum: [\"summarize\", \"export\", \"get_session\", \"switch_mode\", \"recommend_mode\"],\n description: \"Session action to perform\"\n },\n exportFormat: {\n type: \"string\",\n enum: [\"markdown\", \"latex\", \"json\", \"html\", \"jupyter\", \"mermaid\", \"dot\", \"ascii\"],\n description: \"Export format (for export action)\"\n },\n newMode: {\n type: \"string\",\n description: \"New thinking mode (for switch_mode action)\"\n },\n problemType: {\n type: \"string\",\n description: \"Quick problem type for mode recommendation\"\n },\n problemCharacteristics: {\n type: \"object\",\n properties: {\n domain: { type: \"string\", description: \"Problem domain\" },\n complexity: {\n type: \"string\",\n enum: [\"low\", \"medium\", \"high\"],\n description: \"Problem complexity level\"\n },\n uncertainty: {\n type: \"string\",\n enum: [\"low\", \"medium\", \"high\"],\n description: \"Uncertainty level\"\n },\n timeDependent: { type: \"boolean\", description: \"Whether problem involves time\" },\n multiAgent: { type: \"boolean\", description: \"Whether problem involves multiple agents\" },\n requiresProof: { type: \"boolean\", description: \"Whether formal proof is needed\" },\n requiresQuantification: { type: \"boolean\", description: \"Whether quantitative analysis is needed\" },\n hasIncompleteInfo: { type: \"boolean\", description: \"Whether information is incomplete\" },\n requiresExplanation: { type: \"boolean\", description: \"Whether explanation is needed\" },\n hasAlternatives: { type: \"boolean\", description: \"Whether alternative scenarios exist\" }\n },\n required: [\"domain\", \"complexity\", \"uncertainty\", \"timeDependent\", \"multiAgent\", \"requiresProof\", \"requiresQuantification\", \"hasIncompleteInfo\", \"requiresExplanation\", \"hasAlternatives\"],\n additionalProperties: false,\n description: \"Detailed problem characteristics for comprehensive recommendation\"\n },\n includeCombinations: {\n type: \"boolean\",\n description: \"Include mode combinations in recommendations\"\n }\n },\n required: [\"action\"],\n additionalProperties: false\n }\n} as const;\n\n/**\n * All tool schemas as array\n */\nexport const jsonSchemas = [\n deepthinking_core_schema,\n deepthinking_standard_schema,\n deepthinking_math_schema,\n deepthinking_temporal_schema,\n deepthinking_probabilistic_schema,\n deepthinking_causal_schema,\n deepthinking_strategic_schema,\n deepthinking_analytical_schema,\n deepthinking_scientific_schema,\n deepthinking_session_schema,\n] as const;\n","/**\n * Base Thought Schema (v4.1.0)\n * Sprint 5 Task 5.2: Shared properties for all thinking modes\n * Sprint 7 Task 7.5: Use shared enums\n */\n\nimport { z } from 'zod';\nimport {\n ConfidenceSchema,\n PositiveIntSchema,\n SessionActionEnum,\n ExportFormatEnum,\n LevelEnum,\n} from './shared.js';\n\n/**\n * Base schema with properties common to all thought types\n */\nexport const BaseThoughtSchema = z.object({\n sessionId: z.string().optional(),\n thought: z.string().min(1),\n thoughtNumber: PositiveIntSchema,\n totalThoughts: PositiveIntSchema,\n nextThoughtNeeded: z.boolean(),\n isRevision: z.boolean().optional(),\n revisesThought: z.string().optional(),\n revisionReason: z.string().optional(),\n branchFrom: z.string().optional(),\n branchId: z.string().optional(),\n uncertainty: ConfidenceSchema.optional(),\n dependencies: z.array(z.string()).optional(),\n assumptions: z.array(z.string()).optional(),\n});\n\nexport type BaseThoughtInput = z.infer<typeof BaseThoughtSchema>;\n\n/**\n * Session action schema for non-thought operations\n */\nexport const SessionActionSchema = z.object({\n sessionId: z.string().optional(),\n action: SessionActionEnum,\n exportFormat: ExportFormatEnum.optional(),\n newMode: z.string().optional(),\n problemType: z.string().optional(),\n problemCharacteristics: z.object({\n domain: z.string(),\n complexity: LevelEnum,\n uncertainty: LevelEnum,\n timeDependent: z.boolean(),\n multiAgent: z.boolean(),\n requiresProof: z.boolean(),\n requiresQuantification: z.boolean(),\n hasIncompleteInfo: z.boolean(),\n requiresExplanation: z.boolean(),\n hasAlternatives: z.boolean(),\n }).optional(),\n includeCombinations: z.boolean().optional(),\n});\n\nexport type SessionActionInput = z.infer<typeof SessionActionSchema>;\n","/**\n * Shared Schema Components (v4.1.0)\n * Sprint 7 Task 7.5: Consolidate common schema patterns\n *\n * Reduces duplication across mode-specific schemas.\n * Import these shared components instead of redefining.\n */\n\nimport { z } from 'zod';\n\n// ============================================================\n// NUMERIC SCHEMAS\n// ============================================================\n\n/**\n * Confidence/probability value (0-1 range)\n * Used for: uncertainty, confidence, probability, strength, mass\n */\nexport const ConfidenceSchema = z.number().min(0).max(1);\n\n/**\n * Positive integer (1+)\n */\nexport const PositiveIntSchema = z.number().int().min(1);\n\n// ============================================================\n// COMMON ENUMS\n// ============================================================\n\n/**\n * Three-level scale (low/medium/high)\n * Used for: complexity, uncertainty, priority\n */\nexport const LevelEnum = z.enum(['low', 'medium', 'high']);\n\n/**\n * Impact assessment\n */\nexport const ImpactEnum = z.enum(['positive', 'negative', 'neutral']);\n\n/**\n * Export formats supported by DeepThinking MCP\n */\nexport const ExportFormatEnum = z.enum([\n 'markdown',\n 'latex',\n 'json',\n 'html',\n 'jupyter',\n 'mermaid',\n 'dot',\n 'ascii',\n]);\n\n/**\n * Session actions\n */\nexport const SessionActionEnum = z.enum([\n 'summarize',\n 'export',\n 'get_session',\n 'switch_mode',\n 'recommend_mode',\n]);\n\n/**\n * Proof strategy types (mathematics mode)\n */\nexport const ProofTypeEnum = z.enum([\n 'direct',\n 'contradiction',\n 'induction',\n 'construction',\n 'contrapositive',\n]);\n\n/**\n * Time units\n */\nexport const TimeUnitEnum = z.enum([\n 'milliseconds',\n 'seconds',\n 'minutes',\n 'hours',\n 'days',\n 'months',\n 'years',\n]);\n\n/**\n * Temporal constraint types (Allen's interval algebra)\n */\nexport const TemporalConstraintEnum = z.enum([\n 'before',\n 'after',\n 'during',\n 'overlaps',\n 'meets',\n 'starts',\n 'finishes',\n 'equals',\n]);\n\n/**\n * Temporal relation types\n */\nexport const TemporalRelationEnum = z.enum([\n 'before',\n 'after',\n 'during',\n 'overlaps',\n 'meets',\n 'starts',\n 'finishes',\n 'equals',\n 'causes',\n]);\n\n/**\n * Event types\n */\nexport const EventTypeEnum = z.enum(['instant', 'interval']);\n\n/**\n * Tensor transformation types\n */\nexport const TransformationEnum = z.enum(['covariant', 'contravariant', 'mixed']);\n\n/**\n * Shannon methodology stages\n */\nexport const ShannonStageEnum = z.enum([\n 'problem_definition',\n 'constraints',\n 'model',\n 'proof',\n 'implementation',\n]);\n\n// ============================================================\n// REUSABLE OBJECT SCHEMAS\n// ============================================================\n\n/**\n * Basic entity with ID and name\n */\nexport const EntitySchema = z.object({\n id: z.string(),\n name: z.string(),\n});\n\n/**\n * Entity with description\n */\nexport const DescribedEntitySchema = EntitySchema.extend({\n description: z.string(),\n});\n\n// ============================================================\n// TYPE EXPORTS\n// ============================================================\n\nexport type Confidence = z.infer<typeof ConfidenceSchema>;\nexport type Level = z.infer<typeof LevelEnum>;\nexport type Impact = z.infer<typeof ImpactEnum>;\nexport type ExportFormat = z.infer<typeof ExportFormatEnum>;\nexport type SessionAction = z.infer<typeof SessionActionEnum>;\nexport type ProofType = z.infer<typeof ProofTypeEnum>;\nexport type TimeUnit = z.infer<typeof TimeUnitEnum>;\nexport type TemporalConstraint = z.infer<typeof TemporalConstraintEnum>;\nexport type TemporalRelation = z.infer<typeof TemporalRelationEnum>;\nexport type EventType = z.infer<typeof EventTypeEnum>;\nexport type Transformation = z.infer<typeof TransformationEnum>;\nexport type ShannonStage = z.infer<typeof ShannonStageEnum>;\n","/**\n * Core Mode Schemas (v5.0.0)\n * Phase 5 Sprint 2: Renamed to reflect restructuring\n * - StandardSchema: Sequential, Shannon, Hybrid modes (was CoreSchema)\n * - CoreModeSchema: Inductive, Deductive, Abductive modes (NEW)\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport { ShannonStageEnum } from '../shared.js';\n\n/**\n * Standard workflow modes (sequential, shannon, hybrid)\n * Renamed from CoreSchema in v5.0.0\n */\nexport const StandardSchema = BaseThoughtSchema.extend({\n mode: z.enum(['sequential', 'shannon', 'hybrid']),\n stage: ShannonStageEnum.optional(),\n activeModes: z.array(z.string()).optional(),\n});\n\n/**\n * Core reasoning modes (inductive, deductive, abductive)\n * NEW in v5.0.0\n */\nexport const CoreModeSchema = BaseThoughtSchema.extend({\n mode: z.enum(['inductive', 'deductive', 'abductive']),\n // Inductive properties\n observations: z.array(z.string()).optional(),\n pattern: z.string().optional(),\n generalization: z.string().optional(),\n confidence: z.number().min(0).max(1).optional(),\n counterexamples: z.array(z.string()).optional(),\n sampleSize: z.number().int().min(1).optional(),\n // Deductive properties\n premises: z.array(z.string()).optional(),\n conclusion: z.string().optional(),\n logicForm: z.string().optional(),\n validityCheck: z.boolean().optional(),\n soundnessCheck: z.boolean().optional(),\n // Abductive properties\n hypotheses: z.array(z.object({\n id: z.string(),\n explanation: z.string(),\n score: z.number().optional(),\n })).optional(),\n bestExplanation: z.object({\n id: z.string(),\n explanation: z.string(),\n score: z.number().optional(),\n }).optional(),\n});\n\n// Backward compatibility export\nexport const CoreSchema = StandardSchema;\n\nexport type StandardInput = z.infer<typeof StandardSchema>;\nexport type CoreModeInput = z.infer<typeof CoreModeSchema>;\nexport type CoreInput = z.infer<typeof CoreSchema>;\n","/**\n * Mathematics Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Mathematics, Physics modes\n * Sprint 7 Task 7.5: Use shared enums\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport { ProofTypeEnum, TransformationEnum } from '../shared.js';\n\nconst ProofStrategySchema = z.object({\n type: ProofTypeEnum,\n steps: z.array(z.string()),\n});\n\nconst MathematicalModelSchema = z.object({\n latex: z.string(),\n symbolic: z.string(),\n ascii: z.string().optional(),\n});\n\nconst TensorPropertiesSchema = z.object({\n rank: z.tuple([z.number(), z.number()]),\n components: z.string(),\n latex: z.string(),\n symmetries: z.array(z.string()),\n invariants: z.array(z.string()),\n transformation: TransformationEnum,\n});\n\nconst PhysicalInterpretationSchema = z.object({\n quantity: z.string(),\n units: z.string(),\n conservationLaws: z.array(z.string()),\n});\n\nexport const MathSchema = BaseThoughtSchema.extend({\n mode: z.enum(['mathematics', 'physics']),\n thoughtType: z.string().optional(),\n proofStrategy: ProofStrategySchema.optional(),\n mathematicalModel: MathematicalModelSchema.optional(),\n tensorProperties: TensorPropertiesSchema.optional(),\n physicalInterpretation: PhysicalInterpretationSchema.optional(),\n});\n\nexport type MathInput = z.infer<typeof MathSchema>;\n","/**\n * Temporal Mode Schema (v4.1.0)\n * Sprint 5 Task 5.3: Temporal reasoning with Allen's interval algebra\n * Sprint 7 Task 7.5: Use shared enums\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport {\n ConfidenceSchema,\n TimeUnitEnum,\n TemporalConstraintEnum,\n TemporalRelationEnum,\n EventTypeEnum,\n} from '../shared.js';\n\nconst TimelineSchema = z.object({\n id: z.string(),\n name: z.string(),\n timeUnit: TimeUnitEnum,\n events: z.array(z.string()),\n startTime: z.number().optional(),\n endTime: z.number().optional(),\n});\n\nconst TemporalEventSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n timestamp: z.number(),\n type: EventTypeEnum,\n duration: z.number().optional(),\n properties: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst TemporalConstraintSchema = z.object({\n id: z.string(),\n type: TemporalConstraintEnum,\n subject: z.string(),\n object: z.string(),\n confidence: ConfidenceSchema,\n});\n\nconst TemporalIntervalSchema = z.object({\n id: z.string(),\n name: z.string(),\n start: z.number(),\n end: z.number(),\n contains: z.array(z.string()).optional(),\n overlaps: z.array(z.string()).optional(),\n});\n\nconst TemporalRelationSchema = z.object({\n id: z.string(),\n from: z.string(),\n to: z.string(),\n relationType: TemporalRelationEnum,\n strength: ConfidenceSchema,\n delay: z.number().optional(),\n});\n\n/**\n * Temporal reasoning schema\n */\nexport const TemporalSchema = BaseThoughtSchema.extend({\n mode: z.literal('temporal'),\n timeline: TimelineSchema.optional(),\n events: z.array(TemporalEventSchema).optional(),\n constraints: z.array(TemporalConstraintSchema).optional(),\n intervals: z.array(TemporalIntervalSchema).optional(),\n relations: z.array(TemporalRelationSchema).optional(),\n});\n\nexport type TemporalInput = z.infer<typeof TemporalSchema>;\n","/**\n * Probabilistic Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Bayesian, Evidential modes\n * Sprint 7 Task 7.5: Use shared schemas\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport { ConfidenceSchema } from '../shared.js';\n\nconst BeliefMassSchema = z.object({\n hypothesisSet: z.array(z.string()),\n mass: ConfidenceSchema,\n justification: z.string(),\n});\n\n/**\n * Probabilistic reasoning schema (Bayesian + Evidential)\n */\nexport const ProbabilisticSchema = BaseThoughtSchema.extend({\n mode: z.enum(['bayesian', 'evidential']),\n\n // Evidential (Dempster-Shafer) specific\n frameOfDiscernment: z.array(z.string()).optional(),\n beliefMasses: z.array(BeliefMassSchema).optional(),\n});\n\nexport type ProbabilisticInput = z.infer<typeof ProbabilisticSchema>;\n","/**\n * Causal Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Causal, Counterfactual, Abductive modes\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\n\nexport const CausalSchema = BaseThoughtSchema.extend({\n mode: z.enum(['causal', 'counterfactual', 'abductive']),\n});\n\nexport type CausalInput = z.infer<typeof CausalSchema>;\n","/**\n * Strategic Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Game Theory, Optimization modes\n * Sprint 7 Task 7.5: Use shared schemas\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport { ConfidenceSchema } from '../shared.js';\n\nconst PlayerSchema = z.object({\n id: z.string(),\n name: z.string(),\n isRational: z.boolean(),\n availableStrategies: z.array(z.string()),\n role: z.string().optional(),\n});\n\nconst StrategySchema = z.object({\n id: z.string(),\n playerId: z.string(),\n name: z.string(),\n description: z.string(),\n isPure: z.boolean(),\n probability: ConfidenceSchema.optional(),\n});\n\n/**\n * Payoff entry\n */\nconst PayoffEntrySchema = z.object({\n strategyProfile: z.array(z.string()),\n payoffs: z.array(z.number()),\n});\n\n/**\n * Payoff matrix\n */\nconst PayoffMatrixSchema = z.object({\n players: z.array(z.string()),\n dimensions: z.array(z.number()),\n payoffs: z.array(PayoffEntrySchema),\n});\n\n/**\n * Strategic reasoning schema (Game Theory + Optimization)\n */\nexport const StrategicSchema = BaseThoughtSchema.extend({\n mode: z.enum(['gametheory', 'optimization']),\n\n // Game theory specific\n players: z.array(PlayerSchema).optional(),\n strategies: z.array(StrategySchema).optional(),\n payoffMatrix: PayoffMatrixSchema.optional(),\n});\n\nexport type StrategicInput = z.infer<typeof StrategicSchema>;\n","/**\n * Analytical Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Analogical, First Principles modes\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\n\nexport const AnalyticalSchema = BaseThoughtSchema.extend({\n mode: z.enum(['analogical', 'firstprinciples']),\n});\n\nexport type AnalyticalInput = z.infer<typeof AnalyticalSchema>;\n","/**\n * Scientific Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Scientific Method, Systems Thinking, Formal Logic modes\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\n\nexport const ScientificSchema = BaseThoughtSchema.extend({\n mode: z.enum(['scientificmethod', 'systemsthinking', 'formallogic']),\n});\n\nexport type ScientificInput = z.infer<typeof ScientificSchema>;\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../src/tools/thinking.ts","../src/types/core.ts","../src/types/session.ts","../src/types/modes/recommendations.ts","../src/types/index.ts","../src/utils/errors.ts","../src/utils/sanitization.ts","../src/utils/logger.ts","../src/cache/lru.ts","../src/config/index.ts","../src/validation/cache.ts","../src/session/SessionMetricsCalculator.ts","../src/session/manager.ts","../src/session/index.ts","../src/utils/type-guards.ts","../src/services/ThoughtFactory.ts","../src/export/visual/utils.ts","../src/export/visual/causal.ts","../src/export/visual/temporal.ts","../src/export/visual/game-theory.ts","../src/export/visual/bayesian.ts","../src/export/visual/sequential.ts","../src/export/visual/shannon.ts","../src/export/visual/abductive.ts","../src/export/visual/counterfactual.ts","../src/export/visual/analogical.ts","../src/export/visual/evidential.ts","../src/export/visual/first-principles.ts","../src/export/visual/systems-thinking.ts","../src/export/visual/scientific-method.ts","../src/export/visual/optimization.ts","../src/export/visual/formal-logic.ts","../src/export/visual/index.ts","../src/services/ExportService.ts","../src/services/ModeRouter.ts","../src/services/index.ts","../src/index.ts","../src/tools/definitions.ts","../src/tools/json-schemas.ts","../src/tools/schemas/base.ts","../src/tools/schemas/shared.ts","../src/tools/schemas/modes/core.ts","../src/tools/schemas/modes/mathematics.ts","../src/tools/schemas/modes/temporal.ts","../src/tools/schemas/modes/probabilistic.ts","../src/tools/schemas/modes/causal.ts","../src/tools/schemas/modes/strategic.ts","../src/tools/schemas/modes/analytical.ts","../src/tools/schemas/modes/scientific.ts"],"names":["z","LogLevel","DEFAULT_CONFIG","logger","init_session","randomUUID","result","__filename","fileURLToPath","__dirname","SessionManager","ThoughtFactory","ExportService","ModeRouter","ThinkingToolSchema","session"],"mappings":"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","file":"index.js","sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","/**\n * Legacy thinking tool for DeepThinking MCP v4.4.0\n * DEPRECATED: Use focused tools (deepthinking_*) instead\n *\n * This file provides backward compatibility only.\n * Zod schema kept for runtime validation. JSON schema is hand-written.\n */\n\nimport { z } from 'zod';\n\n/**\n * Zod schema for runtime validation (internal use)\n */\nexport const ThinkingToolSchema = z.object({\n sessionId: z.string().optional(),\n mode: z.enum(['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'inductive', 'deductive', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential', 'firstprinciples', 'systemsthinking', 'scientificmethod', 'optimization', 'formallogic']).default('hybrid'),\n thought: z.string(),\n thoughtNumber: z.number().int().positive(),\n totalThoughts: z.number().int().positive(),\n nextThoughtNeeded: z.boolean(),\n isRevision: z.boolean().optional(),\n revisesThought: z.string().optional(),\n revisionReason: z.string().optional(),\n branchFrom: z.string().optional(),\n branchId: z.string().optional(),\n stage: z.enum(['problem_definition', 'constraints', 'model', 'proof', 'implementation']).optional(),\n uncertainty: z.number().min(0).max(1).optional(),\n dependencies: z.array(z.string()).optional(),\n assumptions: z.array(z.string()).optional(),\n thoughtType: z.string().optional(),\n mathematicalModel: z.object({\n latex: z.string(),\n symbolic: z.string(),\n ascii: z.string().optional(),\n }).optional(),\n proofStrategy: z.object({\n type: z.enum(['direct', 'contradiction', 'induction', 'construction', 'contrapositive']),\n steps: z.array(z.string()),\n }).optional(),\n tensorProperties: z.object({\n rank: z.tuple([z.number(), z.number()]),\n components: z.string(),\n latex: z.string(),\n symmetries: z.array(z.string()),\n invariants: z.array(z.string()),\n transformation: z.enum(['covariant', 'contravariant', 'mixed']),\n }).optional(),\n physicalInterpretation: z.object({\n quantity: z.string(),\n units: z.string(),\n conservationLaws: z.array(z.string()),\n }).optional(),\n // Inductive reasoning properties (Phase 5, v5.0.0)\n pattern: z.string().optional(),\n generalization: z.string().optional(),\n confidence: z.number().min(0).max(1).optional(),\n counterexamples: z.array(z.string()).optional(),\n sampleSize: z.number().int().min(1).optional(),\n // Deductive reasoning properties (Phase 5, v5.0.0)\n premises: z.array(z.string()).optional(),\n logicForm: z.string().optional(),\n validityCheck: z.boolean().optional(),\n soundnessCheck: z.boolean().optional(),\n // Abductive reasoning properties (v2.0)\n observations: z.union([\n z.array(z.string()), // For inductive reasoning - simple strings\n z.array(z.object({ // For abductive reasoning - structured objects\n id: z.string(),\n description: z.string(),\n confidence: z.number().min(0).max(1),\n })),\n ]).optional(),\n hypotheses: z.array(z.object({\n id: z.string(),\n // Abductive fields\n explanation: z.string().optional(),\n assumptions: z.array(z.string()).optional(),\n predictions: z.array(z.string()).optional(),\n score: z.number().optional(),\n // Evidential fields\n name: z.string().optional(),\n description: z.string().optional(),\n mutuallyExclusive: z.boolean().optional(),\n subsets: z.array(z.string()).optional(),\n })).optional(),\n evaluationCriteria: z.object({\n parsimony: z.number(),\n explanatoryPower: z.number(),\n plausibility: z.number(),\n testability: z.boolean(),\n }).optional(),\n evidence: z.array(z.object({\n id: z.string(),\n description: z.string(),\n // Abductive fields\n hypothesisId: z.string().optional(),\n type: z.enum(['supporting', 'contradicting', 'neutral']).optional(),\n strength: z.number().min(0).max(1).optional(),\n // Evidential fields\n source: z.string().optional(),\n reliability: z.number().min(0).max(1).optional(),\n timestamp: z.number().optional(),\n supports: z.array(z.string()).optional(),\n contradicts: z.array(z.string()).optional(),\n })).optional(),\n bestExplanation: z.object({\n id: z.string(),\n explanation: z.string(),\n assumptions: z.array(z.string()),\n predictions: z.array(z.string()),\n score: z.number(),\n }).optional(),\n // Causal reasoning properties (v2.0)\n causalGraph: z.object({\n nodes: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.enum(['cause', 'effect', 'mediator', 'confounder']),\n description: z.string(),\n })),\n edges: z.array(z.object({\n from: z.string(),\n to: z.string(),\n strength: z.number(),\n confidence: z.number().min(0).max(1),\n })),\n }).optional(),\n interventions: z.array(z.object({\n nodeId: z.string(),\n action: z.string(),\n expectedEffects: z.array(z.object({\n nodeId: z.string(),\n expectedChange: z.string(),\n confidence: z.number(),\n })),\n })).optional(),\n mechanisms: z.array(z.object({\n from: z.string(),\n to: z.string(),\n description: z.string(),\n type: z.enum(['direct', 'indirect', 'feedback']),\n })).optional(),\n confounders: z.array(z.object({\n nodeId: z.string(),\n affects: z.array(z.string()),\n description: z.string(),\n })).optional(),\n // Bayesian reasoning properties (v2.0)\n hypothesis: z.object({\n id: z.string(),\n statement: z.string(),\n }).optional(),\n prior: z.object({\n probability: z.number().min(0).max(1),\n justification: z.string(),\n }).optional(),\n likelihood: z.object({\n probability: z.number().min(0).max(1),\n description: z.string(),\n }).optional(),\n posterior: z.object({\n probability: z.number().min(0).max(1),\n calculation: z.string(),\n }).optional(),\n bayesFactor: z.number().optional(),\n // Counterfactual reasoning properties (v2.0)\n actual: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n conditions: z.array(z.object({\n factor: z.string(),\n value: z.string(),\n })),\n outcomes: z.array(z.object({\n description: z.string(),\n impact: z.enum(['positive', 'negative', 'neutral']),\n magnitude: z.number().optional(),\n })),\n }).optional(),\n counterfactuals: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n conditions: z.array(z.object({\n factor: z.string(),\n value: z.string(),\n })),\n outcomes: z.array(z.object({\n description: z.string(),\n impact: z.enum(['positive', 'negative', 'neutral']),\n magnitude: z.number().optional(),\n })),\n })).optional(),\n comparison: z.object({\n differences: z.array(z.object({\n aspect: z.string(),\n actual: z.string(),\n counterfactual: z.string(),\n significance: z.enum(['high', 'medium', 'low']),\n })),\n insights: z.array(z.string()),\n lessons: z.array(z.string()),\n }).optional(),\n interventionPoint: z.object({\n description: z.string(),\n alternatives: z.array(z.string()),\n }).optional(),\n causalChains: z.array(z.object({\n intervention: z.string(),\n steps: z.array(z.string()),\n finalOutcome: z.string(),\n })).optional(),\n // Analogical reasoning properties (v2.0)\n sourceDomain: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n entities: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n })),\n relations: z.array(z.object({\n id: z.string(),\n type: z.string(),\n from: z.string(),\n to: z.string(),\n })),\n }).optional(),\n targetDomain: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n entities: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n })),\n relations: z.array(z.object({\n id: z.string(),\n type: z.string(),\n from: z.string(),\n to: z.string(),\n })),\n }).optional(),\n mapping: z.array(z.object({\n sourceEntityId: z.string(),\n targetEntityId: z.string(),\n justification: z.string(),\n confidence: z.number().min(0).max(1),\n })).optional(),\n insights: z.array(z.object({\n description: z.string(),\n sourceEvidence: z.string(),\n targetApplication: z.string(),\n })).optional(),\n inferences: z.array(z.object({\n sourcePattern: z.string(),\n targetPrediction: z.string(),\n confidence: z.number().min(0).max(1),\n needsVerification: z.boolean(),\n })).optional(),\n limitations: z.array(z.string()).optional(),\n analogyStrength: z.number().min(0).max(1).optional(),\n // Temporal reasoning properties (Phase 3, v2.1)\n timeline: z.object({\n id: z.string(),\n name: z.string(),\n timeUnit: z.enum(['milliseconds', 'seconds', 'minutes', 'hours', 'days', 'months', 'years']),\n startTime: z.number().optional(),\n endTime: z.number().optional(),\n events: z.array(z.string()),\n }).optional(),\n events: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n timestamp: z.number(),\n duration: z.number().optional(),\n type: z.enum(['instant', 'interval']),\n properties: z.record(z.string(), z.any()),\n })).optional(),\n intervals: z.array(z.object({\n id: z.string(),\n name: z.string(),\n start: z.number(),\n end: z.number(),\n overlaps: z.array(z.string()).optional(),\n contains: z.array(z.string()).optional(),\n })).optional(),\n constraints: z.array(z.object({\n id: z.string(),\n type: z.enum(['before', 'after', 'during', 'overlaps', 'meets', 'starts', 'finishes', 'equals']),\n subject: z.string(),\n object: z.string(),\n confidence: z.number().min(0).max(1),\n })).optional(),\n relations: z.array(z.object({\n id: z.string(),\n from: z.string(),\n to: z.string(),\n relationType: z.enum(['causes', 'enables', 'prevents', 'precedes', 'follows']),\n strength: z.number().min(0).max(1),\n delay: z.number().optional(),\n })).optional(),\n // Game theory properties (Phase 3, v2.2)\n game: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['normal_form', 'extensive_form', 'cooperative', 'non_cooperative']),\n numPlayers: z.number().int().min(2),\n isZeroSum: z.boolean(),\n isPerfectInformation: z.boolean(),\n }).optional(),\n players: z.array(z.object({\n id: z.string(),\n name: z.string(),\n role: z.string().optional(),\n isRational: z.boolean(),\n availableStrategies: z.array(z.string()),\n })).optional(),\n strategies: z.array(z.object({\n id: z.string(),\n playerId: z.string(),\n name: z.string(),\n description: z.string(),\n isPure: z.boolean(),\n probability: z.number().min(0).max(1).optional(),\n })).optional(),\n payoffMatrix: z.object({\n players: z.array(z.string()),\n dimensions: z.array(z.number()),\n payoffs: z.array(z.object({\n strategyProfile: z.array(z.string()),\n payoffs: z.array(z.number()),\n })),\n }).optional(),\n nashEquilibria: z.array(z.object({\n id: z.string(),\n strategyProfile: z.array(z.string()),\n payoffs: z.array(z.number()),\n type: z.enum(['pure', 'mixed']),\n isStrict: z.boolean(),\n stability: z.number().min(0).max(1),\n })).optional(),\n dominantStrategies: z.array(z.object({\n playerId: z.string(),\n strategyId: z.string(),\n type: z.enum(['strictly_dominant', 'weakly_dominant']),\n dominatesStrategies: z.array(z.string()),\n justification: z.string(),\n })).optional(),\n gameTree: z.object({\n rootNode: z.string(),\n nodes: z.array(z.object({\n id: z.string(),\n type: z.enum(['decision', 'chance', 'terminal']),\n playerId: z.string().optional(),\n parentNode: z.string().optional(),\n childNodes: z.array(z.string()),\n action: z.string().optional(),\n probability: z.number().min(0).max(1).optional(),\n payoffs: z.array(z.number()).optional(),\n })),\n informationSets: z.array(z.object({\n id: z.string(),\n playerId: z.string(),\n nodes: z.array(z.string()),\n availableActions: z.array(z.string()),\n })).optional(),\n }).optional(),\n\n // Evidential properties (Phase 3, v2.3)\n frameOfDiscernment: z.array(z.string()).optional(),\n beliefFunctions: z.array(z.object({\n id: z.string(),\n source: z.string(),\n massAssignments: z.array(z.object({\n hypothesisSet: z.array(z.string()),\n mass: z.number().min(0).max(1),\n justification: z.string(),\n })),\n conflictMass: z.number().optional(),\n })).optional(),\n combinedBelief: z.object({\n id: z.string(),\n source: z.string(),\n massAssignments: z.array(z.object({\n hypothesisSet: z.array(z.string()),\n mass: z.number().min(0).max(1),\n justification: z.string(),\n })),\n conflictMass: z.number().optional(),\n }).optional(),\n plausibility: z.object({\n id: z.string(),\n assignments: z.array(z.object({\n hypothesisSet: z.array(z.string()),\n plausibility: z.number().min(0).max(1),\n belief: z.number().min(0).max(1),\n uncertaintyInterval: z.tuple([z.number(), z.number()]),\n })),\n }).optional(),\n decisions: z.array(z.object({\n id: z.string(),\n name: z.string(),\n selectedHypothesis: z.array(z.string()),\n confidence: z.number().min(0).max(1),\n reasoning: z.string(),\n alternatives: z.array(z.object({\n hypothesis: z.array(z.string()),\n expectedUtility: z.number(),\n risk: z.number(),\n })),\n })).optional(),\n // First-Principles properties (Phase 3, v3.1.0)\n question: z.string().optional(),\n principles: z.array(z.object({\n id: z.string(),\n type: z.enum(['axiom', 'definition', 'observation', 'logical_inference', 'assumption']),\n statement: z.string(),\n justification: z.string(),\n dependsOn: z.array(z.string()).optional(),\n confidence: z.number().min(0).max(1).optional(),\n })).optional(),\n derivationSteps: z.array(z.object({\n stepNumber: z.number().int().positive(),\n principle: z.string(),\n inference: z.string(),\n logicalForm: z.string().optional(),\n confidence: z.number().min(0).max(1),\n })).optional(),\n conclusion: z.union([\n z.string(), // For deductive reasoning - simple conclusion\n z.object({ // For first-principles reasoning - structured conclusion\n statement: z.string(),\n derivationChain: z.array(z.number()),\n certainty: z.number().min(0).max(1),\n limitations: z.array(z.string()).optional(),\n }),\n ]).optional(),\n alternativeInterpretations: z.array(z.string()).optional(),\n\n // Systems Thinking properties (Phase 4, v3.2.0)\n system: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n boundary: z.string(),\n purpose: z.string(),\n timeHorizon: z.string().optional(),\n }).optional(),\n components: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.enum(['stock', 'flow', 'variable', 'parameter', 'delay']),\n description: z.string(),\n unit: z.string().optional(),\n initialValue: z.number().optional(),\n formula: z.string().optional(),\n influencedBy: z.array(z.string()).optional(),\n })).optional(),\n feedbackLoops: z.array(z.object({\n id: z.string(),\n name: z.string(),\n type: z.enum(['reinforcing', 'balancing']),\n description: z.string(),\n components: z.array(z.string()),\n polarity: z.enum(['+', '-']),\n strength: z.number().min(0).max(1),\n delay: z.number().optional(),\n dominance: z.enum(['early', 'middle', 'late']).optional(),\n })).optional(),\n leveragePoints: z.array(z.object({\n id: z.string(),\n name: z.string(),\n location: z.string(),\n description: z.string(),\n effectiveness: z.number().min(0).max(1),\n difficulty: z.number().min(0).max(1),\n type: z.enum(['parameter', 'feedback', 'structure', 'goal', 'paradigm']),\n interventionExamples: z.array(z.string()),\n })).optional(),\n behaviors: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n pattern: z.enum(['growth', 'decline', 'oscillation', 'equilibrium', 'chaos', 'overshoot_collapse']),\n causes: z.array(z.string()),\n timeframe: z.string(),\n unintendedConsequences: z.array(z.string()).optional(),\n })).optional(),\n\n // Scientific Method properties (Phase 4, v3.2.0)\n researchQuestion: z.object({\n id: z.string(),\n question: z.string(),\n background: z.string(),\n rationale: z.string(),\n significance: z.string(),\n variables: z.object({\n independent: z.array(z.string()),\n dependent: z.array(z.string()),\n control: z.array(z.string()),\n }),\n }).optional(),\n scientificHypotheses: z.array(z.object({\n id: z.string(),\n type: z.enum(['null', 'alternative', 'directional', 'non_directional']),\n statement: z.string(),\n prediction: z.string(),\n rationale: z.string(),\n testable: z.boolean(),\n falsifiable: z.boolean(),\n })).optional(),\n experiment: z.object({\n id: z.string(),\n type: z.enum(['experimental', 'quasi_experimental', 'observational', 'correlational']),\n design: z.string(),\n sampleSize: z.number().int().positive(),\n sampleSizeJustification: z.string().optional(),\n randomization: z.boolean(),\n blinding: z.enum(['none', 'single', 'double', 'triple']).optional(),\n controls: z.array(z.string()),\n procedure: z.array(z.string()),\n materials: z.array(z.string()).optional(),\n duration: z.string().optional(),\n ethicalConsiderations: z.array(z.string()).optional(),\n }).optional(),\n dataCollection: z.object({\n id: z.string(),\n method: z.array(z.string()),\n instruments: z.array(z.string()),\n dataQuality: z.object({\n completeness: z.number().min(0).max(1),\n reliability: z.number().min(0).max(1),\n validity: z.number().min(0).max(1),\n }),\n limitations: z.array(z.string()).optional(),\n }).optional(),\n statisticalAnalysis: z.object({\n id: z.string(),\n tests: z.array(z.object({\n id: z.string(),\n name: z.string(),\n hypothesisTested: z.string(),\n testStatistic: z.number(),\n pValue: z.number().min(0).max(1),\n confidenceInterval: z.tuple([z.number(), z.number()]).optional(),\n alpha: z.number().min(0).max(1),\n result: z.enum(['reject_null', 'fail_to_reject_null']),\n interpretation: z.string(),\n })),\n summary: z.string(),\n effectSize: z.object({\n type: z.string(),\n value: z.number(),\n interpretation: z.string(),\n }).optional(),\n powerAnalysis: z.object({\n power: z.number().min(0).max(1),\n alpha: z.number().min(0).max(1),\n interpretation: z.string(),\n }).optional(),\n }).optional(),\n scientificConclusion: z.object({\n id: z.string(),\n statement: z.string(),\n supportedHypotheses: z.array(z.string()),\n rejectedHypotheses: z.array(z.string()),\n confidence: z.number().min(0).max(1),\n limitations: z.array(z.string()),\n alternativeExplanations: z.array(z.string()).optional(),\n futureDirections: z.array(z.string()),\n replicationConsiderations: z.array(z.string()),\n practicalImplications: z.array(z.string()).optional(),\n theoreticalImplications: z.array(z.string()).optional(),\n }).optional(),\n\n // Optimization properties (Phase 4, v3.2.0)\n optimizationProblem: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['linear', 'nonlinear', 'integer', 'mixed_integer', 'constraint_satisfaction', 'multi_objective']),\n approach: z.enum(['exact', 'heuristic', 'metaheuristic', 'approximation']).optional(),\n complexity: z.string().optional(),\n }).optional(),\n decisionVariables: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['continuous', 'integer', 'binary', 'categorical']),\n unit: z.string().optional(),\n semantics: z.string(),\n })).optional(),\n optimizationConstraints: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['hard', 'soft']),\n formula: z.string(),\n variables: z.array(z.string()),\n penalty: z.number().optional(),\n rationale: z.string(),\n priority: z.number().optional(),\n })).optional(),\n objectives: z.array(z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n type: z.enum(['minimize', 'maximize']),\n formula: z.string(),\n variables: z.array(z.string()),\n weight: z.number().min(0).max(1).optional(),\n units: z.string().optional(),\n idealValue: z.number().optional(),\n acceptableRange: z.tuple([z.number(), z.number()]).optional(),\n })).optional(),\n solution: z.object({\n id: z.string(),\n type: z.enum(['optimal', 'feasible', 'infeasible', 'unbounded', 'approximate']),\n variableValues: z.record(z.string(), z.union([z.number(), z.string()])),\n objectiveValues: z.record(z.string(), z.number()),\n quality: z.number().min(0).max(1),\n computationTime: z.number().optional(),\n iterations: z.number().optional(),\n method: z.string().optional(),\n guarantees: z.array(z.string()).optional(),\n }).optional(),\n sensitivityAnalysis: z.object({\n id: z.string(),\n robustness: z.number().min(0).max(1),\n criticalConstraints: z.array(z.string()),\n shadowPrices: z.record(z.string(), z.number()).optional(),\n recommendations: z.array(z.string()),\n }).optional(),\n\n // Formal Logic properties (Phase 4, v3.2.0)\n propositions: z.array(z.object({\n id: z.string(),\n symbol: z.string(),\n statement: z.string(),\n truthValue: z.boolean().optional(),\n type: z.enum(['atomic', 'compound']),\n formula: z.string().optional(),\n })).optional(),\n logicalInferences: z.array(z.object({\n id: z.string(),\n rule: z.enum(['modus_ponens', 'modus_tollens', 'hypothetical_syllogism', 'disjunctive_syllogism', 'conjunction', 'simplification', 'addition', 'resolution', 'contradiction', 'excluded_middle']),\n premises: z.array(z.string()),\n conclusion: z.string(),\n justification: z.string(),\n valid: z.boolean(),\n })).optional(),\n logicalProof: z.object({\n id: z.string(),\n theorem: z.string(),\n technique: z.enum(['direct', 'contradiction', 'contrapositive', 'cases', 'induction', 'natural_deduction', 'resolution', 'semantic_tableaux']),\n steps: z.array(z.object({\n stepNumber: z.number().int().positive(),\n statement: z.string(),\n formula: z.string().optional(),\n justification: z.string(),\n rule: z.enum(['modus_ponens', 'modus_tollens', 'hypothetical_syllogism', 'disjunctive_syllogism', 'conjunction', 'simplification', 'addition', 'resolution', 'contradiction', 'excluded_middle']).optional(),\n referencesSteps: z.array(z.number()).optional(),\n isAssumption: z.boolean().optional(),\n dischargesAssumption: z.number().optional(),\n })),\n conclusion: z.string(),\n valid: z.boolean(),\n completeness: z.number().min(0).max(1),\n assumptions: z.array(z.string()).optional(),\n }).optional(),\n truthTable: z.object({\n id: z.string(),\n propositions: z.array(z.string()),\n formula: z.string().optional(),\n rows: z.array(z.object({\n rowNumber: z.number().int().positive(),\n assignments: z.record(z.string(), z.boolean()),\n result: z.boolean(),\n })),\n isTautology: z.boolean(),\n isContradiction: z.boolean(),\n isContingent: z.boolean(),\n }).optional(),\n satisfiability: z.object({\n id: z.string(),\n formula: z.string(),\n satisfiable: z.boolean(),\n model: z.record(z.string(), z.boolean()).optional(),\n method: z.enum(['dpll', 'cdcl', 'resolution', 'truth_table', 'other']),\n complexity: z.string().optional(),\n explanation: z.string(),\n }).optional(),\n\n action: z.enum(['add_thought', 'summarize', 'export', 'switch_mode', 'get_session', 'recommend_mode']).default('add_thought'),\n exportFormat: z.enum(['markdown', 'latex', 'json', 'html', 'jupyter', 'mermaid', 'dot', 'ascii']).optional(),\n newMode: z.enum(['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'inductive', 'deductive', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential', 'firstprinciples', 'systemsthinking', 'scientificmethod', 'optimization', 'formallogic']).optional(),\n // Mode recommendation parameters (v2.4)\n problemType: z.string().optional(),\n problemCharacteristics: z.object({\n domain: z.string(),\n complexity: z.enum(['low', 'medium', 'high']),\n uncertainty: z.enum(['low', 'medium', 'high']),\n timeDependent: z.boolean(),\n multiAgent: z.boolean(),\n requiresProof: z.boolean(),\n requiresQuantification: z.boolean(),\n hasIncompleteInfo: z.boolean(),\n requiresExplanation: z.boolean(),\n hasAlternatives: z.boolean(),\n }).optional(),\n includeCombinations: z.boolean().optional(),\n});\n\nexport type ThinkingToolInput = z.infer<typeof ThinkingToolSchema>;\n\n/**\n * Legacy tool definition - DEPRECATED\n *\n * Use the focused tools instead:\n * - deepthinking_core, deepthinking_math, deepthinking_temporal\n * - deepthinking_probabilistic, deepthinking_causal, deepthinking_strategic\n * - deepthinking_analytical, deepthinking_scientific, deepthinking_session\n *\n * NOTE: This tool accepts a superset of all focused tool properties for backward compatibility.\n * The schema lists all possible properties but most are optional.\n */\nexport const thinkingTool = {\n name: 'deepthinking',\n description: '[DEPRECATED] Use deepthinking_* tools instead. Legacy tool supporting 18 reasoning modes with auto-routing to focused tools.',\n inputSchema: {\n type: \"object\" as const,\n properties: {\n sessionId: { type: \"string\" },\n mode: {\n type: \"string\",\n enum: ['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'inductive', 'deductive', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential', 'firstprinciples', 'systemsthinking', 'scientificmethod', 'optimization', 'formallogic'],\n default: 'hybrid'\n },\n thought: { type: \"string\", minLength: 1 },\n thoughtNumber: { type: \"integer\", minimum: 1 },\n totalThoughts: { type: \"integer\", minimum: 1 },\n nextThoughtNeeded: { type: \"boolean\" },\n isRevision: { type: \"boolean\" },\n revisesThought: { type: \"string\" },\n revisionReason: { type: \"string\" },\n branchFrom: { type: \"string\" },\n branchId: { type: \"string\" },\n stage: {\n type: \"string\",\n enum: ['problem_definition', 'constraints', 'model', 'proof', 'implementation']\n },\n uncertainty: { type: \"number\", minimum: 0, maximum: 1 },\n dependencies: { type: \"array\", items: { type: \"string\" } },\n assumptions: { type: \"array\", items: { type: \"string\" } },\n thoughtType: { type: \"string\" },\n // Math/Physics properties\n mathematicalModel: {\n type: \"object\",\n properties: {\n latex: { type: \"string\" },\n symbolic: { type: \"string\" },\n ascii: { type: \"string\" }\n },\n additionalProperties: false\n },\n proofStrategy: {\n type: \"object\",\n properties: {\n type: { type: \"string\", enum: ['direct', 'contradiction', 'induction', 'construction', 'contrapositive'] },\n steps: { type: \"array\", items: { type: \"string\" } }\n },\n additionalProperties: false\n },\n tensorProperties: {\n type: \"object\",\n properties: {\n rank: { type: \"array\", items: { type: \"number\" }, minItems: 2, maxItems: 2 },\n components: { type: \"string\" },\n latex: { type: \"string\" },\n symmetries: { type: \"array\", items: { type: \"string\" } },\n invariants: { type: \"array\", items: { type: \"string\" } },\n transformation: { type: \"string\", enum: ['covariant', 'contravariant', 'mixed'] }\n },\n additionalProperties: false\n },\n // All other optional properties from various modes (simplified for legacy compatibility)\n // Most users should migrate to focused tools for full schema validation\n },\n required: [\"thought\", \"thoughtNumber\", \"totalThoughts\", \"nextThoughtNeeded\"],\n additionalProperties: true // Allow extra properties for backward compatibility\n }\n};\n","/**\n * Core type definitions for the DeepThinking MCP server v3.2.0\n * Supports 18 thinking modes: Sequential, Shannon, Mathematics, Physics, Hybrid,\n * Abductive, Causal, Bayesian, Counterfactual, Analogical, Temporal, GameTheory, Evidential, FirstPrinciples,\n * SystemsThinking, ScientificMethod, Optimization, FormalLogic\n */\n\n// Import Phase 3 mode types\nimport type { TemporalThought } from './modes/temporal.js';\nimport type { GameTheoryThought } from './modes/gametheory.js';\nimport type { EvidentialThought } from './modes/evidential.js';\nimport type { FirstPrinciplesThought } from './modes/firstprinciples.js';\n\n// Import Phase 4 mode types (v3.2.0)\nimport type { SystemsThinkingThought } from './modes/systemsthinking.js';\nimport type { ScientificMethodThought } from './modes/scientificmethod.js';\nimport type { OptimizationThought } from './modes/optimization.js';\nimport type { FormalLogicThought } from './modes/formallogic.js';\n\n/**\n * Available thinking modes\n */\nexport enum ThinkingMode {\n // ===== Fully Implemented Modes =====\n SEQUENTIAL = 'sequential',\n SHANNON = 'shannon',\n MATHEMATICS = 'mathematics',\n PHYSICS = 'physics',\n HYBRID = 'hybrid',\n\n // ===== Implemented - Advanced Modes (Phase 4) =====\n METAREASONING = 'metareasoning', // Phase 4 (v3.3.0) - Self-reflection and strategy selection\n RECURSIVE = 'recursive', // Phase 4 (v3.3.0) - Recursive problem decomposition\n MODAL = 'modal', // Phase 4 (v3.3.0) - Possibility and necessity reasoning\n STOCHASTIC = 'stochastic', // Phase 4 (v3.3.0) - Probabilistic state transitions\n CONSTRAINT = 'constraint', // Phase 4 (v3.3.0) - Constraint satisfaction\n OPTIMIZATION = 'optimization', // Phase 4 (v3.2.0) - Optimization strategies\n\n // ===== Experimental - Limited Implementation =====\n // These modes have validators and type definitions but limited runtime logic\n INDUCTIVE = 'inductive', // ⚠️ Experimental (Phase 5 v5.0.0) - Inductive reasoning\n DEDUCTIVE = 'deductive', // ⚠️ Experimental (Phase 5 v5.0.0) - Deductive reasoning\n ABDUCTIVE = 'abductive', // ⚠️ Experimental - Inference to best explanation\n CAUSAL = 'causal', // ⚠️ Experimental - Causal reasoning\n BAYESIAN = 'bayesian', // ⚠️ Experimental - Bayesian inference\n COUNTERFACTUAL = 'counterfactual', // ⚠️ Experimental - What-if scenarios\n ANALOGICAL = 'analogical', // ⚠️ Experimental - Reasoning by analogy\n TEMPORAL = 'temporal', // ⚠️ Experimental (Phase 3 v2.1) - Temporal logic\n GAMETHEORY = 'gametheory', // ⚠️ Experimental (Phase 3 v2.2) - Game theory analysis\n EVIDENTIAL = 'evidential', // ⚠️ Experimental (Phase 3 v2.3) - Evidence-based reasoning\n FIRSTPRINCIPLES = 'firstprinciples', // ⚠️ Experimental (Phase 3 v3.1.0) - First principles thinking\n SYSTEMSTHINKING = 'systemsthinking', // ⚠️ Experimental (Phase 4 v3.2.0) - Systems thinking\n SCIENTIFICMETHOD = 'scientificmethod', // ⚠️ Experimental (Phase 4 v3.2.0) - Scientific method\n FORMALLOGIC = 'formallogic', // ⚠️ Experimental (Phase 4 v3.2.0) - Formal logic\n\n CUSTOM = 'custom'\n}\n\n/**\n * Modes with full implementation including specialized thought creation logic\n */\nexport const FULLY_IMPLEMENTED_MODES: ReadonlyArray<ThinkingMode> = [\n ThinkingMode.SEQUENTIAL,\n ThinkingMode.SHANNON,\n ThinkingMode.MATHEMATICS,\n ThinkingMode.PHYSICS,\n ThinkingMode.HYBRID,\n ThinkingMode.METAREASONING,\n ThinkingMode.RECURSIVE,\n ThinkingMode.MODAL,\n ThinkingMode.STOCHASTIC,\n ThinkingMode.CONSTRAINT,\n ThinkingMode.OPTIMIZATION,\n ThinkingMode.INDUCTIVE, // Phase 5 v5.0.0\n ThinkingMode.DEDUCTIVE, // Phase 5 v5.0.0\n];\n\n/**\n * Experimental modes - have validators but limited runtime implementation\n * These modes will create base thoughts without specialized logic\n */\nexport const EXPERIMENTAL_MODES: ReadonlyArray<ThinkingMode> = [\n ThinkingMode.ABDUCTIVE,\n ThinkingMode.CAUSAL,\n ThinkingMode.BAYESIAN,\n ThinkingMode.COUNTERFACTUAL,\n ThinkingMode.ANALOGICAL,\n ThinkingMode.TEMPORAL,\n ThinkingMode.GAMETHEORY,\n ThinkingMode.EVIDENTIAL,\n ThinkingMode.FIRSTPRINCIPLES,\n ThinkingMode.SYSTEMSTHINKING,\n ThinkingMode.SCIENTIFICMETHOD,\n ThinkingMode.FORMALLOGIC,\n];\n\n/**\n * Check if a mode is fully implemented\n */\nexport function isFullyImplemented(mode: ThinkingMode): boolean {\n return FULLY_IMPLEMENTED_MODES.includes(mode);\n}\n\n/**\n * Shannon methodology stages\n */\nexport enum ShannonStage {\n PROBLEM_DEFINITION = 'problem_definition',\n CONSTRAINTS = 'constraints',\n MODEL = 'model',\n PROOF = 'proof',\n IMPLEMENTATION = 'implementation'\n}\n\n/**\n * Base thought interface\n */\nexport interface BaseThought {\n id: string;\n sessionId: string;\n thoughtNumber: number;\n totalThoughts: number;\n content: string;\n timestamp: Date;\n mode: ThinkingMode;\n nextThoughtNeeded: boolean;\n isRevision?: boolean;\n revisesThought?: string;\n tags?: string[];\n importance?: number;\n}\n\n/**\n * Extended thought types for mathematical and physics reasoning\n */\nexport type ExtendedThoughtType =\n | 'problem_definition' | 'constraints' | 'model' | 'proof' | 'implementation'\n | 'axiom_definition' | 'theorem_statement' | 'proof_construction'\n | 'lemma_derivation' | 'corollary' | 'counterexample'\n | 'algebraic_manipulation' | 'symbolic_computation' | 'numerical_analysis'\n | 'symmetry_analysis' | 'gauge_theory' | 'field_equations'\n | 'lagrangian' | 'hamiltonian' | 'conservation_law'\n | 'dimensional_analysis' | 'tensor_formulation' | 'differential_geometry'\n | 'decomposition' | 'synthesis' | 'abstraction' | 'analogy' | 'metacognition';\n\n/**\n * Mathematical model representation\n */\nexport interface MathematicalModel {\n latex: string;\n symbolic: string;\n ascii?: string;\n tensorRank?: number;\n dimensions?: number[];\n invariants?: string[];\n symmetries?: string[];\n complexity?: string;\n stabilityNotes?: string;\n validated?: boolean;\n validationMethod?: string;\n}\n\n/**\n * Tensor properties for physics modeling\n */\nexport interface TensorProperties {\n rank: [number, number];\n components: string;\n latex: string;\n symmetries: string[];\n invariants: string[];\n transformation: 'covariant' | 'contravariant' | 'mixed';\n indexStructure?: string;\n coordinateSystem?: string;\n}\n\n/**\n * Physical interpretation\n */\nexport interface PhysicalInterpretation {\n quantity: string;\n units: string;\n conservationLaws: string[];\n constraints?: string[];\n observables?: string[];\n}\n\n/**\n * Proof strategy for mathematical reasoning\n */\nexport interface ProofStrategy {\n type: 'direct' | 'contradiction' | 'induction' | 'construction' | 'contrapositive';\n steps: string[];\n baseCase?: string;\n inductiveStep?: string;\n completeness: number;\n}\n\n/**\n * Theorem definition\n */\nexport interface Theorem {\n name: string;\n statement: string;\n hypotheses: string[];\n conclusion: string;\n proof?: string;\n references?: Reference[];\n}\n\n/**\n * Reference to external sources\n */\nexport interface Reference {\n type: 'paper' | 'book' | 'arxiv' | 'url' | 'theorem';\n citation: string;\n relevance: string;\n url?: string;\n}\n\n// ========== EXISTING MODES ==========\n\n/**\n * Sequential-mode thought\n */\nexport interface SequentialThought extends BaseThought {\n mode: ThinkingMode.SEQUENTIAL;\n revisionReason?: string;\n buildUpon?: string[];\n branchFrom?: string;\n branchId?: string;\n needsMoreThoughts?: boolean;\n}\n\n/**\n * Shannon-mode thought\n */\nexport interface ShannonThought extends BaseThought {\n mode: ThinkingMode.SHANNON;\n stage: ShannonStage;\n uncertainty: number;\n dependencies: string[];\n assumptions: string[];\n recheckStep?: {\n stepToRecheck: string;\n reason: string;\n newInformation?: string;\n };\n confidenceFactors?: {\n dataQuality: number;\n methodologyRobustness: number;\n assumptionValidity: number;\n };\n alternativeApproaches?: string[];\n knownLimitations?: string[];\n}\n\n/**\n * Mathematical thought\n */\nexport interface MathematicsThought extends BaseThought {\n mode: ThinkingMode.MATHEMATICS;\n thoughtType: ExtendedThoughtType;\n mathematicalModel?: MathematicalModel;\n proofStrategy?: ProofStrategy;\n theorems?: Theorem[];\n dependencies: string[];\n assumptions: string[];\n uncertainty: number;\n logicalForm?: {\n premises: string[];\n conclusion: string;\n rules: string[];\n };\n references?: Reference[];\n}\n\n/**\n * Physics thought\n */\nexport interface PhysicsThought extends BaseThought {\n mode: ThinkingMode.PHYSICS;\n thoughtType: ExtendedThoughtType;\n tensorProperties?: TensorProperties;\n physicalInterpretation?: PhysicalInterpretation;\n conservationLaws?: string[];\n dimensionalAnalysis?: {\n isConsistent: boolean;\n dimensions: Record<string, string>;\n issues?: string[];\n };\n mathematicalModel?: MathematicalModel;\n dependencies: string[];\n assumptions: string[];\n uncertainty: number;\n fieldTheoryContext?: {\n fields: string[];\n interactions: string[];\n symmetryGroup: string;\n gaugeSymmetries?: string[];\n };\n}\n\n/**\n * Hybrid-mode thought\n */\nexport interface HybridThought extends BaseThought {\n mode: ThinkingMode.HYBRID;\n thoughtType?: ExtendedThoughtType;\n stage?: ShannonStage;\n uncertainty?: number;\n dependencies?: string[];\n assumptions?: string[];\n revisionReason?: string;\n mathematicalModel?: MathematicalModel;\n tensorProperties?: TensorProperties;\n physicalInterpretation?: PhysicalInterpretation;\n primaryMode: 'sequential' | 'shannon' | 'mathematics' | 'physics';\n secondaryFeatures: string[];\n switchReason?: string;\n}\n\n// ========== NEW MODES (v2.0) ==========\n\n// ===== ABDUCTIVE REASONING =====\n\n/**\n * Observation requiring explanation\n */\nexport interface Observation {\n id: string;\n description: string;\n timestamp?: string;\n confidence: number; // 0-1\n}\n\n/**\n * Hypothesis explaining observations\n */\nexport interface Hypothesis {\n id: string;\n explanation: string;\n assumptions: string[];\n predictions: string[];\n score: number; // Overall ranking score\n}\n\n/**\n * Evidence supporting or refuting hypotheses\n */\nexport interface Evidence {\n hypothesisId: string;\n type: 'supporting' | 'contradicting' | 'neutral';\n description: string;\n strength: number; // 0-1\n}\n\n/**\n * Criteria for evaluating hypotheses\n */\nexport interface EvaluationCriteria {\n parsimony: number; // Simplicity score (0-1)\n explanatoryPower: number; // How well it explains observations (0-1)\n plausibility: number; // Prior probability (0-1)\n testability: boolean; // Can it be tested?\n}\n\n/**\n * Abductive reasoning thought\n */\nexport interface AbductiveThought extends BaseThought {\n mode: ThinkingMode.ABDUCTIVE;\n observations: Observation[];\n hypotheses: Hypothesis[];\n currentHypothesis?: Hypothesis;\n evaluationCriteria: EvaluationCriteria;\n evidence: Evidence[];\n bestExplanation?: Hypothesis;\n}\n\n// ===== INDUCTIVE REASONING =====\n\n/**\n * Inductive reasoning thought\n * Reasoning from specific observations to general principles\n */\nexport interface InductiveThought extends BaseThought {\n mode: ThinkingMode.INDUCTIVE;\n observations: string[]; // Specific cases observed\n pattern?: string; // Identified pattern\n generalization: string; // General principle formed\n confidence: number; // 0-1: Strength of inference\n counterexamples?: string[]; // Known exceptions\n sampleSize?: number; // Number of observations\n}\n\n// ===== DEDUCTIVE REASONING =====\n\n/**\n * Deductive reasoning thought\n * Reasoning from general principles to specific conclusions\n */\nexport interface DeductiveThought extends BaseThought {\n mode: ThinkingMode.DEDUCTIVE;\n premises: string[]; // General principles\n conclusion: string; // Specific conclusion\n logicForm?: string; // e.g., \"modus ponens\", \"modus tollens\"\n validityCheck: boolean; // Is the deduction logically valid?\n soundnessCheck?: boolean; // Are the premises true?\n}\n\n// ===== CAUSAL REASONING =====\n\n/**\n * Node in causal graph\n */\nexport interface CausalNode {\n id: string;\n name: string;\n type: 'cause' | 'effect' | 'mediator' | 'confounder';\n description: string;\n}\n\n/**\n * Edge in causal graph (causal relationship)\n */\nexport interface CausalEdge {\n from: string; // node id\n to: string; // node id\n strength: number; // -1 to 1 (negative = inhibitory)\n confidence: number; // 0-1\n mechanism?: string;\n formula?: string; // LaTeX formula for mathematical relationship\n}\n\n/**\n * Causal graph structure\n */\nexport interface CausalGraph {\n nodes: CausalNode[];\n edges: CausalEdge[];\n}\n\n/**\n * Intervention on causal system\n */\nexport interface Intervention {\n nodeId: string;\n action: string;\n expectedEffects: {\n nodeId: string;\n expectedChange: string;\n confidence: number;\n }[];\n}\n\n/**\n * Causal mechanism description\n */\nexport interface CausalMechanism {\n from: string;\n to: string;\n description: string;\n type: 'direct' | 'indirect' | 'feedback';\n formula?: string; // LaTeX formula describing the mechanism\n}\n\n/**\n * Confounding variable\n */\nexport interface Confounder {\n nodeId: string;\n affects: string[]; // node ids\n description: string;\n}\n\n/**\n * Counterfactual scenario for causal analysis\n */\nexport interface CounterfactualScenario {\n description: string;\n modifiedNodes: { nodeId: string; newValue: string }[];\n predictedOutcome: string;\n}\n\n/**\n * Causal reasoning thought\n */\nexport interface CausalThought extends BaseThought {\n mode: ThinkingMode.CAUSAL;\n causalGraph: CausalGraph;\n interventions?: Intervention[];\n counterfactuals?: CounterfactualScenario[];\n mechanisms: CausalMechanism[];\n confounders?: Confounder[];\n}\n\n// ===== BAYESIAN REASONING =====\n\n/**\n * Hypothesis for Bayesian analysis\n */\nexport interface BayesianHypothesis {\n id: string;\n statement: string;\n alternatives?: string[];\n}\n\n/**\n * Prior probability\n */\nexport interface PriorProbability {\n probability: number; // 0-1\n justification: string;\n latex?: string; // LaTeX formula for prior distribution\n}\n\n/**\n * Likelihood of evidence\n */\nexport interface Likelihood {\n probability: number; // 0-1\n description: string;\n latex?: string; // LaTeX formula for likelihood function\n}\n\n/**\n * Evidence for Bayesian update\n */\nexport interface BayesianEvidence {\n id: string;\n description: string;\n likelihoodGivenHypothesis: number; // P(E|H)\n likelihoodGivenNotHypothesis: number; // P(E|¬H)\n timestamp?: string;\n}\n\n/**\n * Posterior probability (updated belief)\n */\nexport interface PosteriorProbability {\n probability: number; // 0-1\n calculation: string; // Show the math\n latex?: string; // LaTeX formula for Bayesian update calculation\n}\n\n/**\n * Sensitivity analysis for Bayesian reasoning\n */\nexport interface SensitivityAnalysis {\n priorRange: [number, number];\n posteriorRange: [number, number];\n}\n\n/**\n * Bayesian reasoning thought\n */\nexport interface BayesianThought extends BaseThought {\n mode: ThinkingMode.BAYESIAN;\n hypothesis: BayesianHypothesis;\n prior: PriorProbability;\n likelihood: Likelihood;\n evidence: BayesianEvidence[];\n posterior: PosteriorProbability;\n bayesFactor?: number; // Strength of evidence\n sensitivity?: SensitivityAnalysis;\n}\n\n// ===== COUNTERFACTUAL REASONING =====\n\n/**\n * Condition in a scenario\n */\nexport interface Condition {\n factor: string;\n value: string;\n isIntervention?: boolean; // Was this changed from actual?\n}\n\n/**\n * Outcome of a scenario\n */\nexport interface Outcome {\n description: string;\n impact: 'positive' | 'negative' | 'neutral';\n magnitude?: number; // 0-1\n}\n\n/**\n * Scenario (actual or counterfactual)\n */\nexport interface Scenario {\n id: string;\n name: string;\n description: string;\n conditions: Condition[];\n outcomes: Outcome[];\n likelihood?: number; // How plausible is this scenario?\n}\n\n/**\n * Difference between actual and counterfactual\n */\nexport interface Difference {\n aspect: string;\n actual: string;\n counterfactual: string;\n significance: 'high' | 'medium' | 'low';\n}\n\n/**\n * Causal chain from intervention to outcome\n */\nexport interface CausalChain {\n intervention: string;\n steps: string[];\n finalOutcome: string;\n}\n\n/**\n * Point of intervention in timeline\n */\nexport interface InterventionPoint {\n description: string;\n timestamp?: string;\n timing: string;\n feasibility: number; // 0-1\n expectedImpact: number; // 0-1\n alternatives: string[];\n}\n\n/**\n * Comparison between scenarios\n */\nexport interface CounterfactualComparison {\n differences: Difference[];\n insights: string[];\n lessons: string[];\n}\n\n/**\n * Counterfactual reasoning thought\n */\nexport interface CounterfactualThought extends BaseThought {\n mode: ThinkingMode.COUNTERFACTUAL;\n actual: Scenario;\n counterfactuals: Scenario[];\n comparison: CounterfactualComparison;\n interventionPoint: InterventionPoint;\n causalChains?: CausalChain[];\n}\n\n// ===== ANALOGICAL REASONING =====\n\n/**\n * Entity in a domain\n */\nexport interface Entity {\n id: string;\n name: string;\n type: string;\n description: string;\n}\n\n/**\n * Relation between entities\n */\nexport interface Relation {\n id: string;\n type: string;\n from: string; // entity id\n to: string; // entity id\n description: string;\n}\n\n/**\n * Property of an entity\n */\nexport interface Property {\n entityId: string;\n name: string;\n value: string;\n}\n\n/**\n * Domain (source or target)\n */\nexport interface Domain {\n id: string;\n name: string;\n description: string;\n entities: Entity[];\n relations: Relation[];\n properties: Property[];\n}\n\n/**\n * Mapping between source and target domains\n */\nexport interface Mapping {\n sourceEntityId: string;\n targetEntityId: string;\n justification: string;\n confidence: number; // 0-1\n}\n\n/**\n * Insight from analogy\n */\nexport interface Insight {\n description: string;\n sourceEvidence: string;\n targetApplication: string;\n novelty: number; // 0-1\n}\n\n/**\n * Inference based on analogy\n */\nexport interface Inference {\n sourcePattern: string;\n targetPrediction: string;\n confidence: number; // 0-1\n needsVerification: boolean;\n}\n\n/**\n * Analogical reasoning thought\n */\nexport interface AnalogicalThought extends BaseThought {\n mode: ThinkingMode.ANALOGICAL;\n sourceDomain: Domain;\n targetDomain: Domain;\n mapping: Mapping[];\n insights: Insight[];\n inferences: Inference[];\n limitations: string[];\n analogyStrength: number; // 0-1\n}\n\n// ========== UNION TYPES ==========\n\n/**\n * Union type of all thoughts\n */\nexport type Thought =\n | SequentialThought\n | ShannonThought\n | MathematicsThought\n | PhysicsThought\n | HybridThought\n | InductiveThought\n | DeductiveThought\n | AbductiveThought\n | CausalThought\n | BayesianThought\n | CounterfactualThought\n | AnalogicalThought\n | TemporalThought\n | GameTheoryThought\n | EvidentialThought\n | FirstPrinciplesThought\n | SystemsThinkingThought\n | ScientificMethodThought\n | OptimizationThought\n | FormalLogicThought;\n\n// ========== TYPE GUARDS ==========\n\n/**\n * Type guards for existing modes\n */\nexport function isSequentialThought(thought: Thought): thought is SequentialThought {\n return thought.mode === ThinkingMode.SEQUENTIAL;\n}\n\nexport function isShannonThought(thought: Thought): thought is ShannonThought {\n return thought.mode === ThinkingMode.SHANNON;\n}\n\nexport function isMathematicsThought(thought: Thought): thought is MathematicsThought {\n return thought.mode === ThinkingMode.MATHEMATICS;\n}\n\nexport function isPhysicsThought(thought: Thought): thought is PhysicsThought {\n return thought.mode === ThinkingMode.PHYSICS;\n}\n\nexport function isHybridThought(thought: Thought): thought is HybridThought {\n return thought.mode === ThinkingMode.HYBRID;\n}\n\n/**\n * Type guards for new modes (v2.0)\n */\nexport function isInductiveThought(thought: Thought): thought is InductiveThought {\n return thought.mode === ThinkingMode.INDUCTIVE;\n}\n\nexport function isDeductiveThought(thought: Thought): thought is DeductiveThought {\n return thought.mode === ThinkingMode.DEDUCTIVE;\n}\n\nexport function isAbductiveThought(thought: Thought): thought is AbductiveThought {\n return thought.mode === ThinkingMode.ABDUCTIVE;\n}\n\nexport function isCausalThought(thought: Thought): thought is CausalThought {\n return thought.mode === ThinkingMode.CAUSAL;\n}\n\nexport function isBayesianThought(thought: Thought): thought is BayesianThought {\n return thought.mode === ThinkingMode.BAYESIAN;\n}\n\nexport function isCounterfactualThought(thought: Thought): thought is CounterfactualThought {\n return thought.mode === ThinkingMode.COUNTERFACTUAL;\n}\n\nexport function isAnalogicalThought(thought: Thought): thought is AnalogicalThought {\n return thought.mode === ThinkingMode.ANALOGICAL;\n}\n\n/**\n * Type guards for Phase 3 modes (v2.1+)\n */\nexport function isTemporalThought(thought: Thought): thought is TemporalThought {\n return thought.mode === ThinkingMode.TEMPORAL;\n}\n\nexport function isGameTheoryThought(thought: Thought): thought is GameTheoryThought {\n return thought.mode === ThinkingMode.GAMETHEORY;\n}\n\nexport function isEvidentialThought(thought: Thought): thought is EvidentialThought {\n return thought.mode === ThinkingMode.EVIDENTIAL;\n}\n\nexport function isFirstPrinciplesThought(thought: Thought): thought is FirstPrinciplesThought {\n return thought.mode === ThinkingMode.FIRSTPRINCIPLES;\n}\n\n/**\n * Type guards for Phase 4 modes (v3.2.0)\n */\nexport function isSystemsThinkingThought(thought: Thought): thought is SystemsThinkingThought {\n return thought.mode === ThinkingMode.SYSTEMSTHINKING;\n}\n\nexport function isScientificMethodThought(thought: Thought): thought is ScientificMethodThought {\n return thought.mode === ThinkingMode.SCIENTIFICMETHOD;\n}\n\nexport function isOptimizationThought(thought: Thought): thought is OptimizationThought {\n return thought.mode === ThinkingMode.OPTIMIZATION;\n}\n\nexport function isFormalLogicThought(thought: Thought): thought is FormalLogicThought {\n return thought.mode === ThinkingMode.FORMALLOGIC;\n}\n\n// Re-export Phase 3 types\nexport type { TemporalThought, GameTheoryThought, EvidentialThought, FirstPrinciplesThought };\n\n// Re-export Phase 4 types\nexport type { SystemsThinkingThought, ScientificMethodThought, OptimizationThought, FormalLogicThought };\n","/**\n * Session types for managing thinking sessions\n */\n\nimport { Thought, ThinkingMode } from './core.js';\n\n/**\n * Thinking session\n */\nexport interface ThinkingSession {\n // Identification\n id: string;\n title: string;\n \n // Configuration\n mode: ThinkingMode;\n domain?: string;\n config: SessionConfig;\n \n // Content\n thoughts: Thought[];\n \n // Metadata\n createdAt: Date;\n updatedAt: Date;\n author?: string;\n \n // State\n currentThoughtNumber: number;\n isComplete: boolean;\n \n // Analytics\n metrics: SessionMetrics;\n \n // Optional features\n collaborators?: string[];\n tags?: string[];\n attachments?: Attachment[];\n}\n\n/**\n * Session configuration\n */\nexport interface SessionConfig {\n // Mode-specific settings\n modeConfig: ModeConfig;\n \n // Feature flags\n enableAutoSave: boolean;\n enableValidation: boolean;\n enableVisualization: boolean;\n \n // Integration settings\n integrations: {\n mathMcp?: { url: string; enabled: boolean };\n wolfram?: { appId: string; enabled: boolean };\n arxiv?: { enabled: boolean };\n };\n \n // Export preferences\n exportFormats: ExportFormat[];\n autoExportOnComplete: boolean;\n \n // Performance settings\n maxThoughtsInMemory: number;\n compressionThreshold: number;\n}\n\n/**\n * Mode-specific configuration\n */\nexport interface ModeConfig {\n mode: ThinkingMode;\n strictValidation?: boolean;\n allowModeSwitch?: boolean;\n customSettings?: Record<string, unknown>;\n}\n\n/**\n * Session metrics\n */\nexport interface SessionMetrics {\n totalThoughts: number;\n thoughtsByType: Record<string, number>;\n averageUncertainty: number;\n revisionCount: number;\n timeSpent: number;\n dependencyDepth: number;\n customMetrics: Map<string, unknown>;\n\n // Validation cache statistics\n cacheStats?: {\n hits: number;\n misses: number;\n hitRate: number;\n size: number;\n maxSize: number;\n };\n\n // Running totals for incremental calculation (internal use)\n // These fields are internal implementation details for O(1) average calculation\n _uncertaintySum?: number;\n _uncertaintyCount?: number;\n}\n\n/**\n * Session metadata for listings\n */\nexport interface SessionMetadata {\n id: string;\n title: string;\n createdAt: Date;\n updatedAt: Date;\n thoughtCount: number;\n mode: ThinkingMode;\n isComplete: boolean;\n}\n\n/**\n * Export formats\n */\nexport type ExportFormat = 'markdown' | 'latex' | 'json' | 'html' | 'jupyter' | 'mermaid';\n\n/**\n * Attachment\n */\nexport interface Attachment {\n id: string;\n filename: string;\n mimeType: string;\n size: number;\n url?: string;\n data?: Buffer;\n}\n\n/**\n * Validation result\n */\nexport interface ValidationResult {\n isValid: boolean;\n confidence: number;\n \n issues: ValidationIssue[];\n \n strengthMetrics: {\n logicalSoundness: number;\n empiricalSupport: number;\n mathematicalRigor: number;\n physicalConsistency?: number;\n };\n \n tensorValidation?: {\n rankCorrect: boolean;\n symmetriesVerified: boolean;\n invariantsChecked: boolean;\n dimensionsConsistent: boolean;\n };\n \n suggestions?: string[];\n}\n\n/**\n * Validation issue\n */\nexport interface ValidationIssue {\n severity: 'error' | 'warning' | 'info';\n thoughtNumber: number;\n description: string;\n suggestion: string;\n category: 'logical' | 'mathematical' | 'physical' | 'structural';\n}\n","/**\n * Mode Recommendation System (v2.4)\n * Intelligent system to recommend which reasoning modes to use based on problem characteristics\n */\n\nimport { ThinkingMode } from '../core.js';\n\nexport interface ProblemCharacteristics {\n domain: string;\n complexity: 'low' | 'medium' | 'high';\n uncertainty: 'low' | 'medium' | 'high';\n timeDependent: boolean;\n multiAgent: boolean;\n requiresProof: boolean;\n requiresQuantification: boolean;\n hasIncompleteInfo: boolean;\n requiresExplanation: boolean;\n hasAlternatives: boolean;\n}\n\nexport interface ModeRecommendation {\n mode: ThinkingMode;\n score: number; // 0-1, how well suited\n reasoning: string;\n strengths: string[];\n limitations: string[];\n examples: string[];\n}\n\nexport interface CombinationRecommendation {\n modes: ThinkingMode[];\n sequence: 'parallel' | 'sequential' | 'hybrid';\n rationale: string;\n benefits: string[];\n synergies: string[];\n}\n\nexport class ModeRecommender {\n /**\n * Recommends reasoning modes based on problem characteristics\n * Returns modes ranked by suitability score\n */\n recommendModes(characteristics: ProblemCharacteristics): ModeRecommendation[] {\n const recommendations: ModeRecommendation[] = [];\n\n // Core reasoning modes - prioritize for philosophical/metaphysical domains\n const isPhilosophical = characteristics.domain.toLowerCase().includes('metaphysics') ||\n characteristics.domain.toLowerCase().includes('theology') ||\n characteristics.domain.toLowerCase().includes('philosophy') ||\n characteristics.domain.toLowerCase().includes('epistemology') ||\n characteristics.domain.toLowerCase().includes('ethics');\n\n // Hybrid mode - for complex multi-faceted problems\n if (characteristics.complexity === 'high' &&\n (characteristics.requiresExplanation || characteristics.hasAlternatives || isPhilosophical)) {\n recommendations.push({\n mode: ThinkingMode.HYBRID,\n score: 0.92,\n reasoning: 'Complex problem benefits from multi-modal synthesis combining inductive, deductive, and abductive reasoning',\n strengths: ['Comprehensive analysis', 'Combines empirical and logical approaches', 'Maximum evidential strength', 'Convergent validation'],\n limitations: ['Time-intensive', 'Requires understanding of multiple reasoning types'],\n examples: ['Philosophical arguments', 'Scientific theories', 'Complex decision-making', 'Metaphysical questions'],\n });\n }\n\n // Inductive reasoning - pattern recognition and generalization\n if (!characteristics.requiresProof &&\n (characteristics.requiresQuantification || characteristics.hasIncompleteInfo || isPhilosophical)) {\n recommendations.push({\n mode: ThinkingMode.INDUCTIVE,\n score: isPhilosophical ? 0.85 : 0.80,\n reasoning: 'Problem requires pattern recognition and generalization from observations',\n strengths: ['Empirical grounding', 'Pattern detection', 'Probabilistic reasoning', 'Scientific discovery'],\n limitations: ['Cannot prove with certainty', 'Vulnerable to black swans', 'Sample size dependent'],\n examples: ['Scientific hypotheses', 'Trend analysis', 'Empirical arguments', 'Data-driven insights'],\n });\n }\n\n // Deductive reasoning - logical derivation from principles\n if (characteristics.requiresProof || isPhilosophical) {\n recommendations.push({\n mode: ThinkingMode.DEDUCTIVE,\n score: characteristics.requiresProof ? 0.90 : 0.75,\n reasoning: 'Problem requires logical derivation from general principles to specific conclusions',\n strengths: ['Logical validity', 'Rigorous inference', 'Exposes contradictions', 'Formal reasoning'],\n limitations: ['Soundness depends on premise truth', 'Vulnerable to definitional disputes', 'May not handle uncertainty well'],\n examples: ['Logical proofs', 'Mathematical theorems', 'Philosophical arguments', 'Formal verification'],\n });\n }\n\n // Abductive reasoning - inference to best explanation\n if (characteristics.requiresExplanation || isPhilosophical) {\n recommendations.push({\n mode: ThinkingMode.ABDUCTIVE,\n score: isPhilosophical ? 0.90 : 0.87,\n reasoning: 'Problem requires finding best explanations through comparative hypothesis evaluation',\n strengths: ['Hypothesis generation', 'Comparative evaluation', 'Explanatory power assessment', 'Handles competing theories'],\n limitations: ['May miss non-obvious explanations', 'Explanatory power is subjective'],\n examples: ['Scientific explanation', 'Debugging', 'Diagnosis', 'Theory selection', 'Metaphysical arguments'],\n });\n }\n\n // Temporal reasoning\n if (characteristics.timeDependent) {\n recommendations.push({\n mode: ThinkingMode.TEMPORAL,\n score: 0.9,\n reasoning: 'Problem involves time-dependent events and sequences',\n strengths: ['Event sequencing', 'Temporal causality', 'Timeline construction'],\n limitations: ['Limited strategic reasoning'],\n examples: ['Process modeling', 'Event correlation', 'Timeline debugging'],\n });\n }\n\n // Game theory\n if (characteristics.multiAgent) {\n recommendations.push({\n mode: ThinkingMode.GAMETHEORY,\n score: 0.85,\n reasoning: 'Problem involves strategic interactions between agents',\n strengths: ['Equilibrium analysis', 'Strategic reasoning', 'Multi-agent dynamics'],\n limitations: ['Assumes rationality', 'Complex computations'],\n examples: ['Competitive analysis', 'Auction design', 'Negotiation'],\n });\n }\n\n // Evidential reasoning\n if (characteristics.hasIncompleteInfo && characteristics.uncertainty === 'high' && !isPhilosophical) {\n recommendations.push({\n mode: ThinkingMode.EVIDENTIAL,\n score: 0.82,\n reasoning: 'Problem has incomplete information and high uncertainty requiring Dempster-Shafer belief functions',\n strengths: ['Handles ignorance', 'Evidence combination', 'Uncertainty intervals'],\n limitations: ['Computational complexity', 'Requires careful mass assignment', 'Better for sensor fusion than philosophical reasoning'],\n examples: ['Sensor fusion', 'Diagnostic reasoning', 'Intelligence analysis'],\n });\n }\n\n // Causal reasoning\n if (characteristics.timeDependent && characteristics.requiresExplanation) {\n recommendations.push({\n mode: ThinkingMode.CAUSAL,\n score: 0.86,\n reasoning: 'Problem requires understanding cause-effect relationships',\n strengths: ['Intervention analysis', 'Causal graphs', 'Impact assessment'],\n limitations: ['Requires domain knowledge', 'Difficult to identify confounders'],\n examples: ['Impact analysis', 'System design', 'Policy evaluation'],\n });\n }\n\n // Bayesian reasoning\n if (characteristics.requiresQuantification && characteristics.uncertainty !== 'low') {\n recommendations.push({\n mode: ThinkingMode.BAYESIAN,\n score: 0.84,\n reasoning: 'Problem requires probabilistic reasoning with evidence updates',\n strengths: ['Principled uncertainty', 'Evidence integration', 'Prior knowledge'],\n limitations: ['Requires probability estimates', 'Computationally intensive'],\n examples: ['A/B testing', 'Risk assessment', 'Predictive modeling'],\n });\n }\n\n // Counterfactual reasoning\n if (characteristics.hasAlternatives) {\n recommendations.push({\n mode: ThinkingMode.COUNTERFACTUAL,\n score: 0.82,\n reasoning: 'Problem benefits from analyzing alternative scenarios',\n strengths: ['What-if analysis', 'Post-mortem insights', 'Decision comparison'],\n limitations: ['Speculative', 'Difficult to validate'],\n examples: ['Post-mortems', 'Strategic planning', 'Architecture decisions'],\n });\n }\n\n // Analogical reasoning\n if (characteristics.complexity === 'high' && characteristics.requiresExplanation) {\n recommendations.push({\n mode: ThinkingMode.ANALOGICAL,\n score: 0.80,\n reasoning: 'Problem can benefit from cross-domain analogies',\n strengths: ['Creative insights', 'Knowledge transfer', 'Pattern recognition'],\n limitations: ['Analogies may be superficial', 'Requires diverse knowledge'],\n examples: ['Novel problem solving', 'Design thinking', 'Innovation'],\n });\n }\n\n // Mathematical reasoning\n if (characteristics.requiresProof) {\n recommendations.push({\n mode: ThinkingMode.MATHEMATICS,\n score: 0.95,\n reasoning: 'Problem requires formal proofs and symbolic reasoning',\n strengths: ['Rigorous proofs', 'Symbolic computation', 'Theorem proving'],\n limitations: ['Limited to mathematical domains'],\n examples: ['Algorithm correctness', 'Complexity analysis', 'Formal verification'],\n });\n }\n\n // Physics reasoning\n if (characteristics.domain === 'physics' || characteristics.domain === 'engineering') {\n recommendations.push({\n mode: ThinkingMode.PHYSICS,\n score: 0.90,\n reasoning: 'Problem involves physical systems or tensor mathematics',\n strengths: ['Field theory', 'Conservation laws', 'Tensor analysis'],\n limitations: ['Specialized to physics domains'],\n examples: ['Physical modeling', 'System dynamics', 'Engineering analysis'],\n });\n }\n\n // Shannon methodology\n if (characteristics.complexity === 'high' && characteristics.requiresProof) {\n recommendations.push({\n mode: ThinkingMode.SHANNON,\n score: 0.88,\n reasoning: 'Complex problem requiring systematic decomposition',\n strengths: ['Systematic approach', 'Problem decomposition', 'Rigorous analysis'],\n limitations: ['Time-intensive', 'Requires discipline'],\n examples: ['Complex system design', 'Research problems', 'Novel algorithms'],\n });\n }\n\n // Sequential reasoning (default fallback)\n if (recommendations.length === 0) {\n recommendations.push({\n mode: ThinkingMode.SEQUENTIAL,\n score: 0.70,\n reasoning: 'General-purpose iterative reasoning',\n strengths: ['Flexible', 'Adaptable', 'Iterative refinement'],\n limitations: ['May lack structure for complex problems'],\n examples: ['General problem solving', 'Exploration', 'Brainstorming'],\n });\n }\n\n // Sort by score (highest first)\n return recommendations.sort((a, b) => b.score - a.score);\n }\n\n /**\n * Recommends combinations of reasoning modes that work well together\n */\n recommendCombinations(characteristics: ProblemCharacteristics): CombinationRecommendation[] {\n const combinations: CombinationRecommendation[] = [];\n\n const isPhilosophical = characteristics.domain.toLowerCase().includes('metaphysics') ||\n characteristics.domain.toLowerCase().includes('theology') ||\n characteristics.domain.toLowerCase().includes('philosophy') ||\n characteristics.domain.toLowerCase().includes('epistemology') ||\n characteristics.domain.toLowerCase().includes('ethics');\n\n // Inductive + Deductive + Abductive (Hybrid) - for philosophical/complex problems\n if (isPhilosophical || (characteristics.complexity === 'high' && characteristics.requiresExplanation && characteristics.hasAlternatives)) {\n combinations.push({\n modes: [ThinkingMode.INDUCTIVE, ThinkingMode.DEDUCTIVE, ThinkingMode.ABDUCTIVE],\n sequence: 'hybrid',\n rationale: 'Synthesize empirical patterns, logical derivations, and explanatory hypotheses for maximum evidential strength',\n benefits: ['Convergent validation from three independent methods', 'Empirical grounding + logical rigor + explanatory power', 'Highest achievable confidence through multi-modal synthesis', 'Exposes both empirical patterns and logical contradictions'],\n synergies: ['Inductive patterns inform abductive hypotheses', 'Deductive logic tests hypothesis validity', 'Abductive explanations guide inductive search', 'All three methods converge on same conclusion'],\n });\n }\n\n // Temporal + Causal\n if (characteristics.timeDependent && characteristics.requiresExplanation) {\n combinations.push({\n modes: [ThinkingMode.TEMPORAL, ThinkingMode.CAUSAL],\n sequence: 'sequential',\n rationale: 'Build timeline first, then analyze causal relationships',\n benefits: ['Complete temporal-causal model', 'Root cause with timeline context'],\n synergies: ['Temporal events inform causal nodes', 'Causal edges explain temporal sequences'],\n });\n }\n\n // Abductive + Bayesian\n if (characteristics.requiresExplanation && characteristics.requiresQuantification) {\n combinations.push({\n modes: [ThinkingMode.ABDUCTIVE, ThinkingMode.BAYESIAN],\n sequence: 'sequential',\n rationale: 'Generate hypotheses, then quantify with probabilities',\n benefits: ['Systematic hypothesis generation', 'Quantified belief updates'],\n synergies: ['Abductive hypotheses become Bayesian hypotheses', 'Bayesian updates refine explanations'],\n });\n }\n\n // Game Theory + Counterfactual\n if (characteristics.multiAgent && characteristics.hasAlternatives) {\n combinations.push({\n modes: [ThinkingMode.GAMETHEORY, ThinkingMode.COUNTERFACTUAL],\n sequence: 'hybrid',\n rationale: 'Analyze equilibria, then explore alternative strategies',\n benefits: ['Strategic analysis + scenario exploration', 'Robustness testing'],\n synergies: ['Equilibria as actual scenarios', 'Strategy changes as interventions'],\n });\n }\n\n // Evidential + Causal\n if (characteristics.hasIncompleteInfo && characteristics.timeDependent) {\n combinations.push({\n modes: [ThinkingMode.EVIDENTIAL, ThinkingMode.CAUSAL],\n sequence: 'parallel',\n rationale: 'Combine uncertain evidence while modeling causal structure',\n benefits: ['Handles uncertainty and causality', 'Evidence fusion with causal reasoning'],\n synergies: ['Belief functions inform causal strengths', 'Causal structure guides evidence combination'],\n });\n }\n\n // Temporal + Game Theory\n if (characteristics.timeDependent && characteristics.multiAgent) {\n combinations.push({\n modes: [ThinkingMode.TEMPORAL, ThinkingMode.GAMETHEORY],\n sequence: 'sequential',\n rationale: 'Model event sequences, then analyze strategic interactions over time',\n benefits: ['Dynamic game analysis', 'Time-dependent strategies'],\n synergies: ['Temporal events as game stages', 'Strategies evolve over timeline'],\n });\n }\n\n\n // Mathematics + Shannon (for complex proofs)\n if (characteristics.requiresProof && characteristics.complexity === 'high') {\n combinations.push({\n modes: [ThinkingMode.SHANNON, ThinkingMode.MATHEMATICS],\n sequence: 'hybrid',\n rationale: 'Use Shannon methodology to structure complex mathematical proofs',\n benefits: ['Systematic proof construction', 'Clear problem decomposition'],\n synergies: ['Shannon stages guide proof strategy', 'Mathematical rigor validates each stage'],\n });\n }\n\n return combinations;\n }\n\n /**\n * Get a simple mode recommendation based on a few key characteristics\n * Simplified version for quick recommendations\n */\n quickRecommend(problemType: string): ThinkingMode {\n const typeMap: Record<string, ThinkingMode> = {\n // Core reasoning modes\n 'explanation': ThinkingMode.ABDUCTIVE,\n 'hypothesis': ThinkingMode.ABDUCTIVE,\n 'inference': ThinkingMode.ABDUCTIVE,\n 'pattern': ThinkingMode.INDUCTIVE,\n 'generalization': ThinkingMode.INDUCTIVE,\n 'empirical': ThinkingMode.INDUCTIVE,\n 'logic': ThinkingMode.DEDUCTIVE,\n 'proof': ThinkingMode.DEDUCTIVE,\n 'derivation': ThinkingMode.DEDUCTIVE,\n 'complex': ThinkingMode.HYBRID,\n 'synthesis': ThinkingMode.HYBRID,\n 'philosophical': ThinkingMode.HYBRID,\n 'metaphysical': ThinkingMode.HYBRID,\n // Specialized modes\n 'debugging': ThinkingMode.ABDUCTIVE,\n 'mathematical': ThinkingMode.MATHEMATICS,\n 'timeline': ThinkingMode.TEMPORAL,\n 'strategy': ThinkingMode.GAMETHEORY,\n 'uncertainty': ThinkingMode.EVIDENTIAL,\n 'causality': ThinkingMode.CAUSAL,\n 'probability': ThinkingMode.BAYESIAN,\n 'what-if': ThinkingMode.COUNTERFACTUAL,\n 'analogy': ThinkingMode.ANALOGICAL,\n 'physics': ThinkingMode.PHYSICS,\n 'systematic': ThinkingMode.SHANNON,\n };\n\n return typeMap[problemType.toLowerCase()] || ThinkingMode.SEQUENTIAL;\n }\n}\n","/**\n * Type definitions index\n * Exports all types for the DeepThinking MCP server\n *\n * Note: All thought types are exported from core.ts to avoid duplicate exports.\n * Mode-specific types are imported by core.ts and re-exported from there.\n */\n\nexport * from './core.js';\nexport * from './session.js';\n\n// Export mode recommendation types (doesn't conflict with core exports)\nexport * from './modes/recommendations.js';\n","/**\n * Custom error classes for DeepThinking MCP\n * Provides structured error handling with proper error codes and context\n *\n * STANDARDIZED ERROR FORMAT:\n * All errors extend DeepThinkingError and include:\n * - message: Human-readable error description\n * - code: Machine-readable error code (SCREAMING_SNAKE_CASE)\n * - context: Additional error context (sanitized, no PII)\n * - timestamp: When the error occurred\n * - stack: Stack trace for debugging\n *\n * USAGE GUIDELINES:\n * 1. Use specific error classes when available (e.g., SessionNotFoundError)\n * 2. Use ErrorFactory for common error patterns\n * 3. Never expose sensitive data in error messages or context\n * 4. Include relevant context for debugging (IDs, not content)\n * 5. Log errors with appropriate severity level\n *\n * ERROR CODE CONVENTIONS:\n * - SESSION_*: Session lifecycle errors\n * - VALIDATION_*: Input/data validation errors\n * - RESOURCE_*: Resource limits and availability\n * - SECURITY_*: Security and authentication errors\n * - RATE_LIMIT_*: Rate limiting errors\n * - EXPORT_*: Export and serialization errors\n */\n\n/**\n * Base error class for all DeepThinking MCP errors\n */\nexport class DeepThinkingError extends Error {\n public readonly code: string;\n public readonly context?: Record<string, unknown>;\n public readonly timestamp: Date;\n\n constructor(message: string, code: string, context?: Record<string, unknown>) {\n super(message);\n this.name = this.constructor.name;\n this.code = code;\n this.context = context;\n this.timestamp = new Date();\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n /**\n * Convert error to JSON for logging/serialization\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n context: this.context,\n timestamp: this.timestamp.toISOString(),\n stack: this.stack,\n };\n }\n}\n\n/**\n * Session-related errors\n */\nexport class SessionError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'SESSION_ERROR', context);\n }\n}\n\n/**\n * Session not found error\n */\nexport class SessionNotFoundError extends DeepThinkingError {\n constructor(sessionId: string) {\n super(`Session not found: ${sessionId}`, 'SESSION_NOT_FOUND', { sessionId });\n }\n}\n\n/**\n * Session already exists error\n */\nexport class SessionAlreadyExistsError extends DeepThinkingError {\n constructor(sessionId: string) {\n super(`Session already exists: ${sessionId}`, 'SESSION_ALREADY_EXISTS', { sessionId });\n }\n}\n\n/**\n * Validation errors\n */\nexport class ValidationError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'VALIDATION_ERROR', context);\n }\n}\n\n/**\n * Input validation error\n */\nexport class InputValidationError extends DeepThinkingError {\n constructor(fieldName: string, reason: string, value?: unknown) {\n super(`Invalid ${fieldName}: ${reason}`, 'INPUT_VALIDATION_ERROR', {\n fieldName,\n reason,\n value: typeof value === 'object' ? '[object]' : value,\n });\n }\n}\n\n/**\n * Configuration errors\n */\nexport class ConfigurationError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'CONFIGURATION_ERROR', context);\n }\n}\n\n/**\n * Invalid mode error\n */\nexport class InvalidModeError extends DeepThinkingError {\n constructor(mode: string, validModes: string[]) {\n super(`Invalid thinking mode: ${mode}`, 'INVALID_MODE', { mode, validModes });\n }\n}\n\n/**\n * Thought processing errors\n */\nexport class ThoughtProcessingError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'THOUGHT_PROCESSING_ERROR', context);\n }\n}\n\n/**\n * Export errors\n */\nexport class ExportError extends DeepThinkingError {\n constructor(message: string, format: string, context?: Record<string, unknown>) {\n super(message, 'EXPORT_ERROR', { ...context, format });\n }\n}\n\n/**\n * Resource limit errors\n */\nexport class ResourceLimitError extends DeepThinkingError {\n constructor(resource: string, limit: number, actual: number) {\n super(\n `Resource limit exceeded for ${resource}: ${actual} > ${limit}`,\n 'RESOURCE_LIMIT_EXCEEDED',\n { resource, limit, actual }\n );\n }\n}\n\n/**\n * Error factory for creating appropriate error types\n */\nexport class ErrorFactory {\n static sessionNotFound(sessionId: string): SessionNotFoundError {\n return new SessionNotFoundError(sessionId);\n }\n\n static invalidInput(fieldName: string, reason: string, value?: unknown): InputValidationError {\n return new InputValidationError(fieldName, reason, value);\n }\n\n static invalidMode(mode: string, validModes: string[]): InvalidModeError {\n return new InvalidModeError(mode, validModes);\n }\n\n static resourceLimit(resource: string, limit: number, actual: number): ResourceLimitError {\n return new ResourceLimitError(resource, limit, actual);\n }\n\n static exportFailed(format: string, reason: string): ExportError {\n return new ExportError(`Export failed: ${reason}`, format);\n }\n}\n\n/**\n * Rate limiting errors\n */\nexport class RateLimitError extends DeepThinkingError {\n constructor(operation: string, limit?: number, windowMs?: number) {\n const message = limit\n ? `Rate limit exceeded for ${operation}: ${limit} requests per ${windowMs}ms`\n : `Rate limit exceeded for ${operation}`;\n\n super(message, 'RATE_LIMIT_EXCEEDED', { operation, limit, windowMs });\n }\n}\n\n/**\n * Security-related errors\n */\nexport class SecurityError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'SECURITY_ERROR', context);\n }\n}\n\n/**\n * Path traversal security error\n */\nexport class PathTraversalError extends DeepThinkingError {\n constructor(attemptedPath: string) {\n super('Path traversal attempt detected', 'PATH_TRAVERSAL_DETECTED', { attemptedPath });\n }\n}\n\n/**\n * Storage and persistence errors\n */\nexport class StorageError extends DeepThinkingError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, 'STORAGE_ERROR', context);\n }\n}\n\n/**\n * Backup operation errors\n */\nexport class BackupError extends DeepThinkingError {\n constructor(message: string, backupId?: string, context?: Record<string, unknown>) {\n super(message, 'BACKUP_ERROR', { ...context, backupId });\n }\n}\n","/**\n * Input sanitization utilities for DeepThinking MCP\n * Provides basic security and validation for user inputs\n */\n\n/**\n * Maximum allowed lengths for string inputs\n */\nexport const MAX_LENGTHS = {\n THOUGHT_CONTENT: 100000, // 100KB for thought content\n TITLE: 500,\n DOMAIN: 200,\n AUTHOR: 300,\n SESSION_ID: 100,\n HYPOTHESIS: 5000,\n DESCRIPTION: 10000,\n STRING_FIELD: 1000,\n};\n\n/**\n * Sanitize and validate a string input\n * @param input - The string to sanitize\n * @param maxLength - Maximum allowed length (default: MAX_LENGTHS.STRING_FIELD)\n * @param fieldName - Name of the field for error messages\n * @returns Sanitized string\n * @throws Error if input is invalid\n */\nexport function sanitizeString(\n input: string,\n maxLength: number = MAX_LENGTHS.STRING_FIELD,\n fieldName: string = 'input'\n): string {\n if (typeof input !== 'string') {\n throw new Error(`${fieldName} must be a string`);\n }\n\n // Trim whitespace\n const trimmed = input.trim();\n\n // Check length\n if (trimmed.length === 0) {\n throw new Error(`${fieldName} cannot be empty`);\n }\n\n if (trimmed.length > maxLength) {\n throw new Error(`${fieldName} exceeds maximum length of ${maxLength} characters`);\n }\n\n // Check for null bytes (potential injection)\n if (trimmed.includes('\\0')) {\n throw new Error(`${fieldName} contains invalid null bytes`);\n }\n\n return trimmed;\n}\n\n/**\n * Sanitize an optional string input\n */\nexport function sanitizeOptionalString(\n input: string | undefined,\n maxLength: number = MAX_LENGTHS.STRING_FIELD,\n fieldName: string = 'input'\n): string | undefined {\n if (input === undefined || input === null || input === '') {\n return undefined;\n }\n return sanitizeString(input, maxLength, fieldName);\n}\n\n/**\n * Validate a session ID (should be a valid UUID v4)\n */\nexport function validateSessionId(sessionId: string): string {\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\n if (!uuidRegex.test(sessionId)) {\n throw new Error(`Invalid session ID format: ${sessionId}`);\n }\n\n return sessionId;\n}\n\n/**\n * Sanitize numeric input and ensure it's within range\n */\nexport function sanitizeNumber(\n input: number,\n min: number = -Infinity,\n max: number = Infinity,\n fieldName: string = 'number'\n): number {\n if (typeof input !== 'number' || isNaN(input)) {\n throw new Error(`${fieldName} must be a valid number`);\n }\n\n if (!isFinite(input)) {\n throw new Error(`${fieldName} must be a finite number`);\n }\n\n if (input < min || input > max) {\n throw new Error(`${fieldName} must be between ${min} and ${max}`);\n }\n\n return input;\n}\n\n/**\n * Sanitize an array of strings\n */\nexport function sanitizeStringArray(\n input: string[],\n maxLength: number = MAX_LENGTHS.STRING_FIELD,\n maxItems: number = 1000,\n fieldName: string = 'array'\n): string[] {\n if (!Array.isArray(input)) {\n throw new Error(`${fieldName} must be an array`);\n }\n\n if (input.length > maxItems) {\n throw new Error(`${fieldName} exceeds maximum of ${maxItems} items`);\n }\n\n return input.map((item, index) =>\n sanitizeString(item, maxLength, `${fieldName}[${index}]`)\n );\n}\n\n/**\n * Sanitize thought content (allows larger size)\n */\nexport function sanitizeThoughtContent(content: string): string {\n return sanitizeString(content, MAX_LENGTHS.THOUGHT_CONTENT, 'thought content');\n}\n\n/**\n * Sanitize session title\n */\nexport function sanitizeTitle(title: string | undefined): string {\n if (!title) {\n return 'Untitled Session';\n }\n return sanitizeString(title, MAX_LENGTHS.TITLE, 'title');\n}\n\n/**\n * Sanitize domain name\n */\nexport function sanitizeDomain(domain: string | undefined): string | undefined {\n return sanitizeOptionalString(domain, MAX_LENGTHS.DOMAIN, 'domain');\n}\n\n/**\n * Sanitize author name\n */\nexport function sanitizeAuthor(author: string | undefined): string | undefined {\n return sanitizeOptionalString(author, MAX_LENGTHS.AUTHOR, 'author');\n}\n\n/**\n * Escape HTML special characters to prevent XSS\n * @param text - Text to escape\n * @returns HTML-safe string\n */\nexport function escapeHtml(text: string): string {\n const htmlEscapeMap: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n };\n\n return text.replace(/[&<>\"'\\/]/g, (char) => htmlEscapeMap[char] || char);\n}\n\n/**\n * Escape LaTeX special characters to prevent injection\n * @param text - Text to escape\n * @returns LaTeX-safe string\n */\nexport function escapeLatex(text: string): string {\n const latexEscapeMap: Record<string, string> = {\n '\\\\': '\\\\textbackslash{}',\n '{': '\\\\{',\n '}': '\\\\}',\n '$': '\\\\$',\n '&': '\\\\&',\n '%': '\\\\%',\n '#': '\\\\#',\n '_': '\\\\_',\n '~': '\\\\textasciitilde{}',\n '^': '\\\\textasciicircum{}',\n };\n\n return text.replace(/[\\\\{}$&%#_~^]/g, (char) => latexEscapeMap[char] || char);\n}\n","/**\n * Logging utility for DeepThinking MCP\n * Provides structured logging with levels and context\n */\n\nimport { ILogger } from '../interfaces/ILogger.js';\n\n/**\n * Log levels\n */\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n SILENT = 4,\n}\n\n/**\n * Log entry structure\n */\nexport interface LogEntry {\n level: LogLevel;\n message: string;\n timestamp: Date;\n context?: Record<string, unknown>;\n error?: Error;\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n minLevel: LogLevel;\n enableConsole: boolean;\n enableTimestamps: boolean;\n prettyPrint: boolean;\n}\n\n/**\n * Default logger configuration\n */\nconst DEFAULT_CONFIG: LoggerConfig = {\n minLevel: LogLevel.INFO,\n enableConsole: true,\n enableTimestamps: true,\n prettyPrint: true,\n};\n\n/**\n * Simple logger implementation\n */\nexport class Logger implements ILogger {\n private config: LoggerConfig;\n private logs: LogEntry[] = [];\n\n constructor(config?: Partial<LoggerConfig>) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Log a debug message\n */\n debug(message: string, context?: Record<string, unknown>): void {\n this.log(LogLevel.DEBUG, message, context);\n }\n\n /**\n * Log an info message\n */\n info(message: string, context?: Record<string, unknown>): void {\n this.log(LogLevel.INFO, message, context);\n }\n\n /**\n * Log a warning message\n */\n warn(message: string, context?: Record<string, unknown>): void {\n this.log(LogLevel.WARN, message, context);\n }\n\n /**\n * Log an error message\n */\n error(message: string, error?: Error, context?: Record<string, unknown>): void {\n this.log(LogLevel.ERROR, message, context, error);\n }\n\n /**\n * Internal log method\n */\n private log(\n level: LogLevel,\n message: string,\n context?: Record<string, unknown>,\n error?: Error\n ): void {\n if (level < this.config.minLevel) {\n return;\n }\n\n const entry: LogEntry = {\n level,\n message,\n timestamp: new Date(),\n context,\n error,\n };\n\n this.logs.push(entry);\n\n if (this.config.enableConsole) {\n this.writeToConsole(entry);\n }\n }\n\n /**\n * Write log entry to console\n */\n private writeToConsole(entry: LogEntry): void {\n const levelName = LogLevel[entry.level];\n const timestamp = this.config.enableTimestamps\n ? `[${entry.timestamp.toISOString()}] `\n : '';\n\n let message = `${timestamp}${levelName}: ${entry.message}`;\n\n if (entry.context && this.config.prettyPrint) {\n message += `\\n Context: ${JSON.stringify(entry.context, null, 2)}`;\n }\n\n if (entry.error) {\n message += `\\n Error: ${entry.error.message}`;\n if (entry.error.stack && this.config.prettyPrint) {\n message += `\\n Stack: ${entry.error.stack}`;\n }\n }\n\n switch (entry.level) {\n case LogLevel.DEBUG:\n case LogLevel.INFO:\n console.log(message);\n break;\n case LogLevel.WARN:\n console.warn(message);\n break;\n case LogLevel.ERROR:\n console.error(message);\n break;\n }\n }\n\n /**\n * Get all log entries\n */\n getLogs(minLevel?: LogLevel): LogEntry[] {\n if (minLevel !== undefined) {\n return this.logs.filter(log => log.level >= minLevel);\n }\n return [...this.logs];\n }\n\n /**\n * Clear all logs\n */\n clearLogs(): void {\n this.logs = [];\n }\n\n /**\n * Set minimum log level\n */\n setLevel(level: LogLevel): void {\n this.config.minLevel = level;\n }\n\n /**\n * Export logs as JSON\n */\n exportLogs(): string {\n return JSON.stringify(this.logs.map(log => ({\n ...log,\n level: LogLevel[log.level],\n timestamp: log.timestamp.toISOString(),\n })), null, 2);\n }\n}\n\n/**\n * Global logger instance\n */\nexport const logger = new Logger();\n\n/**\n * Create a logger instance with custom config\n */\nexport function createLogger(config?: Partial<LoggerConfig>): Logger {\n return new Logger(config);\n}\n","/**\n * LRU Cache (v3.4.0)\n * Phase 4 Task 9.6: Least Recently Used cache implementation\n */\n\nimport type { Cache, CacheConfig, CacheEntry, CacheStats } from './types.js';\n\n/**\n * LRU (Least Recently Used) cache\n */\nexport class LRUCache<T> implements Cache<T> {\n private cache: Map<string, CacheEntry<T>>;\n private config: Required<CacheConfig>;\n private stats: CacheStats;\n\n constructor(config: Partial<CacheConfig> = {}) {\n this.cache = new Map();\n this.config = {\n /**\n * Default max cache size: 100 entries\n * Reasoning:\n * - Validation cache typically stores session/thought validation results\n * - Average entry size: ~1-2KB (validation result + metadata)\n * - 100 entries = ~100-200KB memory usage\n * - Sufficient for most use cases (covers recent validations)\n * - Prevents unbounded memory growth in long-running processes\n * - Can be overridden via config parameter for high-traffic scenarios\n */\n maxSize: config.maxSize || 100,\n strategy: 'lru',\n ttl: config.ttl || 0,\n enableStats: config.enableStats !== false,\n onEvict: config.onEvict || (() => {}),\n };\n\n this.stats = {\n size: 0,\n maxSize: this.config.maxSize,\n hits: 0,\n misses: 0,\n hitRate: 0,\n evictions: 0,\n sets: 0,\n deletes: 0,\n memoryUsage: 0,\n avgAccessTime: 0,\n };\n }\n\n /**\n * Get value by key\n */\n get(key: string): T | undefined {\n const entry = this.cache.get(key);\n\n if (!entry) {\n if (this.config.enableStats) {\n this.stats.misses++;\n this.updateHitRate();\n }\n return undefined;\n }\n\n // Check expiration\n if (entry.expiresAt && entry.expiresAt < new Date()) {\n this.delete(key);\n if (this.config.enableStats) {\n this.stats.misses++;\n this.updateHitRate();\n }\n return undefined;\n }\n\n // Update access time (LRU behavior)\n entry.lastAccessedAt = new Date();\n entry.accessCount++;\n\n // Move to end (most recently used)\n this.cache.delete(key);\n this.cache.set(key, entry);\n\n if (this.config.enableStats) {\n this.stats.hits++;\n this.updateHitRate();\n }\n\n return entry.value;\n }\n\n /**\n * Set value for key\n */\n set(key: string, value: T, ttl?: number): void {\n // Check if key exists\n const existing = this.cache.get(key);\n if (existing) {\n this.cache.delete(key);\n } else if (this.cache.size >= this.config.maxSize) {\n // Evict least recently used (first entry)\n this.evictLRU();\n }\n\n // Create entry\n const now = new Date();\n const effectiveTtl = ttl ?? this.config.ttl;\n const entry: CacheEntry<T> = {\n key,\n value,\n createdAt: now,\n lastAccessedAt: now,\n accessCount: 0,\n expiresAt: effectiveTtl ? new Date(now.getTime() + effectiveTtl) : undefined,\n size: this.estimateSize(value),\n };\n\n this.cache.set(key, entry);\n\n if (this.config.enableStats) {\n this.stats.sets++;\n this.stats.size = this.cache.size;\n this.stats.memoryUsage += entry.size || 0;\n }\n }\n\n /**\n * Check if key exists\n */\n has(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n\n // Check expiration\n if (entry.expiresAt && entry.expiresAt < new Date()) {\n this.delete(key);\n return false;\n }\n\n return true;\n }\n\n /**\n * Delete entry by key\n */\n delete(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n\n this.cache.delete(key);\n\n if (this.config.enableStats) {\n this.stats.deletes++;\n this.stats.size = this.cache.size;\n this.stats.memoryUsage -= entry.size || 0;\n }\n\n return true;\n }\n\n /**\n * Clear all entries\n */\n clear(): void {\n this.cache.clear();\n\n if (this.config.enableStats) {\n this.stats.size = 0;\n this.stats.memoryUsage = 0;\n }\n }\n\n /**\n * Get cache size\n */\n size(): number {\n return this.cache.size;\n }\n\n /**\n * Get cache statistics\n */\n getStats(): CacheStats {\n return { ...this.stats };\n }\n\n /**\n * Get all keys\n */\n keys(): string[] {\n return Array.from(this.cache.keys());\n }\n\n /**\n * Get all values\n */\n values(): T[] {\n return Array.from(this.cache.values()).map(e => e.value);\n }\n\n /**\n * Get all entries\n */\n entries(): Array<[string, T]> {\n return Array.from(this.cache.entries()).map(([k, v]) => [k, v.value]);\n }\n\n /**\n * Evict least recently used entry\n */\n private evictLRU(): void {\n // First entry is least recently used\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n const entry = this.cache.get(firstKey);\n this.cache.delete(firstKey);\n\n if (this.config.onEvict && entry) {\n this.config.onEvict(firstKey, entry.value);\n }\n\n if (this.config.enableStats) {\n this.stats.evictions++;\n this.stats.size = this.cache.size;\n if (entry) {\n this.stats.memoryUsage -= entry.size || 0;\n }\n }\n }\n }\n\n /**\n * Update hit rate\n */\n private updateHitRate(): void {\n const total = this.stats.hits + this.stats.misses;\n this.stats.hitRate = total > 0 ? this.stats.hits / total : 0;\n }\n\n /**\n * Estimate entry size\n */\n private estimateSize(value: T): number {\n try {\n return JSON.stringify(value).length * 2; // Rough estimate (UTF-16)\n } catch {\n return 0;\n }\n }\n\n /**\n * Clean expired entries\n */\n cleanExpired(): number {\n let cleaned = 0;\n const now = new Date();\n\n for (const [key, entry] of this.cache) {\n if (entry.expiresAt && entry.expiresAt < now) {\n this.delete(key);\n cleaned++;\n }\n }\n\n return cleaned;\n }\n}\n","/**\n * Centralized configuration for DeepThinking MCP Server\n *\n * All configurable values should be defined here to enable\n * easy environment-based configuration and deployment flexibility.\n */\n\n/**\n * Server configuration\n */\nexport interface ServerConfig {\n /** Maximum number of thoughts to keep in memory per session */\n maxThoughtsInMemory: number;\n\n /** Threshold for compressing old thoughts */\n compressionThreshold: number;\n\n /** Maximum content length in characters */\n maxContentLength: number;\n\n /** Validation tolerance for mathematical checks (e.g., mass sum) */\n validationTolerance: number;\n\n /** Maximum number of active sessions to keep in memory */\n maxActiveSessions: number;\n\n /** Session timeout in milliseconds (0 = no timeout) */\n sessionTimeoutMs: number;\n\n /** Enable validation result caching */\n enableValidationCache: boolean;\n\n /** Validation cache max size (number of entries) */\n validationCacheMaxSize: number;\n\n /** Enable session persistence to disk */\n enablePersistence: boolean;\n\n /** Directory for session persistence (if enabled) */\n persistenceDir: string;\n\n /** Log level: 'debug' | 'info' | 'warn' | 'error' */\n logLevel: 'debug' | 'info' | 'warn' | 'error';\n\n /** Enable performance metrics logging */\n enablePerformanceMetrics: boolean;\n}\n\n/**\n * Default configuration values\n */\nconst defaultConfig: ServerConfig = {\n maxThoughtsInMemory: parseInt(process.env.MCP_MAX_THOUGHTS || '1000', 10),\n compressionThreshold: parseInt(process.env.MCP_COMPRESSION_THRESHOLD || '500', 10),\n maxContentLength: parseInt(process.env.MCP_MAX_CONTENT_LENGTH || '10000', 10),\n validationTolerance: parseFloat(process.env.MCP_VALIDATION_TOLERANCE || '0.01'),\n maxActiveSessions: parseInt(process.env.MCP_MAX_SESSIONS || '100', 10),\n sessionTimeoutMs: parseInt(process.env.MCP_SESSION_TIMEOUT_MS || '0', 10),\n enableValidationCache: process.env.MCP_ENABLE_VALIDATION_CACHE !== 'false',\n validationCacheMaxSize: parseInt(process.env.MCP_VALIDATION_CACHE_SIZE || '1000', 10),\n enablePersistence: process.env.MCP_ENABLE_PERSISTENCE === 'true',\n persistenceDir: process.env.MCP_PERSISTENCE_DIR || './.deepthinking-sessions',\n logLevel: (process.env.MCP_LOG_LEVEL || 'info') as ServerConfig['logLevel'],\n enablePerformanceMetrics: process.env.MCP_ENABLE_PERF_METRICS === 'true',\n};\n\n/**\n * Current active configuration (can be overridden)\n */\nlet activeConfig: ServerConfig = { ...defaultConfig };\n\n/**\n * Get the current configuration\n */\nexport function getConfig(): Readonly<ServerConfig> {\n return Object.freeze({ ...activeConfig });\n}\n\n/**\n * Update configuration (for testing or runtime changes)\n *\n * @param updates - Partial configuration to merge with existing config\n * @returns The updated configuration\n */\nexport function updateConfig(updates: Partial<ServerConfig>): Readonly<ServerConfig> {\n activeConfig = { ...activeConfig, ...updates };\n return getConfig();\n}\n\n/**\n * Reset configuration to defaults\n */\nexport function resetConfig(): void {\n activeConfig = { ...defaultConfig };\n}\n\n/**\n * Validate configuration values\n *\n * @throws Error if configuration is invalid\n */\nexport function validateConfig(config: ServerConfig): void {\n if (config.maxThoughtsInMemory < 1) {\n throw new Error('maxThoughtsInMemory must be at least 1');\n }\n\n if (config.compressionThreshold < 0) {\n throw new Error('compressionThreshold must be non-negative');\n }\n\n if (config.maxContentLength < 1) {\n throw new Error('maxContentLength must be at least 1');\n }\n\n if (config.validationTolerance < 0 || config.validationTolerance > 1) {\n throw new Error('validationTolerance must be between 0 and 1');\n }\n\n if (config.maxActiveSessions < 1) {\n throw new Error('maxActiveSessions must be at least 1');\n }\n\n if (config.sessionTimeoutMs < 0) {\n throw new Error('sessionTimeoutMs must be non-negative');\n }\n\n if (config.validationCacheMaxSize < 0) {\n throw new Error('validationCacheMaxSize must be non-negative');\n }\n\n if (!['debug', 'info', 'warn', 'error'].includes(config.logLevel)) {\n throw new Error('logLevel must be one of: debug, info, warn, error');\n }\n}\n\n// Validate default config on load\nvalidateConfig(activeConfig);\n\n/**\n * Export constants for common use\n */\nexport const CONFIG = getConfig();\n","/**\n * Validation result caching for performance optimization\n *\n * Caches validation results to avoid redundant validation of unchanging content.\n * Uses content-based hashing for cache keys to ensure correctness.\n */\n\nimport { getConfig } from '../config/index.js';\nimport { ValidationResult } from '../types/session.js';\nimport { createHash } from 'crypto';\n\n/**\n * Validation result entry\n */\nexport interface ValidationCacheEntry {\n /** Cached validation result */\n result: ValidationResult;\n\n /** Timestamp of validation */\n timestamp: number;\n\n /** Number of times this cache entry was hit */\n hitCount: number;\n}\n\n/**\n * LRU Cache for validation results\n */\nexport class ValidationCache {\n private cache: Map<string, ValidationCacheEntry>;\n private maxSize: number;\n private hits: number = 0;\n private misses: number = 0;\n\n constructor(maxSize?: number) {\n const config = getConfig();\n this.maxSize = maxSize || config.validationCacheMaxSize;\n this.cache = new Map();\n }\n\n /**\n * Generate a cache key from thought content\n *\n * Uses SHA-256 hash of JSON-serialized content for reliable cache keys\n *\n * @param content - Content to hash\n * @returns Cache key\n */\n private generateKey(content: unknown): string {\n const json = JSON.stringify(content);\n return createHash('sha256').update(json).digest('hex');\n }\n\n /**\n * Get validation result from cache\n *\n * @param content - Content to look up\n * @returns Cached result or undefined if not found\n */\n get(content: unknown): ValidationCacheEntry | undefined {\n const key = this.generateKey(content);\n const entry = this.cache.get(key);\n\n if (entry) {\n this.hits++;\n entry.hitCount++;\n\n // Move to end (LRU)\n this.cache.delete(key);\n this.cache.set(key, entry);\n\n return entry;\n }\n\n this.misses++;\n return undefined;\n }\n\n /**\n * Store validation result in cache\n *\n * @param content - Content that was validated\n * @param result - Validation result to cache\n */\n set(content: unknown, result: ValidationResult): void {\n const key = this.generateKey(content);\n\n // If cache is full, remove least recently used (first entry)\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey !== undefined) {\n this.cache.delete(firstKey);\n }\n }\n\n const entry: ValidationCacheEntry = {\n result,\n timestamp: Date.now(),\n hitCount: 0,\n };\n\n this.cache.set(key, entry);\n }\n\n /**\n * Check if content is in cache\n *\n * @param content - Content to check\n * @returns true if cached\n */\n has(content: unknown): boolean {\n const key = this.generateKey(content);\n return this.cache.has(key);\n }\n\n /**\n * Clear all cached validation results\n */\n clear(): void {\n this.cache.clear();\n this.hits = 0;\n this.misses = 0;\n }\n\n /**\n * Get cache statistics\n */\n getStats(): {\n size: number;\n maxSize: number;\n hits: number;\n misses: number;\n hitRate: number;\n } {\n const total = this.hits + this.misses;\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hits: this.hits,\n misses: this.misses,\n hitRate: total > 0 ? this.hits / total : 0,\n };\n }\n\n /**\n * Resize the cache\n *\n * @param newSize - New maximum cache size\n */\n resize(newSize: number): void {\n this.maxSize = newSize;\n\n // If cache is now too large, trim it\n if (this.cache.size > newSize) {\n const keysToDelete = this.cache.size - newSize;\n const keys = Array.from(this.cache.keys());\n\n for (let i = 0; i < keysToDelete; i++) {\n this.cache.delete(keys[i]);\n }\n }\n }\n\n /**\n * Get entries sorted by hit count (most used first)\n */\n getTopEntries(limit: number = 10): Array<{ key: string; entry: ValidationCacheEntry }> {\n const entries = Array.from(this.cache.entries())\n .map(([key, entry]) => ({ key, entry }))\n .sort((a, b) => b.entry.hitCount - a.entry.hitCount);\n\n return entries.slice(0, limit);\n }\n\n /**\n * Remove entries older than a certain age\n *\n * @param maxAgeMs - Maximum age in milliseconds\n * @returns Number of entries removed\n */\n evictOld(maxAgeMs: number): number {\n const now = Date.now();\n let removed = 0;\n\n for (const [key, entry] of this.cache.entries()) {\n if (now - entry.timestamp > maxAgeMs) {\n this.cache.delete(key);\n removed++;\n }\n }\n\n return removed;\n }\n}\n\n/**\n * Global validation cache instance\n */\nexport const validationCache = new ValidationCache();\n","/**\n * Session Metrics Calculator (v3.4.5)\n * Sprint 3 Task 3.4: Extract metrics logic from SessionManager\n *\n * Handles all session metrics calculations including:\n * - Basic metrics (thought counts, revisions, time spent)\n * - Mode-specific metrics (temporal, game theory, evidential)\n * - Incremental calculations for performance (O(1) updates)\n * - Cache statistics tracking\n *\n * RESPONSIBILITY:\n * - Initialize session metrics\n * - Update metrics incrementally as thoughts are added\n * - Calculate mode-specific custom metrics\n * - Track validation cache statistics\n *\n * EXTRACTED FROM: src/session/manager.ts (metrics methods)\n */\n\nimport { ThinkingSession, SessionMetrics, Thought } from '../types/index.js';\nimport { isTemporalThought, isGameTheoryThought, isEvidentialThought } from '../types/core.js';\nimport { validationCache } from '../validation/cache.js';\n\n/**\n * Session Metrics Calculator - Handles all metrics computations\n *\n * Provides efficient, incremental metrics updates using O(1) algorithms\n * where possible. Tracks both generic and mode-specific metrics.\n *\n * @example\n * ```typescript\n * const calculator = new SessionMetricsCalculator();\n *\n * // Initialize metrics for new session\n * session.metrics = calculator.initializeMetrics();\n *\n * // Update metrics after adding thought\n * calculator.updateMetrics(session, newThought);\n * ```\n */\nexport class SessionMetricsCalculator {\n /**\n * Initialize metrics for a new session\n *\n * Creates a fresh metrics object with all counters set to zero\n * and cache statistics initialized.\n *\n * @returns Initialized session metrics\n *\n * @example\n * ```typescript\n * const metrics = calculator.initializeMetrics();\n * session.metrics = metrics;\n * ```\n */\n initializeMetrics(): SessionMetrics {\n return {\n totalThoughts: 0,\n thoughtsByType: {},\n averageUncertainty: 0,\n revisionCount: 0,\n timeSpent: 0,\n dependencyDepth: 0,\n customMetrics: new Map(),\n cacheStats: {\n hits: 0,\n misses: 0,\n hitRate: 0,\n size: 0,\n maxSize: 0,\n },\n };\n }\n\n /**\n * Update session metrics after adding a thought\n *\n * Performs incremental updates using O(1) algorithms for performance.\n * Handles mode-specific metrics for temporal, game theory, and evidential modes.\n *\n * **Performance Optimizations**:\n * - Incremental thoughtsByType counter (O(1) vs O(n) recalculation)\n * - Running average for uncertainty (O(1) vs O(n) recalculation)\n * - Max dependency depth tracking (O(1) comparison)\n *\n * @param session - Session to update (modified in-place)\n * @param thought - Newly added thought\n *\n * @example\n * ```typescript\n * calculator.updateMetrics(session, newThought);\n * console.log(session.metrics.totalThoughts); // Incremented\n * ```\n */\n updateMetrics(session: ThinkingSession, thought: Thought): void {\n const metrics = session.metrics;\n\n // Update total thoughts\n metrics.totalThoughts = session.thoughts.length;\n\n // Update thoughtsByType incrementally (O(1) instead of recalculating)\n const thoughtType = thought.mode || 'unknown';\n metrics.thoughtsByType[thoughtType] = (metrics.thoughtsByType[thoughtType] || 0) + 1;\n\n // Update revision count\n if (thought.isRevision) {\n metrics.revisionCount++;\n }\n\n // Update time spent (in milliseconds)\n metrics.timeSpent = session.updatedAt.getTime() - session.createdAt.getTime();\n\n // Update average uncertainty incrementally (O(1) instead of O(n))\n if ('uncertainty' in thought && typeof (thought as any).uncertainty === 'number') {\n const uncertaintyValue = (thought as any).uncertainty;\n const currentSum = metrics._uncertaintySum || 0;\n const currentCount = metrics._uncertaintyCount || 0;\n\n const newSum = currentSum + uncertaintyValue;\n const newCount = currentCount + 1;\n\n metrics._uncertaintySum = newSum;\n metrics._uncertaintyCount = newCount;\n metrics.averageUncertainty = newSum / newCount;\n }\n\n // Update dependency depth\n if ('dependencies' in thought && thought.dependencies) {\n const deps = (thought as any).dependencies as string[];\n if (deps && deps.length > metrics.dependencyDepth) {\n metrics.dependencyDepth = deps.length;\n }\n }\n\n // Update mode-specific metrics\n this.updateModeSpecificMetrics(metrics, thought);\n\n // Update validation cache statistics\n this.updateCacheStats(session);\n }\n\n /**\n * Update mode-specific custom metrics\n *\n * Calculates and stores metrics unique to specific thinking modes:\n * - Temporal: events, timeline, relations, constraints, intervals\n * - Game Theory: players, strategies, equilibria, game type\n * - Evidential: hypotheses, evidence, belief functions, decisions\n *\n * @param metrics - Session metrics to update\n * @param thought - Thought to analyze\n */\n private updateModeSpecificMetrics(metrics: SessionMetrics, thought: Thought): void {\n // Temporal-specific metrics (Phase 3, v2.1)\n if (isTemporalThought(thought)) {\n if (thought.events) {\n metrics.customMetrics.set('totalEvents', thought.events.length);\n }\n if (thought.timeline) {\n metrics.customMetrics.set('timelineUnit', thought.timeline.timeUnit);\n }\n if (thought.relations) {\n const causalRelations = thought.relations.filter(r => r.relationType === 'causes');\n metrics.customMetrics.set('causalRelations', causalRelations.length);\n }\n if (thought.constraints) {\n metrics.customMetrics.set('temporalConstraints', thought.constraints.length);\n }\n if (thought.intervals) {\n metrics.customMetrics.set('timeIntervals', thought.intervals.length);\n }\n }\n\n // Game theory-specific metrics (Phase 3, v2.2)\n if (isGameTheoryThought(thought)) {\n if (thought.players) {\n metrics.customMetrics.set('numPlayers', thought.players.length);\n }\n if (thought.strategies) {\n metrics.customMetrics.set('totalStrategies', thought.strategies.length);\n const mixedStrategies = thought.strategies.filter(s => !s.isPure);\n metrics.customMetrics.set('mixedStrategies', mixedStrategies.length);\n }\n if (thought.nashEquilibria) {\n metrics.customMetrics.set('nashEquilibria', thought.nashEquilibria.length);\n const pureEquilibria = thought.nashEquilibria.filter(e => e.type === 'pure');\n metrics.customMetrics.set('pureNashEquilibria', pureEquilibria.length);\n }\n if (thought.dominantStrategies) {\n metrics.customMetrics.set('dominantStrategies', thought.dominantStrategies.length);\n }\n if (thought.game) {\n metrics.customMetrics.set('gameType', thought.game.type);\n metrics.customMetrics.set('isZeroSum', thought.game.isZeroSum);\n }\n }\n\n // Evidential-specific metrics (Phase 3, v2.3)\n if (isEvidentialThought(thought)) {\n if (thought.hypotheses) {\n metrics.customMetrics.set('totalHypotheses', thought.hypotheses.length);\n }\n if (thought.evidence) {\n metrics.customMetrics.set('totalEvidence', thought.evidence.length);\n const avgReliability = thought.evidence.reduce((sum, e) => sum + e.reliability, 0) / thought.evidence.length;\n metrics.customMetrics.set('avgEvidenceReliability', avgReliability);\n }\n if (thought.beliefFunctions) {\n metrics.customMetrics.set('beliefFunctions', thought.beliefFunctions.length);\n }\n if (thought.combinedBelief) {\n metrics.customMetrics.set('hasCombinedBelief', true);\n if (thought.combinedBelief.conflictMass !== undefined) {\n metrics.customMetrics.set('conflictMass', thought.combinedBelief.conflictMass);\n }\n }\n if (thought.decisions) {\n metrics.customMetrics.set('decisions', thought.decisions.length);\n }\n }\n }\n\n /**\n * Update validation cache statistics in session metrics\n *\n * Retrieves current validation cache statistics and updates the\n * session metrics with the latest values.\n *\n * @param session - Session to update\n *\n * @example\n * ```typescript\n * calculator.updateCacheStats(session);\n * console.log(session.metrics.cacheStats.hitRate); // Updated\n * ```\n */\n private updateCacheStats(session: ThinkingSession): void {\n const cacheStats = validationCache.getStats();\n session.metrics.cacheStats = {\n hits: cacheStats.hits,\n misses: cacheStats.misses,\n hitRate: cacheStats.hitRate,\n size: cacheStats.size,\n maxSize: cacheStats.maxSize,\n };\n }\n}\n","/**\n * Session Manager for DeepThinking MCP (v3.4.5)\n * Sprint 3 Task 3.4: Refactored to use SessionMetricsCalculator\n *\n * Manages thinking sessions, persistence, and coordinates with metrics calculator.\n */\n\nimport { randomUUID } from 'crypto';\nimport {\n ThinkingSession,\n SessionConfig,\n SessionMetadata,\n Thought,\n ThinkingMode\n} from '../types/index.js';\nimport { SessionNotFoundError } from '../utils/errors.js';\nimport { sanitizeString, sanitizeThoughtContent, validateSessionId, MAX_LENGTHS } from '../utils/sanitization.js';\nimport { createLogger, LogLevel } from '../utils/logger.js';\nimport { ILogger } from '../interfaces/ILogger.js';\nimport { SessionStorage } from './storage/interface.js';\nimport { LRUCache } from '../cache/lru.js';\nimport { SessionMetricsCalculator } from './SessionMetricsCalculator.js';\n\n/**\n * Default session configuration\n */\nconst DEFAULT_CONFIG: SessionConfig = {\n modeConfig: {\n mode: ThinkingMode.HYBRID,\n strictValidation: false,\n allowModeSwitch: true\n },\n enableAutoSave: true,\n enableValidation: true,\n enableVisualization: true,\n integrations: {},\n exportFormats: ['markdown', 'latex', 'json'],\n autoExportOnComplete: false,\n maxThoughtsInMemory: 1000,\n compressionThreshold: 500\n};\n\n/**\n * Session Manager - Manages thinking session lifecycle and analytics\n *\n * The SessionManager provides a centralized interface for creating, managing,\n * and analyzing deep thinking sessions across all 13 reasoning modes.\n *\n * @example\n * ```typescript\n * const manager = new SessionManager();\n * const session = await manager.createSession({\n * title: 'Problem Analysis',\n * mode: ThinkingMode.SEQUENTIAL\n * });\n *\n * await manager.addThought(session.id, {\n * thought: 'Initial analysis...',\n * thoughtNumber: 1,\n * totalThoughts: 5,\n * nextThoughtNeeded: true\n * });\n * ```\n */\nexport class SessionManager {\n private activeSessions: LRUCache<ThinkingSession>;\n private config: Partial<SessionConfig>;\n private logger: ILogger;\n private storage?: SessionStorage;\n private metricsCalculator: SessionMetricsCalculator;\n\n /**\n * Creates a new SessionManager instance\n *\n * @param config - Optional default configuration applied to all new sessions\n * @param logger - Optional logger instance or log level (default: INFO level logger)\n * @param storage - Optional persistent storage backend for sessions\n *\n * @example\n * ```typescript\n * // Memory-only mode with default logger\n * const manager = new SessionManager({\n * enableAutoSave: true,\n * maxThoughtsInMemory: 500\n * });\n *\n * // With custom logger (DI)\n * import { createLogger, LogLevel } from './utils/logger.js';\n * const logger = createLogger({ minLevel: LogLevel.DEBUG });\n * const manager = new SessionManager({}, logger);\n *\n * // With file-based persistence (backward compatible)\n * import { FileSessionStore } from './storage/file-store.js';\n * const storage = new FileSessionStore('./sessions');\n * await storage.initialize();\n * const manager = new SessionManager({}, LogLevel.INFO, storage);\n * ```\n */\n constructor(\n config?: Partial<SessionConfig>,\n logger?: ILogger | LogLevel,\n storage?: SessionStorage\n ) {\n // Initialize LRU cache for sessions (max 1000 sessions, ~10-50MB)\n this.activeSessions = new LRUCache<ThinkingSession>({\n maxSize: 1000,\n enableStats: true,\n onEvict: async (key: string, session: ThinkingSession) => {\n // Auto-save evicted sessions to persistent storage if available\n if (this.storage && session.config.enableAutoSave) {\n try {\n await this.storage.saveSession(session);\n this.logger.debug('Evicted session saved to storage', { sessionId: key });\n } catch (error) {\n this.logger.error('Failed to save evicted session', error as Error, { sessionId: key });\n }\n }\n }\n });\n this.config = config || {};\n this.storage = storage;\n\n // Support both ILogger injection (DI) and LogLevel (backward compatibility)\n if (logger && typeof logger === 'object' && 'info' in logger) {\n this.logger = logger;\n } else {\n this.logger = createLogger({\n minLevel: (logger as LogLevel) || LogLevel.INFO,\n enableConsole: true\n });\n }\n this.metricsCalculator = new SessionMetricsCalculator();\n }\n\n /**\n * Create a new thinking session\n *\n * Creates and initializes a new thinking session with the specified configuration.\n * Sessions are stored in memory and tracked until explicitly deleted.\n *\n * @param options - Session creation options\n * @param options.title - Session title (default: 'Untitled Session')\n * @param options.mode - Thinking mode to use (default: HYBRID)\n * @param options.domain - Problem domain (e.g., 'mathematics', 'physics')\n * @param options.author - Session creator/author\n * @param options.config - Session-specific configuration overrides\n * @returns Promise resolving to the created session\n *\n * @example\n * ```typescript\n * const session = await manager.createSession({\n * title: 'Mathematical Proof',\n * mode: ThinkingMode.MATHEMATICS,\n * domain: 'number-theory',\n * author: 'user@example.com'\n * });\n * ```\n */\n async createSession(options: {\n title?: string;\n mode?: ThinkingMode;\n domain?: string;\n author?: string;\n config?: Partial<SessionConfig>;\n } = {}): Promise<ThinkingSession> {\n // Validate inputs\n const title = options.title\n ? sanitizeString(options.title, MAX_LENGTHS.TITLE, 'title')\n : 'Untitled Session';\n\n const domain = options.domain\n ? sanitizeString(options.domain, MAX_LENGTHS.DOMAIN, 'domain')\n : undefined;\n\n const author = options.author\n ? sanitizeString(options.author, MAX_LENGTHS.AUTHOR, 'author')\n : undefined;\n\n const sessionId = randomUUID();\n const now = new Date();\n\n const session: ThinkingSession = {\n id: sessionId,\n title,\n mode: options.mode || ThinkingMode.HYBRID,\n domain,\n config: this.mergeConfig(options.config),\n thoughts: [],\n createdAt: now,\n updatedAt: now,\n author,\n currentThoughtNumber: 0,\n isComplete: false,\n metrics: this.metricsCalculator.initializeMetrics(),\n tags: [],\n collaborators: author ? [author] : []\n };\n\n this.activeSessions.set(sessionId, session);\n\n // Auto-save to storage if enabled\n if (this.storage && session.config.enableAutoSave) {\n try {\n await this.storage.saveSession(session);\n this.logger.debug('Session persisted to storage', { sessionId });\n } catch (error) {\n this.logger.error('Failed to persist session', error as Error, { sessionId });\n // Don't throw - session is still created in memory\n }\n }\n\n this.logger.info('Session created', {\n sessionId,\n title,\n mode: session.mode,\n domain,\n author\n });\n\n return session;\n }\n\n /**\n * Get a session by ID\n *\n * Retrieves a session by its unique identifier. If the session is not in memory\n * but storage is available, it will attempt to load from storage.\n *\n * @param sessionId - Unique UUID v4 identifier of the session\n * @returns Promise resolving to the session, or null if not found\n *\n * @example\n * ```typescript\n * const session = await manager.getSession('550e8400-e29b-41d4-a716-446655440000');\n * if (session) {\n * console.log(`Session: ${session.title}`);\n * console.log(`Thoughts: ${session.thoughts.length}`);\n * }\n * ```\n */\n async getSession(sessionId: string): Promise<ThinkingSession | null> {\n // Check memory first\n let session = this.activeSessions.get(sessionId);\n\n // If not in memory and storage is available, try loading from storage\n if (!session && this.storage) {\n try {\n session = (await this.storage.loadSession(sessionId)) ?? undefined;\n if (session) {\n // Add to active sessions cache\n this.activeSessions.set(sessionId, session);\n this.logger.debug('Session loaded from storage', { sessionId });\n }\n } catch (error) {\n this.logger.error('Failed to load session from storage', error as Error, { sessionId });\n }\n }\n\n return session || null;\n }\n\n /**\n * Add a thought to a session\n *\n * Adds a new thought to an existing session and automatically updates:\n * - Session metrics (uses O(1) incremental calculation)\n * - Thought timestamps\n * - Session completion status\n * - Mode-specific analytics\n *\n * @param sessionId - ID of the session to add thought to\n * @param thought - The thought object to add\n * @returns Promise resolving to the updated session\n * @throws Error if session is not found\n *\n * @example\n * ```typescript\n * await manager.addThought(session.id, {\n * thought: 'Initial hypothesis: the problem can be solved using...',\n * thoughtNumber: 1,\n * totalThoughts: 5,\n * nextThoughtNeeded: true,\n * uncertainty: 0.3\n * });\n * ```\n */\n async addThought(sessionId: string, thought: Thought): Promise<ThinkingSession> {\n // Validate session ID\n validateSessionId(sessionId);\n\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n this.logger.error('Session not found', undefined, { sessionId });\n throw new SessionNotFoundError(sessionId);\n }\n\n // Validate thought content\n if (thought.content) {\n thought.content = sanitizeThoughtContent(thought.content);\n }\n\n // Update thought with session metadata\n thought.sessionId = sessionId;\n thought.timestamp = new Date();\n\n // Add thought to session\n session.thoughts.push(thought);\n session.currentThoughtNumber = thought.thoughtNumber;\n session.updatedAt = new Date();\n\n // Update metrics\n this.metricsCalculator.updateMetrics(session, thought);\n\n // Check if session is complete\n if (!thought.nextThoughtNeeded) {\n session.isComplete = true;\n this.logger.info('Session completed', {\n sessionId,\n title: session.title,\n totalThoughts: session.thoughts.length\n });\n }\n\n // Auto-save to storage if enabled\n if (this.storage && session.config.enableAutoSave) {\n try {\n await this.storage.saveSession(session);\n this.logger.debug('Session persisted after thought added', { sessionId });\n } catch (error) {\n this.logger.error('Failed to persist session', error as Error, { sessionId });\n // Don't throw - thought is still added in memory\n }\n }\n\n this.logger.debug('Thought added', {\n sessionId,\n thoughtNumber: thought.thoughtNumber,\n totalThoughts: session.thoughts.length\n });\n\n return session;\n }\n\n /**\n * Update session mode (switch reasoning approach mid-session)\n *\n * Changes the thinking mode of an active session. This is useful when\n * the problem requires a different reasoning approach.\n *\n * @param sessionId - ID of the session to update\n * @param newMode - New thinking mode to switch to\n * @param reason - Optional reason for the mode switch\n * @returns Promise resolving to the updated session\n * @throws Error if session is not found\n *\n * @example\n * ```typescript\n * await manager.switchMode(\n * session.id,\n * ThinkingMode.CAUSAL,\n * 'Need to analyze cause-effect relationships'\n * );\n * ```\n */\n async switchMode(\n sessionId: string,\n newMode: ThinkingMode,\n reason?: string\n ): Promise<ThinkingSession> {\n // Validate session ID\n validateSessionId(sessionId);\n\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n this.logger.error('Session not found', undefined, { sessionId });\n throw new SessionNotFoundError(sessionId);\n }\n\n const oldMode = session.mode;\n session.mode = newMode;\n session.config.modeConfig.mode = newMode;\n session.updatedAt = new Date();\n\n // Auto-save to storage if enabled\n if (this.storage && session.config.enableAutoSave) {\n try {\n await this.storage.saveSession(session);\n this.logger.debug('Session persisted after mode switch', { sessionId });\n } catch (error) {\n this.logger.error('Failed to persist session', error as Error, { sessionId });\n }\n }\n\n this.logger.info('Session mode switched', {\n sessionId,\n oldMode,\n newMode,\n reason\n });\n\n return session;\n }\n\n /**\n * List all active sessions with metadata\n *\n * Returns summary information for all sessions. If storage is available,\n * includes both in-memory sessions and persisted sessions.\n *\n * @param includeStoredSessions - Whether to include sessions from storage (default: true)\n * @returns Promise resolving to array of session metadata\n *\n * @example\n * ```typescript\n * const sessions = await manager.listSessions();\n * sessions.forEach(s => {\n * console.log(`${s.title}: ${s.thoughtCount} thoughts (${s.mode})`);\n * });\n * ```\n */\n async listSessions(includeStoredSessions: boolean = true): Promise<SessionMetadata[]> {\n const memoryMetadata = Array.from(this.activeSessions.values()).map(session => ({\n id: session.id,\n title: session.title,\n createdAt: session.createdAt,\n updatedAt: session.updatedAt,\n thoughtCount: session.thoughts.length,\n mode: session.mode,\n isComplete: session.isComplete\n }));\n\n // If no storage or not including stored sessions, return memory sessions only\n if (!this.storage || !includeStoredSessions) {\n return memoryMetadata;\n }\n\n // Get stored sessions and merge with memory sessions\n try {\n const storedMetadata = await this.storage.listSessions();\n const memoryIds = new Set(memoryMetadata.map(s => s.id));\n\n // Combine memory sessions with stored sessions (avoiding duplicates)\n const combined = [\n ...memoryMetadata,\n ...storedMetadata.filter(s => !memoryIds.has(s.id))\n ];\n\n return combined;\n } catch (error) {\n this.logger.error('Failed to list stored sessions', error as Error);\n return memoryMetadata; // Return memory sessions if storage fails\n }\n }\n\n /**\n * Delete a session\n *\n * Removes a session from memory and storage (if available).\n * This operation cannot be undone.\n *\n * @param sessionId - ID of the session to delete\n * @returns Promise that resolves when deletion is complete\n *\n * @example\n * ```typescript\n * await manager.deleteSession('old-session-id');\n * ```\n */\n async deleteSession(sessionId: string): Promise<void> {\n const session = this.activeSessions.get(sessionId);\n const deletedFromMemory = this.activeSessions.delete(sessionId);\n\n // Also delete from storage if available\n if (this.storage) {\n try {\n await this.storage.deleteSession(sessionId);\n this.logger.debug('Session deleted from storage', { sessionId });\n } catch (error) {\n this.logger.error('Failed to delete session from storage', error as Error, { sessionId });\n }\n }\n\n if (deletedFromMemory && session) {\n this.logger.info('Session deleted', {\n sessionId,\n title: session.title,\n thoughtCount: session.thoughts.length\n });\n } else {\n this.logger.warn('Attempted to delete non-existent session from memory', { sessionId });\n }\n }\n\n /**\n * Generate a text summary of a session\n *\n * Creates a markdown-formatted summary including:\n * - Session metadata (title, mode, status)\n * - Total thought count\n * - Key thoughts (first 100 characters of each)\n *\n * @param sessionId - ID of the session to summarize\n * @returns Promise resolving to markdown-formatted summary\n * @throws Error if session is not found\n *\n * @example\n * ```typescript\n * const summary = await manager.generateSummary(session.id);\n * console.log(summary);\n * // Output:\n * // # Mathematical Proof\n * // Mode: mathematics\n * // Total Thoughts: 15\n * // Status: Complete\n * // ...\n * ```\n */\n async generateSummary(sessionId: string): Promise<string> {\n // Validate session ID\n validateSessionId(sessionId);\n\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n throw new SessionNotFoundError(sessionId);\n }\n\n let summary = `# ${session.title}\\n\\n`;\n summary += `Mode: ${session.mode}\\n`;\n summary += `Total Thoughts: ${session.thoughts.length}\\n`;\n summary += `Status: ${session.isComplete ? 'Complete' : 'In Progress'}\\n\\n`;\n\n summary += `## Key Thoughts:\\n\\n`;\n for (const thought of session.thoughts) {\n summary += `${thought.thoughtNumber}. ${thought.content.substring(0, 100)}...\\n`;\n }\n\n return summary;\n }\n\n /**\n * Merge configurations (private helper)\n *\n * Combines default config, instance config, and user config\n * with proper precedence: user > instance > default\n */\n private mergeConfig(userConfig?: Partial<SessionConfig>): SessionConfig {\n return {\n ...DEFAULT_CONFIG,\n ...this.config,\n ...userConfig\n } as SessionConfig;\n }\n\n}\n","/**\n * Session module exports (v4.3.0)\n * Sprint 9.2: Explicit exports for tree-shaking\n */\n\nexport { SessionManager } from './manager.js';\n","/**\n * Type guards for runtime type checking\n *\n * Provides safe type narrowing without using 'as any' assertions\n */\n\nimport { ExtendedThoughtType } from '../types/core.js';\n\n/**\n * Valid ExtendedThoughtType values\n */\nconst VALID_THOUGHT_TYPES: readonly ExtendedThoughtType[] = [\n 'problem_definition',\n 'constraints',\n 'model',\n 'proof',\n 'implementation',\n 'axiom_definition',\n 'theorem_statement',\n 'proof_construction',\n 'lemma_derivation',\n 'corollary',\n 'counterexample',\n 'algebraic_manipulation',\n 'symbolic_computation',\n 'numerical_analysis',\n 'symmetry_analysis',\n 'gauge_theory',\n 'field_equations',\n 'lagrangian',\n 'hamiltonian',\n 'conservation_law',\n 'dimensional_analysis',\n 'tensor_formulation',\n 'differential_geometry',\n 'decomposition',\n 'synthesis',\n 'abstraction',\n 'analogy',\n 'metacognition',\n] as const;\n\n/**\n * Type guard for ExtendedThoughtType\n *\n * @param value - Value to check\n * @returns true if value is a valid ExtendedThoughtType\n */\nexport function isExtendedThoughtType(value: unknown): value is ExtendedThoughtType {\n return typeof value === 'string' && VALID_THOUGHT_TYPES.includes(value as ExtendedThoughtType);\n}\n\n/**\n * Validate and cast to ExtendedThoughtType\n *\n * @param value - Value to validate\n * @param fallback - Fallback value if invalid (optional)\n * @returns Validated ExtendedThoughtType\n * @throws Error if value is invalid and no fallback provided\n */\nexport function toExtendedThoughtType(\n value: unknown,\n fallback?: ExtendedThoughtType\n): ExtendedThoughtType {\n if (isExtendedThoughtType(value)) {\n return value;\n }\n\n if (fallback !== undefined) {\n return fallback;\n }\n\n throw new Error(\n `Invalid ExtendedThoughtType: ${value}. Must be one of: ${VALID_THOUGHT_TYPES.join(', ')}`\n );\n}\n\n/**\n * Type guard for checking if value is a number\n */\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number' && !isNaN(value) && isFinite(value);\n}\n\n/**\n * Type guard for checking if value is a non-empty string\n */\nexport function isNonEmptyString(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0;\n}\n\n/**\n * Type guard for checking if value is an array\n */\nexport function isArray<T>(value: unknown, itemGuard?: (item: unknown) => item is T): value is T[] {\n if (!Array.isArray(value)) {\n return false;\n }\n\n if (itemGuard) {\n return value.every(itemGuard);\n }\n\n return true;\n}\n\n/**\n * Type guard for checking if value is a plain object\n */\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Safe type cast with runtime validation\n *\n * @param value - Value to cast\n * @param guard - Type guard function\n * @param errorMessage - Error message if validation fails\n * @returns Validated value\n * @throws Error if validation fails\n */\nexport function safeCast<T>(\n value: unknown,\n guard: (value: unknown) => value is T,\n errorMessage: string\n): T {\n if (guard(value)) {\n return value;\n }\n throw new Error(errorMessage);\n}\n","/**\n * Thought Factory Service (v3.4.5)\n * Sprint 3 Task 3.3: Extract thought creation logic from index.ts\n * Sprint 3 Task 3.2: Added dependency injection support\n *\n * Centralizes thought creation logic for all thinking modes.\n * Provides type-safe thought construction based on mode-specific requirements.\n *\n * RESPONSIBILITY:\n * - Create properly typed thought objects for all 18 thinking modes\n * - Apply mode-specific defaults and transformations\n * - Ensure thought structure consistency across modes\n *\n * EXTRACTED FROM: src/index.ts (createThought function)\n */\n\nimport { randomUUID } from 'crypto';\nimport {\n ThinkingMode,\n ShannonStage,\n SequentialThought,\n ShannonThought,\n MathematicsThought,\n PhysicsThought,\n InductiveThought,\n DeductiveThought,\n AbductiveThought,\n CausalThought,\n Thought,\n} from '../types/index.js';\nimport { ThinkingToolInput } from '../tools/thinking.js';\nimport { toExtendedThoughtType } from '../utils/type-guards.js';\nimport { ILogger } from '../interfaces/ILogger.js';\nimport { createLogger, LogLevel } from '../utils/logger.js';\n\n/**\n * Thought Factory - Creates mode-specific thought objects\n *\n * Handles the complexity of creating properly structured thought objects\n * for all 18 thinking modes, applying defaults and mode-specific logic.\n *\n * @example\n * ```typescript\n * const factory = new ThoughtFactory();\n * const thought = factory.createThought(input, sessionId);\n * await sessionManager.addThought(sessionId, thought);\n * ```\n */\nexport class ThoughtFactory {\n private logger: ILogger;\n\n constructor(logger?: ILogger) {\n this.logger = logger || createLogger({ minLevel: LogLevel.INFO, enableConsole: true });\n }\n /**\n * Create a thought object based on input and mode\n *\n * Generates a properly typed thought object with mode-specific fields\n * and default values. Each mode has unique required and optional fields.\n *\n * @param input - Thought input from MCP tool\n * @param sessionId - Session ID this thought belongs to\n * @returns Typed thought object ready for session storage\n *\n * @example\n * ```typescript\n * const thought = factory.createThought({\n * mode: 'mathematics',\n * thought: 'Analyzing the problem...',\n * thoughtNumber: 1,\n * totalThoughts: 5,\n * nextThoughtNeeded: true,\n * mathematicalModel: { equations: ['E = mc^2'] }\n * }, 'session-123');\n * ```\n */\n createThought(input: ThinkingToolInput, sessionId: string): Thought {\n this.logger.debug('Creating thought', {\n sessionId,\n mode: input.mode,\n thoughtNumber: input.thoughtNumber,\n totalThoughts: input.totalThoughts,\n isRevision: input.isRevision,\n });\n\n const baseThought = {\n id: randomUUID(),\n sessionId,\n thoughtNumber: input.thoughtNumber,\n totalThoughts: input.totalThoughts,\n content: input.thought,\n timestamp: new Date(),\n nextThoughtNeeded: input.nextThoughtNeeded,\n isRevision: input.isRevision,\n revisesThought: input.revisesThought,\n };\n\n switch (input.mode) {\n case 'sequential':\n return {\n ...baseThought,\n mode: ThinkingMode.SEQUENTIAL,\n revisionReason: input.revisionReason,\n branchFrom: input.branchFrom,\n branchId: input.branchId,\n } as SequentialThought;\n\n case 'shannon':\n return {\n ...baseThought,\n mode: ThinkingMode.SHANNON,\n stage: (input.stage as ShannonStage) || ShannonStage.PROBLEM_DEFINITION,\n uncertainty: input.uncertainty || 0.5,\n dependencies: input.dependencies || [],\n assumptions: input.assumptions || [],\n } as ShannonThought;\n\n case 'mathematics':\n return {\n ...baseThought,\n mode: ThinkingMode.MATHEMATICS,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'model'),\n mathematicalModel: input.mathematicalModel,\n proofStrategy: input.proofStrategy,\n dependencies: input.dependencies || [],\n assumptions: input.assumptions || [],\n uncertainty: input.uncertainty || 0.5,\n } as MathematicsThought;\n\n case 'physics':\n return {\n ...baseThought,\n mode: ThinkingMode.PHYSICS,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'model'),\n tensorProperties: input.tensorProperties,\n physicalInterpretation: input.physicalInterpretation,\n dependencies: input.dependencies || [],\n assumptions: input.assumptions || [],\n uncertainty: input.uncertainty || 0.5,\n } as PhysicsThought;\n\n case 'inductive':\n return {\n ...baseThought,\n mode: ThinkingMode.INDUCTIVE,\n observations: input.observations || [],\n pattern: input.pattern,\n generalization: input.generalization || '',\n confidence: input.confidence ?? 0.5,\n counterexamples: input.counterexamples || [],\n sampleSize: input.sampleSize,\n } as InductiveThought;\n\n case 'deductive':\n return {\n ...baseThought,\n mode: ThinkingMode.DEDUCTIVE,\n premises: input.premises || [],\n conclusion: input.conclusion || '',\n logicForm: input.logicForm,\n validityCheck: input.validityCheck ?? false,\n soundnessCheck: input.soundnessCheck,\n } as DeductiveThought;\n\n case 'abductive':\n return {\n ...baseThought,\n mode: ThinkingMode.ABDUCTIVE,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\n observations: input.observations || [],\n hypotheses: input.hypotheses || [],\n evaluationCriteria: input.evaluationCriteria,\n evidence: input.evidence || [],\n bestExplanation: input.bestExplanation,\n } as AbductiveThought;\n\n case 'causal':\n return {\n ...baseThought,\n mode: ThinkingMode.CAUSAL,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\n causalGraph: input.causalGraph,\n interventions: input.interventions || [],\n mechanisms: input.mechanisms || [],\n confounders: input.confounders || [],\n } as CausalThought;\n\n case 'bayesian':\n return {\n ...baseThought,\n mode: ThinkingMode.BAYESIAN,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\n hypothesis: input.hypothesis,\n prior: input.prior,\n likelihood: input.likelihood,\n evidence: input.evidence || [],\n posterior: input.posterior,\n bayesFactor: input.bayesFactor,\n } as any;\n\n case 'counterfactual':\n return {\n ...baseThought,\n mode: ThinkingMode.COUNTERFACTUAL,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\n actual: input.actual,\n counterfactuals: input.counterfactuals || [],\n comparison: input.comparison,\n interventionPoint: input.interventionPoint,\n causalChains: input.causalChains || [],\n } as any;\n\n case 'analogical':\n return {\n ...baseThought,\n mode: ThinkingMode.ANALOGICAL,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'analogy'),\n sourceDomain: input.sourceDomain,\n targetDomain: input.targetDomain,\n mapping: input.mapping || [],\n insights: input.insights || [],\n inferences: input.inferences || [],\n limitations: input.limitations || [],\n analogyStrength: input.analogyStrength,\n } as any;\n\n case 'temporal':\n return {\n ...baseThought,\n mode: ThinkingMode.TEMPORAL,\n thoughtType: input.thoughtType || 'event_definition',\n timeline: input.timeline,\n events: input.events || [],\n intervals: input.intervals || [],\n constraints: input.constraints || [],\n relations: input.relations || [],\n } as any;\n\n case 'gametheory':\n return {\n ...baseThought,\n mode: ThinkingMode.GAMETHEORY,\n thoughtType: input.thoughtType || 'game_definition',\n game: input.game,\n players: input.players || [],\n strategies: input.strategies || [],\n payoffMatrix: input.payoffMatrix,\n nashEquilibria: input.nashEquilibria || [],\n dominantStrategies: input.dominantStrategies || [],\n gameTree: input.gameTree,\n } as any;\n\n case 'evidential':\n return {\n ...baseThought,\n mode: ThinkingMode.EVIDENTIAL,\n thoughtType: input.thoughtType || 'hypothesis_definition',\n frameOfDiscernment: input.frameOfDiscernment,\n hypotheses: input.hypotheses || [],\n evidence: input.evidence || [],\n beliefFunctions: input.beliefFunctions || [],\n combinedBelief: input.combinedBelief,\n plausibility: input.plausibility,\n decisions: input.decisions || [],\n } as any;\n\n case ThinkingMode.FIRSTPRINCIPLES:\n return {\n ...baseThought,\n mode: ThinkingMode.FIRSTPRINCIPLES,\n question: input.question || '',\n principles: input.principles || [],\n derivationSteps: input.derivationSteps || [],\n conclusion: input.conclusion || { statement: '', derivationChain: [], certainty: 0 },\n alternativeInterpretations: input.alternativeInterpretations || [],\n } as any;\n\n case 'hybrid':\n default:\n return {\n ...baseThought,\n mode: ThinkingMode.HYBRID,\n thoughtType: toExtendedThoughtType(input.thoughtType, 'synthesis'),\n stage: input.stage as ShannonStage,\n uncertainty: input.uncertainty,\n dependencies: input.dependencies,\n assumptions: input.assumptions,\n mathematicalModel: input.mathematicalModel,\n tensorProperties: input.tensorProperties,\n physicalInterpretation: input.physicalInterpretation,\n primaryMode: (input.mode || ThinkingMode.HYBRID) as any,\n secondaryFeatures: [],\n } as any;\n }\n }\n}\n","/**\n * Visual Export Utilities (v4.3.0)\n * Sprint 8 Task 8.1: Shared utilities for visual exporters\n */\n\n/**\n * Sanitize ID for use in diagram formats\n */\nexport function sanitizeId(id: string): string {\n return id.replace(/[^a-zA-Z0-9_]/g, '_');\n}\n","/**\n * Causal Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Causal graph export to Mermaid, DOT, ASCII\n */\n\nimport type { CausalThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export causal graph to visual format\n */\nexport function exportCausalGraph(thought: CausalThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return causalGraphToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return causalGraphToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return causalGraphToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction causalGraphToMermaid(\n thought: CausalThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TB\\n';\n\n if (!thought.causalGraph || !thought.causalGraph.nodes) {\n return mermaid + ' NoData[\"No causal graph data\"]\\n';\n }\n\n for (const node of thought.causalGraph.nodes) {\n const nodeId = sanitizeId(node.id);\n const label = includeLabels ? node.name : nodeId;\n\n let shape: [string, string];\n switch (node.type) {\n case 'cause':\n shape = ['([', '])'];\n break;\n case 'effect':\n shape = ['[[', ']]'];\n break;\n case 'mediator':\n shape = ['[', ']'];\n break;\n case 'confounder':\n shape = ['{', '}'];\n break;\n default:\n shape = ['[', ']'];\n }\n\n mermaid += ` ${nodeId}${shape[0]}${label}${shape[1]}\\n`;\n }\n\n mermaid += '\\n';\n\n for (const edge of thought.causalGraph.edges) {\n const fromId = sanitizeId(edge.from);\n const toId = sanitizeId(edge.to);\n\n if (includeMetrics && edge.strength !== undefined) {\n mermaid += ` ${fromId} --> |${edge.strength.toFixed(2)}| ${toId}\\n`;\n } else {\n mermaid += ` ${fromId} --> ${toId}\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const causes = thought.causalGraph.nodes.filter(n => n.type === 'cause');\n const effects = thought.causalGraph.nodes.filter(n => n.type === 'effect');\n\n for (const node of causes) {\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n mermaid += ` style ${sanitizeId(node.id)} fill:${color}\\n`;\n }\n\n for (const node of effects) {\n const color = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n mermaid += ` style ${sanitizeId(node.id)} fill:${color}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction causalGraphToDOT(\n thought: CausalThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph CausalGraph {\\n';\n dot += ' rankdir=TB;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n for (const node of thought.causalGraph.nodes) {\n const nodeId = sanitizeId(node.id);\n const label = includeLabels ? node.name : nodeId;\n\n let shape = 'box';\n switch (node.type) {\n case 'cause': shape = 'ellipse'; break;\n case 'effect': shape = 'doubleoctagon'; break;\n case 'mediator': shape = 'box'; break;\n case 'confounder': shape = 'diamond'; break;\n }\n\n dot += ` ${nodeId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n\n dot += '\\n';\n\n for (const edge of thought.causalGraph.edges) {\n const fromId = sanitizeId(edge.from);\n const toId = sanitizeId(edge.to);\n\n if (includeMetrics && edge.strength !== undefined) {\n dot += ` ${fromId} -> ${toId} [label=\"${edge.strength.toFixed(2)}\"];\\n`;\n } else {\n dot += ` ${fromId} -> ${toId};\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction causalGraphToASCII(thought: CausalThought): string {\n let ascii = 'Causal Graph:\\n';\n ascii += '=============\\n\\n';\n\n ascii += 'Nodes:\\n';\n for (const node of thought.causalGraph.nodes) {\n ascii += ` [${node.type.toUpperCase()}] ${node.name}: ${node.description}\\n`;\n }\n\n ascii += '\\nEdges:\\n';\n for (const edge of thought.causalGraph.edges) {\n const fromNode = thought.causalGraph.nodes.find(n => n.id === edge.from);\n const toNode = thought.causalGraph.nodes.find(n => n.id === edge.to);\n const strength = edge.strength !== undefined ? ` (strength: ${edge.strength.toFixed(2)})` : '';\n ascii += ` ${fromNode?.name} --> ${toNode?.name}${strength}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Temporal Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Timeline export to Mermaid, DOT, ASCII\n */\n\nimport type { TemporalThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export temporal timeline to visual format\n */\nexport function exportTemporalTimeline(thought: TemporalThought, options: VisualExportOptions): string {\n const { format, includeLabels = true } = options;\n\n switch (format) {\n case 'mermaid':\n return timelineToMermaidGantt(thought, includeLabels);\n case 'dot':\n return timelineToDOT(thought, includeLabels);\n case 'ascii':\n return timelineToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction timelineToMermaidGantt(thought: TemporalThought, includeLabels: boolean): string {\n let gantt = 'gantt\\n';\n gantt += ` title ${thought.timeline?.name || 'Timeline'}\\n`;\n gantt += ' dateFormat X\\n';\n gantt += ' axisFormat %s\\n\\n';\n\n if (!thought.events || thought.events.length === 0) {\n return gantt + ' No events\\n';\n }\n\n gantt += ' section Events\\n';\n\n for (const event of thought.events) {\n const label = includeLabels ? event.name : event.id;\n\n if (event.type === 'instant') {\n gantt += ` ${label} :milestone, ${event.timestamp}, 0s\\n`;\n } else if (event.type === 'interval' && event.duration) {\n gantt += ` ${label} :${event.timestamp}, ${event.duration}s\\n`;\n }\n }\n\n return gantt;\n}\n\nfunction timelineToDOT(thought: TemporalThought, includeLabels: boolean): string {\n let dot = 'digraph Timeline {\\n';\n dot += ' rankdir=LR;\\n';\n dot += ' node [shape=box];\\n\\n';\n\n if (!thought.events) {\n dot += '}\\n';\n return dot;\n }\n\n const sortedEvents = [...thought.events].sort((a, b) => a.timestamp - b.timestamp);\n\n for (const event of sortedEvents) {\n const nodeId = sanitizeId(event.id);\n const label = includeLabels ? `${event.name}\\\\n(t=${event.timestamp})` : nodeId;\n const shape = event.type === 'instant' ? 'ellipse' : 'box';\n\n dot += ` ${nodeId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n\n dot += '\\n';\n\n for (let i = 0; i < sortedEvents.length - 1; i++) {\n const from = sanitizeId(sortedEvents[i].id);\n const to = sanitizeId(sortedEvents[i + 1].id);\n dot += ` ${from} -> ${to};\\n`;\n }\n\n if (thought.relations) {\n dot += '\\n // Causal relations\\n';\n for (const rel of thought.relations) {\n const from = sanitizeId(rel.from);\n const to = sanitizeId(rel.to);\n dot += ` ${from} -> ${to} [style=dashed, label=\"${rel.relationType}\"];\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction timelineToASCII(thought: TemporalThought): string {\n let ascii = `Timeline: ${thought.timeline?.name || 'Untitled'}\\n`;\n ascii += '='.repeat(40) + '\\n\\n';\n\n if (!thought.events || thought.events.length === 0) {\n return ascii + 'No events\\n';\n }\n\n const sortedEvents = [...thought.events].sort((a, b) => a.timestamp - b.timestamp);\n\n for (const event of sortedEvents) {\n const marker = event.type === 'instant' ? '⦿' : '━';\n ascii += `t=${event.timestamp.toString().padStart(4)} ${marker} ${event.name}\\n`;\n if (event.duration) {\n ascii += ` ${'└'.padStart(5)}→ duration: ${event.duration}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Game Theory Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Game tree export to Mermaid, DOT, ASCII\n */\n\nimport type { GameTheoryThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export game tree to visual format\n */\nexport function exportGameTree(thought: GameTheoryThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return gameTreeToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return gameTreeToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return gameTreeToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction gameTreeToMermaid(\n thought: GameTheoryThought,\n _colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n if (!thought.game) {\n return mermaid + ' root[No game defined]\\n';\n }\n\n if (thought.gameTree && thought.gameTree.nodes) {\n for (const node of thought.gameTree.nodes) {\n const nodeId = sanitizeId(node.id);\n const label = includeLabels ? (node.action || node.id) : nodeId;\n const shape = node.type === 'terminal' ? ['[[', ']]'] : ['[', ']'];\n mermaid += ` ${nodeId}${shape[0]}${label}${shape[1]}\\n`;\n }\n\n mermaid += '\\n';\n\n for (const node of thought.gameTree.nodes) {\n if (node.childNodes && node.childNodes.length > 0) {\n for (const childId of node.childNodes) {\n const fromId = sanitizeId(node.id);\n const toId = sanitizeId(childId);\n const childNode = thought.gameTree.nodes.find(n => n.id === childId);\n\n if (includeMetrics && childNode?.action) {\n mermaid += ` ${fromId} --> |${childNode.action}| ${toId}\\n`;\n } else {\n mermaid += ` ${fromId} --> ${toId}\\n`;\n }\n }\n }\n }\n } else {\n mermaid += ' root[Game]\\n';\n if (thought.strategies) {\n for (const strategy of thought.strategies.slice(0, 5)) {\n const stratId = sanitizeId(strategy.id);\n mermaid += ` root --> ${stratId}[${strategy.name}]\\n`;\n }\n }\n }\n\n return mermaid;\n}\n\nfunction gameTreeToDOT(\n thought: GameTheoryThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph GameTree {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=circle];\\n\\n';\n\n if (!thought.game) {\n dot += ' root [label=\"No game\"];\\n}\\n';\n return dot;\n }\n\n if (thought.gameTree && thought.gameTree.nodes) {\n for (const node of thought.gameTree.nodes) {\n const nodeId = sanitizeId(node.id);\n const label = includeLabels ? (node.action || node.id) : nodeId;\n const shape = node.type === 'terminal' ? 'doublecircle' : 'circle';\n\n dot += ` ${nodeId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n\n dot += '\\n';\n\n for (const node of thought.gameTree.nodes) {\n if (node.childNodes && node.childNodes.length > 0) {\n for (const childId of node.childNodes) {\n const fromId = sanitizeId(node.id);\n const toId = sanitizeId(childId);\n const childNode = thought.gameTree.nodes.find(n => n.id === childId);\n\n if (includeMetrics && childNode?.action) {\n dot += ` ${fromId} -> ${toId} [label=\"${childNode.action}\"];\\n`;\n } else {\n dot += ` ${fromId} -> ${toId};\\n`;\n }\n }\n }\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction gameTreeToASCII(thought: GameTheoryThought): string {\n let ascii = `Game: ${thought.game?.name || 'Untitled'}\\n`;\n ascii += '='.repeat(40) + '\\n\\n';\n\n if (thought.strategies && thought.strategies.length > 0) {\n ascii += 'Strategies:\\n';\n for (const strategy of thought.strategies) {\n const strategyType = strategy.isPure ? 'Pure' : 'Mixed';\n ascii += ` • ${strategy.name} (${strategyType})\\n`;\n }\n }\n\n if (thought.nashEquilibria && thought.nashEquilibria.length > 0) {\n ascii += '\\nEquilibria:\\n';\n for (const eq of thought.nashEquilibria) {\n ascii += ` ⚖ ${eq.type}: ${eq.strategyProfile.join(', ')}\\n`;\n ascii += ` Payoffs: [${eq.payoffs.join(', ')}]\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Bayesian Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Bayesian network export to Mermaid, DOT, ASCII\n */\n\nimport type { BayesianThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\n\n/**\n * Export Bayesian network to visual format\n */\nexport function exportBayesianNetwork(thought: BayesianThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return bayesianToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return bayesianToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return bayesianToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction bayesianToMermaid(\n thought: BayesianThought,\n colorScheme: string,\n _includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph LR\\n';\n\n mermaid += ` H([Hypothesis])\\n`;\n mermaid += ` Prior[Prior: ${includeMetrics ? thought.prior.probability.toFixed(3) : '?'}]\\n`;\n mermaid += ` Evidence[Evidence]\\n`;\n mermaid += ` Posterior[[Posterior: ${includeMetrics ? thought.posterior.probability.toFixed(3) : '?'}]]\\n`;\n\n mermaid += '\\n';\n mermaid += ' Prior --> H\\n';\n mermaid += ' Evidence --> H\\n';\n mermaid += ' H --> Posterior\\n';\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const priorColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const posteriorColor = colorScheme === 'pastel' ? '#c8e6c9' : '#81c784';\n\n mermaid += ` style Prior fill:${priorColor}\\n`;\n mermaid += ` style Posterior fill:${posteriorColor}\\n`;\n }\n\n return mermaid;\n}\n\nfunction bayesianToDOT(\n thought: BayesianThought,\n _includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph BayesianNetwork {\\n';\n dot += ' rankdir=LR;\\n';\n dot += ' node [shape=ellipse];\\n\\n';\n\n const priorProb = includeMetrics ? `: ${thought.prior.probability.toFixed(3)}` : '';\n const posteriorProb = includeMetrics ? `: ${thought.posterior.probability.toFixed(3)}` : '';\n\n dot += ` Prior [label=\"Prior${priorProb}\"];\\n`;\n dot += ` Hypothesis [label=\"Hypothesis\", shape=box];\\n`;\n dot += ` Evidence [label=\"Evidence\"];\\n`;\n dot += ` Posterior [label=\"Posterior${posteriorProb}\", shape=doublecircle];\\n`;\n\n dot += '\\n';\n dot += ' Prior -> Hypothesis;\\n';\n dot += ' Evidence -> Hypothesis;\\n';\n dot += ' Hypothesis -> Posterior;\\n';\n\n dot += '}\\n';\n return dot;\n}\n\nfunction bayesianToASCII(thought: BayesianThought): string {\n let ascii = 'Bayesian Network:\\n';\n ascii += '=================\\n\\n';\n\n ascii += `Hypothesis: ${thought.hypothesis.statement}\\n\\n`;\n ascii += `Prior Probability: ${thought.prior.probability.toFixed(3)}\\n`;\n ascii += ` Justification: ${thought.prior.justification}\\n\\n`;\n\n if (thought.evidence && thought.evidence.length > 0) {\n ascii += 'Evidence:\\n';\n for (const ev of thought.evidence) {\n ascii += ` • ${ev.description}\\n`;\n }\n ascii += '\\n';\n }\n\n ascii += `Posterior Probability: ${thought.posterior.probability.toFixed(3)}\\n`;\n ascii += ` Calculation: ${thought.posterior.calculation}\\n`;\n\n if (thought.bayesFactor !== undefined) {\n ascii += `\\nBayes Factor: ${thought.bayesFactor.toFixed(2)}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Sequential Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Sequential dependency graph export to Mermaid, DOT, ASCII\n */\n\nimport type { SequentialThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export sequential dependency graph to visual format\n */\nexport function exportSequentialDependencyGraph(thought: SequentialThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true } = options;\n\n switch (format) {\n case 'mermaid':\n return sequentialToMermaid(thought, colorScheme, includeLabels);\n case 'dot':\n return sequentialToDOT(thought, includeLabels);\n case 'ascii':\n return sequentialToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction sequentialToMermaid(\n thought: SequentialThought,\n colorScheme: string,\n includeLabels: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n const nodeId = sanitizeId(thought.id);\n const label = includeLabels ? thought.content.substring(0, 50) + '...' : nodeId;\n\n mermaid += ` ${nodeId}[\"${label}\"]\\n`;\n\n if (thought.buildUpon && thought.buildUpon.length > 0) {\n mermaid += '\\n';\n for (const depId of thought.buildUpon) {\n const depNodeId = sanitizeId(depId);\n mermaid += ` ${depNodeId} --> ${nodeId}\\n`;\n }\n }\n\n if (thought.branchFrom) {\n const branchId = sanitizeId(thought.branchFrom);\n mermaid += ` ${branchId} -.->|branch| ${nodeId}\\n`;\n }\n\n if (thought.revisesThought) {\n const revisedId = sanitizeId(thought.revisesThought);\n mermaid += ` ${revisedId} ==>|revises| ${nodeId}\\n`;\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const color = thought.isRevision\n ? (colorScheme === 'pastel' ? '#fff3e0' : '#ffd699')\n : (colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff');\n mermaid += ` style ${nodeId} fill:${color}\\n`;\n }\n\n return mermaid;\n}\n\nfunction sequentialToDOT(thought: SequentialThought, includeLabels: boolean): string {\n let dot = 'digraph SequentialDependency {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n const nodeId = sanitizeId(thought.id);\n const label = includeLabels ? thought.content.substring(0, 50) + '...' : nodeId;\n\n dot += ` ${nodeId} [label=\"${label}\"];\\n`;\n\n if (thought.buildUpon && thought.buildUpon.length > 0) {\n for (const depId of thought.buildUpon) {\n const depNodeId = sanitizeId(depId);\n dot += ` ${depNodeId} -> ${nodeId};\\n`;\n }\n }\n\n if (thought.branchFrom) {\n const branchId = sanitizeId(thought.branchFrom);\n dot += ` ${branchId} -> ${nodeId} [style=dashed, label=\"branch\"];\\n`;\n }\n\n if (thought.revisesThought) {\n const revisedId = sanitizeId(thought.revisesThought);\n dot += ` ${revisedId} -> ${nodeId} [style=bold, label=\"revises\"];\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction sequentialToASCII(thought: SequentialThought): string {\n let ascii = 'Sequential Dependency Graph:\\n';\n ascii += '============================\\n\\n';\n\n ascii += `Current Thought: ${thought.id}\\n`;\n ascii += `Content: ${thought.content.substring(0, 100)}...\\n\\n`;\n\n if (thought.buildUpon && thought.buildUpon.length > 0) {\n ascii += 'Builds Upon:\\n';\n for (const depId of thought.buildUpon) {\n ascii += ` ↓ ${depId}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.branchFrom) {\n ascii += `Branches From: ${thought.branchFrom}\\n`;\n if (thought.branchId) {\n ascii += `Branch ID: ${thought.branchId}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.revisesThought) {\n ascii += `Revises: ${thought.revisesThought}\\n`;\n if (thought.revisionReason) {\n ascii += `Reason: ${thought.revisionReason}\\n`;\n }\n ascii += '\\n';\n }\n\n return ascii;\n}\n","/**\n * Shannon Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Shannon stage flow export to Mermaid, DOT, ASCII\n */\n\nimport type { ShannonThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export Shannon stage flow diagram to visual format\n */\nexport function exportShannonStageFlow(thought: ShannonThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return shannonToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return shannonToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return shannonToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nconst stages = [\n 'problem_definition',\n 'constraints',\n 'model',\n 'proof',\n 'implementation'\n];\n\nconst stageLabels: Record<string, string> = {\n problem_definition: 'Problem Definition',\n constraints: 'Constraints',\n model: 'Model',\n proof: 'Proof',\n implementation: 'Implementation'\n};\n\nfunction shannonToMermaid(\n thought: ShannonThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph LR\\n';\n\n for (let i = 0; i < stages.length; i++) {\n const stage = stages[i];\n const stageId = sanitizeId(stage);\n const label = includeLabels ? stageLabels[stage] : stageId;\n\n mermaid += ` ${stageId}[\"${label}\"]\\n`;\n\n if (i < stages.length - 1) {\n const nextStageId = sanitizeId(stages[i + 1]);\n mermaid += ` ${stageId} --> ${nextStageId}\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const currentStageId = sanitizeId(thought.stage);\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n mermaid += ` style ${currentStageId} fill:${color},stroke:#333,stroke-width:3px\\n`;\n }\n\n if (includeMetrics && thought.uncertainty !== undefined) {\n mermaid += `\\n uncertainty[\"Uncertainty: ${thought.uncertainty.toFixed(2)}\"]\\n`;\n mermaid += ` uncertainty -.-> ${sanitizeId(thought.stage)}\\n`;\n }\n\n return mermaid;\n}\n\nfunction shannonToDOT(\n thought: ShannonThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph ShannonStageFlow {\\n';\n dot += ' rankdir=LR;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n for (let i = 0; i < stages.length; i++) {\n const stage = stages[i];\n const stageId = sanitizeId(stage);\n const label = includeLabels ? stageLabels[stage] : stageId;\n\n const isCurrent = stage === thought.stage;\n const style = isCurrent ? ', style=filled, fillcolor=lightblue' : '';\n\n dot += ` ${stageId} [label=\"${label}\"${style}];\\n`;\n\n if (i < stages.length - 1) {\n const nextStageId = sanitizeId(stages[i + 1]);\n dot += ` ${stageId} -> ${nextStageId};\\n`;\n }\n }\n\n if (includeMetrics && thought.uncertainty !== undefined) {\n dot += `\\n uncertainty [label=\"Uncertainty: ${thought.uncertainty.toFixed(2)}\", shape=ellipse];\\n`;\n dot += ` uncertainty -> ${sanitizeId(thought.stage)} [style=dashed];\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction shannonToASCII(thought: ShannonThought): string {\n let ascii = 'Shannon Stage Flow:\\n';\n ascii += '===================\\n\\n';\n\n ascii += 'Flow: ';\n for (let i = 0; i < stages.length; i++) {\n const stage = stages[i];\n const isCurrent = stage === thought.stage;\n\n if (isCurrent) {\n ascii += `[${stageLabels[stage]}]`;\n } else {\n ascii += stageLabels[stage];\n }\n\n if (i < stages.length - 1) {\n ascii += ' → ';\n }\n }\n\n ascii += '\\n\\n';\n ascii += `Current Stage: ${stageLabels[thought.stage]}\\n`;\n ascii += `Uncertainty: ${thought.uncertainty.toFixed(2)}\\n`;\n\n if (thought.dependencies && thought.dependencies.length > 0) {\n ascii += '\\nDependencies:\\n';\n for (const dep of thought.dependencies) {\n ascii += ` • ${dep}\\n`;\n }\n }\n\n if (thought.assumptions && thought.assumptions.length > 0) {\n ascii += '\\nAssumptions:\\n';\n for (const assumption of thought.assumptions) {\n ascii += ` • ${assumption}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Abductive Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Abductive hypothesis export to Mermaid, DOT, ASCII\n */\n\nimport type { AbductiveThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export abductive hypothesis comparison to visual format\n */\nexport function exportAbductiveHypotheses(thought: AbductiveThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return abductiveToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return abductiveToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return abductiveToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction abductiveToMermaid(\n thought: AbductiveThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n mermaid += ' Observations[\"Observations\"]\\n';\n\n for (const hypothesis of thought.hypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n const label = includeLabels ? hypothesis.explanation.substring(0, 50) + '...' : hypId;\n const scoreLabel = includeMetrics ? ` (${hypothesis.score.toFixed(2)})` : '';\n\n mermaid += ` ${hypId}[\"${label}${scoreLabel}\"]\\n`;\n mermaid += ` Observations --> ${hypId}\\n`;\n }\n\n if (thought.bestExplanation && colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const bestId = sanitizeId(thought.bestExplanation.id);\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n mermaid += ` style ${bestId} fill:${color},stroke:#333,stroke-width:3px\\n`;\n }\n\n return mermaid;\n}\n\nfunction abductiveToDOT(\n thought: AbductiveThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph AbductiveHypotheses {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n dot += ' Observations [label=\"Observations\", shape=ellipse];\\n\\n';\n\n for (const hypothesis of thought.hypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n const label = includeLabels ? hypothesis.explanation.substring(0, 50) + '...' : hypId;\n const scoreLabel = includeMetrics ? ` (${hypothesis.score.toFixed(2)})` : '';\n\n const isBest = thought.bestExplanation?.id === hypothesis.id;\n const style = isBest ? ', style=filled, fillcolor=lightblue' : '';\n\n dot += ` ${hypId} [label=\"${label}${scoreLabel}\"${style}];\\n`;\n dot += ` Observations -> ${hypId};\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction abductiveToASCII(thought: AbductiveThought): string {\n let ascii = 'Abductive Hypothesis Comparison:\\n';\n ascii += '================================\\n\\n';\n\n ascii += 'Observations:\\n';\n for (const obs of thought.observations) {\n ascii += ` • ${obs.description} (confidence: ${obs.confidence.toFixed(2)})\\n`;\n }\n\n ascii += '\\nHypotheses:\\n';\n for (const hypothesis of thought.hypotheses) {\n const isBest = thought.bestExplanation?.id === hypothesis.id;\n const marker = isBest ? '★' : '•';\n\n ascii += ` ${marker} ${hypothesis.explanation}\\n`;\n ascii += ` Score: ${hypothesis.score.toFixed(2)}\\n`;\n ascii += ` Assumptions: ${hypothesis.assumptions.join(', ')}\\n`;\n ascii += '\\n';\n }\n\n if (thought.bestExplanation) {\n ascii += `Best Explanation: ${thought.bestExplanation.explanation}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Counterfactual Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Counterfactual scenario export to Mermaid, DOT, ASCII\n */\n\nimport type { CounterfactualThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export counterfactual scenario tree to visual format\n */\nexport function exportCounterfactualScenarios(thought: CounterfactualThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return counterfactualToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return counterfactualToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return counterfactualToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction counterfactualToMermaid(\n thought: CounterfactualThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n const interventionId = 'intervention';\n mermaid += ` ${interventionId}[\"${thought.interventionPoint.description}\"]\\n`;\n\n const actualId = sanitizeId(thought.actual.id);\n const actualLabel = includeLabels ? thought.actual.name : actualId;\n mermaid += ` ${actualId}[\"Actual: ${actualLabel}\"]\\n`;\n mermaid += ` ${interventionId} -->|no change| ${actualId}\\n`;\n\n for (const scenario of thought.counterfactuals) {\n const scenarioId = sanitizeId(scenario.id);\n const label = includeLabels ? scenario.name : scenarioId;\n const likelihoodLabel = includeMetrics && scenario.likelihood\n ? ` (${scenario.likelihood.toFixed(2)})`\n : '';\n\n mermaid += ` ${scenarioId}[\"CF: ${label}${likelihoodLabel}\"]\\n`;\n mermaid += ` ${interventionId} -->|intervene| ${scenarioId}\\n`;\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const actualColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n mermaid += ` style ${actualId} fill:${actualColor}\\n`;\n\n const cfColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n for (const scenario of thought.counterfactuals) {\n const scenarioId = sanitizeId(scenario.id);\n mermaid += ` style ${scenarioId} fill:${cfColor}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction counterfactualToDOT(\n thought: CounterfactualThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph CounterfactualScenarios {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n const interventionId = 'intervention';\n dot += ` ${interventionId} [label=\"${thought.interventionPoint.description}\", shape=diamond];\\n\\n`;\n\n const actualId = sanitizeId(thought.actual.id);\n const actualLabel = includeLabels ? thought.actual.name : actualId;\n dot += ` ${actualId} [label=\"Actual: ${actualLabel}\", style=filled, fillcolor=lightyellow];\\n`;\n dot += ` ${interventionId} -> ${actualId} [label=\"no change\"];\\n\\n`;\n\n for (const scenario of thought.counterfactuals) {\n const scenarioId = sanitizeId(scenario.id);\n const label = includeLabels ? scenario.name : scenarioId;\n const likelihoodLabel = includeMetrics && scenario.likelihood\n ? ` (${scenario.likelihood.toFixed(2)})`\n : '';\n\n dot += ` ${scenarioId} [label=\"CF: ${label}${likelihoodLabel}\", style=filled, fillcolor=lightblue];\\n`;\n dot += ` ${interventionId} -> ${scenarioId} [label=\"intervene\"];\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction counterfactualToASCII(thought: CounterfactualThought): string {\n let ascii = 'Counterfactual Scenario Tree:\\n';\n ascii += '=============================\\n\\n';\n\n ascii += `Intervention Point: ${thought.interventionPoint.description}\\n`;\n ascii += `Timing: ${thought.interventionPoint.timing}\\n`;\n ascii += `Feasibility: ${thought.interventionPoint.feasibility.toFixed(2)}\\n\\n`;\n\n ascii += '┌─ Actual Scenario:\\n';\n ascii += `│ ${thought.actual.name}\\n`;\n ascii += `│ ${thought.actual.description}\\n\\n`;\n\n ascii += '└─ Counterfactual Scenarios:\\n';\n for (const scenario of thought.counterfactuals) {\n const likelihoodStr = scenario.likelihood ? ` (likelihood: ${scenario.likelihood.toFixed(2)})` : '';\n ascii += ` ├─ ${scenario.name}${likelihoodStr}\\n`;\n ascii += ` │ ${scenario.description}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Analogical Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Analogical domain mapping export to Mermaid, DOT, ASCII\n */\n\nimport type { AnalogicalThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export analogical domain mapping to visual format\n */\nexport function exportAnalogicalMapping(thought: AnalogicalThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return analogicalToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return analogicalToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return analogicalToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction analogicalToMermaid(\n thought: AnalogicalThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph LR\\n';\n\n mermaid += ' subgraph Source[\"Source Domain\"]\\n';\n for (const entity of thought.sourceDomain.entities) {\n const entityId = sanitizeId('src_' + entity.id);\n const label = includeLabels ? entity.name : entityId;\n mermaid += ` ${entityId}[\"${label}\"]\\n`;\n }\n mermaid += ' end\\n\\n';\n\n mermaid += ' subgraph Target[\"Target Domain\"]\\n';\n for (const entity of thought.targetDomain.entities) {\n const entityId = sanitizeId('tgt_' + entity.id);\n const label = includeLabels ? entity.name : entityId;\n mermaid += ` ${entityId}[\"${label}\"]\\n`;\n }\n mermaid += ' end\\n\\n';\n\n for (const mapping of thought.mapping) {\n const srcId = sanitizeId('src_' + mapping.sourceEntityId);\n const tgtId = sanitizeId('tgt_' + mapping.targetEntityId);\n const confidenceLabel = includeMetrics ? `|${mapping.confidence.toFixed(2)}|` : '';\n\n mermaid += ` ${srcId} -.->${confidenceLabel} ${tgtId}\\n`;\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const srcColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n const tgtColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n\n for (const entity of thought.sourceDomain.entities) {\n const entityId = sanitizeId('src_' + entity.id);\n mermaid += ` style ${entityId} fill:${srcColor}\\n`;\n }\n\n for (const entity of thought.targetDomain.entities) {\n const entityId = sanitizeId('tgt_' + entity.id);\n mermaid += ` style ${entityId} fill:${tgtColor}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction analogicalToDOT(\n thought: AnalogicalThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph AnalogicalMapping {\\n';\n dot += ' rankdir=LR;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n dot += ' subgraph cluster_source {\\n';\n dot += ' label=\"Source Domain\";\\n';\n dot += ' style=filled;\\n';\n dot += ' fillcolor=lightyellow;\\n\\n';\n\n for (const entity of thought.sourceDomain.entities) {\n const entityId = sanitizeId('src_' + entity.id);\n const label = includeLabels ? entity.name : entityId;\n dot += ` ${entityId} [label=\"${label}\"];\\n`;\n }\n\n dot += ' }\\n\\n';\n\n dot += ' subgraph cluster_target {\\n';\n dot += ' label=\"Target Domain\";\\n';\n dot += ' style=filled;\\n';\n dot += ' fillcolor=lightblue;\\n\\n';\n\n for (const entity of thought.targetDomain.entities) {\n const entityId = sanitizeId('tgt_' + entity.id);\n const label = includeLabels ? entity.name : entityId;\n dot += ` ${entityId} [label=\"${label}\"];\\n`;\n }\n\n dot += ' }\\n\\n';\n\n for (const mapping of thought.mapping) {\n const srcId = sanitizeId('src_' + mapping.sourceEntityId);\n const tgtId = sanitizeId('tgt_' + mapping.targetEntityId);\n const confidenceLabel = includeMetrics ? `, label=\"${mapping.confidence.toFixed(2)}\"` : '';\n\n dot += ` ${srcId} -> ${tgtId} [style=dashed${confidenceLabel}];\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction analogicalToASCII(thought: AnalogicalThought): string {\n let ascii = 'Analogical Domain Mapping:\\n';\n ascii += '==========================\\n\\n';\n\n ascii += `Source Domain: ${thought.sourceDomain.name}\\n`;\n ascii += `${thought.sourceDomain.description}\\n\\n`;\n\n ascii += `Target Domain: ${thought.targetDomain.name}\\n`;\n ascii += `${thought.targetDomain.description}\\n\\n`;\n\n ascii += 'Mappings:\\n';\n for (const mapping of thought.mapping) {\n const srcEntity = thought.sourceDomain.entities.find(e => e.id === mapping.sourceEntityId);\n const tgtEntity = thought.targetDomain.entities.find(e => e.id === mapping.targetEntityId);\n\n if (srcEntity && tgtEntity) {\n ascii += ` ${srcEntity.name} ←→ ${tgtEntity.name} (confidence: ${mapping.confidence.toFixed(2)})\\n`;\n ascii += ` ${mapping.justification}\\n`;\n }\n }\n\n ascii += `\\nAnalogy Strength: ${thought.analogyStrength.toFixed(2)}\\n`;\n\n return ascii;\n}\n","/**\n * Evidential Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Evidential belief export to Mermaid, DOT, ASCII\n */\n\nimport type { EvidentialThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export evidential belief visualization to visual format\n */\nexport function exportEvidentialBeliefs(thought: EvidentialThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return evidentialToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return evidentialToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return evidentialToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction evidentialToMermaid(\n thought: EvidentialThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n mermaid += ' Frame[\"Frame of Discernment\"]\\n';\n\n if (thought.frameOfDiscernment) {\n for (const hypothesis of thought.frameOfDiscernment) {\n const hypId = sanitizeId(hypothesis);\n const label = includeLabels ? hypothesis : hypId;\n\n mermaid += ` ${hypId}[\"${label}\"]\\n`;\n mermaid += ` Frame --> ${hypId}\\n`;\n }\n }\n\n if (includeMetrics && (thought as any).massAssignments && (thought as any).massAssignments.length > 0) {\n mermaid += '\\n';\n for (const mass of (thought as any).massAssignments) {\n const massId = sanitizeId(mass.subset.join('_'));\n const label = `{${mass.subset.join(', ')}}`;\n mermaid += ` ${massId}[\"${label}: ${mass.mass.toFixed(3)}\"]\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome' && thought.frameOfDiscernment) {\n mermaid += '\\n';\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n for (const hypothesis of thought.frameOfDiscernment) {\n const hypId = sanitizeId(hypothesis);\n mermaid += ` style ${hypId} fill:${color}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction evidentialToDOT(\n thought: EvidentialThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph EvidentialBeliefs {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n dot += ' Frame [label=\"Frame of Discernment\", shape=ellipse];\\n\\n';\n\n if (thought.frameOfDiscernment) {\n for (const hypothesis of thought.frameOfDiscernment) {\n const hypId = sanitizeId(hypothesis);\n const label = includeLabels ? hypothesis : hypId;\n\n dot += ` ${hypId} [label=\"${label}\"];\\n`;\n dot += ` Frame -> ${hypId};\\n`;\n }\n }\n\n if (includeMetrics && (thought as any).massAssignments && (thought as any).massAssignments.length > 0) {\n dot += '\\n';\n for (const mass of (thought as any).massAssignments) {\n const massId = sanitizeId(mass.subset.join('_'));\n const label = `{${mass.subset.join(', ')}}: ${mass.mass.toFixed(3)}`;\n dot += ` ${massId} [label=\"${label}\", shape=note];\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction evidentialToASCII(thought: EvidentialThought): string {\n let ascii = 'Evidential Belief Visualization:\\n';\n ascii += '================================\\n\\n';\n\n ascii += 'Frame of Discernment:\\n';\n if (thought.frameOfDiscernment) {\n ascii += ` {${thought.frameOfDiscernment.join(', ')}}\\n\\n`;\n } else {\n ascii += ' (not defined)\\n\\n';\n }\n\n if ((thought as any).massAssignments && (thought as any).massAssignments.length > 0) {\n ascii += 'Mass Assignments:\\n';\n for (const mass of (thought as any).massAssignments) {\n ascii += ` m({${mass.subset.join(', ')}}) = ${mass.mass.toFixed(3)}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.beliefFunctions && thought.beliefFunctions.length > 0) {\n ascii += `Belief Functions: ${thought.beliefFunctions.length} defined\\n`;\n }\n\n if ((thought as any).plausibilityFunction) {\n ascii += `Plausibility: ${(thought as any).plausibilityFunction.toFixed(3)}\\n`;\n }\n\n return ascii;\n}\n","/**\n * First Principles Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: First principles derivation export to Mermaid, DOT, ASCII\n */\n\nimport type { FirstPrinciplesThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export first-principles derivation chain to visual format\n */\nexport function exportFirstPrinciplesDerivation(thought: FirstPrinciplesThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return firstPrinciplesToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return firstPrinciplesToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return firstPrinciplesToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction firstPrinciplesToMermaid(\n thought: FirstPrinciplesThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n mermaid += ` Q[\"Question: ${thought.question}\"]\\n`;\n mermaid += '\\n';\n\n for (const principle of thought.principles) {\n const principleId = sanitizeId(principle.id);\n const label = includeLabels\n ? `${principle.type.toUpperCase()}: ${principle.statement.substring(0, 50)}...`\n : principleId;\n\n let shape: [string, string];\n switch (principle.type) {\n case 'axiom':\n shape = ['([', '])'];\n break;\n case 'definition':\n shape = ['[[', ']]'];\n break;\n case 'observation':\n shape = ['[(', ')]'];\n break;\n case 'logical_inference':\n shape = ['[', ']'];\n break;\n case 'assumption':\n shape = ['{', '}'];\n break;\n default:\n shape = ['[', ']'];\n }\n\n mermaid += ` ${principleId}${shape[0]}${label}${shape[1]}\\n`;\n\n if (principle.dependsOn) {\n for (const depId of principle.dependsOn) {\n const sanitizedDepId = sanitizeId(depId);\n mermaid += ` ${sanitizedDepId} --> ${principleId}\\n`;\n }\n }\n }\n\n mermaid += '\\n';\n\n for (const step of thought.derivationSteps) {\n const stepId = `Step${step.stepNumber}`;\n const principleId = sanitizeId(step.principle);\n const label = includeLabels\n ? `Step ${step.stepNumber}: ${step.inference.substring(0, 50)}...`\n : stepId;\n\n mermaid += ` ${stepId}[\"${label}\"]\\n`;\n mermaid += ` ${principleId} -.->|applies| ${stepId}\\n`;\n\n if (includeMetrics && step.confidence !== undefined) {\n mermaid += ` ${stepId} -.->|conf: ${step.confidence.toFixed(2)}| ${stepId}\\n`;\n }\n }\n\n mermaid += '\\n';\n\n const conclusionLabel = includeLabels\n ? `Conclusion: ${thought.conclusion.statement.substring(0, 50)}...`\n : 'Conclusion';\n mermaid += ` C[\"${conclusionLabel}\"]\\n`;\n\n for (const stepNum of thought.conclusion.derivationChain) {\n mermaid += ` Step${stepNum} --> C\\n`;\n }\n\n if (includeMetrics) {\n mermaid += ` C -.->|certainty: ${thought.conclusion.certainty.toFixed(2)}| C\\n`;\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n\n const axiomColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const definitionColor = colorScheme === 'pastel' ? '#f3e5f5' : '#ce93d8';\n const observationColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n const inferenceColor = colorScheme === 'pastel' ? '#e8f5e9' : '#a5d6a7';\n const assumptionColor = colorScheme === 'pastel' ? '#ffebee' : '#ef9a9a';\n\n for (const principle of thought.principles) {\n const principleId = sanitizeId(principle.id);\n let color = axiomColor;\n switch (principle.type) {\n case 'axiom': color = axiomColor; break;\n case 'definition': color = definitionColor; break;\n case 'observation': color = observationColor; break;\n case 'logical_inference': color = inferenceColor; break;\n case 'assumption': color = assumptionColor; break;\n }\n mermaid += ` style ${principleId} fill:${color}\\n`;\n }\n\n const conclusionColor = colorScheme === 'pastel' ? '#c8e6c9' : '#66bb6a';\n mermaid += ` style C fill:${conclusionColor}\\n`;\n }\n\n return mermaid;\n}\n\nfunction firstPrinciplesToDOT(\n thought: FirstPrinciplesThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph FirstPrinciples {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n dot += ` Q [label=\"Question:\\\\n${thought.question}\", shape=ellipse, style=bold];\\n\\n`;\n\n for (const principle of thought.principles) {\n const principleId = sanitizeId(principle.id);\n const label = includeLabels\n ? `${principle.type.toUpperCase()}:\\\\n${principle.statement.substring(0, 60)}...`\n : principleId;\n\n let shape = 'box';\n switch (principle.type) {\n case 'axiom': shape = 'ellipse'; break;\n case 'definition': shape = 'box'; break;\n case 'observation': shape = 'cylinder'; break;\n case 'logical_inference': shape = 'box'; break;\n case 'assumption': shape = 'diamond'; break;\n }\n\n const confidenceLabel = includeMetrics && principle.confidence\n ? `\\\\nconf: ${principle.confidence.toFixed(2)}`\n : '';\n dot += ` ${principleId} [label=\"${label}${confidenceLabel}\", shape=${shape}];\\n`;\n\n if (principle.dependsOn) {\n for (const depId of principle.dependsOn) {\n const sanitizedDepId = sanitizeId(depId);\n dot += ` ${sanitizedDepId} -> ${principleId};\\n`;\n }\n }\n }\n\n dot += '\\n';\n\n for (const step of thought.derivationSteps) {\n const stepId = `Step${step.stepNumber}`;\n const principleId = sanitizeId(step.principle);\n const label = includeLabels\n ? `Step ${step.stepNumber}:\\\\n${step.inference.substring(0, 60)}...`\n : stepId;\n\n const confidenceLabel = includeMetrics\n ? `\\\\nconf: ${step.confidence.toFixed(2)}`\n : '';\n dot += ` ${stepId} [label=\"${label}${confidenceLabel}\"];\\n`;\n dot += ` ${principleId} -> ${stepId} [style=dashed, label=\"applies\"];\\n`;\n }\n\n dot += '\\n';\n\n const conclusionLabel = includeLabels\n ? `Conclusion:\\\\n${thought.conclusion.statement.substring(0, 60)}...`\n : 'Conclusion';\n const certaintyLabel = includeMetrics\n ? `\\\\ncertainty: ${thought.conclusion.certainty.toFixed(2)}`\n : '';\n dot += ` C [label=\"${conclusionLabel}${certaintyLabel}\", shape=doubleoctagon, style=bold];\\n`;\n\n for (const stepNum of thought.conclusion.derivationChain) {\n dot += ` Step${stepNum} -> C;\\n`;\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction firstPrinciplesToASCII(thought: FirstPrinciplesThought): string {\n let ascii = 'First-Principles Derivation:\\n';\n ascii += '============================\\n\\n';\n\n ascii += `Question: ${thought.question}\\n\\n`;\n\n ascii += 'Foundational Principles:\\n';\n ascii += '------------------------\\n';\n for (const principle of thought.principles) {\n ascii += `[${principle.id}] ${principle.type.toUpperCase()}\\n`;\n ascii += ` Statement: ${principle.statement}\\n`;\n ascii += ` Justification: ${principle.justification}\\n`;\n if (principle.dependsOn && principle.dependsOn.length > 0) {\n ascii += ` Depends on: ${principle.dependsOn.join(', ')}\\n`;\n }\n if (principle.confidence !== undefined) {\n ascii += ` Confidence: ${principle.confidence.toFixed(2)}\\n`;\n }\n ascii += '\\n';\n }\n\n ascii += 'Derivation Chain:\\n';\n ascii += '----------------\\n';\n for (const step of thought.derivationSteps) {\n ascii += `Step ${step.stepNumber} (using principle: ${step.principle})\\n`;\n ascii += ` Inference: ${step.inference}\\n`;\n if (step.logicalForm) {\n ascii += ` Logical form: ${step.logicalForm}\\n`;\n }\n ascii += ` Confidence: ${step.confidence.toFixed(2)}\\n`;\n ascii += '\\n';\n }\n\n ascii += 'Conclusion:\\n';\n ascii += '----------\\n';\n ascii += `${thought.conclusion.statement}\\n`;\n ascii += `Derivation chain: Steps [${thought.conclusion.derivationChain.join(', ')}]\\n`;\n ascii += `Certainty: ${thought.conclusion.certainty.toFixed(2)}\\n`;\n\n if (thought.conclusion.limitations && thought.conclusion.limitations.length > 0) {\n ascii += '\\nLimitations:\\n';\n for (const limitation of thought.conclusion.limitations) {\n ascii += ` - ${limitation}\\n`;\n }\n }\n\n if (thought.alternativeInterpretations && thought.alternativeInterpretations.length > 0) {\n ascii += '\\nAlternative Interpretations:\\n';\n for (const alt of thought.alternativeInterpretations) {\n ascii += ` - ${alt}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Systems Thinking Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Systems thinking causal loop export to Mermaid, DOT, ASCII\n */\n\nimport type { SystemsThinkingThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export systems thinking causal loop diagram to visual format\n */\nexport function exportSystemsThinkingCausalLoops(thought: SystemsThinkingThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return systemsThinkingToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return systemsThinkingToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return systemsThinkingToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction systemsThinkingToMermaid(\n thought: SystemsThinkingThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TB\\n';\n\n if (thought.system) {\n mermaid += ` System[\"${thought.system.name}\"]\\n\\n`;\n }\n\n if (thought.components && thought.components.length > 0) {\n for (const component of thought.components) {\n const compId = sanitizeId(component.id);\n const label = includeLabels ? component.name : compId;\n const shape = component.type === 'stock' ? ['[[', ']]'] : ['[', ']'];\n mermaid += ` ${compId}${shape[0]}${label}${shape[1]}\\n`;\n }\n mermaid += '\\n';\n }\n\n if (thought.feedbackLoops && thought.feedbackLoops.length > 0) {\n for (const loop of thought.feedbackLoops) {\n const loopComponents = loop.components;\n\n for (let i = 0; i < loopComponents.length; i++) {\n const fromId = sanitizeId(loopComponents[i]);\n const toId = sanitizeId(loopComponents[(i + 1) % loopComponents.length]);\n\n const edgeLabel = includeMetrics\n ? `|${loop.type} (${loop.strength.toFixed(2)})| `\n : `|${loop.type}| `;\n\n const edgeStyle = loop.type === 'reinforcing' ? '-->' : '-..->';\n mermaid += ` ${fromId} ${edgeStyle}${edgeLabel}${toId}\\n`;\n }\n }\n mermaid += '\\n';\n }\n\n if (colorScheme !== 'monochrome' && thought.components) {\n const stockColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const flowColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n\n for (const component of thought.components) {\n const compId = sanitizeId(component.id);\n const color = component.type === 'stock' ? stockColor : flowColor;\n mermaid += ` style ${compId} fill:${color}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction systemsThinkingToDOT(\n thought: SystemsThinkingThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph SystemsThinking {\\n';\n dot += ' rankdir=TB;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n if (thought.components && thought.components.length > 0) {\n for (const component of thought.components) {\n const compId = sanitizeId(component.id);\n const label = includeLabels ? component.name : compId;\n const shape = component.type === 'stock' ? 'box' : 'ellipse';\n\n dot += ` ${compId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n dot += '\\n';\n }\n\n if (thought.feedbackLoops && thought.feedbackLoops.length > 0) {\n for (const loop of thought.feedbackLoops) {\n const loopComponents = loop.components;\n\n for (let i = 0; i < loopComponents.length; i++) {\n const fromId = sanitizeId(loopComponents[i]);\n const toId = sanitizeId(loopComponents[(i + 1) % loopComponents.length]);\n\n const edgeLabel = includeMetrics\n ? `, label=\"${loop.type} (${loop.strength.toFixed(2)})\"`\n : `, label=\"${loop.type}\"`;\n\n const edgeStyle = loop.type === 'reinforcing' ? 'solid' : 'dashed';\n dot += ` ${fromId} -> ${toId} [style=${edgeStyle}${edgeLabel}];\\n`;\n }\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction systemsThinkingToASCII(thought: SystemsThinkingThought): string {\n let ascii = 'Systems Thinking Model:\\n';\n ascii += '======================\\n\\n';\n\n if (thought.system) {\n ascii += `System: ${thought.system.name}\\n`;\n ascii += `${thought.system.description}\\n\\n`;\n }\n\n if (thought.components && thought.components.length > 0) {\n ascii += 'Components:\\n';\n for (const component of thought.components) {\n const typeIcon = component.type === 'stock' ? '[■]' : '(○)';\n ascii += ` ${typeIcon} ${component.name}: ${component.description}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.feedbackLoops && thought.feedbackLoops.length > 0) {\n ascii += 'Feedback Loops:\\n';\n for (const loop of thought.feedbackLoops) {\n const loopIcon = loop.type === 'reinforcing' ? '⊕' : '⊖';\n ascii += ` ${loopIcon} ${loop.name} (${loop.type})\\n`;\n ascii += ` Strength: ${loop.strength.toFixed(2)}\\n`;\n ascii += ` Components: ${loop.components.join(' → ')}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.leveragePoints && thought.leveragePoints.length > 0) {\n ascii += 'Leverage Points:\\n';\n for (const point of thought.leveragePoints) {\n ascii += ` ★ ${point.location} (effectiveness: ${point.effectiveness.toFixed(2)})\\n`;\n ascii += ` ${point.description}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Scientific Method Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Scientific method experiment export to Mermaid, DOT, ASCII\n */\n\nimport type { ScientificMethodThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export scientific method experiment flow to visual format\n */\nexport function exportScientificMethodExperiment(thought: ScientificMethodThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return scientificMethodToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return scientificMethodToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return scientificMethodToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction scientificMethodToMermaid(\n thought: ScientificMethodThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n if (thought.researchQuestion) {\n mermaid += ` RQ[\"Research Question: ${thought.researchQuestion.question.substring(0, 60)}...\"]\\n`;\n mermaid += '\\n';\n }\n\n if (thought.scientificHypotheses && thought.scientificHypotheses.length > 0) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n const label = includeLabels ? hypothesis.statement.substring(0, 50) + '...' : hypId;\n mermaid += ` ${hypId}[\"H: ${label}\"]\\n`;\n if (thought.researchQuestion) {\n mermaid += ` RQ --> ${hypId}\\n`;\n }\n }\n mermaid += '\\n';\n }\n\n if (thought.experiment) {\n mermaid += ` Exp[\"Experiment: ${thought.experiment.design}\"]\\n`;\n if (thought.scientificHypotheses && thought.scientificHypotheses.length > 0) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n mermaid += ` ${hypId} --> Exp\\n`;\n }\n }\n mermaid += '\\n';\n }\n\n if (thought.data) {\n mermaid += ` Data[\"Data Collection: ${(thought.experiment as any)?.sampleSize || 0} samples\"]\\n`;\n if (thought.experiment) {\n mermaid += ` Exp --> Data\\n`;\n }\n mermaid += '\\n';\n }\n\n if (thought.analysis) {\n mermaid += ` Stats[\"Statistical Analysis\"]\\n`;\n if (thought.data) {\n mermaid += ` Data --> Stats\\n`;\n }\n mermaid += '\\n';\n }\n\n if (thought.conclusion) {\n const conclusionId = 'Conclusion';\n const supportLabel = includeMetrics && thought.conclusion.confidence\n ? ` (conf: ${thought.conclusion.confidence.toFixed(2)})`\n : '';\n mermaid += ` ${conclusionId}[\"Conclusion: ${thought.conclusion.statement.substring(0, 50)}...${supportLabel}\"]\\n`;\n if (thought.analysis) {\n mermaid += ` Stats --> ${conclusionId}\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const questionColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n const hypothesisColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const conclusionColor = colorScheme === 'pastel' ? '#e8f5e9' : '#a5d6a7';\n\n if (thought.researchQuestion) {\n mermaid += ` style RQ fill:${questionColor}\\n`;\n }\n if (thought.scientificHypotheses) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n mermaid += ` style ${hypId} fill:${hypothesisColor}\\n`;\n }\n }\n if (thought.conclusion) {\n mermaid += ` style Conclusion fill:${conclusionColor}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction scientificMethodToDOT(\n thought: ScientificMethodThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph ScientificMethod {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n if (thought.researchQuestion) {\n const label = includeLabels ? thought.researchQuestion.question.substring(0, 60) + '...' : 'RQ';\n dot += ` RQ [label=\"Research Question:\\\\n${label}\", shape=ellipse];\\n\\n`;\n }\n\n if (thought.scientificHypotheses && thought.scientificHypotheses.length > 0) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n const label = includeLabels ? hypothesis.statement.substring(0, 50) + '...' : hypId;\n dot += ` ${hypId} [label=\"Hypothesis:\\\\n${label}\"];\\n`;\n if (thought.researchQuestion) {\n dot += ` RQ -> ${hypId};\\n`;\n }\n }\n dot += '\\n';\n }\n\n if (thought.experiment) {\n const label = includeLabels ? thought.experiment.design : 'Exp';\n dot += ` Exp [label=\"Experiment:\\\\n${label}\"];\\n`;\n if (thought.scientificHypotheses) {\n for (const hypothesis of thought.scientificHypotheses) {\n const hypId = sanitizeId(hypothesis.id);\n dot += ` ${hypId} -> Exp;\\n`;\n }\n }\n dot += '\\n';\n }\n\n if (thought.data) {\n const sampleLabel = includeMetrics ? `\\\\nSamples: ${(thought.experiment as any)?.sampleSize || 0}` : '';\n dot += ` Data [label=\"Data Collection${sampleLabel}\"];\\n`;\n if (thought.experiment) {\n dot += ` Exp -> Data;\\n`;\n }\n }\n\n if (thought.analysis) {\n dot += ` Stats [label=\"Statistical Analysis\"];\\n`;\n if (thought.data) {\n dot += ` Data -> Stats;\\n`;\n }\n }\n\n if (thought.conclusion) {\n const label = includeLabels ? thought.conclusion.statement.substring(0, 50) + '...' : 'Conclusion';\n const confLabel = includeMetrics && thought.conclusion.confidence\n ? `\\\\nconf: ${thought.conclusion.confidence.toFixed(2)}`\n : '';\n dot += ` Conclusion [label=\"Conclusion:\\\\n${label}${confLabel}\", shape=doubleoctagon];\\n`;\n if (thought.analysis) {\n dot += ` Stats -> Conclusion;\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction scientificMethodToASCII(thought: ScientificMethodThought): string {\n let ascii = 'Scientific Method Process:\\n';\n ascii += '==========================\\n\\n';\n\n if (thought.researchQuestion) {\n ascii += `Research Question: ${thought.researchQuestion.question}\\n`;\n ascii += `Background: ${thought.researchQuestion.background}\\n\\n`;\n }\n\n if (thought.scientificHypotheses && thought.scientificHypotheses.length > 0) {\n ascii += 'Hypotheses:\\n';\n for (const hypothesis of thought.scientificHypotheses) {\n const typeIcon = hypothesis.type === 'null' ? 'H₀' : 'H₁';\n ascii += ` ${typeIcon} ${hypothesis.statement}\\n`;\n if (hypothesis.prediction) {\n ascii += ` Prediction: ${hypothesis.prediction}\\n`;\n }\n }\n ascii += '\\n';\n }\n\n if (thought.experiment) {\n ascii += `Experiment: ${thought.experiment.design}\\n`;\n ascii += `Type: ${thought.experiment.type}\\n`;\n ascii += `Design: ${thought.experiment.design}\\n\\n`;\n }\n\n if (thought.data) {\n ascii += 'Data Collection:\\n';\n ascii += ` Sample Size: ${(thought.experiment as any)?.sampleSize || 0}\\n`;\n ascii += ` Method: ${thought.data.method}\\n`;\n if (thought.data.dataQuality) {\n ascii += ` Quality:\\n`;\n ascii += ` Completeness: ${thought.data.dataQuality.completeness.toFixed(2)}\\n`;\n ascii += ` Reliability: ${thought.data.dataQuality.reliability.toFixed(2)}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.analysis && thought.analysis.tests) {\n ascii += 'Statistical Tests:\\n';\n for (const test of thought.analysis.tests) {\n ascii += ` • ${test.name}\\n`;\n ascii += ` p-value: ${test.pValue.toFixed(4)}, α: ${test.alpha}\\n`;\n ascii += ` Result: ${test.result}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.conclusion) {\n ascii += 'Conclusion:\\n';\n ascii += `${thought.conclusion.statement}\\n`;\n if ((thought.conclusion as any).supportedHypotheses) {\n ascii += `Supported hypotheses: ${(thought.conclusion as any).supportedHypotheses.join(', ')}\\n`;\n }\n if (thought.conclusion.confidence) {\n ascii += `Confidence: ${thought.conclusion.confidence.toFixed(2)}\\n`;\n }\n }\n\n return ascii;\n}\n","/**\n * Optimization Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Optimization constraint graph export to Mermaid, DOT, ASCII\n */\n\nimport type { OptimizationThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export optimization problem constraint graph to visual format\n */\nexport function exportOptimizationSolution(thought: OptimizationThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return optimizationToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return optimizationToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return optimizationToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction optimizationToMermaid(\n thought: OptimizationThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n if (thought.problem) {\n const problemLabel = includeLabels\n ? `Problem: ${thought.problem.name}`\n : 'Problem';\n mermaid += ` Problem[\"${problemLabel}\"]\\n\\n`;\n }\n\n if (thought.variables && thought.variables.length > 0) {\n mermaid += ' subgraph Variables[\"Decision Variables\"]\\n';\n for (const variable of thought.variables) {\n const varId = sanitizeId(variable.id);\n const label = includeLabels ? variable.name : varId;\n const domainLabel = includeMetrics && variable.domain\n ? ` [${(variable.domain as any).lowerBound},${(variable.domain as any).upperBound}]`\n : '';\n mermaid += ` ${varId}[\"${label}${domainLabel}\"]\\n`;\n }\n mermaid += ' end\\n\\n';\n }\n\n if (thought.optimizationConstraints && thought.optimizationConstraints.length > 0) {\n mermaid += ' subgraph Constraints[\"Constraints\"]\\n';\n for (const constraint of thought.optimizationConstraints) {\n const constId = sanitizeId(constraint.id);\n const label = includeLabels ? constraint.name : constId;\n mermaid += ` ${constId}[\"${label}\"]\\n`;\n }\n mermaid += ' end\\n\\n';\n }\n\n if (thought.objectives && thought.objectives.length > 0) {\n for (const objective of thought.objectives) {\n const objId = sanitizeId(objective.id);\n const label = includeLabels\n ? `${objective.type}: ${objective.name}`\n : objId;\n mermaid += ` ${objId}[\"${label}\"]\\n`;\n }\n mermaid += '\\n';\n }\n\n if (thought.solution) {\n const qualityLabel = includeMetrics && thought.solution.quality\n ? ` (quality: ${thought.solution.quality.toFixed(2)})`\n : '';\n mermaid += ` Solution[\"Solution${qualityLabel}\"]\\n`;\n if (thought.objectives) {\n for (const objective of thought.objectives) {\n const objId = sanitizeId(objective.id);\n mermaid += ` ${objId} --> Solution\\n`;\n }\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const solutionColor = colorScheme === 'pastel' ? '#e8f5e9' : '#a5d6a7';\n if (thought.solution) {\n mermaid += ` style Solution fill:${solutionColor}\\n`;\n }\n }\n\n return mermaid;\n}\n\nfunction optimizationToDOT(\n thought: OptimizationThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph Optimization {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n if (thought.problem) {\n const label = includeLabels ? thought.problem.name : 'Problem';\n dot += ` Problem [label=\"Problem:\\\\n${label}\", shape=ellipse];\\n\\n`;\n }\n\n if (thought.variables && thought.variables.length > 0) {\n dot += ' subgraph cluster_variables {\\n';\n dot += ' label=\"Decision Variables\";\\n';\n for (const variable of thought.variables) {\n const varId = sanitizeId(variable.id);\n const label = includeLabels ? variable.name : varId;\n const domainLabel = includeMetrics && variable.domain\n ? `\\\\n[${(variable.domain as any).lowerBound}, ${(variable.domain as any).upperBound}]`\n : '';\n dot += ` ${varId} [label=\"${label}${domainLabel}\"];\\n`;\n }\n dot += ' }\\n\\n';\n }\n\n if (thought.optimizationConstraints && thought.optimizationConstraints.length > 0) {\n dot += ' subgraph cluster_constraints {\\n';\n dot += ' label=\"Constraints\";\\n';\n for (const constraint of thought.optimizationConstraints) {\n const constId = sanitizeId(constraint.id);\n const label = includeLabels ? constraint.name : constId;\n dot += ` ${constId} [label=\"${label}\", shape=diamond];\\n`;\n }\n dot += ' }\\n\\n';\n }\n\n if (thought.objectives) {\n for (const objective of thought.objectives) {\n const objId = sanitizeId(objective.id);\n const label = includeLabels ? `${objective.type}:\\\\n${objective.name}` : objId;\n dot += ` ${objId} [label=\"${label}\"];\\n`;\n }\n }\n\n if (thought.solution) {\n const qualityLabel = includeMetrics && thought.solution.quality\n ? `\\\\nquality: ${thought.solution.quality.toFixed(2)}`\n : '';\n dot += ` Solution [label=\"Solution${qualityLabel}\", shape=doubleoctagon, style=filled, fillcolor=lightgreen];\\n`;\n if (thought.objectives) {\n for (const objective of thought.objectives) {\n const objId = sanitizeId(objective.id);\n dot += ` ${objId} -> Solution;\\n`;\n }\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction optimizationToASCII(thought: OptimizationThought): string {\n let ascii = 'Optimization Problem:\\n';\n ascii += '====================\\n\\n';\n\n if (thought.problem) {\n ascii += `Problem: ${thought.problem.name}\\n`;\n ascii += `Type: ${thought.problem.type}\\n`;\n ascii += `${thought.problem.description}\\n\\n`;\n }\n\n if (thought.variables && thought.variables.length > 0) {\n ascii += 'Decision Variables:\\n';\n for (const variable of thought.variables) {\n const varType = (variable as any).type || 'unknown';\n ascii += ` ${variable.name} (${varType})\\n`;\n if (variable.domain) {\n ascii += ` Domain: [${(variable.domain as any).lowerBound}, ${(variable.domain as any).upperBound}]\\n`;\n }\n }\n ascii += '\\n';\n }\n\n if (thought.optimizationConstraints && thought.optimizationConstraints.length > 0) {\n ascii += 'Constraints:\\n';\n for (const constraint of thought.optimizationConstraints) {\n ascii += ` ${constraint.name} (${constraint.type})\\n`;\n ascii += ` ${constraint.formula}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.objectives && thought.objectives.length > 0) {\n ascii += 'Objectives:\\n';\n for (const objective of thought.objectives) {\n ascii += ` ${objective.type.toUpperCase()}: ${objective.name}\\n`;\n ascii += ` ${objective.formula}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.solution) {\n ascii += 'Solution:\\n';\n const solution = thought.solution as any;\n if (solution.status) {\n ascii += ` Status: ${solution.status}\\n`;\n }\n if (solution.optimalValue !== undefined) {\n ascii += ` Optimal Value: ${solution.optimalValue}\\n`;\n }\n if (solution.quality !== undefined) {\n ascii += ` Quality: ${solution.quality.toFixed(2)}\\n`;\n }\n if (solution.assignments) {\n ascii += ' Assignments:\\n';\n for (const [varId, value] of Object.entries(solution.assignments)) {\n ascii += ` ${varId} = ${value}\\n`;\n }\n }\n }\n\n return ascii;\n}\n","/**\n * Formal Logic Visual Exporter (v4.3.0)\n * Sprint 8 Task 8.1: Formal logic proof tree export to Mermaid, DOT, ASCII\n */\n\nimport type { FormalLogicThought } from '../../types/index.js';\nimport type { VisualExportOptions } from './types.js';\nimport { sanitizeId } from './utils.js';\n\n/**\n * Export formal logic proof tree to visual format\n */\nexport function exportFormalLogicProof(thought: FormalLogicThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\n\n switch (format) {\n case 'mermaid':\n return formalLogicToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return formalLogicToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return formalLogicToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction formalLogicToMermaid(\n thought: FormalLogicThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let mermaid = 'graph TD\\n';\n\n if (thought.propositions && thought.propositions.length > 0) {\n mermaid += ' subgraph Propositions[\"Propositions\"]\\n';\n for (const proposition of thought.propositions) {\n const propId = sanitizeId(proposition.id);\n const label = includeLabels\n ? `${proposition.symbol}: ${proposition.statement.substring(0, 40)}...`\n : proposition.symbol;\n const shape = proposition.type === 'atomic' ? ['[', ']'] : ['[[', ']]'];\n mermaid += ` ${propId}${shape[0]}${label}${shape[1]}\\n`;\n }\n mermaid += ' end\\n\\n';\n }\n\n if (thought.proof && thought.proof.steps && thought.proof.steps.length > 0) {\n mermaid += ' Theorem[\"Theorem\"]\\n';\n\n for (const step of thought.proof.steps) {\n const stepId = `Step${step.stepNumber}`;\n const label = includeLabels\n ? `${step.stepNumber}. ${step.statement.substring(0, 40)}...`\n : `Step ${step.stepNumber}`;\n\n mermaid += ` ${stepId}[\"${label}\"]\\n`;\n\n if (step.referencesSteps && step.referencesSteps.length > 0) {\n for (const refStep of step.referencesSteps) {\n mermaid += ` Step${refStep} --> ${stepId}\\n`;\n }\n }\n }\n\n const lastStep = thought.proof.steps[thought.proof.steps.length - 1];\n mermaid += ` Step${lastStep.stepNumber} --> Theorem\\n`;\n\n if (includeMetrics) {\n const completeness = (thought.proof.completeness * 100).toFixed(0);\n mermaid += `\\n Completeness[\"Completeness: ${completeness}%\"]\\n`;\n mermaid += ` Completeness -.-> Theorem\\n`;\n }\n }\n\n if (thought.logicalInferences && thought.logicalInferences.length > 0) {\n mermaid += '\\n';\n for (const inference of thought.logicalInferences) {\n const infId = sanitizeId(inference.id);\n const label = includeLabels ? inference.rule : infId;\n\n mermaid += ` ${infId}{{\"${label}\"}}\\n`;\n\n if (inference.premises) {\n for (const premiseId of inference.premises) {\n const propId = sanitizeId(premiseId);\n mermaid += ` ${propId} --> ${infId}\\n`;\n }\n }\n\n const conclusionId = sanitizeId(inference.conclusion);\n mermaid += ` ${infId} --> ${conclusionId}\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const atomicColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n const compoundColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n\n if (thought.propositions) {\n for (const proposition of thought.propositions) {\n const propId = sanitizeId(proposition.id);\n const color = proposition.type === 'atomic' ? atomicColor : compoundColor;\n mermaid += ` style ${propId} fill:${color}\\n`;\n }\n }\n }\n\n return mermaid;\n}\n\nfunction formalLogicToDOT(\n thought: FormalLogicThought,\n includeLabels: boolean,\n includeMetrics: boolean\n): string {\n let dot = 'digraph FormalLogic {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n if (thought.propositions && thought.propositions.length > 0) {\n dot += ' subgraph cluster_propositions {\\n';\n dot += ' label=\"Propositions\";\\n';\n for (const proposition of thought.propositions) {\n const propId = sanitizeId(proposition.id);\n const label = includeLabels\n ? `${proposition.symbol}:\\\\n${proposition.statement.substring(0, 40)}...`\n : proposition.symbol;\n const shape = proposition.type === 'atomic' ? 'ellipse' : 'box';\n dot += ` ${propId} [label=\"${label}\", shape=${shape}];\\n`;\n }\n dot += ' }\\n\\n';\n }\n\n if (thought.proof && thought.proof.steps && thought.proof.steps.length > 0) {\n dot += ` Theorem [label=\"Theorem:\\\\n${thought.proof.theorem.substring(0, 50)}...\", shape=doubleoctagon, style=bold];\\n\\n`;\n\n for (const step of thought.proof.steps) {\n const stepId = `Step${step.stepNumber}`;\n const label = includeLabels\n ? `${step.stepNumber}. ${step.statement.substring(0, 40)}...`\n : `Step ${step.stepNumber}`;\n const ruleLabel = step.rule ? `\\\\n(${step.rule})` : '';\n\n dot += ` ${stepId} [label=\"${label}${ruleLabel}\"];\\n`;\n\n if (step.referencesSteps) {\n for (const refStep of step.referencesSteps) {\n dot += ` Step${refStep} -> ${stepId};\\n`;\n }\n }\n }\n\n const lastStep = thought.proof.steps[thought.proof.steps.length - 1];\n dot += ` Step${lastStep.stepNumber} -> Theorem;\\n`;\n\n if (includeMetrics) {\n const completeness = (thought.proof.completeness * 100).toFixed(0);\n dot += `\\n Completeness [label=\"Completeness: ${completeness}%\", shape=note];\\n`;\n }\n }\n\n if (thought.logicalInferences && thought.logicalInferences.length > 0) {\n dot += '\\n';\n for (const inference of thought.logicalInferences) {\n const infId = sanitizeId(inference.id);\n const label = includeLabels ? inference.rule : infId;\n\n dot += ` ${infId} [label=\"${label}\", shape=diamond];\\n`;\n\n if (inference.premises) {\n for (const premiseId of inference.premises) {\n const propId = sanitizeId(premiseId);\n dot += ` ${propId} -> ${infId};\\n`;\n }\n }\n\n const conclusionId = sanitizeId(inference.conclusion);\n dot += ` ${infId} -> ${conclusionId};\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n}\n\nfunction formalLogicToASCII(thought: FormalLogicThought): string {\n let ascii = 'Formal Logic Proof:\\n';\n ascii += '==================\\n\\n';\n\n if (thought.propositions && thought.propositions.length > 0) {\n ascii += 'Propositions:\\n';\n for (const proposition of thought.propositions) {\n const typeMarker = proposition.type === 'atomic' ? '●' : '◆';\n ascii += ` ${typeMarker} ${proposition.symbol}: ${proposition.statement}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.logicalInferences && thought.logicalInferences.length > 0) {\n ascii += 'Inferences:\\n';\n for (const inference of thought.logicalInferences) {\n ascii += ` [${inference.rule}]\\n`;\n ascii += ` Premises: ${inference.premises.join(', ')}\\n`;\n ascii += ` Conclusion: ${inference.conclusion}\\n`;\n ascii += ` Valid: ${inference.valid ? '✓' : '✗'}\\n`;\n }\n ascii += '\\n';\n }\n\n if (thought.proof) {\n ascii += `Proof: ${thought.proof.theorem}\\n`;\n ascii += `Technique: ${thought.proof.technique}\\n`;\n ascii += `Completeness: ${(thought.proof.completeness * 100).toFixed(0)}%\\n\\n`;\n\n if (thought.proof.steps && thought.proof.steps.length > 0) {\n ascii += 'Proof Steps:\\n';\n for (const step of thought.proof.steps) {\n ascii += ` ${step.stepNumber}. ${step.statement}\\n`;\n ascii += ` Justification: ${step.justification}\\n`;\n }\n ascii += '\\n';\n }\n\n ascii += `Conclusion: ${thought.proof.conclusion}\\n`;\n ascii += `Valid: ${thought.proof.valid ? '✓' : '✗'}\\n`;\n }\n\n if (thought.truthTable) {\n ascii += '\\nTruth Table:\\n';\n ascii += ` Tautology: ${thought.truthTable.isTautology ? '✓' : '✗'}\\n`;\n ascii += ` Contradiction: ${thought.truthTable.isContradiction ? '✓' : '✗'}\\n`;\n ascii += ` Contingent: ${thought.truthTable.isContingent ? '✓' : '✗'}\\n`;\n }\n\n return ascii;\n}\n","/**\n * Visual Export Module (v4.3.0)\n * Sprint 8 Task 8.1: Modular visual exporter with lazy loading\n *\n * Exports thinking sessions to visual formats: Mermaid, DOT, ASCII\n * Split from monolithic 2546-line file into mode-specific modules\n */\n\n// Re-export types\nexport { type VisualFormat, type VisualExportOptions } from './types.js';\nexport { sanitizeId } from './utils.js';\n\n// Re-export mode-specific functions\nexport { exportCausalGraph } from './causal.js';\nexport { exportTemporalTimeline } from './temporal.js';\nexport { exportGameTree } from './game-theory.js';\nexport { exportBayesianNetwork } from './bayesian.js';\nexport { exportSequentialDependencyGraph } from './sequential.js';\nexport { exportShannonStageFlow } from './shannon.js';\nexport { exportAbductiveHypotheses } from './abductive.js';\nexport { exportCounterfactualScenarios } from './counterfactual.js';\nexport { exportAnalogicalMapping } from './analogical.js';\nexport { exportEvidentialBeliefs } from './evidential.js';\nexport { exportFirstPrinciplesDerivation } from './first-principles.js';\nexport { exportSystemsThinkingCausalLoops } from './systems-thinking.js';\nexport { exportScientificMethodExperiment } from './scientific-method.js';\nexport { exportOptimizationSolution } from './optimization.js';\nexport { exportFormalLogicProof } from './formal-logic.js';\n\n// Import types for unified class\nimport type {\n CausalThought,\n TemporalThought,\n GameTheoryThought,\n BayesianThought,\n SequentialThought,\n ShannonThought,\n AbductiveThought,\n CounterfactualThought,\n AnalogicalThought,\n EvidentialThought,\n FirstPrinciplesThought,\n SystemsThinkingThought,\n ScientificMethodThought,\n OptimizationThought,\n FormalLogicThought\n} from '../../types/index.js';\n\nimport type { VisualExportOptions } from './types.js';\n\n// Import exporters\nimport { exportCausalGraph } from './causal.js';\nimport { exportTemporalTimeline } from './temporal.js';\nimport { exportGameTree } from './game-theory.js';\nimport { exportBayesianNetwork } from './bayesian.js';\nimport { exportSequentialDependencyGraph } from './sequential.js';\nimport { exportShannonStageFlow } from './shannon.js';\nimport { exportAbductiveHypotheses } from './abductive.js';\nimport { exportCounterfactualScenarios } from './counterfactual.js';\nimport { exportAnalogicalMapping } from './analogical.js';\nimport { exportEvidentialBeliefs } from './evidential.js';\nimport { exportFirstPrinciplesDerivation } from './first-principles.js';\nimport { exportSystemsThinkingCausalLoops } from './systems-thinking.js';\nimport { exportScientificMethodExperiment } from './scientific-method.js';\nimport { exportOptimizationSolution } from './optimization.js';\nimport { exportFormalLogicProof } from './formal-logic.js';\n\n/**\n * Unified Visual Exporter for backward compatibility\n * Delegates to mode-specific exporters\n */\nexport class VisualExporter {\n exportCausalGraph(thought: CausalThought, options: VisualExportOptions): string {\n return exportCausalGraph(thought, options);\n }\n\n exportTemporalTimeline(thought: TemporalThought, options: VisualExportOptions): string {\n return exportTemporalTimeline(thought, options);\n }\n\n exportGameTree(thought: GameTheoryThought, options: VisualExportOptions): string {\n return exportGameTree(thought, options);\n }\n\n exportBayesianNetwork(thought: BayesianThought, options: VisualExportOptions): string {\n return exportBayesianNetwork(thought, options);\n }\n\n exportSequentialDependencyGraph(thought: SequentialThought, options: VisualExportOptions): string {\n return exportSequentialDependencyGraph(thought, options);\n }\n\n exportShannonStageFlow(thought: ShannonThought, options: VisualExportOptions): string {\n return exportShannonStageFlow(thought, options);\n }\n\n exportAbductiveHypotheses(thought: AbductiveThought, options: VisualExportOptions): string {\n return exportAbductiveHypotheses(thought, options);\n }\n\n exportCounterfactualScenarios(thought: CounterfactualThought, options: VisualExportOptions): string {\n return exportCounterfactualScenarios(thought, options);\n }\n\n exportAnalogicalMapping(thought: AnalogicalThought, options: VisualExportOptions): string {\n return exportAnalogicalMapping(thought, options);\n }\n\n exportEvidentialBeliefs(thought: EvidentialThought, options: VisualExportOptions): string {\n return exportEvidentialBeliefs(thought, options);\n }\n\n exportFirstPrinciplesDerivation(thought: FirstPrinciplesThought, options: VisualExportOptions): string {\n return exportFirstPrinciplesDerivation(thought, options);\n }\n\n exportSystemsThinkingCausalLoops(thought: SystemsThinkingThought, options: VisualExportOptions): string {\n return exportSystemsThinkingCausalLoops(thought, options);\n }\n\n exportScientificMethodExperiment(thought: ScientificMethodThought, options: VisualExportOptions): string {\n return exportScientificMethodExperiment(thought, options);\n }\n\n exportOptimizationSolution(thought: OptimizationThought, options: VisualExportOptions): string {\n return exportOptimizationSolution(thought, options);\n }\n\n exportFormalLogicProof(thought: FormalLogicThought, options: VisualExportOptions): string {\n return exportFormalLogicProof(thought, options);\n }\n}\n","/**\n * Export Service (v3.4.5)\n * Sprint 3 Task 3.3: Extract export logic from index.ts\n * Sprint 3 Task 3.2: Added dependency injection support\n *\n * Centralizes session export logic for multiple formats.\n * Handles conversion between internal session format and export formats.\n *\n * RESPONSIBILITY:\n * - Export sessions to various formats (JSON, Markdown, LaTeX, HTML, Jupyter)\n * - Handle visual exports (Mermaid, DOT, ASCII)\n * - Apply proper escaping and formatting for each format\n *\n * EXTRACTED FROM: src/index.ts (handleExport, exportTo* functions)\n */\n\nimport {\n ThinkingSession,\n ThinkingMode,\n CausalThought,\n TemporalThought,\n GameTheoryThought,\n BayesianThought,\n FirstPrinciplesThought,\n} from '../types/index.js';\nimport { VisualExporter, type VisualFormat } from '../export/visual/index.js';\nimport { escapeHtml, escapeLatex } from '../utils/sanitization.js';\nimport { ILogger } from '../interfaces/ILogger.js';\nimport { createLogger, LogLevel } from '../utils/logger.js';\n\n/**\n * Export Service - Handles session exports to multiple formats\n *\n * Provides a unified interface for exporting thinking sessions to\n * various formats including text (JSON, Markdown), document (LaTeX, HTML),\n * notebook (Jupyter), and visual (Mermaid, DOT, ASCII).\n *\n * @example\n * ```typescript\n * const exportService = new ExportService();\n * const markdown = exportService.exportSession(session, 'markdown');\n * const jupyter = exportService.exportSession(session, 'jupyter');\n * ```\n */\nexport class ExportService {\n private visualExporter: VisualExporter;\n private logger: ILogger;\n\n constructor(logger?: ILogger) {\n this.visualExporter = new VisualExporter();\n this.logger = logger || createLogger({ minLevel: LogLevel.INFO, enableConsole: true });\n }\n\n /**\n * Export a session to the specified format\n *\n * Main export method that routes to format-specific exporters.\n * Handles both standard formats (JSON, Markdown, etc.) and visual\n * formats (Mermaid, DOT, ASCII).\n *\n * @param session - The session to export\n * @param format - The desired export format\n * @returns Formatted string in the requested format\n * @throws {Error} If session has no thoughts for visual exports\n *\n * @example\n * ```typescript\n * const service = new ExportService();\n * const exported = service.exportSession(session, 'markdown');\n * ```\n */\n exportSession(\n session: ThinkingSession,\n format: 'json' | 'markdown' | 'latex' | 'html' | 'jupyter' | 'mermaid' | 'dot' | 'ascii'\n ): string {\n const startTime = Date.now();\n this.logger.debug('Export started', { sessionId: session.id, format, thoughtCount: session.thoughts.length });\n\n // Handle visual formats\n if (format === 'mermaid' || format === 'dot' || format === 'ascii') {\n const result = this.exportVisual(session, format);\n this.logger.debug('Export completed', {\n sessionId: session.id,\n format,\n duration: Date.now() - startTime,\n outputSize: result.length,\n });\n return result;\n }\n\n // Handle standard formats\n let result: string;\n switch (format) {\n case 'json':\n result = this.exportToJSON(session);\n break;\n case 'markdown':\n result = this.exportToMarkdown(session);\n break;\n case 'latex':\n result = this.exportToLatex(session);\n break;\n case 'html':\n result = this.exportToHTML(session);\n break;\n case 'jupyter':\n result = this.exportToJupyter(session);\n break;\n default:\n // Fallback to JSON for unknown formats\n result = this.exportToJSON(session);\n }\n\n this.logger.debug('Export completed', {\n sessionId: session.id,\n format,\n duration: Date.now() - startTime,\n outputSize: result.length,\n });\n\n return result;\n }\n\n /**\n * Export session to visual format (Mermaid, DOT, ASCII)\n *\n * Uses VisualExporter to generate visual representations\n * based on the session's thinking mode and thought structure.\n *\n * @param session - The session to export\n * @param format - Visual format (mermaid, dot, ascii)\n * @returns Visual representation as string\n * @throws {Error} If session has no thoughts\n */\n private exportVisual(session: ThinkingSession, format: VisualFormat): string {\n const lastThought = session.thoughts[session.thoughts.length - 1];\n\n if (!lastThought) {\n throw new Error('No thoughts in session to export');\n }\n\n // Determine which visual export method to use based on mode\n if (lastThought.mode === 'causal' && 'causalGraph' in lastThought) {\n return this.visualExporter.exportCausalGraph(lastThought as CausalThought, {\n format,\n colorScheme: 'default',\n includeLabels: true,\n includeMetrics: true,\n });\n }\n\n if (lastThought.mode === 'temporal' && 'timeline' in lastThought) {\n return this.visualExporter.exportTemporalTimeline(lastThought as TemporalThought, {\n format,\n includeLabels: true,\n });\n }\n\n if (lastThought.mode === 'gametheory' && 'game' in lastThought) {\n return this.visualExporter.exportGameTree(lastThought as GameTheoryThought, {\n format,\n colorScheme: 'default',\n includeLabels: true,\n includeMetrics: true,\n });\n }\n\n if (lastThought.mode === 'bayesian' && 'hypothesis' in lastThought) {\n return this.visualExporter.exportBayesianNetwork(lastThought as BayesianThought, {\n format,\n colorScheme: 'default',\n includeLabels: true,\n includeMetrics: true,\n });\n }\n\n if (lastThought.mode === ThinkingMode.FIRSTPRINCIPLES && 'question' in lastThought) {\n return this.visualExporter.exportFirstPrinciplesDerivation(lastThought as FirstPrinciplesThought, {\n format,\n colorScheme: 'default',\n });\n }\n\n // Generic thought sequence export for modes without specific visual exporters\n const thoughts = session.thoughts.map((t, i) =>\n `Thought ${i + 1} (${t.mode}):\\n${t.content}\\n`\n ).join('\\n');\n\n return `Session: ${session.title || 'Untitled'}\\nMode: ${lastThought.mode}\\n\\n${thoughts}`;\n }\n\n /**\n * Export session to JSON format\n *\n * Converts the session to JSON, handling Map serialization.\n *\n * @param session - The session to export\n * @returns JSON string with pretty printing\n */\n private exportToJSON(session: ThinkingSession): string {\n // Convert Map to Object for JSON serialization\n const sessionWithCustomMetrics = {\n ...session,\n metrics: {\n ...session.metrics,\n customMetrics: Object.fromEntries(session.metrics.customMetrics),\n },\n };\n\n return JSON.stringify(sessionWithCustomMetrics, null, 2);\n }\n\n /**\n * Export session to Markdown format\n *\n * Creates a human-readable Markdown document with session details\n * and all thoughts formatted as sections.\n *\n * @param session - The session to export\n * @returns Markdown-formatted string\n */\n private exportToMarkdown(session: ThinkingSession): string {\n const status = session.isComplete ? 'Complete' : 'In Progress';\n let md = `# Thinking Session: ${session.title}\\n\\n`;\n md += `**Mode**: ${session.mode}\\n`;\n md += `**Created**: ${session.createdAt.toISOString()}\\n`;\n md += `**Status**: ${status}\\n\\n`;\n md += `## Thoughts\\n\\n`;\n\n for (const thought of session.thoughts) {\n md += `### Thought ${thought.thoughtNumber}/${session.thoughts.length}\\n\\n`;\n md += `${thought.content}\\n\\n`;\n }\n\n return md;\n }\n\n /**\n * Export session to LaTeX format\n *\n * Generates a LaTeX document with proper escaping for special characters.\n * Ready for compilation with pdflatex.\n *\n * @param session - The session to export\n * @returns LaTeX document as string\n */\n private exportToLatex(session: ThinkingSession): string {\n const status = session.isComplete ? 'Complete' : 'In Progress';\n const safeTitle = escapeLatex(session.title);\n const safeMode = escapeLatex(session.mode);\n const safeStatus = escapeLatex(status);\n\n let latex = `\\\\documentclass{article}\\n`;\n latex += `\\\\usepackage[utf8]{inputenc}\\n`;\n latex += `\\\\title{${safeTitle}}\\n`;\n latex += `\\\\begin{document}\\n`;\n latex += `\\\\maketitle\\n\\n`;\n latex += `\\\\section{Session Details}\\n`;\n latex += `Mode: ${safeMode}\\\\\\\\\\n`;\n latex += `Status: ${safeStatus}\\\\\\\\\\n\\n`;\n latex += `\\\\section{Thoughts}\\n`;\n\n for (const thought of session.thoughts) {\n latex += `\\\\subsection{Thought ${thought.thoughtNumber}}\\n`;\n latex += `${escapeLatex(thought.content)}\\n\\n`;\n }\n\n latex += `\\\\end{document}\\n`;\n return latex;\n }\n\n /**\n * Export session to HTML format\n *\n * Generates a standalone HTML page with XSS protection via escaping.\n * Includes basic styling for readability.\n *\n * @param session - The session to export\n * @returns HTML document as string\n */\n private exportToHTML(session: ThinkingSession): string {\n const status = session.isComplete ? 'Complete' : 'In Progress';\n const safeTitle = escapeHtml(session.title);\n const safeMode = escapeHtml(session.mode);\n const safeStatus = escapeHtml(status);\n\n let html = `<!DOCTYPE html>\\n<html>\\n<head>\\n`;\n html += ` <meta charset=\"UTF-8\">\\n`;\n html += ` <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\\n`;\n html += ` <title>${safeTitle}</title>\\n`;\n html += ` <style>body { font-family: Arial, sans-serif; max-width: 800px; margin: 50px auto; padding: 0 20px; }</style>\\n`;\n html += `</head>\\n<body>\\n`;\n html += ` <h1>${safeTitle}</h1>\\n`;\n html += ` <p><strong>Mode:</strong> ${safeMode}</p>\\n`;\n html += ` <p><strong>Status:</strong> ${safeStatus}</p>\\n`;\n html += ` <h2>Thoughts</h2>\\n`;\n\n for (const thought of session.thoughts) {\n html += ` <div>\\n`;\n html += ` <h3>Thought ${thought.thoughtNumber}/${session.thoughts.length}</h3>\\n`;\n html += ` <p>${escapeHtml(thought.content)}</p>\\n`;\n html += ` </div>\\n`;\n }\n\n html += `</body>\\n</html>\\n`;\n return html;\n }\n\n /**\n * Export session to Jupyter Notebook format\n *\n * Creates a .ipynb file structure with Markdown cells for each thought.\n * Compatible with Jupyter Notebook and JupyterLab.\n *\n * @param session - The session to export\n * @returns JSON string representing Jupyter notebook\n */\n private exportToJupyter(session: ThinkingSession): string {\n const status = session.isComplete ? 'Complete' : 'In Progress';\n\n interface JupyterCell {\n cell_type: 'markdown' | 'code';\n metadata: Record<string, unknown>;\n source: string[];\n }\n\n interface JupyterNotebook {\n cells: JupyterCell[];\n metadata: Record<string, unknown>;\n nbformat: number;\n nbformat_minor: number;\n }\n\n const notebook: JupyterNotebook = {\n cells: [],\n metadata: {},\n nbformat: 4,\n nbformat_minor: 2,\n };\n\n // Add title cell\n notebook.cells.push({\n cell_type: 'markdown',\n metadata: {},\n source: [\n `# Thinking Session: ${session.title}\\n`,\n `\\n`,\n `**Mode**: ${session.mode}\\n`,\n `**Status**: ${status}\\n`,\n ],\n });\n\n // Add thought cells\n for (const thought of session.thoughts) {\n notebook.cells.push({\n cell_type: 'markdown',\n metadata: {},\n source: [\n `## Thought ${thought.thoughtNumber}/${session.thoughts.length}\\n`,\n `\\n`,\n `${thought.content}\\n`,\n ],\n });\n }\n\n return JSON.stringify(notebook, null, 2);\n }\n}\n","/**\n * Mode Router Service (v3.4.5)\n * Sprint 3 Task 3.3: Extract mode management logic from index.ts\n * Sprint 3 Task 3.2: Added dependency injection support\n *\n * Handles thinking mode operations including mode switching and recommendations.\n * Provides intelligent mode selection based on problem characteristics.\n *\n * RESPONSIBILITY:\n * - Switch sessions between thinking modes\n * - Recommend optimal modes for problem types\n * - Format mode recommendation responses\n *\n * EXTRACTED FROM: src/index.ts (handleSwitchMode, handleRecommendMode)\n */\n\nimport { ThinkingMode, ModeRecommender, ProblemCharacteristics } from '../types/index.js';\nimport { SessionManager } from '../session/index.js';\nimport { ILogger } from '../interfaces/ILogger.js';\nimport { createLogger, LogLevel } from '../utils/logger.js';\n\n/**\n * Mode recommendation result for formatting\n */\nexport interface ModeRecommendation {\n mode: string;\n score: number;\n reasoning: string;\n strengths: string[];\n limitations: string[];\n examples: string[];\n}\n\n/**\n * Mode combination recommendation\n */\nexport interface ModeCombinationRecommendation {\n modes: string[];\n sequence: string;\n rationale: string;\n benefits: string[];\n synergies: string[];\n}\n\n/**\n * Mode Router - Manages thinking mode operations\n *\n * Centralizes mode-related functionality including switching between\n * modes within a session and providing intelligent recommendations\n * based on problem characteristics.\n *\n * @example\n * ```typescript\n * const router = new ModeRouter(sessionManager);\n *\n * // Switch mode\n * await router.switchMode('session-123', ThinkingMode.MATHEMATICS, 'Better for this problem');\n *\n * // Get recommendations\n * const recommendations = router.recommendModes({ requiresProof: true, hasQuantities: true });\n * ```\n */\nexport class ModeRouter {\n private sessionManager: SessionManager;\n private recommender: ModeRecommender;\n private logger: ILogger;\n\n /**\n * Create a new ModeRouter\n *\n * @param sessionManager - Session manager instance for mode switching\n * @param logger - Optional logger for dependency injection\n *\n * @example\n * ```typescript\n * const router = new ModeRouter(sessionManager);\n * // Or with DI:\n * const router = new ModeRouter(sessionManager, customLogger);\n * ```\n */\n constructor(sessionManager: SessionManager, logger?: ILogger) {\n this.sessionManager = sessionManager;\n this.recommender = new ModeRecommender();\n this.logger = logger || createLogger({ minLevel: LogLevel.INFO, enableConsole: true });\n }\n\n /**\n * Switch a session to a new thinking mode\n *\n * Changes the thinking mode of an active session while preserving\n * existing thoughts. Useful when the problem characteristics change\n * or initial mode selection was suboptimal.\n *\n * @param sessionId - ID of the session to switch\n * @param newMode - The new thinking mode to use\n * @param reason - Reason for the mode switch (for logging)\n * @returns The updated session\n * @throws {Error} If session not found\n *\n * @example\n * ```typescript\n * const session = await router.switchMode(\n * 'session-123',\n * ThinkingMode.MATHEMATICS,\n * 'Problem requires mathematical proof'\n * );\n * ```\n */\n async switchMode(\n sessionId: string,\n newMode: ThinkingMode,\n reason: string\n ) {\n this.logger.info('Switching mode', {\n sessionId,\n newMode,\n reason,\n });\n const session = await this.sessionManager.switchMode(sessionId, newMode, reason);\n this.logger.debug('Mode switch completed', {\n sessionId,\n newMode,\n thoughtCount: session.thoughts.length,\n });\n return session;\n }\n\n /**\n * Get quick mode recommendation based on problem type\n *\n * Provides a fast, single-mode recommendation based on a simple\n * problem type string. Useful for quick suggestions without detailed\n * problem analysis.\n *\n * @param problemType - Simple problem type description\n * @returns Recommended thinking mode\n *\n * @example\n * ```typescript\n * const mode = router.quickRecommend('mathematical proof');\n * // Returns: ThinkingMode.MATHEMATICS\n * ```\n */\n quickRecommend(problemType: string): ThinkingMode {\n this.logger.debug('Quick recommend requested', { problemType });\n const mode = this.recommender.quickRecommend(problemType);\n this.logger.debug('Quick recommend result', { problemType, recommendedMode: mode });\n return mode;\n }\n\n /**\n * Get comprehensive mode recommendations\n *\n * Analyzes problem characteristics and returns ranked recommendations\n * for individual modes and optionally mode combinations.\n *\n * @param characteristics - Detailed problem characteristics\n * @param includeCombinations - Whether to include mode combinations\n * @returns Formatted recommendation response\n *\n * @example\n * ```typescript\n * const response = router.getRecommendations({\n * requiresProof: true,\n * hasQuantities: true,\n * hasUncertainty: false\n * }, true);\n * ```\n */\n getRecommendations(\n characteristics: ProblemCharacteristics,\n includeCombinations: boolean = false\n ): string {\n this.logger.debug('Getting mode recommendations', {\n characteristics,\n includeCombinations,\n });\n\n const modeRecs = this.recommender.recommendModes(characteristics);\n const combinationRecs = includeCombinations\n ? this.recommender.recommendCombinations(characteristics)\n : [];\n\n this.logger.debug('Recommendations generated', {\n modeCount: modeRecs.length,\n combinationCount: combinationRecs.length,\n topMode: modeRecs[0]?.mode,\n topScore: modeRecs[0]?.score,\n });\n\n let response = '# Mode Recommendations\\n\\n';\n\n // Single mode recommendations\n response += '## Individual Modes\\n\\n';\n for (const rec of modeRecs) {\n response += `### ${rec.mode} (Score: ${rec.score})\\n`;\n response += `**Reasoning**: ${rec.reasoning}\\n\\n`;\n response += `**Strengths**:\\n`;\n for (const strength of rec.strengths) {\n response += `- ${strength}\\n`;\n }\n response += `\\n**Limitations**:\\n`;\n for (const limitation of rec.limitations) {\n response += `- ${limitation}\\n`;\n }\n response += `\\n**Examples**: ${rec.examples.join(', ')}\\n\\n`;\n response += '---\\n\\n';\n }\n\n // Mode combinations\n if (combinationRecs.length > 0) {\n response += '## Recommended Mode Combinations\\n\\n';\n for (const combo of combinationRecs) {\n response += `### ${combo.modes.join(' + ')} (${combo.sequence})\\n`;\n response += `**Rationale**: ${combo.rationale}\\n\\n`;\n response += `**Benefits**:\\n`;\n for (const benefit of combo.benefits) {\n response += `- ${benefit}\\n`;\n }\n response += `\\n**Synergies**:\\n`;\n for (const synergy of combo.synergies) {\n response += `- ${synergy}\\n`;\n }\n response += '\\n---\\n\\n';\n }\n }\n\n return response;\n }\n\n /**\n * Format a quick recommendation response\n *\n * Creates a formatted response for quick recommendations.\n *\n * @param problemType - The problem type that was analyzed\n * @param recommendedMode - The recommended mode\n * @returns Formatted response string\n */\n formatQuickRecommendation(problemType: string, recommendedMode: ThinkingMode): string {\n return `Quick recommendation for \"${problemType}\":\\n\\n**Recommended Mode**: ${recommendedMode}\\n\\nFor more detailed recommendations, provide problemCharacteristics.`;\n }\n}\n","/**\n * Services module exports (v3.4.5)\n * Sprint 3 Task 3.3: Service layer for business logic\n *\n * Exports all service classes extracted from the main index.ts file.\n * Services encapsulate business logic and provide clean, testable interfaces.\n */\n\nexport { ThoughtFactory } from './ThoughtFactory.js';\nexport { ExportService } from './ExportService.js';\nexport { ModeRouter } from './ModeRouter.js';\n","#!/usr/bin/env node\n\n/**\n * DeepThinking MCP Server (v4.1.0)\n * Sprint 5: 9 focused tools replacing monolithic deepthinking tool\n * Sprint 9: Lazy service initialization for reduced startup time\n *\n * Tools:\n * - deepthinking_core: sequential, shannon, hybrid modes\n * - deepthinking_math: mathematics, physics modes\n * - deepthinking_temporal: temporal reasoning\n * - deepthinking_probabilistic: bayesian, evidential modes\n * - deepthinking_causal: causal, counterfactual, abductive modes\n * - deepthinking_strategic: gametheory, optimization modes\n * - deepthinking_analytical: analogical, firstprinciples modes\n * - deepthinking_scientific: scientificmethod, systemsthinking, formallogic modes\n * - deepthinking_session: summarize, export, get_session, switch_mode, recommend_mode\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\n\n// Import package.json for version sync\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst packageJson = JSON.parse(\n readFileSync(join(__dirname, '../package.json'), 'utf-8')\n);\n\n// Import new tool definitions and schemas\nimport { toolList, toolSchemas, isValidTool, modeToToolMap } from './tools/definitions.js';\nimport { thinkingTool } from './tools/thinking.js'; // Legacy tool for backward compatibility\nimport type { SessionManager } from './session/index.js';\nimport { ThinkingMode } from './types/index.js';\nimport type { ThoughtFactory, ExportService, ModeRouter } from './services/index.js';\n\n// Initialize server\nconst server = new Server(\n {\n name: packageJson.name,\n version: packageJson.version,\n },\n {\n capabilities: {\n tools: {},\n },\n }\n);\n\n/**\n * Lazy Service Initialization (Sprint 9.1)\n * Services are loaded on first use to reduce startup time\n */\nlet _sessionManager: SessionManager | null = null;\nlet _thoughtFactory: ThoughtFactory | null = null;\nlet _exportService: ExportService | null = null;\nlet _modeRouter: ModeRouter | null = null;\n\nasync function getSessionManager(): Promise<SessionManager> {\n if (!_sessionManager) {\n const { SessionManager } = await import('./session/index.js');\n _sessionManager = new SessionManager();\n }\n return _sessionManager;\n}\n\nasync function getThoughtFactory(): Promise<ThoughtFactory> {\n if (!_thoughtFactory) {\n const { ThoughtFactory } = await import('./services/index.js');\n _thoughtFactory = new ThoughtFactory();\n }\n return _thoughtFactory;\n}\n\nasync function getExportService(): Promise<ExportService> {\n if (!_exportService) {\n const { ExportService } = await import('./services/index.js');\n _exportService = new ExportService();\n }\n return _exportService;\n}\n\nasync function getModeRouter(): Promise<ModeRouter> {\n if (!_modeRouter) {\n const { ModeRouter } = await import('./services/index.js');\n const sessionManager = await getSessionManager();\n _modeRouter = new ModeRouter(sessionManager);\n }\n return _modeRouter;\n}\n\n// Register tool list handler - now returns all 9 focused tools + legacy\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: [\n ...toolList, // 9 new focused tools\n thinkingTool, // Legacy tool for backward compatibility\n ],\n };\n});\n\n// Register tool call handler\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n\n try {\n // Handle new focused tools\n if (isValidTool(name)) {\n const schema = toolSchemas[name as keyof typeof toolSchemas];\n const input = schema.parse(args);\n\n // Session action tool\n if (name === 'deepthinking_session') {\n return await handleSessionAction(input);\n }\n\n // All other tools are for adding thoughts\n return await handleAddThought(input, name);\n }\n\n // Handle legacy tool (backward compatibility)\n if (name === 'deepthinking') {\n const { ThinkingToolSchema } = await import('./tools/thinking.js');\n const input = ThinkingToolSchema.parse(args);\n\n // Add deprecation warning\n const deprecationWarning = '⚠️ DEPRECATED: The \"deepthinking\" tool is deprecated. ' +\n 'Use the focused tools instead: deepthinking_core, deepthinking_math, ' +\n 'deepthinking_temporal, deepthinking_probabilistic, deepthinking_causal, ' +\n 'deepthinking_strategic, deepthinking_analytical, deepthinking_scientific, ' +\n 'deepthinking_session. See docs/migration/v4.0-tool-splitting.md for details.\\n\\n';\n\n switch (input.action) {\n case 'add_thought': {\n const result = await handleAddThought(input, modeToToolMap[input.mode || 'hybrid'] || 'deepthinking_core');\n return prependWarning(result, deprecationWarning);\n }\n case 'summarize':\n case 'export':\n case 'switch_mode':\n case 'get_session':\n case 'recommend_mode': {\n const result = await handleSessionAction(input);\n return prependWarning(result, deprecationWarning);\n }\n default:\n throw new Error(`Unknown action: ${input.action}`);\n }\n }\n\n throw new Error(`Unknown tool: ${name}`);\n } catch (error) {\n return {\n content: [\n {\n type: 'text',\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n isError: true,\n };\n }\n});\n\n/**\n * Prepend a warning message to a tool result\n */\nfunction prependWarning(result: any, warning: string) {\n if (result.content && result.content[0] && result.content[0].type === 'text') {\n result.content[0].text = warning + result.content[0].text;\n }\n return result;\n}\n\n/**\n * Handle add_thought action for any thinking mode\n */\nasync function handleAddThought(input: any, _toolName: string) {\n const sessionManager = await getSessionManager();\n const thoughtFactory = await getThoughtFactory();\n\n let sessionId = input.sessionId;\n\n // Determine mode from tool name or input\n let mode: ThinkingMode = input.mode || ThinkingMode.HYBRID;\n\n // Create session if none provided\n if (!sessionId) {\n const session = await sessionManager.createSession({\n mode: mode,\n title: `Thinking Session ${new Date().toISOString()}`,\n });\n sessionId = session.id;\n }\n\n // Use ThoughtFactory to create thought\n const thought = thoughtFactory.createThought({ ...input, mode }, sessionId);\n const session = await sessionManager.addThought(sessionId, thought);\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n sessionId: session.id,\n thoughtId: thought.id,\n thoughtNumber: thought.thoughtNumber,\n mode: thought.mode,\n nextThoughtNeeded: thought.nextThoughtNeeded,\n sessionComplete: session.isComplete,\n totalThoughts: session.thoughts.length,\n }, null, 2),\n },\n ],\n };\n}\n\n/**\n * Handle session actions (summarize, export, switch_mode, get_session, recommend_mode)\n */\nasync function handleSessionAction(input: any) {\n const action = input.action;\n\n switch (action) {\n case 'summarize':\n return await handleSummarize(input);\n case 'export':\n return await handleExport(input);\n case 'switch_mode':\n return await handleSwitchMode(input);\n case 'get_session':\n return await handleGetSession(input);\n case 'recommend_mode':\n return await handleRecommendMode(input);\n default:\n throw new Error(`Unknown session action: ${action}`);\n }\n}\n\n/**\n * Handle summarize action\n */\nasync function handleSummarize(input: any) {\n if (!input.sessionId) {\n throw new Error('sessionId required for summarize action');\n }\n\n const sessionManager = await getSessionManager();\n const summary = await sessionManager.generateSummary(input.sessionId);\n\n return {\n content: [\n {\n type: 'text',\n text: summary,\n },\n ],\n };\n}\n\n/**\n * Handle export action\n */\nasync function handleExport(input: any) {\n if (!input.sessionId) {\n throw new Error('sessionId required for export action');\n }\n\n const sessionManager = await getSessionManager();\n const exportService = await getExportService();\n\n const session = await sessionManager.getSession(input.sessionId);\n if (!session) {\n throw new Error(`Session ${input.sessionId} not found`);\n }\n\n const format = input.exportFormat || 'json';\n const exported = exportService.exportSession(session, format as any);\n\n return {\n content: [{\n type: 'text' as const,\n text: exported,\n }],\n };\n}\n\n/**\n * Handle switch_mode action\n */\nasync function handleSwitchMode(input: any) {\n if (!input.sessionId || !input.newMode) {\n throw new Error('sessionId and newMode required for switch_mode action');\n }\n\n const modeRouter = await getModeRouter();\n const session = await modeRouter.switchMode(\n input.sessionId,\n input.newMode as ThinkingMode,\n 'User requested mode switch'\n );\n\n return {\n content: [\n {\n type: 'text',\n text: `Switched session ${session.id} to ${session.mode} mode`,\n },\n ],\n };\n}\n\n/**\n * Handle get_session action\n */\nasync function handleGetSession(input: any) {\n if (!input.sessionId) {\n throw new Error('sessionId required for get_session action');\n }\n\n const sessionManager = await getSessionManager();\n const session = await sessionManager.getSession(input.sessionId);\n if (!session) {\n throw new Error(`Session ${input.sessionId} not found`);\n }\n\n // Convert Map to object for JSON serialization\n const metricsWithCustom = {\n ...session.metrics,\n customMetrics: Object.fromEntries(session.metrics.customMetrics),\n };\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n id: session.id,\n title: session.title,\n mode: session.mode,\n thoughtCount: session.thoughts.length,\n isComplete: session.isComplete,\n metrics: metricsWithCustom,\n }, null, 2),\n },\n ],\n };\n}\n\n/**\n * Handle recommend_mode action\n */\nasync function handleRecommendMode(input: any) {\n const modeRouter = await getModeRouter();\n\n // Quick recommendation based on problem type\n if (input.problemType && !input.problemCharacteristics) {\n const recommendedMode = modeRouter.quickRecommend(input.problemType);\n const response = modeRouter.formatQuickRecommendation(input.problemType, recommendedMode);\n\n return {\n content: [{\n type: 'text' as const,\n text: response\n }],\n isError: false,\n };\n }\n\n // Comprehensive recommendations based on problem characteristics\n if (input.problemCharacteristics) {\n const response = modeRouter.getRecommendations(\n input.problemCharacteristics,\n input.includeCombinations || false\n );\n\n return {\n content: [{\n type: 'text' as const,\n text: response\n }],\n isError: false,\n };\n }\n\n // No valid input provided\n return {\n content: [{\n type: 'text' as const,\n text: 'Error: Please provide either problemType or problemCharacteristics for mode recommendations.'\n }],\n isError: true,\n };\n}\n\n/**\n * Main server startup\n */\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('DeepThinking MCP server running on stdio');\n}\n\nmain().catch((error) => {\n console.error('Fatal error:', error);\n process.exit(1);\n});\n","/**\n * Focused Tool Definitions (v4.4.0)\n * Sprint 5 Task 5.4: Split monolithic tool into 9 focused tools\n *\n * REFACTORED: Now using hand-written JSON schemas like working MCP servers\n * - Follows pattern from sequential-thinking-mcp and memory-mcp\n * - Zod schemas kept for runtime validation only\n */\n\nimport { jsonSchemas } from './json-schemas.js';\nimport { SessionActionSchema } from './schemas/base.js';\nimport { CoreModeSchema, StandardSchema } from './schemas/modes/core.js';\nimport { MathSchema } from './schemas/modes/mathematics.js';\nimport { TemporalSchema } from './schemas/modes/temporal.js';\nimport { ProbabilisticSchema } from './schemas/modes/probabilistic.js';\nimport { CausalSchema } from './schemas/modes/causal.js';\nimport { StrategicSchema } from './schemas/modes/strategic.js';\nimport { AnalyticalSchema } from './schemas/modes/analytical.js';\nimport { ScientificSchema } from './schemas/modes/scientific.js';\n\n/**\n * 10 focused tools with hand-written JSON schemas (v5.0.0)\n * Zod schemas used only for runtime validation\n * Phase 5: Added deepthinking_core for fundamental reasoning\n */\nexport const tools = {\n deepthinking_core: jsonSchemas[0],\n deepthinking_standard: jsonSchemas[1],\n deepthinking_math: jsonSchemas[2],\n deepthinking_temporal: jsonSchemas[3],\n deepthinking_probabilistic: jsonSchemas[4],\n deepthinking_causal: jsonSchemas[5],\n deepthinking_strategic: jsonSchemas[6],\n deepthinking_analytical: jsonSchemas[7],\n deepthinking_scientific: jsonSchemas[8],\n deepthinking_session: jsonSchemas[9],\n};\n\n/**\n * All tools as array for MCP ListTools\n */\nexport const toolList = jsonSchemas;\n\n/**\n * Tool name to schema mapping for validation\n */\nexport const toolSchemas = {\n deepthinking_core: CoreModeSchema,\n deepthinking_standard: StandardSchema,\n deepthinking_math: MathSchema,\n deepthinking_temporal: TemporalSchema,\n deepthinking_probabilistic: ProbabilisticSchema,\n deepthinking_causal: CausalSchema,\n deepthinking_strategic: StrategicSchema,\n deepthinking_analytical: AnalyticalSchema,\n deepthinking_scientific: ScientificSchema,\n deepthinking_session: SessionActionSchema,\n} as const;\n\n/**\n * Mode to tool name mapping for routing\n */\nexport const modeToToolMap: Record<string, string> = {\n // Core reasoning modes (fundamental)\n inductive: 'deepthinking_core',\n deductive: 'deepthinking_core',\n abductive: 'deepthinking_core',\n\n // Standard workflow modes\n sequential: 'deepthinking_standard',\n shannon: 'deepthinking_standard',\n hybrid: 'deepthinking_standard',\n\n // Math/Physics modes\n mathematics: 'deepthinking_math',\n physics: 'deepthinking_math',\n\n // Temporal mode\n temporal: 'deepthinking_temporal',\n\n // Probabilistic modes\n bayesian: 'deepthinking_probabilistic',\n evidential: 'deepthinking_probabilistic',\n\n // Causal modes (abductive moved to core)\n causal: 'deepthinking_causal',\n counterfactual: 'deepthinking_causal',\n\n // Strategic modes\n gametheory: 'deepthinking_strategic',\n optimization: 'deepthinking_strategic',\n\n // Analytical modes\n analogical: 'deepthinking_analytical',\n firstprinciples: 'deepthinking_analytical',\n\n // Scientific modes\n scientificmethod: 'deepthinking_scientific',\n systemsthinking: 'deepthinking_scientific',\n formallogic: 'deepthinking_scientific',\n};\n\n/**\n * Get the appropriate tool for a mode\n */\nexport function getToolForMode(mode: string): string {\n const tool = modeToToolMap[mode];\n if (!tool) {\n // Default to standard for unknown modes\n return 'deepthinking_standard';\n }\n return tool;\n}\n\n/**\n * Check if a tool name is valid\n */\nexport function isValidTool(toolName: string): boolean {\n return toolName in toolSchemas;\n}\n\n/**\n * Get schema for a tool\n */\nexport function getSchemaForTool(toolName: string) {\n if (!isValidTool(toolName)) {\n throw new Error(`Unknown tool: ${toolName}`);\n }\n return toolSchemas[toolName as keyof typeof toolSchemas];\n}\n","/**\n * Hand-Written JSON Schemas for MCP Tools (v4.4.0)\n *\n * Following the pattern used by working MCP servers (sequential-thinking-mcp, memory-mcp):\n * - JSON schemas are hand-written as plain JavaScript objects\n * - Conforming to JSON Schema draft 2020-12\n * - Zod schemas remain for runtime validation only\n */\n\n/**\n * Base properties shared by all thought-adding tools\n */\nconst baseThoughtProperties = {\n sessionId: {\n type: \"string\",\n description: \"Optional session ID. If not provided, a new session will be created.\"\n },\n thought: {\n type: \"string\",\n description: \"The current thought or reasoning step\",\n minLength: 1\n },\n thoughtNumber: {\n type: \"integer\",\n description: \"Current thought number in sequence\",\n minimum: 1\n },\n totalThoughts: {\n type: \"integer\",\n description: \"Estimated total number of thoughts needed\",\n minimum: 1\n },\n nextThoughtNeeded: {\n type: \"boolean\",\n description: \"Whether another thought step is needed\"\n },\n isRevision: {\n type: \"boolean\",\n description: \"Whether this thought revises previous thinking\"\n },\n revisesThought: {\n type: \"string\",\n description: \"ID of the thought being revised\"\n },\n revisionReason: {\n type: \"string\",\n description: \"Explanation for why revision is needed\"\n },\n branchFrom: {\n type: \"string\",\n description: \"ID of thought to branch from for alternative reasoning path\"\n },\n branchId: {\n type: \"string\",\n description: \"Identifier for this reasoning branch\"\n },\n uncertainty: {\n type: \"number\",\n description: \"Confidence level (0-1, where 1 is highest confidence)\",\n minimum: 0,\n maximum: 1\n },\n dependencies: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"IDs of thoughts this one depends on\"\n },\n assumptions: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Key assumptions made in this thought\"\n }\n} as const;\n\nconst baseThoughtRequired = [\"thought\", \"thoughtNumber\", \"totalThoughts\", \"nextThoughtNeeded\"] as const;\n\n/**\n * deepthinking_core - Fundamental reasoning modes\n */\nexport const deepthinking_core_schema = {\n name: \"deepthinking_core\",\n description: \"Core reasoning: inductive, deductive, abductive\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"inductive\", \"deductive\", \"abductive\"],\n description: \"Core reasoning mode\"\n },\n // Inductive properties\n observations: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Specific cases observed (inductive/abductive)\"\n },\n pattern: {\n type: \"string\",\n description: \"Identified pattern (inductive)\"\n },\n generalization: {\n type: \"string\",\n description: \"General principle formed (inductive)\"\n },\n confidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Strength of inference (inductive)\"\n },\n counterexamples: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Known exceptions (inductive)\"\n },\n sampleSize: {\n type: \"integer\",\n minimum: 1,\n description: \"Number of observations (inductive)\"\n },\n // Deductive properties\n premises: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"General principles (deductive)\"\n },\n conclusion: {\n type: \"string\",\n description: \"Specific conclusion (deductive)\"\n },\n logicForm: {\n type: \"string\",\n description: \"Logic form: modus ponens, modus tollens, etc. (deductive)\"\n },\n validityCheck: {\n type: \"boolean\",\n description: \"Is the deduction logically valid? (deductive)\"\n },\n soundnessCheck: {\n type: \"boolean\",\n description: \"Are the premises true? (deductive)\"\n },\n // Abductive properties\n hypotheses: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n explanation: { type: \"string\" },\n score: { type: \"number\" }\n },\n required: [\"id\", \"explanation\"],\n additionalProperties: false\n },\n description: \"Candidate explanations (abductive)\"\n },\n bestExplanation: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n explanation: { type: \"string\" },\n score: { type: \"number\" }\n },\n required: [\"id\", \"explanation\"],\n additionalProperties: false,\n description: \"Best explanation chosen (abductive)\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_standard - Sequential, Shannon, Hybrid modes\n */\nexport const deepthinking_standard_schema = {\n name: \"deepthinking_standard\",\n description: \"Standard workflows: sequential, shannon (5-stage), hybrid\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"sequential\", \"shannon\", \"hybrid\"],\n description: \"Thinking mode to use\"\n },\n stage: {\n type: \"string\",\n enum: [\"problem_definition\", \"constraints\", \"model\", \"proof\", \"implementation\"],\n description: \"Shannon methodology stage (only for shannon mode)\"\n },\n activeModes: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Active sub-modes for hybrid mode\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_math - Mathematics and Physics modes\n */\nexport const deepthinking_math_schema = {\n name: \"deepthinking_math\",\n description: \"Math/physics: proofs, tensors, LaTeX, conservation laws\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"mathematics\", \"physics\"],\n description: \"Mathematical reasoning mode\"\n },\n mathematicalModel: {\n type: \"object\",\n properties: {\n latex: { type: \"string\", description: \"LaTeX representation\" },\n symbolic: { type: \"string\", description: \"Symbolic notation\" },\n ascii: { type: \"string\", description: \"ASCII math representation\" }\n },\n required: [\"latex\", \"symbolic\"],\n additionalProperties: false,\n description: \"Mathematical model representation\"\n },\n proofStrategy: {\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"direct\", \"contradiction\", \"induction\", \"construction\", \"contrapositive\"],\n description: \"Type of mathematical proof\"\n },\n steps: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Proof steps\"\n }\n },\n required: [\"type\", \"steps\"],\n additionalProperties: false,\n description: \"Proof strategy being used\"\n },\n tensorProperties: {\n type: \"object\",\n properties: {\n rank: {\n type: \"array\",\n items: { type: \"integer\" },\n minItems: 2,\n maxItems: 2,\n description: \"Tensor rank as [contravariant, covariant]\"\n },\n components: { type: \"string\", description: \"Tensor components\" },\n latex: { type: \"string\", description: \"LaTeX representation\" },\n symmetries: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Symmetry properties\"\n },\n invariants: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Invariant quantities\"\n },\n transformation: {\n type: \"string\",\n enum: [\"covariant\", \"contravariant\", \"mixed\"],\n description: \"Transformation type\"\n }\n },\n required: [\"rank\", \"components\", \"latex\", \"transformation\"],\n additionalProperties: false,\n description: \"Tensor properties for physics calculations\"\n },\n physicalInterpretation: {\n type: \"object\",\n properties: {\n quantity: { type: \"string\", description: \"Physical quantity being described\" },\n units: { type: \"string\", description: \"Units of the quantity\" },\n conservationLaws: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Conservation laws applicable\"\n }\n },\n required: [\"quantity\", \"units\", \"conservationLaws\"],\n additionalProperties: false,\n description: \"Physical interpretation of the model\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_temporal - Temporal reasoning\n */\nexport const deepthinking_temporal_schema = {\n name: \"deepthinking_temporal\",\n description: \"Temporal: timelines, Allen intervals, event sequencing\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"temporal\"],\n description: \"Temporal reasoning mode\"\n },\n timeline: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"Timeline ID\" },\n name: { type: \"string\", description: \"Timeline name\" },\n timeUnit: {\n type: \"string\",\n enum: [\"milliseconds\", \"seconds\", \"minutes\", \"hours\", \"days\", \"months\", \"years\"],\n description: \"Time unit\"\n },\n events: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Event IDs in this timeline\"\n },\n startTime: { type: \"number\", description: \"Timeline start time (optional)\" },\n endTime: { type: \"number\", description: \"Timeline end time (optional)\" }\n },\n required: [\"id\", \"name\", \"timeUnit\", \"events\"],\n additionalProperties: false,\n description: \"Timeline definition\"\n },\n events: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n timestamp: { type: \"number\", description: \"Event timestamp as number\" },\n type: {\n type: \"string\",\n enum: [\"instant\", \"interval\"],\n description: \"Event type\"\n },\n duration: { type: \"number\", description: \"Event duration (optional)\" },\n properties: {\n type: \"object\",\n additionalProperties: true,\n description: \"Additional event properties\"\n }\n },\n required: [\"id\", \"name\", \"description\", \"timestamp\", \"type\"],\n additionalProperties: false\n },\n description: \"Temporal events\"\n },\n constraints: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n type: {\n type: \"string\",\n enum: [\"before\", \"after\", \"during\", \"simultaneous\"],\n description: \"Constraint type\"\n },\n subject: { type: \"string\", description: \"Subject event ID\" },\n object: { type: \"string\", description: \"Object event ID\" },\n confidence: { type: \"number\", minimum: 0, maximum: 1, description: \"Confidence in constraint\" }\n },\n required: [\"id\", \"type\", \"subject\", \"object\", \"confidence\"],\n additionalProperties: false\n },\n description: \"Temporal constraints\"\n },\n intervals: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n start: { type: \"number\", description: \"Interval start\" },\n end: { type: \"number\", description: \"Interval end\" },\n contains: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Event IDs contained in this interval\"\n },\n overlaps: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Interval IDs that overlap\"\n }\n },\n required: [\"id\", \"name\", \"start\", \"end\"],\n additionalProperties: false\n },\n description: \"Temporal intervals\"\n },\n relations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n from: { type: \"string\", description: \"Source event ID\" },\n to: { type: \"string\", description: \"Target event ID\" },\n relationType: {\n type: \"string\",\n enum: [\"before\", \"after\", \"during\", \"overlaps\", \"meets\", \"starts\", \"finishes\", \"equals\", \"causes\"],\n description: \"Relation type (Allen's interval algebra)\"\n },\n strength: { type: \"number\", minimum: 0, maximum: 1, description: \"Relation strength\" },\n delay: { type: \"number\", description: \"Temporal delay (optional)\" }\n },\n required: [\"id\", \"from\", \"to\", \"relationType\", \"strength\"],\n additionalProperties: false\n },\n description: \"Temporal relations between events\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_probabilistic - Bayesian and Evidential reasoning\n */\nexport const deepthinking_probabilistic_schema = {\n name: \"deepthinking_probabilistic\",\n description: \"Probabilistic: Bayesian updates, Dempster-Shafer belief\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"bayesian\", \"evidential\"],\n description: \"Probabilistic reasoning mode\"\n },\n priorProbability: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Prior probability before evidence\"\n },\n likelihood: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Likelihood of evidence given hypothesis\"\n },\n posteriorProbability: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Posterior probability after evidence\"\n },\n evidence: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Evidence considered\"\n },\n hypotheses: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n description: { type: \"string\" },\n probability: { type: \"number\", minimum: 0, maximum: 1 }\n },\n required: [\"id\", \"description\"],\n additionalProperties: false\n },\n description: \"Hypotheses under consideration\"\n },\n frameOfDiscernment: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Frame of discernment for Dempster-Shafer theory\"\n },\n massFunction: {\n type: \"object\",\n additionalProperties: { type: \"number\", minimum: 0, maximum: 1 },\n description: \"Mass function assignments\"\n },\n beliefFunction: {\n type: \"object\",\n additionalProperties: { type: \"number\", minimum: 0, maximum: 1 },\n description: \"Belief function values\"\n },\n plausibilityFunction: {\n type: \"object\",\n additionalProperties: { type: \"number\", minimum: 0, maximum: 1 },\n description: \"Plausibility function values\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_causal - Causal and Counterfactual reasoning\n */\nexport const deepthinking_causal_schema = {\n name: \"deepthinking_causal\",\n description: \"Causal: graphs, counterfactuals (abductive moved to core)\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"causal\", \"counterfactual\"],\n description: \"Causal reasoning mode\"\n },\n nodes: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n description: { type: \"string\" }\n },\n required: [\"id\", \"name\"],\n additionalProperties: false\n },\n description: \"Nodes in the causal graph\"\n },\n edges: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n from: { type: \"string\" },\n to: { type: \"string\" },\n strength: { type: \"number\", minimum: 0, maximum: 1 },\n type: { type: \"string\" }\n },\n required: [\"from\", \"to\"],\n additionalProperties: false\n },\n description: \"Causal edges in the graph\"\n },\n interventions: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n node: { type: \"string\" },\n value: { type: \"string\" },\n effect: { type: \"string\" }\n },\n required: [\"node\"],\n additionalProperties: false\n },\n description: \"Interventions applied to the causal graph\"\n },\n counterfactual: {\n type: \"object\",\n properties: {\n actual: { type: \"string\" },\n hypothetical: { type: \"string\" },\n consequence: { type: \"string\" }\n },\n additionalProperties: false,\n description: \"Counterfactual scenario\"\n },\n observations: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Observed phenomena for abductive reasoning\"\n },\n explanations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n hypothesis: { type: \"string\" },\n plausibility: { type: \"number\", minimum: 0, maximum: 1 }\n },\n required: [\"hypothesis\"],\n additionalProperties: false\n },\n description: \"Candidate explanations\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_strategic - Game Theory and Optimization\n */\nexport const deepthinking_strategic_schema = {\n name: \"deepthinking_strategic\",\n description: \"Strategic: game theory, Nash equilibria, optimization\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"gametheory\", \"optimization\"],\n description: \"Strategic reasoning mode\"\n },\n players: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n isRational: { type: \"boolean\", description: \"Whether player is rational\" },\n availableStrategies: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Strategy IDs available to this player\"\n },\n role: { type: \"string\", description: \"Player's role in the game\" }\n },\n required: [\"id\", \"name\", \"isRational\", \"availableStrategies\"],\n additionalProperties: false\n },\n description: \"Players in the game\"\n },\n strategies: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n playerId: { type: \"string\", description: \"ID of the player using this strategy\" },\n name: { type: \"string\", description: \"Strategy name\" },\n description: { type: \"string\", description: \"Strategy description\" },\n isPure: { type: \"boolean\", description: \"Whether this is a pure strategy\" },\n probability: { type: \"number\", minimum: 0, maximum: 1, description: \"Probability for mixed strategies\" }\n },\n required: [\"id\", \"playerId\", \"name\", \"description\", \"isPure\"],\n additionalProperties: false\n },\n description: \"Available strategies\"\n },\n payoffMatrix: {\n type: \"object\",\n properties: {\n players: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Player IDs in the matrix\"\n },\n dimensions: {\n type: \"array\",\n items: { type: \"number\" },\n description: \"Dimensions of the payoff matrix\"\n },\n payoffs: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n strategyProfile: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Strategy IDs for this profile\"\n },\n payoffs: {\n type: \"array\",\n items: { type: \"number\" },\n description: \"Payoff values for each player\"\n }\n },\n required: [\"strategyProfile\", \"payoffs\"],\n additionalProperties: false\n },\n description: \"Payoff entries\"\n }\n },\n required: [\"players\", \"dimensions\", \"payoffs\"],\n additionalProperties: false,\n description: \"Payoff matrix for the game\"\n },\n objectiveFunction: {\n type: \"string\",\n description: \"Function to optimize\"\n },\n constraints: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Optimization constraints\"\n },\n optimizationMethod: {\n type: \"string\",\n description: \"Method used for optimization\"\n },\n solution: {\n type: \"object\",\n properties: {\n value: { type: \"string\" },\n variables: {\n type: \"object\",\n additionalProperties: { type: \"number\" }\n }\n },\n additionalProperties: false,\n description: \"Optimization solution\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_analytical - Analogical and First Principles reasoning\n */\nexport const deepthinking_analytical_schema = {\n name: \"deepthinking_analytical\",\n description: \"Analytical: analogical mapping, first principles\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"analogical\", \"firstprinciples\"],\n description: \"Analytical reasoning mode\"\n },\n sourceAnalogy: {\n type: \"object\",\n properties: {\n domain: { type: \"string\" },\n elements: {\n type: \"array\",\n items: { type: \"string\" }\n },\n relations: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n additionalProperties: false,\n description: \"Source domain for analogy\"\n },\n targetAnalogy: {\n type: \"object\",\n properties: {\n domain: { type: \"string\" },\n elements: {\n type: \"array\",\n items: { type: \"string\" }\n },\n relations: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n additionalProperties: false,\n description: \"Target domain for analogy\"\n },\n mappings: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n source: { type: \"string\" },\n target: { type: \"string\" },\n confidence: { type: \"number\", minimum: 0, maximum: 1 }\n },\n required: [\"source\", \"target\"],\n additionalProperties: false\n },\n description: \"Mappings between domains\"\n },\n fundamentals: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Fundamental truths or axioms\"\n },\n derivedInsights: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Insights derived from first principles\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_scientific - Scientific Method, Systems Thinking, Formal Logic\n */\nexport const deepthinking_scientific_schema = {\n name: \"deepthinking_scientific\",\n description: \"Scientific: hypothesis testing, systems thinking, formal logic\",\n inputSchema: {\n type: \"object\",\n properties: {\n ...baseThoughtProperties,\n mode: {\n type: \"string\",\n enum: [\"scientificmethod\", \"systemsthinking\", \"formallogic\"],\n description: \"Scientific reasoning mode\"\n },\n hypothesis: {\n type: \"string\",\n description: \"Scientific hypothesis\"\n },\n predictions: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Testable predictions\"\n },\n experiments: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n description: { type: \"string\" },\n result: { type: \"string\" }\n },\n required: [\"id\", \"description\"],\n additionalProperties: false\n },\n description: \"Experiments conducted\"\n },\n systemComponents: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n role: { type: \"string\" }\n },\n required: [\"id\", \"name\"],\n additionalProperties: false\n },\n description: \"Components of the system\"\n },\n interactions: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n from: { type: \"string\" },\n to: { type: \"string\" },\n type: { type: \"string\" }\n },\n required: [\"from\", \"to\", \"type\"],\n additionalProperties: false\n },\n description: \"Interactions between components\"\n },\n feedbackLoops: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"positive\", \"negative\", \"neutral\"]\n },\n components: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n additionalProperties: false\n },\n description: \"Feedback loops in the system\"\n },\n premises: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Logical premises\"\n },\n conclusion: {\n type: \"string\",\n description: \"Logical conclusion\"\n },\n inference: {\n type: \"string\",\n description: \"Type of logical inference used\"\n }\n },\n required: [...baseThoughtRequired],\n additionalProperties: false\n }\n} as const;\n\n/**\n * deepthinking_session - Session management actions\n */\nexport const deepthinking_session_schema = {\n name: \"deepthinking_session\",\n description: \"Session: summarize, export, get, switch_mode, recommend\",\n inputSchema: {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n description: \"Session ID (required for most actions except recommend_mode)\"\n },\n action: {\n type: \"string\",\n enum: [\"summarize\", \"export\", \"get_session\", \"switch_mode\", \"recommend_mode\"],\n description: \"Session action to perform\"\n },\n exportFormat: {\n type: \"string\",\n enum: [\"markdown\", \"latex\", \"json\", \"html\", \"jupyter\", \"mermaid\", \"dot\", \"ascii\"],\n description: \"Export format (for export action)\"\n },\n newMode: {\n type: \"string\",\n description: \"New thinking mode (for switch_mode action)\"\n },\n problemType: {\n type: \"string\",\n description: \"Quick problem type for mode recommendation\"\n },\n problemCharacteristics: {\n type: \"object\",\n properties: {\n domain: { type: \"string\", description: \"Problem domain\" },\n complexity: {\n type: \"string\",\n enum: [\"low\", \"medium\", \"high\"],\n description: \"Problem complexity level\"\n },\n uncertainty: {\n type: \"string\",\n enum: [\"low\", \"medium\", \"high\"],\n description: \"Uncertainty level\"\n },\n timeDependent: { type: \"boolean\", description: \"Whether problem involves time\" },\n multiAgent: { type: \"boolean\", description: \"Whether problem involves multiple agents\" },\n requiresProof: { type: \"boolean\", description: \"Whether formal proof is needed\" },\n requiresQuantification: { type: \"boolean\", description: \"Whether quantitative analysis is needed\" },\n hasIncompleteInfo: { type: \"boolean\", description: \"Whether information is incomplete\" },\n requiresExplanation: { type: \"boolean\", description: \"Whether explanation is needed\" },\n hasAlternatives: { type: \"boolean\", description: \"Whether alternative scenarios exist\" }\n },\n required: [\"domain\", \"complexity\", \"uncertainty\", \"timeDependent\", \"multiAgent\", \"requiresProof\", \"requiresQuantification\", \"hasIncompleteInfo\", \"requiresExplanation\", \"hasAlternatives\"],\n additionalProperties: false,\n description: \"Detailed problem characteristics for comprehensive recommendation\"\n },\n includeCombinations: {\n type: \"boolean\",\n description: \"Include mode combinations in recommendations\"\n }\n },\n required: [\"action\"],\n additionalProperties: false\n }\n} as const;\n\n/**\n * All tool schemas as array\n */\nexport const jsonSchemas = [\n deepthinking_core_schema,\n deepthinking_standard_schema,\n deepthinking_math_schema,\n deepthinking_temporal_schema,\n deepthinking_probabilistic_schema,\n deepthinking_causal_schema,\n deepthinking_strategic_schema,\n deepthinking_analytical_schema,\n deepthinking_scientific_schema,\n deepthinking_session_schema,\n] as const;\n","/**\n * Base Thought Schema (v4.1.0)\n * Sprint 5 Task 5.2: Shared properties for all thinking modes\n * Sprint 7 Task 7.5: Use shared enums\n */\n\nimport { z } from 'zod';\nimport {\n ConfidenceSchema,\n PositiveIntSchema,\n SessionActionEnum,\n ExportFormatEnum,\n LevelEnum,\n} from './shared.js';\n\n/**\n * Base schema with properties common to all thought types\n */\nexport const BaseThoughtSchema = z.object({\n sessionId: z.string().optional(),\n thought: z.string().min(1),\n thoughtNumber: PositiveIntSchema,\n totalThoughts: PositiveIntSchema,\n nextThoughtNeeded: z.boolean(),\n isRevision: z.boolean().optional(),\n revisesThought: z.string().optional(),\n revisionReason: z.string().optional(),\n branchFrom: z.string().optional(),\n branchId: z.string().optional(),\n uncertainty: ConfidenceSchema.optional(),\n dependencies: z.array(z.string()).optional(),\n assumptions: z.array(z.string()).optional(),\n});\n\nexport type BaseThoughtInput = z.infer<typeof BaseThoughtSchema>;\n\n/**\n * Session action schema for non-thought operations\n */\nexport const SessionActionSchema = z.object({\n sessionId: z.string().optional(),\n action: SessionActionEnum,\n exportFormat: ExportFormatEnum.optional(),\n newMode: z.string().optional(),\n problemType: z.string().optional(),\n problemCharacteristics: z.object({\n domain: z.string(),\n complexity: LevelEnum,\n uncertainty: LevelEnum,\n timeDependent: z.boolean(),\n multiAgent: z.boolean(),\n requiresProof: z.boolean(),\n requiresQuantification: z.boolean(),\n hasIncompleteInfo: z.boolean(),\n requiresExplanation: z.boolean(),\n hasAlternatives: z.boolean(),\n }).optional(),\n includeCombinations: z.boolean().optional(),\n});\n\nexport type SessionActionInput = z.infer<typeof SessionActionSchema>;\n","/**\n * Shared Schema Components (v4.1.0)\n * Sprint 7 Task 7.5: Consolidate common schema patterns\n *\n * Reduces duplication across mode-specific schemas.\n * Import these shared components instead of redefining.\n */\n\nimport { z } from 'zod';\n\n// ============================================================\n// NUMERIC SCHEMAS\n// ============================================================\n\n/**\n * Confidence/probability value (0-1 range)\n * Used for: uncertainty, confidence, probability, strength, mass\n */\nexport const ConfidenceSchema = z.number().min(0).max(1);\n\n/**\n * Positive integer (1+)\n */\nexport const PositiveIntSchema = z.number().int().min(1);\n\n// ============================================================\n// COMMON ENUMS\n// ============================================================\n\n/**\n * Three-level scale (low/medium/high)\n * Used for: complexity, uncertainty, priority\n */\nexport const LevelEnum = z.enum(['low', 'medium', 'high']);\n\n/**\n * Impact assessment\n */\nexport const ImpactEnum = z.enum(['positive', 'negative', 'neutral']);\n\n/**\n * Export formats supported by DeepThinking MCP\n */\nexport const ExportFormatEnum = z.enum([\n 'markdown',\n 'latex',\n 'json',\n 'html',\n 'jupyter',\n 'mermaid',\n 'dot',\n 'ascii',\n]);\n\n/**\n * Session actions\n */\nexport const SessionActionEnum = z.enum([\n 'summarize',\n 'export',\n 'get_session',\n 'switch_mode',\n 'recommend_mode',\n]);\n\n/**\n * Proof strategy types (mathematics mode)\n */\nexport const ProofTypeEnum = z.enum([\n 'direct',\n 'contradiction',\n 'induction',\n 'construction',\n 'contrapositive',\n]);\n\n/**\n * Time units\n */\nexport const TimeUnitEnum = z.enum([\n 'milliseconds',\n 'seconds',\n 'minutes',\n 'hours',\n 'days',\n 'months',\n 'years',\n]);\n\n/**\n * Temporal constraint types (Allen's interval algebra)\n */\nexport const TemporalConstraintEnum = z.enum([\n 'before',\n 'after',\n 'during',\n 'overlaps',\n 'meets',\n 'starts',\n 'finishes',\n 'equals',\n]);\n\n/**\n * Temporal relation types\n */\nexport const TemporalRelationEnum = z.enum([\n 'before',\n 'after',\n 'during',\n 'overlaps',\n 'meets',\n 'starts',\n 'finishes',\n 'equals',\n 'causes',\n]);\n\n/**\n * Event types\n */\nexport const EventTypeEnum = z.enum(['instant', 'interval']);\n\n/**\n * Tensor transformation types\n */\nexport const TransformationEnum = z.enum(['covariant', 'contravariant', 'mixed']);\n\n/**\n * Shannon methodology stages\n */\nexport const ShannonStageEnum = z.enum([\n 'problem_definition',\n 'constraints',\n 'model',\n 'proof',\n 'implementation',\n]);\n\n// ============================================================\n// REUSABLE OBJECT SCHEMAS\n// ============================================================\n\n/**\n * Basic entity with ID and name\n */\nexport const EntitySchema = z.object({\n id: z.string(),\n name: z.string(),\n});\n\n/**\n * Entity with description\n */\nexport const DescribedEntitySchema = EntitySchema.extend({\n description: z.string(),\n});\n\n// ============================================================\n// TYPE EXPORTS\n// ============================================================\n\nexport type Confidence = z.infer<typeof ConfidenceSchema>;\nexport type Level = z.infer<typeof LevelEnum>;\nexport type Impact = z.infer<typeof ImpactEnum>;\nexport type ExportFormat = z.infer<typeof ExportFormatEnum>;\nexport type SessionAction = z.infer<typeof SessionActionEnum>;\nexport type ProofType = z.infer<typeof ProofTypeEnum>;\nexport type TimeUnit = z.infer<typeof TimeUnitEnum>;\nexport type TemporalConstraint = z.infer<typeof TemporalConstraintEnum>;\nexport type TemporalRelation = z.infer<typeof TemporalRelationEnum>;\nexport type EventType = z.infer<typeof EventTypeEnum>;\nexport type Transformation = z.infer<typeof TransformationEnum>;\nexport type ShannonStage = z.infer<typeof ShannonStageEnum>;\n","/**\n * Core Mode Schemas (v5.0.0)\n * Phase 5 Sprint 2: Renamed to reflect restructuring\n * - StandardSchema: Sequential, Shannon, Hybrid modes (was CoreSchema)\n * - CoreModeSchema: Inductive, Deductive, Abductive modes (NEW)\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport { ShannonStageEnum } from '../shared.js';\n\n/**\n * Standard workflow modes (sequential, shannon, hybrid)\n * Renamed from CoreSchema in v5.0.0\n */\nexport const StandardSchema = BaseThoughtSchema.extend({\n mode: z.enum(['sequential', 'shannon', 'hybrid']),\n stage: ShannonStageEnum.optional(),\n activeModes: z.array(z.string()).optional(),\n});\n\n/**\n * Core reasoning modes (inductive, deductive, abductive)\n * NEW in v5.0.0\n */\nexport const CoreModeSchema = BaseThoughtSchema.extend({\n mode: z.enum(['inductive', 'deductive', 'abductive']),\n // Inductive properties\n observations: z.array(z.string()).optional(),\n pattern: z.string().optional(),\n generalization: z.string().optional(),\n confidence: z.number().min(0).max(1).optional(),\n counterexamples: z.array(z.string()).optional(),\n sampleSize: z.number().int().min(1).optional(),\n // Deductive properties\n premises: z.array(z.string()).optional(),\n conclusion: z.string().optional(),\n logicForm: z.string().optional(),\n validityCheck: z.boolean().optional(),\n soundnessCheck: z.boolean().optional(),\n // Abductive properties\n hypotheses: z.array(z.object({\n id: z.string(),\n explanation: z.string(),\n score: z.number().optional(),\n })).optional(),\n bestExplanation: z.object({\n id: z.string(),\n explanation: z.string(),\n score: z.number().optional(),\n }).optional(),\n});\n\n// Backward compatibility export\nexport const CoreSchema = StandardSchema;\n\nexport type StandardInput = z.infer<typeof StandardSchema>;\nexport type CoreModeInput = z.infer<typeof CoreModeSchema>;\nexport type CoreInput = z.infer<typeof CoreSchema>;\n","/**\n * Mathematics Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Mathematics, Physics modes\n * Sprint 7 Task 7.5: Use shared enums\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport { ProofTypeEnum, TransformationEnum } from '../shared.js';\n\nconst ProofStrategySchema = z.object({\n type: ProofTypeEnum,\n steps: z.array(z.string()),\n});\n\nconst MathematicalModelSchema = z.object({\n latex: z.string(),\n symbolic: z.string(),\n ascii: z.string().optional(),\n});\n\nconst TensorPropertiesSchema = z.object({\n rank: z.tuple([z.number(), z.number()]),\n components: z.string(),\n latex: z.string(),\n symmetries: z.array(z.string()),\n invariants: z.array(z.string()),\n transformation: TransformationEnum,\n});\n\nconst PhysicalInterpretationSchema = z.object({\n quantity: z.string(),\n units: z.string(),\n conservationLaws: z.array(z.string()),\n});\n\nexport const MathSchema = BaseThoughtSchema.extend({\n mode: z.enum(['mathematics', 'physics']),\n thoughtType: z.string().optional(),\n proofStrategy: ProofStrategySchema.optional(),\n mathematicalModel: MathematicalModelSchema.optional(),\n tensorProperties: TensorPropertiesSchema.optional(),\n physicalInterpretation: PhysicalInterpretationSchema.optional(),\n});\n\nexport type MathInput = z.infer<typeof MathSchema>;\n","/**\n * Temporal Mode Schema (v4.1.0)\n * Sprint 5 Task 5.3: Temporal reasoning with Allen's interval algebra\n * Sprint 7 Task 7.5: Use shared enums\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport {\n ConfidenceSchema,\n TimeUnitEnum,\n TemporalConstraintEnum,\n TemporalRelationEnum,\n EventTypeEnum,\n} from '../shared.js';\n\nconst TimelineSchema = z.object({\n id: z.string(),\n name: z.string(),\n timeUnit: TimeUnitEnum,\n events: z.array(z.string()),\n startTime: z.number().optional(),\n endTime: z.number().optional(),\n});\n\nconst TemporalEventSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n timestamp: z.number(),\n type: EventTypeEnum,\n duration: z.number().optional(),\n properties: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst TemporalConstraintSchema = z.object({\n id: z.string(),\n type: TemporalConstraintEnum,\n subject: z.string(),\n object: z.string(),\n confidence: ConfidenceSchema,\n});\n\nconst TemporalIntervalSchema = z.object({\n id: z.string(),\n name: z.string(),\n start: z.number(),\n end: z.number(),\n contains: z.array(z.string()).optional(),\n overlaps: z.array(z.string()).optional(),\n});\n\nconst TemporalRelationSchema = z.object({\n id: z.string(),\n from: z.string(),\n to: z.string(),\n relationType: TemporalRelationEnum,\n strength: ConfidenceSchema,\n delay: z.number().optional(),\n});\n\n/**\n * Temporal reasoning schema\n */\nexport const TemporalSchema = BaseThoughtSchema.extend({\n mode: z.literal('temporal'),\n timeline: TimelineSchema.optional(),\n events: z.array(TemporalEventSchema).optional(),\n constraints: z.array(TemporalConstraintSchema).optional(),\n intervals: z.array(TemporalIntervalSchema).optional(),\n relations: z.array(TemporalRelationSchema).optional(),\n});\n\nexport type TemporalInput = z.infer<typeof TemporalSchema>;\n","/**\n * Probabilistic Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Bayesian, Evidential modes\n * Sprint 7 Task 7.5: Use shared schemas\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport { ConfidenceSchema } from '../shared.js';\n\nconst BeliefMassSchema = z.object({\n hypothesisSet: z.array(z.string()),\n mass: ConfidenceSchema,\n justification: z.string(),\n});\n\n/**\n * Probabilistic reasoning schema (Bayesian + Evidential)\n */\nexport const ProbabilisticSchema = BaseThoughtSchema.extend({\n mode: z.enum(['bayesian', 'evidential']),\n\n // Evidential (Dempster-Shafer) specific\n frameOfDiscernment: z.array(z.string()).optional(),\n beliefMasses: z.array(BeliefMassSchema).optional(),\n});\n\nexport type ProbabilisticInput = z.infer<typeof ProbabilisticSchema>;\n","/**\n * Causal Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Causal, Counterfactual, Abductive modes\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\n\nexport const CausalSchema = BaseThoughtSchema.extend({\n mode: z.enum(['causal', 'counterfactual', 'abductive']),\n});\n\nexport type CausalInput = z.infer<typeof CausalSchema>;\n","/**\n * Strategic Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Game Theory, Optimization modes\n * Sprint 7 Task 7.5: Use shared schemas\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\nimport { ConfidenceSchema } from '../shared.js';\n\nconst PlayerSchema = z.object({\n id: z.string(),\n name: z.string(),\n isRational: z.boolean(),\n availableStrategies: z.array(z.string()),\n role: z.string().optional(),\n});\n\nconst StrategySchema = z.object({\n id: z.string(),\n playerId: z.string(),\n name: z.string(),\n description: z.string(),\n isPure: z.boolean(),\n probability: ConfidenceSchema.optional(),\n});\n\n/**\n * Payoff entry\n */\nconst PayoffEntrySchema = z.object({\n strategyProfile: z.array(z.string()),\n payoffs: z.array(z.number()),\n});\n\n/**\n * Payoff matrix\n */\nconst PayoffMatrixSchema = z.object({\n players: z.array(z.string()),\n dimensions: z.array(z.number()),\n payoffs: z.array(PayoffEntrySchema),\n});\n\n/**\n * Strategic reasoning schema (Game Theory + Optimization)\n */\nexport const StrategicSchema = BaseThoughtSchema.extend({\n mode: z.enum(['gametheory', 'optimization']),\n\n // Game theory specific\n players: z.array(PlayerSchema).optional(),\n strategies: z.array(StrategySchema).optional(),\n payoffMatrix: PayoffMatrixSchema.optional(),\n});\n\nexport type StrategicInput = z.infer<typeof StrategicSchema>;\n","/**\n * Analytical Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Analogical, First Principles modes\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\n\nexport const AnalyticalSchema = BaseThoughtSchema.extend({\n mode: z.enum(['analogical', 'firstprinciples']),\n});\n\nexport type AnalyticalInput = z.infer<typeof AnalyticalSchema>;\n","/**\n * Scientific Mode Schemas (v4.1.0)\n * Sprint 5 Task 5.3: Scientific Method, Systems Thinking, Formal Logic modes\n */\n\nimport { z } from 'zod';\nimport { BaseThoughtSchema } from '../base.js';\n\nexport const ScientificSchema = BaseThoughtSchema.extend({\n mode: z.enum(['scientificmethod', 'systemsthinking', 'formallogic']),\n});\n\nexport type ScientificInput = z.infer<typeof ScientificSchema>;\n"]}
|