deepthinking-mcp 3.0.0 → 3.1.0
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/README.md +146 -11
- package/dist/index.js +277 -36
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tools/thinking.ts","../src/types/modes/temporal.ts","../src/types/modes/gametheory.ts","../src/types/modes/evidential.ts","../src/types/modes/recommendations.ts","../src/utils/errors.ts","../src/utils/sanitization.ts","../src/utils/logger.ts","../src/config/index.ts","../src/validation/cache.ts","../src/session/manager.ts","../src/export/visual.ts","../src/utils/type-guards.ts","../src/index.ts"],"names":["LogLevel","DEFAULT_CONFIG","__filename","__dirname","session","exported","randomUUID"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * Unified thinking tool for DeepThinking MCP v2.1+\r\n * Supports 13 thinking modes\r\n */\r\n\r\nimport { z } from 'zod';\r\n\r\n/**\r\n * Zod schema for runtime validation (internal use)\r\n */\r\nexport const ThinkingToolSchema = z.object({\r\n sessionId: z.string().optional(),\r\n mode: z.enum(['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential']).default('hybrid'),\r\n thought: z.string(),\r\n thoughtNumber: z.number().int().positive(),\r\n totalThoughts: z.number().int().positive(),\r\n nextThoughtNeeded: z.boolean(),\r\n isRevision: z.boolean().optional(),\r\n revisesThought: z.string().optional(),\r\n revisionReason: z.string().optional(),\r\n branchFrom: z.string().optional(),\r\n branchId: z.string().optional(),\r\n stage: z.enum(['problem_definition', 'constraints', 'model', 'proof', 'implementation']).optional(),\r\n uncertainty: z.number().min(0).max(1).optional(),\r\n dependencies: z.array(z.string()).optional(),\r\n assumptions: z.array(z.string()).optional(),\r\n thoughtType: z.string().optional(),\r\n mathematicalModel: z.object({\r\n latex: z.string(),\r\n symbolic: z.string(),\r\n ascii: z.string().optional(),\r\n }).optional(),\r\n proofStrategy: z.object({\r\n type: z.enum(['direct', 'contradiction', 'induction', 'construction', 'contrapositive']),\r\n steps: z.array(z.string()),\r\n }).optional(),\r\n tensorProperties: z.object({\r\n rank: z.tuple([z.number(), z.number()]),\r\n components: z.string(),\r\n latex: z.string(),\r\n symmetries: z.array(z.string()),\r\n invariants: z.array(z.string()),\r\n transformation: z.enum(['covariant', 'contravariant', 'mixed']),\r\n }).optional(),\r\n physicalInterpretation: z.object({\r\n quantity: z.string(),\r\n units: z.string(),\r\n conservationLaws: z.array(z.string()),\r\n }).optional(),\r\n // Abductive reasoning properties (v2.0)\r\n observations: z.array(z.object({\r\n id: z.string(),\r\n description: z.string(),\r\n confidence: z.number().min(0).max(1),\r\n })).optional(),\r\n hypotheses: z.array(z.object({\r\n id: z.string(),\r\n // Abductive fields\r\n explanation: z.string().optional(),\r\n assumptions: z.array(z.string()).optional(),\r\n predictions: z.array(z.string()).optional(),\r\n score: z.number().optional(),\r\n // Evidential fields\r\n name: z.string().optional(),\r\n description: z.string().optional(),\r\n mutuallyExclusive: z.boolean().optional(),\r\n subsets: z.array(z.string()).optional(),\r\n })).optional(),\r\n evaluationCriteria: z.object({\r\n parsimony: z.number(),\r\n explanatoryPower: z.number(),\r\n plausibility: z.number(),\r\n testability: z.boolean(),\r\n }).optional(),\r\n evidence: z.array(z.object({\r\n id: z.string(),\r\n description: z.string(),\r\n // Abductive fields\r\n hypothesisId: z.string().optional(),\r\n type: z.enum(['supporting', 'contradicting', 'neutral']).optional(),\r\n strength: z.number().min(0).max(1).optional(),\r\n // Evidential fields\r\n source: z.string().optional(),\r\n reliability: z.number().min(0).max(1).optional(),\r\n timestamp: z.number().optional(),\r\n supports: z.array(z.string()).optional(),\r\n contradicts: z.array(z.string()).optional(),\r\n })).optional(),\r\n bestExplanation: z.object({\r\n id: z.string(),\r\n explanation: z.string(),\r\n assumptions: z.array(z.string()),\r\n predictions: z.array(z.string()),\r\n score: z.number(),\r\n }).optional(),\r\n // Causal reasoning properties (v2.0)\r\n causalGraph: z.object({\r\n nodes: z.array(z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n type: z.enum(['cause', 'effect', 'mediator', 'confounder']),\r\n description: z.string(),\r\n })),\r\n edges: z.array(z.object({\r\n from: z.string(),\r\n to: z.string(),\r\n strength: z.number(),\r\n confidence: z.number().min(0).max(1),\r\n })),\r\n }).optional(),\r\n interventions: z.array(z.object({\r\n nodeId: z.string(),\r\n action: z.string(),\r\n expectedEffects: z.array(z.object({\r\n nodeId: z.string(),\r\n expectedChange: z.string(),\r\n confidence: z.number(),\r\n })),\r\n })).optional(),\r\n mechanisms: z.array(z.object({\r\n from: z.string(),\r\n to: z.string(),\r\n description: z.string(),\r\n type: z.enum(['direct', 'indirect', 'feedback']),\r\n })).optional(),\r\n confounders: z.array(z.object({\r\n nodeId: z.string(),\r\n affects: z.array(z.string()),\r\n description: z.string(),\r\n })).optional(),\r\n // Bayesian reasoning properties (v2.0)\r\n hypothesis: z.object({\r\n id: z.string(),\r\n statement: z.string(),\r\n }).optional(),\r\n prior: z.object({\r\n probability: z.number().min(0).max(1),\r\n justification: z.string(),\r\n }).optional(),\r\n likelihood: z.object({\r\n probability: z.number().min(0).max(1),\r\n description: z.string(),\r\n }).optional(),\r\n posterior: z.object({\r\n probability: z.number().min(0).max(1),\r\n calculation: z.string(),\r\n }).optional(),\r\n bayesFactor: z.number().optional(),\r\n // Counterfactual reasoning properties (v2.0)\r\n actual: z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n description: z.string(),\r\n conditions: z.array(z.object({\r\n factor: z.string(),\r\n value: z.string(),\r\n })),\r\n outcomes: z.array(z.object({\r\n description: z.string(),\r\n impact: z.enum(['positive', 'negative', 'neutral']),\r\n magnitude: z.number().optional(),\r\n })),\r\n }).optional(),\r\n counterfactuals: z.array(z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n description: z.string(),\r\n conditions: z.array(z.object({\r\n factor: z.string(),\r\n value: z.string(),\r\n })),\r\n outcomes: z.array(z.object({\r\n description: z.string(),\r\n impact: z.enum(['positive', 'negative', 'neutral']),\r\n magnitude: z.number().optional(),\r\n })),\r\n })).optional(),\r\n comparison: z.object({\r\n differences: z.array(z.object({\r\n aspect: z.string(),\r\n actual: z.string(),\r\n counterfactual: z.string(),\r\n significance: z.enum(['high', 'medium', 'low']),\r\n })),\r\n insights: z.array(z.string()),\r\n lessons: z.array(z.string()),\r\n }).optional(),\r\n interventionPoint: z.object({\r\n description: z.string(),\r\n alternatives: z.array(z.string()),\r\n }).optional(),\r\n causalChains: z.array(z.object({\r\n intervention: z.string(),\r\n steps: z.array(z.string()),\r\n finalOutcome: z.string(),\r\n })).optional(),\r\n // Analogical reasoning properties (v2.0)\r\n sourceDomain: z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n description: z.string(),\r\n entities: z.array(z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n type: z.string(),\r\n })),\r\n relations: z.array(z.object({\r\n id: z.string(),\r\n type: z.string(),\r\n from: z.string(),\r\n to: z.string(),\r\n })),\r\n }).optional(),\r\n targetDomain: z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n description: z.string(),\r\n entities: z.array(z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n type: z.string(),\r\n })),\r\n relations: z.array(z.object({\r\n id: z.string(),\r\n type: z.string(),\r\n from: z.string(),\r\n to: z.string(),\r\n })),\r\n }).optional(),\r\n mapping: z.array(z.object({\r\n sourceEntityId: z.string(),\r\n targetEntityId: z.string(),\r\n justification: z.string(),\r\n confidence: z.number().min(0).max(1),\r\n })).optional(),\r\n insights: z.array(z.object({\r\n description: z.string(),\r\n sourceEvidence: z.string(),\r\n targetApplication: z.string(),\r\n })).optional(),\r\n inferences: z.array(z.object({\r\n sourcePattern: z.string(),\r\n targetPrediction: z.string(),\r\n confidence: z.number().min(0).max(1),\r\n needsVerification: z.boolean(),\r\n })).optional(),\r\n limitations: z.array(z.string()).optional(),\r\n analogyStrength: z.number().min(0).max(1).optional(),\r\n // Temporal reasoning properties (Phase 3, v2.1)\r\n timeline: z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n timeUnit: z.enum(['milliseconds', 'seconds', 'minutes', 'hours', 'days', 'months', 'years']),\r\n startTime: z.number().optional(),\r\n endTime: z.number().optional(),\r\n events: z.array(z.string()),\r\n }).optional(),\r\n events: z.array(z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n description: z.string(),\r\n timestamp: z.number(),\r\n duration: z.number().optional(),\r\n type: z.enum(['instant', 'interval']),\r\n properties: z.record(z.any()),\r\n })).optional(),\r\n intervals: z.array(z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n start: z.number(),\r\n end: z.number(),\r\n overlaps: z.array(z.string()).optional(),\r\n contains: z.array(z.string()).optional(),\r\n })).optional(),\r\n constraints: z.array(z.object({\r\n id: z.string(),\r\n type: z.enum(['before', 'after', 'during', 'overlaps', 'meets', 'starts', 'finishes', 'equals']),\r\n subject: z.string(),\r\n object: z.string(),\r\n confidence: z.number().min(0).max(1),\r\n })).optional(),\r\n relations: z.array(z.object({\r\n id: z.string(),\r\n from: z.string(),\r\n to: z.string(),\r\n relationType: z.enum(['causes', 'enables', 'prevents', 'precedes', 'follows']),\r\n strength: z.number().min(0).max(1),\r\n delay: z.number().optional(),\r\n })).optional(),\r\n // Game theory properties (Phase 3, v2.2)\r\n game: z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n description: z.string(),\r\n type: z.enum(['normal_form', 'extensive_form', 'cooperative', 'non_cooperative']),\r\n numPlayers: z.number().int().min(2),\r\n isZeroSum: z.boolean(),\r\n isPerfectInformation: z.boolean(),\r\n }).optional(),\r\n players: z.array(z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n role: z.string().optional(),\r\n isRational: z.boolean(),\r\n availableStrategies: z.array(z.string()),\r\n })).optional(),\r\n strategies: z.array(z.object({\r\n id: z.string(),\r\n playerId: z.string(),\r\n name: z.string(),\r\n description: z.string(),\r\n isPure: z.boolean(),\r\n probability: z.number().min(0).max(1).optional(),\r\n })).optional(),\r\n payoffMatrix: z.object({\r\n players: z.array(z.string()),\r\n dimensions: z.array(z.number()),\r\n payoffs: z.array(z.object({\r\n strategyProfile: z.array(z.string()),\r\n payoffs: z.array(z.number()),\r\n })),\r\n }).optional(),\r\n nashEquilibria: z.array(z.object({\r\n id: z.string(),\r\n strategyProfile: z.array(z.string()),\r\n payoffs: z.array(z.number()),\r\n type: z.enum(['pure', 'mixed']),\r\n isStrict: z.boolean(),\r\n stability: z.number().min(0).max(1),\r\n })).optional(),\r\n dominantStrategies: z.array(z.object({\r\n playerId: z.string(),\r\n strategyId: z.string(),\r\n type: z.enum(['strictly_dominant', 'weakly_dominant']),\r\n dominatesStrategies: z.array(z.string()),\r\n justification: z.string(),\r\n })).optional(),\r\n gameTree: z.object({\r\n rootNode: z.string(),\r\n nodes: z.array(z.object({\r\n id: z.string(),\r\n type: z.enum(['decision', 'chance', 'terminal']),\r\n playerId: z.string().optional(),\r\n parentNode: z.string().optional(),\r\n childNodes: z.array(z.string()),\r\n action: z.string().optional(),\r\n probability: z.number().min(0).max(1).optional(),\r\n payoffs: z.array(z.number()).optional(),\r\n })),\r\n informationSets: z.array(z.object({\r\n id: z.string(),\r\n playerId: z.string(),\r\n nodes: z.array(z.string()),\r\n availableActions: z.array(z.string()),\r\n })).optional(),\r\n }).optional(),\r\n\r\n // Evidential properties (Phase 3, v2.3)\r\n frameOfDiscernment: z.array(z.string()).optional(),\r\n beliefFunctions: z.array(z.object({\r\n id: z.string(),\r\n source: z.string(),\r\n massAssignments: z.array(z.object({\r\n hypothesisSet: z.array(z.string()),\r\n mass: z.number().min(0).max(1),\r\n justification: z.string(),\r\n })),\r\n conflictMass: z.number().optional(),\r\n })).optional(),\r\n combinedBelief: z.object({\r\n id: z.string(),\r\n source: z.string(),\r\n massAssignments: z.array(z.object({\r\n hypothesisSet: z.array(z.string()),\r\n mass: z.number().min(0).max(1),\r\n justification: z.string(),\r\n })),\r\n conflictMass: z.number().optional(),\r\n }).optional(),\r\n plausibility: z.object({\r\n id: z.string(),\r\n assignments: z.array(z.object({\r\n hypothesisSet: z.array(z.string()),\r\n plausibility: z.number().min(0).max(1),\r\n belief: z.number().min(0).max(1),\r\n uncertaintyInterval: z.tuple([z.number(), z.number()]),\r\n })),\r\n }).optional(),\r\n decisions: z.array(z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n selectedHypothesis: z.array(z.string()),\r\n confidence: z.number().min(0).max(1),\r\n reasoning: z.string(),\r\n alternatives: z.array(z.object({\r\n hypothesis: z.array(z.string()),\r\n expectedUtility: z.number(),\r\n risk: z.number(),\r\n })),\r\n })).optional(),\r\n action: z.enum(['add_thought', 'summarize', 'export', 'switch_mode', 'get_session', 'recommend_mode']).default('add_thought'),\r\n exportFormat: z.enum(['markdown', 'latex', 'json', 'html', 'jupyter', 'mermaid', 'dot', 'ascii']).optional(),\r\n newMode: z.enum(['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential']).optional(),\r\n // Mode recommendation parameters (v2.4)\r\n problemType: z.string().optional(),\r\n problemCharacteristics: z.object({\r\n domain: z.string(),\r\n complexity: z.enum(['low', 'medium', 'high']),\r\n uncertainty: z.enum(['low', 'medium', 'high']),\r\n timeDependent: z.boolean(),\r\n multiAgent: z.boolean(),\r\n requiresProof: z.boolean(),\r\n requiresQuantification: z.boolean(),\r\n hasIncompleteInfo: z.boolean(),\r\n requiresExplanation: z.boolean(),\r\n hasAlternatives: z.boolean(),\r\n }).optional(),\r\n includeCombinations: z.boolean().optional(),\r\n});\r\n\r\nexport type ThinkingToolInput = z.infer<typeof ThinkingToolSchema>;\r\n\r\n/**\r\n * Tool definition using plain JSON Schema (MCP standard format)\r\n */\r\nexport const thinkingTool = {\r\n name: 'deepthinking',\r\n description: `Advanced deep thinking tool supporting 13 reasoning modes:\r\n\r\nCore Modes:\r\n- sequential: Iterative refinement and exploration\r\n- shannon: Systematic 5-stage problem-solving\r\n- mathematics: Theorem proving and symbolic reasoning\r\n- physics: Tensor mathematics and field theory\r\n- hybrid: Intelligently combines multiple approaches\r\n\r\nAdvanced Modes (v2.0):\r\n- abductive: Inference to the best explanation, hypothesis generation\r\n- causal: Cause-effect analysis with causal graphs\r\n- bayesian: Probabilistic reasoning with evidence updates\r\n- counterfactual: What-if scenario analysis\r\n- analogical: Cross-domain pattern matching and insights\r\n\r\nPhase 3 Modes (v2.1+):\r\n- temporal: Event timelines, temporal constraints, causal relations over time\r\n- gametheory: Nash equilibria, strategic analysis, payoff matrices\r\n- evidential: Dempster-Shafer theory, belief functions, evidence combination\r\n\r\nActions:\r\n- add_thought: Add a new thought to the session (default)\r\n- summarize: Generate a summary of the session\r\n- export: Export session in various formats (markdown, latex, json, html, jupyter, mermaid, dot, ascii)\r\n- switch_mode: Change reasoning mode mid-session\r\n- get_session: Retrieve session information\r\n- recommend_mode: Get intelligent mode recommendations based on problem characteristics\r\n\r\nMode Recommendations (v2.4):\r\nUse action 'recommend_mode' with either:\r\n • problemType: Quick recommendation (e.g., 'debugging', 'proof', 'timeline', 'strategy')\r\n • problemCharacteristics: Detailed analysis with 10 dimensions (domain, complexity, uncertainty, etc.)\r\n • includeCombinations: Set to true for synergistic mode combination suggestions\r\n\r\nChoose the mode that best fits your problem type, or use recommend_mode to get intelligent suggestions.`,\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n sessionId: {\r\n type: \"string\",\r\n description: \"Session ID (creates new if omitted)\"\r\n },\r\n mode: {\r\n type: \"string\",\r\n enum: [\"sequential\", \"shannon\", \"mathematics\", \"physics\", \"hybrid\", \"abductive\", \"causal\", \"bayesian\", \"counterfactual\", \"analogical\", \"temporal\", \"gametheory\", \"evidential\"],\r\n description: \"Thinking mode to use\"\r\n },\r\n thought: {\r\n type: \"string\",\r\n description: \"The thought content\"\r\n },\r\n thoughtNumber: {\r\n type: \"integer\",\r\n minimum: 1,\r\n description: \"Position in sequence\"\r\n },\r\n totalThoughts: {\r\n type: \"integer\",\r\n minimum: 1,\r\n description: \"Estimated total thoughts\"\r\n },\r\n nextThoughtNeeded: {\r\n type: \"boolean\",\r\n description: \"Should thinking continue?\"\r\n },\r\n isRevision: {\r\n type: \"boolean\",\r\n description: \"Whether this revises previous thinking\"\r\n },\r\n revisesThought: {\r\n type: \"string\",\r\n description: \"Which thought is being reconsidered\"\r\n },\r\n revisionReason: {\r\n type: \"string\",\r\n description: \"Reason for revision\"\r\n },\r\n branchFrom: {\r\n type: \"string\",\r\n description: \"Branching point thought\"\r\n },\r\n branchId: {\r\n type: \"string\",\r\n description: \"Branch identifier\"\r\n },\r\n stage: {\r\n type: \"string\",\r\n enum: [\"problem_definition\", \"constraints\", \"model\", \"proof\", \"implementation\"],\r\n description: \"Shannon methodology stage\"\r\n },\r\n uncertainty: {\r\n type: \"number\",\r\n minimum: 0,\r\n maximum: 1,\r\n description: \"Uncertainty level (0-1)\"\r\n },\r\n dependencies: {\r\n type: \"array\",\r\n items: { type: \"string\" },\r\n description: \"Dependencies on other thoughts\"\r\n },\r\n assumptions: {\r\n type: \"array\",\r\n items: { type: \"string\" },\r\n description: \"Assumptions made\"\r\n },\r\n thoughtType: {\r\n type: \"string\",\r\n description: \"Type of mathematical thought\"\r\n },\r\n mathematicalModel: {\r\n type: \"object\",\r\n properties: {\r\n latex: { type: \"string\", description: \"LaTeX representation\" },\r\n symbolic: { type: \"string\", description: \"Symbolic representation\" },\r\n ascii: { type: \"string\", description: \"ASCII representation\" }\r\n },\r\n required: [\"latex\", \"symbolic\"]\r\n },\r\n proofStrategy: {\r\n type: \"object\",\r\n properties: {\r\n type: {\r\n type: \"string\",\r\n enum: [\"direct\", \"contradiction\", \"induction\", \"construction\", \"contrapositive\"]\r\n },\r\n steps: {\r\n type: \"array\",\r\n items: { type: \"string\" }\r\n }\r\n },\r\n required: [\"type\", \"steps\"]\r\n },\r\n tensorProperties: {\r\n type: \"object\",\r\n properties: {\r\n rank: {\r\n type: \"array\",\r\n items: { type: \"number\" },\r\n minItems: 2,\r\n maxItems: 2\r\n },\r\n components: { type: \"string\" },\r\n latex: { type: \"string\" },\r\n symmetries: {\r\n type: \"array\",\r\n items: { type: \"string\" }\r\n },\r\n invariants: {\r\n type: \"array\",\r\n items: { type: \"string\" }\r\n },\r\n transformation: {\r\n type: \"string\",\r\n enum: [\"covariant\", \"contravariant\", \"mixed\"]\r\n }\r\n },\r\n required: [\"rank\", \"components\", \"latex\", \"symmetries\", \"invariants\", \"transformation\"]\r\n },\r\n physicalInterpretation: {\r\n type: \"object\",\r\n properties: {\r\n quantity: { type: \"string\" },\r\n units: { type: \"string\" },\r\n conservationLaws: {\r\n type: \"array\",\r\n items: { type: \"string\" }\r\n }\r\n },\r\n required: [\"quantity\", \"units\", \"conservationLaws\"]\r\n },\r\n // Temporal reasoning properties (Phase 3, v2.1)\r\n timeline: {\r\n type: \"object\",\r\n properties: {\r\n id: { type: \"string\" },\r\n name: { type: \"string\" },\r\n timeUnit: {\r\n type: \"string\",\r\n enum: [\"milliseconds\", \"seconds\", \"minutes\", \"hours\", \"days\", \"months\", \"years\"],\r\n description: \"Time unit for the timeline\"\r\n },\r\n startTime: { type: \"number\", description: \"Optional start time\" },\r\n endTime: { type: \"number\", description: \"Optional end time\" },\r\n events: {\r\n type: \"array\",\r\n items: { type: \"string\" },\r\n description: \"Event IDs in this timeline\"\r\n }\r\n },\r\n required: [\"id\", \"name\", \"timeUnit\", \"events\"],\r\n description: \"Timeline structure for temporal reasoning\"\r\n },\r\n events: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n id: { type: \"string\" },\r\n name: { type: \"string\" },\r\n description: { type: \"string\" },\r\n timestamp: { type: \"number\", description: \"Event timestamp\" },\r\n duration: { type: \"number\", description: \"Duration for interval events\" },\r\n type: {\r\n type: \"string\",\r\n enum: [\"instant\", \"interval\"],\r\n description: \"Event type\"\r\n },\r\n properties: {\r\n type: \"object\",\r\n description: \"Additional event properties\"\r\n }\r\n },\r\n required: [\"id\", \"name\", \"description\", \"timestamp\", \"type\", \"properties\"]\r\n },\r\n description: \"Temporal events\"\r\n },\r\n intervals: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n id: { type: \"string\" },\r\n name: { type: \"string\" },\r\n start: { type: \"number\", description: \"Interval start time\" },\r\n end: { type: \"number\", description: \"Interval end time\" },\r\n overlaps: {\r\n type: \"array\",\r\n items: { type: \"string\" },\r\n description: \"IDs of overlapping intervals\"\r\n },\r\n contains: {\r\n type: \"array\",\r\n items: { type: \"string\" },\r\n description: \"IDs of contained intervals\"\r\n }\r\n },\r\n required: [\"id\", \"name\", \"start\", \"end\"]\r\n },\r\n description: \"Time intervals with Allen's algebra relationships\"\r\n },\r\n constraints: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n id: { type: \"string\" },\r\n type: {\r\n type: \"string\",\r\n enum: [\"before\", \"after\", \"during\", \"overlaps\", \"meets\", \"starts\", \"finishes\", \"equals\"],\r\n description: \"Allen's interval algebra constraint type\"\r\n },\r\n subject: { type: \"string\", description: \"Subject event/interval ID\" },\r\n object: { type: \"string\", description: \"Object event/interval ID\" },\r\n confidence: {\r\n type: \"number\",\r\n minimum: 0,\r\n maximum: 1,\r\n description: \"Confidence in constraint (0-1)\"\r\n }\r\n },\r\n required: [\"id\", \"type\", \"subject\", \"object\", \"confidence\"]\r\n },\r\n description: \"Temporal constraints using Allen's interval algebra\"\r\n },\r\n relations: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n id: { type: \"string\" },\r\n from: { type: \"string\", description: \"Source event ID\" },\r\n to: { type: \"string\", description: \"Target event ID\" },\r\n relationType: {\r\n type: \"string\",\r\n enum: [\"causes\", \"enables\", \"prevents\", \"precedes\", \"follows\"],\r\n description: \"Type of temporal relation\"\r\n },\r\n strength: {\r\n type: \"number\",\r\n minimum: 0,\r\n maximum: 1,\r\n description: \"Relation strength (0-1)\"\r\n },\r\n delay: { type: \"number\", description: \"Optional time delay between events\" }\r\n },\r\n required: [\"id\", \"from\", \"to\", \"relationType\", \"strength\"]\r\n },\r\n description: \"Temporal causal/enabling relations\"\r\n },\r\n // Game theory properties (Phase 3, v2.2)\r\n players: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n id: { type: \"string\" },\r\n name: { type: \"string\" },\r\n role: { type: \"string\" },\r\n isRational: { type: \"boolean\" },\r\n availableStrategies: {\r\n type: \"array\",\r\n items: { type: \"string\" }\r\n }\r\n },\r\n required: [\"id\", \"name\", \"isRational\", \"availableStrategies\"]\r\n },\r\n description: \"Players in the game\"\r\n },\r\n strategies: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n id: { type: \"string\" },\r\n playerId: { type: \"string\" },\r\n name: { type: \"string\" },\r\n description: { type: \"string\" },\r\n isPure: { type: \"boolean\" },\r\n probability: { type: \"number\", minimum: 0, maximum: 1 }\r\n },\r\n required: [\"id\", \"playerId\", \"name\", \"description\", \"isPure\"]\r\n },\r\n description: \"Available strategies\"\r\n },\r\n payoffMatrix: {\r\n type: \"object\",\r\n properties: {\r\n players: {\r\n type: \"array\",\r\n items: { type: \"string\" }\r\n },\r\n dimensions: {\r\n type: \"array\",\r\n items: { type: \"number\" }\r\n },\r\n payoffs: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n strategyProfile: {\r\n type: \"array\",\r\n items: { type: \"string\" }\r\n },\r\n payoffs: {\r\n type: \"array\",\r\n items: { type: \"number\" }\r\n }\r\n },\r\n required: [\"strategyProfile\", \"payoffs\"]\r\n }\r\n }\r\n },\r\n required: [\"players\", \"dimensions\", \"payoffs\"],\r\n description: \"Payoff matrix for the game\"\r\n },\r\n // Evidential reasoning properties (Phase 3, v2.3)\r\n frameOfDiscernment: {\r\n type: \"array\",\r\n items: { type: \"string\" },\r\n description: \"Frame of discernment (set of all possible hypotheses)\"\r\n },\r\n beliefMasses: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n hypothesisSet: {\r\n type: \"array\",\r\n items: { type: \"string\" }\r\n },\r\n mass: {\r\n type: \"number\",\r\n minimum: 0,\r\n maximum: 1\r\n },\r\n justification: { type: \"string\" }\r\n },\r\n required: [\"hypothesisSet\", \"mass\", \"justification\"]\r\n },\r\n description: \"Belief mass assignments (Dempster-Shafer)\"\r\n },\r\n action: {\r\n type: \"string\",\r\n enum: [\"add_thought\", \"summarize\", \"export\", \"switch_mode\", \"get_session\", \"recommend_mode\"],\r\n description: \"Action to perform\"\r\n },\r\n exportFormat: {\r\n type: \"string\",\r\n enum: [\"markdown\", \"latex\", \"json\", \"html\", \"jupyter\", \"mermaid\", \"dot\", \"ascii\"],\r\n description: \"Export format\"\r\n },\r\n newMode: {\r\n type: \"string\",\r\n enum: [\"sequential\", \"shannon\", \"mathematics\", \"physics\", \"hybrid\", \"abductive\", \"causal\", \"bayesian\", \"counterfactual\", \"analogical\", \"temporal\", \"gametheory\", \"evidential\"],\r\n description: \"New mode for switch_mode action\"\r\n }\r\n,\r\n problemType: {\r\n type: \"string\",\r\n description: \"Simple problem type for quick recommendations (e.g., 'debugging', 'proof', 'timeline')\"\r\n },\r\n problemCharacteristics: {\r\n type: \"object\",\r\n properties: {\r\n domain: { type: \"string\", description: \"Problem domain\" },\r\n complexity: { type: \"string\", enum: [\"low\", \"medium\", \"high\"], description: \"Problem complexity\" },\r\n uncertainty: { type: \"string\", enum: [\"low\", \"medium\", \"high\"], description: \"Uncertainty level\" },\r\n timeDependent: { type: \"boolean\", description: \"Whether problem involves time sequences\" },\r\n multiAgent: { type: \"boolean\", description: \"Whether multiple agents interact\" },\r\n requiresProof: { type: \"boolean\", description: \"Whether formal proof is needed\" },\r\n requiresQuantification: { type: \"boolean\", description: \"Whether quantification is needed\" },\r\n hasIncompleteInfo: { type: \"boolean\", description: \"Whether information is incomplete\" },\r\n requiresExplanation: { type: \"boolean\", description: \"Whether explanation is needed\" },\r\n hasAlternatives: { type: \"boolean\", description: \"Whether alternative scenarios exist\" }\r\n },\r\n required: [\"domain\", \"complexity\", \"uncertainty\", \"timeDependent\", \"multiAgent\", \"requiresProof\", \"requiresQuantification\", \"hasIncompleteInfo\", \"requiresExplanation\", \"hasAlternatives\"],\r\n description: \"Detailed problem characteristics for comprehensive recommendations\"\r\n },\r\n includeCombinations: {\r\n type: \"boolean\",\r\n description: \"Whether to include mode combination suggestions\"\r\n }\r\n },\r\n required: [\"thought\", \"thoughtNumber\", \"totalThoughts\", \"nextThoughtNeeded\"]\r\n }\r\n};\r\n","/**\n * Temporal Reasoning Mode - Type Definitions\n * Phase 3 (v2.1) - Temporal reasoning with events, intervals, constraints, and causal relations\n */\n\nimport { BaseThought } from '../core.js';\n\n/**\n * Temporal thought extends base thought with time-dependent reasoning\n */\nexport interface TemporalThought extends BaseThought {\n mode: 'temporal';\n thoughtType:\n | 'event_definition'\n | 'interval_analysis'\n | 'temporal_constraint'\n | 'sequence_construction'\n | 'causality_timeline';\n\n timeline?: Timeline;\n events?: TemporalEvent[];\n intervals?: TimeInterval[];\n constraints?: TemporalConstraint[];\n relations?: TemporalRelation[];\n}\n\n/**\n * Timeline structure organizing temporal events\n */\nexport interface Timeline {\n id: string;\n name: string;\n timeUnit: 'milliseconds' | 'seconds' | 'minutes' | 'hours' | 'days' | 'months' | 'years';\n startTime?: number;\n endTime?: number;\n events: string[]; // Event IDs\n}\n\n/**\n * Temporal event - either instant or interval\n */\nexport interface TemporalEvent {\n id: string;\n name: string;\n description: string;\n timestamp: number;\n duration?: number; // For interval events\n type: 'instant' | 'interval';\n properties: Record<string, any>;\n}\n\n/**\n * Time interval with Allen's algebra relationships\n */\nexport interface TimeInterval {\n id: string;\n name: string;\n start: number;\n end: number;\n overlaps?: string[]; // IDs of overlapping intervals\n contains?: string[]; // IDs of contained intervals\n}\n\n/**\n * Temporal constraint using Allen's interval algebra\n */\nexport interface TemporalConstraint {\n id: string;\n type: 'before' | 'after' | 'during' | 'overlaps' | 'meets' | 'starts' | 'finishes' | 'equals';\n subject: string; // Event/Interval ID\n object: string; // Event/Interval ID\n confidence: number; // 0-1\n}\n\n/**\n * Temporal relation showing causal/enabling relationships over time\n */\nexport interface TemporalRelation {\n id: string;\n from: string; // Event ID\n to: string; // Event ID\n relationType: 'causes' | 'enables' | 'prevents' | 'precedes' | 'follows';\n strength: number; // 0-1\n delay?: number; // Time delay between events\n}\n\n/**\n * Type guard for temporal thoughts\n */\nexport function isTemporalThought(thought: BaseThought): thought is TemporalThought {\n return thought.mode === 'temporal';\n}\n","/**\n * Game-Theoretic Reasoning Mode - Type Definitions\n * Phase 3B (v2.2) - Strategic analysis, Nash equilibria, payoff matrices\n */\n\nimport { BaseThought } from '../core.js';\n\nexport interface GameTheoryThought extends BaseThought {\n mode: 'gametheory';\n thoughtType:\n | 'game_definition'\n | 'strategy_analysis'\n | 'equilibrium_finding'\n | 'payoff_computation'\n | 'dominance_analysis';\n\n game?: Game;\n players?: Player[];\n strategies?: Strategy[];\n payoffMatrix?: PayoffMatrix;\n nashEquilibria?: NashEquilibrium[];\n dominantStrategies?: DominantStrategy[];\n gameTree?: GameTree;\n}\n\n/**\n * Game definition\n */\nexport interface Game {\n id: string;\n name: string;\n description: string;\n type: 'normal_form' | 'extensive_form' | 'cooperative' | 'non_cooperative';\n numPlayers: number;\n isZeroSum: boolean;\n isPerfectInformation: boolean;\n}\n\n/**\n * Player in the game\n */\nexport interface Player {\n id: string;\n name: string;\n role?: string;\n isRational: boolean;\n availableStrategies: string[]; // Strategy IDs\n}\n\n/**\n * Strategy that a player can choose\n */\nexport interface Strategy {\n id: string;\n playerId: string;\n name: string;\n description: string;\n isPure: boolean; // true for pure strategy, false for mixed\n probability?: number; // for mixed strategies (0-1)\n}\n\n/**\n * Payoff matrix for normal form games\n */\nexport interface PayoffMatrix {\n players: string[]; // Player IDs in order\n dimensions: number[]; // Number of strategies per player\n payoffs: PayoffEntry[];\n}\n\n/**\n * Single entry in payoff matrix\n */\nexport interface PayoffEntry {\n strategyProfile: string[]; // Strategy IDs for each player\n payoffs: number[]; // Payoff for each player\n}\n\n/**\n * Nash equilibrium solution\n */\nexport interface NashEquilibrium {\n id: string;\n strategyProfile: string[]; // Strategy IDs for each player\n payoffs: number[]; // Resulting payoffs\n type: 'pure' | 'mixed';\n isStrict: boolean; // No player wants to deviate\n stability: number; // 0-1, how stable is this equilibrium\n}\n\n/**\n * Dominant strategy for a player\n */\nexport interface DominantStrategy {\n playerId: string;\n strategyId: string;\n type: 'strictly_dominant' | 'weakly_dominant';\n dominatesStrategies: string[]; // Other strategy IDs this dominates\n justification: string;\n}\n\n/**\n * Game tree for extensive form games\n */\nexport interface GameTree {\n rootNode: string; // Node ID\n nodes: GameNode[];\n informationSets?: InformationSet[];\n}\n\n/**\n * Node in game tree\n */\nexport interface GameNode {\n id: string;\n type: 'decision' | 'chance' | 'terminal';\n playerId?: string; // Which player moves (for decision nodes)\n parentNode?: string; // Parent node ID\n childNodes: string[]; // Child node IDs\n action?: string; // Action that led to this node\n probability?: number; // For chance nodes\n payoffs?: number[]; // For terminal nodes\n}\n\n/**\n * Information set (nodes player cannot distinguish)\n */\nexport interface InformationSet {\n id: string;\n playerId: string;\n nodes: string[]; // Node IDs in this set\n availableActions: string[];\n}\n\n/**\n * Backward induction solution\n */\nexport interface BackwardInduction {\n subgamePerfectEquilibrium: string[]; // Sequence of strategy IDs\n optimalPath: string[]; // Node IDs along optimal path\n expectedPayoffs: number[];\n}\n\nexport function isGameTheoryThought(thought: BaseThought): thought is GameTheoryThought {\n return thought.mode === 'gametheory';\n}\n","/**\n * Evidential Reasoning Mode - Type Definitions\n * Phase 3C (v2.3) - Dempster-Shafer theory, belief functions, evidence combination\n */\n\nimport { BaseThought } from '../core.js';\n\nexport interface EvidentialThought extends BaseThought {\n mode: 'evidential';\n thoughtType:\n | 'hypothesis_definition'\n | 'evidence_collection'\n | 'belief_assignment'\n | 'evidence_combination'\n | 'decision_analysis';\n\n frameOfDiscernment?: string[]; // All possible hypotheses\n hypotheses?: Hypothesis[];\n evidence?: Evidence[];\n beliefFunctions?: BeliefFunction[];\n combinedBelief?: BeliefFunction;\n plausibility?: PlausibilityFunction;\n decisions?: Decision[];\n}\n\nexport interface Hypothesis {\n id: string;\n name: string;\n description: string;\n mutuallyExclusive: boolean;\n subsets?: string[]; // For composite hypotheses\n}\n\nexport interface Evidence {\n id: string;\n description: string;\n source: string;\n reliability: number; // 0-1\n timestamp: number;\n supports: string[]; // Hypothesis IDs or subsets\n contradicts?: string[]; // Hypothesis IDs or subsets\n}\n\nexport interface BeliefFunction {\n id: string;\n source: string; // Evidence ID or 'combined'\n massAssignments: MassAssignment[];\n conflictMass?: number; // Normalization factor\n}\n\nexport interface MassAssignment {\n hypothesisSet: string[]; // Hypothesis IDs (singleton or composite)\n mass: number; // 0-1, basic probability assignment\n justification: string;\n}\n\nexport interface PlausibilityFunction {\n id: string;\n assignments: PlausibilityAssignment[];\n}\n\nexport interface PlausibilityAssignment {\n hypothesisSet: string[];\n plausibility: number; // 0-1\n belief: number; // 0-1\n uncertaintyInterval: [number, number]; // [belief, plausibility]\n}\n\nexport interface Decision {\n id: string;\n name: string;\n selectedHypothesis: string[];\n confidence: number; // Based on belief/plausibility\n reasoning: string;\n alternatives: Alternative[];\n}\n\nexport interface Alternative {\n hypothesis: string[];\n expectedUtility: number;\n risk: number;\n}\n\nexport function isEvidentialThought(thought: BaseThought): thought is EvidentialThought {\n return thought.mode === 'evidential';\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 * Custom error classes for DeepThinking MCP\n * Provides structured error handling with proper error codes and context\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 SessionError {\n constructor(sessionId: string) {\n super(`Session not found: ${sessionId}`, { sessionId });\n this.code = 'SESSION_NOT_FOUND';\n }\n}\n\n/**\n * Session already exists error\n */\nexport class SessionAlreadyExistsError extends SessionError {\n constructor(sessionId: string) {\n super(`Session already exists: ${sessionId}`, { sessionId });\n this.code = 'SESSION_ALREADY_EXISTS';\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 ValidationError {\n constructor(fieldName: string, reason: string, value?: unknown) {\n super(`Invalid ${fieldName}: ${reason}`, {\n fieldName,\n reason,\n value: typeof value === 'object' ? '[object]' : value,\n });\n this.code = 'INPUT_VALIDATION_ERROR';\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 ValidationError {\n constructor(mode: string, validModes: string[]) {\n super(`Invalid thinking mode: ${mode}`, { mode, validModes });\n this.code = 'INVALID_MODE';\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 * 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 * Logging utility for DeepThinking MCP\n * Provides structured logging with levels and context\n */\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 {\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","/**\r\n * Centralized configuration for DeepThinking MCP Server\r\n *\r\n * All configurable values should be defined here to enable\r\n * easy environment-based configuration and deployment flexibility.\r\n */\r\n\r\n/**\r\n * Server configuration\r\n */\r\nexport interface ServerConfig {\r\n /** Maximum number of thoughts to keep in memory per session */\r\n maxThoughtsInMemory: number;\r\n\r\n /** Threshold for compressing old thoughts */\r\n compressionThreshold: number;\r\n\r\n /** Maximum content length in characters */\r\n maxContentLength: number;\r\n\r\n /** Validation tolerance for mathematical checks (e.g., mass sum) */\r\n validationTolerance: number;\r\n\r\n /** Maximum number of active sessions to keep in memory */\r\n maxActiveSessions: number;\r\n\r\n /** Session timeout in milliseconds (0 = no timeout) */\r\n sessionTimeoutMs: number;\r\n\r\n /** Enable validation result caching */\r\n enableValidationCache: boolean;\r\n\r\n /** Validation cache max size (number of entries) */\r\n validationCacheMaxSize: number;\r\n\r\n /** Enable session persistence to disk */\r\n enablePersistence: boolean;\r\n\r\n /** Directory for session persistence (if enabled) */\r\n persistenceDir: string;\r\n\r\n /** Log level: 'debug' | 'info' | 'warn' | 'error' */\r\n logLevel: 'debug' | 'info' | 'warn' | 'error';\r\n\r\n /** Enable performance metrics logging */\r\n enablePerformanceMetrics: boolean;\r\n}\r\n\r\n/**\r\n * Default configuration values\r\n */\r\nconst defaultConfig: ServerConfig = {\r\n maxThoughtsInMemory: parseInt(process.env.MCP_MAX_THOUGHTS || '1000', 10),\r\n compressionThreshold: parseInt(process.env.MCP_COMPRESSION_THRESHOLD || '500', 10),\r\n maxContentLength: parseInt(process.env.MCP_MAX_CONTENT_LENGTH || '10000', 10),\r\n validationTolerance: parseFloat(process.env.MCP_VALIDATION_TOLERANCE || '0.01'),\r\n maxActiveSessions: parseInt(process.env.MCP_MAX_SESSIONS || '100', 10),\r\n sessionTimeoutMs: parseInt(process.env.MCP_SESSION_TIMEOUT_MS || '0', 10),\r\n enableValidationCache: process.env.MCP_ENABLE_VALIDATION_CACHE !== 'false',\r\n validationCacheMaxSize: parseInt(process.env.MCP_VALIDATION_CACHE_SIZE || '1000', 10),\r\n enablePersistence: process.env.MCP_ENABLE_PERSISTENCE === 'true',\r\n persistenceDir: process.env.MCP_PERSISTENCE_DIR || './.deepthinking-sessions',\r\n logLevel: (process.env.MCP_LOG_LEVEL || 'info') as ServerConfig['logLevel'],\r\n enablePerformanceMetrics: process.env.MCP_ENABLE_PERF_METRICS === 'true',\r\n};\r\n\r\n/**\r\n * Current active configuration (can be overridden)\r\n */\r\nlet activeConfig: ServerConfig = { ...defaultConfig };\r\n\r\n/**\r\n * Get the current configuration\r\n */\r\nexport function getConfig(): Readonly<ServerConfig> {\r\n return Object.freeze({ ...activeConfig });\r\n}\r\n\r\n/**\r\n * Update configuration (for testing or runtime changes)\r\n *\r\n * @param updates - Partial configuration to merge with existing config\r\n * @returns The updated configuration\r\n */\r\nexport function updateConfig(updates: Partial<ServerConfig>): Readonly<ServerConfig> {\r\n activeConfig = { ...activeConfig, ...updates };\r\n return getConfig();\r\n}\r\n\r\n/**\r\n * Reset configuration to defaults\r\n */\r\nexport function resetConfig(): void {\r\n activeConfig = { ...defaultConfig };\r\n}\r\n\r\n/**\r\n * Validate configuration values\r\n *\r\n * @throws Error if configuration is invalid\r\n */\r\nexport function validateConfig(config: ServerConfig): void {\r\n if (config.maxThoughtsInMemory < 1) {\r\n throw new Error('maxThoughtsInMemory must be at least 1');\r\n }\r\n\r\n if (config.compressionThreshold < 0) {\r\n throw new Error('compressionThreshold must be non-negative');\r\n }\r\n\r\n if (config.maxContentLength < 1) {\r\n throw new Error('maxContentLength must be at least 1');\r\n }\r\n\r\n if (config.validationTolerance < 0 || config.validationTolerance > 1) {\r\n throw new Error('validationTolerance must be between 0 and 1');\r\n }\r\n\r\n if (config.maxActiveSessions < 1) {\r\n throw new Error('maxActiveSessions must be at least 1');\r\n }\r\n\r\n if (config.sessionTimeoutMs < 0) {\r\n throw new Error('sessionTimeoutMs must be non-negative');\r\n }\r\n\r\n if (config.validationCacheMaxSize < 0) {\r\n throw new Error('validationCacheMaxSize must be non-negative');\r\n }\r\n\r\n if (!['debug', 'info', 'warn', 'error'].includes(config.logLevel)) {\r\n throw new Error('logLevel must be one of: debug, info, warn, error');\r\n }\r\n}\r\n\r\n// Validate default config on load\r\nvalidateConfig(activeConfig);\r\n\r\n/**\r\n * Export constants for common use\r\n */\r\nexport const CONFIG = getConfig();\r\n","/**\r\n * Validation result caching for performance optimization\r\n *\r\n * Caches validation results to avoid redundant validation of unchanging content.\r\n * Uses content-based hashing for cache keys to ensure correctness.\r\n */\r\n\r\nimport { getConfig } from '../config/index.js';\r\nimport { ValidationResult } from '../types/session.js';\r\nimport { createHash } from 'crypto';\r\n\r\n/**\r\n * Validation result entry\r\n */\r\nexport interface ValidationCacheEntry {\r\n /** Cached validation result */\r\n result: ValidationResult;\r\n\r\n /** Timestamp of validation */\r\n timestamp: number;\r\n\r\n /** Number of times this cache entry was hit */\r\n hitCount: number;\r\n}\r\n\r\n/**\r\n * LRU Cache for validation results\r\n */\r\nexport class ValidationCache {\r\n private cache: Map<string, ValidationCacheEntry>;\r\n private maxSize: number;\r\n private hits: number = 0;\r\n private misses: number = 0;\r\n\r\n constructor(maxSize?: number) {\r\n const config = getConfig();\r\n this.maxSize = maxSize || config.validationCacheMaxSize;\r\n this.cache = new Map();\r\n }\r\n\r\n /**\r\n * Generate a cache key from thought content\r\n *\r\n * Uses SHA-256 hash of JSON-serialized content for reliable cache keys\r\n *\r\n * @param content - Content to hash\r\n * @returns Cache key\r\n */\r\n private generateKey(content: unknown): string {\r\n const json = JSON.stringify(content);\r\n return createHash('sha256').update(json).digest('hex');\r\n }\r\n\r\n /**\r\n * Get validation result from cache\r\n *\r\n * @param content - Content to look up\r\n * @returns Cached result or undefined if not found\r\n */\r\n get(content: unknown): ValidationCacheEntry | undefined {\r\n const key = this.generateKey(content);\r\n const entry = this.cache.get(key);\r\n\r\n if (entry) {\r\n this.hits++;\r\n entry.hitCount++;\r\n\r\n // Move to end (LRU)\r\n this.cache.delete(key);\r\n this.cache.set(key, entry);\r\n\r\n return entry;\r\n }\r\n\r\n this.misses++;\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Store validation result in cache\r\n *\r\n * @param content - Content that was validated\r\n * @param result - Validation result to cache\r\n */\r\n set(content: unknown, result: ValidationResult): void {\r\n const key = this.generateKey(content);\r\n\r\n // If cache is full, remove least recently used (first entry)\r\n if (this.cache.size >= this.maxSize) {\r\n const firstKey = this.cache.keys().next().value;\r\n if (firstKey !== undefined) {\r\n this.cache.delete(firstKey);\r\n }\r\n }\r\n\r\n const entry: ValidationCacheEntry = {\r\n result,\r\n timestamp: Date.now(),\r\n hitCount: 0,\r\n };\r\n\r\n this.cache.set(key, entry);\r\n }\r\n\r\n /**\r\n * Check if content is in cache\r\n *\r\n * @param content - Content to check\r\n * @returns true if cached\r\n */\r\n has(content: unknown): boolean {\r\n const key = this.generateKey(content);\r\n return this.cache.has(key);\r\n }\r\n\r\n /**\r\n * Clear all cached validation results\r\n */\r\n clear(): void {\r\n this.cache.clear();\r\n this.hits = 0;\r\n this.misses = 0;\r\n }\r\n\r\n /**\r\n * Get cache statistics\r\n */\r\n getStats(): {\r\n size: number;\r\n maxSize: number;\r\n hits: number;\r\n misses: number;\r\n hitRate: number;\r\n } {\r\n const total = this.hits + this.misses;\r\n return {\r\n size: this.cache.size,\r\n maxSize: this.maxSize,\r\n hits: this.hits,\r\n misses: this.misses,\r\n hitRate: total > 0 ? this.hits / total : 0,\r\n };\r\n }\r\n\r\n /**\r\n * Resize the cache\r\n *\r\n * @param newSize - New maximum cache size\r\n */\r\n resize(newSize: number): void {\r\n this.maxSize = newSize;\r\n\r\n // If cache is now too large, trim it\r\n if (this.cache.size > newSize) {\r\n const keysToDelete = this.cache.size - newSize;\r\n const keys = Array.from(this.cache.keys());\r\n\r\n for (let i = 0; i < keysToDelete; i++) {\r\n this.cache.delete(keys[i]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get entries sorted by hit count (most used first)\r\n */\r\n getTopEntries(limit: number = 10): Array<{ key: string; entry: ValidationCacheEntry }> {\r\n const entries = Array.from(this.cache.entries())\r\n .map(([key, entry]) => ({ key, entry }))\r\n .sort((a, b) => b.entry.hitCount - a.entry.hitCount);\r\n\r\n return entries.slice(0, limit);\r\n }\r\n\r\n /**\r\n * Remove entries older than a certain age\r\n *\r\n * @param maxAgeMs - Maximum age in milliseconds\r\n * @returns Number of entries removed\r\n */\r\n evictOld(maxAgeMs: number): number {\r\n const now = Date.now();\r\n let removed = 0;\r\n\r\n for (const [key, entry] of this.cache.entries()) {\r\n if (now - entry.timestamp > maxAgeMs) {\r\n this.cache.delete(key);\r\n removed++;\r\n }\r\n }\r\n\r\n return removed;\r\n }\r\n}\r\n\r\n/**\r\n * Global validation cache instance\r\n */\r\nexport const validationCache = new ValidationCache();\r\n","/**\r\n * Session Manager for DeepThinking MCP\r\n * Manages thinking sessions, persistence, and analytics\r\n */\r\n\r\nimport { randomUUID } from 'crypto';\r\nimport {\r\n ThinkingSession,\r\n SessionConfig,\r\n SessionMetrics,\r\n SessionMetadata,\r\n Thought,\r\n ThinkingMode\r\n} from '../types/index.js';\r\nimport { isTemporalThought } from '../types/modes/temporal.js';\r\nimport { isGameTheoryThought } from '../types/modes/gametheory.js';\r\nimport { isEvidentialThought } from '../types/modes/evidential.js';\r\nimport { SessionNotFoundError } from '../utils/errors.js';\r\nimport { sanitizeString, sanitizeThoughtContent, validateSessionId, MAX_LENGTHS } from '../utils/sanitization.js';\r\nimport { Logger, createLogger, LogLevel } from '../utils/logger.js';\r\nimport { validationCache } from '../validation/cache.js';\r\nimport { SessionStorage } from './storage/interface.js';\r\n\r\n/**\r\n * Default session configuration\r\n */\r\nconst DEFAULT_CONFIG: SessionConfig = {\r\n modeConfig: {\r\n mode: ThinkingMode.HYBRID,\r\n strictValidation: false,\r\n allowModeSwitch: true\r\n },\r\n enableAutoSave: true,\r\n enableValidation: true,\r\n enableVisualization: true,\r\n integrations: {},\r\n exportFormats: ['markdown', 'latex', 'json'],\r\n autoExportOnComplete: false,\r\n maxThoughtsInMemory: 1000,\r\n compressionThreshold: 500\r\n};\r\n\r\n/**\r\n * Session Manager - Manages thinking session lifecycle and analytics\r\n *\r\n * The SessionManager provides a centralized interface for creating, managing,\r\n * and analyzing deep thinking sessions across all 13 reasoning modes.\r\n *\r\n * @example\r\n * ```typescript\r\n * const manager = new SessionManager();\r\n * const session = await manager.createSession({\r\n * title: 'Problem Analysis',\r\n * mode: ThinkingMode.SEQUENTIAL\r\n * });\r\n *\r\n * await manager.addThought(session.id, {\r\n * thought: 'Initial analysis...',\r\n * thoughtNumber: 1,\r\n * totalThoughts: 5,\r\n * nextThoughtNeeded: true\r\n * });\r\n * ```\r\n */\r\nexport class SessionManager {\r\n private activeSessions: Map<string, ThinkingSession>;\r\n private config: Partial<SessionConfig>;\r\n private logger: Logger;\r\n private storage?: SessionStorage;\r\n\r\n /**\r\n * Creates a new SessionManager instance\r\n *\r\n * @param config - Optional default configuration applied to all new sessions\r\n * @param logLevel - Optional minimum log level (default: INFO)\r\n * @param storage - Optional persistent storage backend for sessions\r\n *\r\n * @example\r\n * ```typescript\r\n * // Memory-only mode (default)\r\n * const manager = new SessionManager({\r\n * enableAutoSave: true,\r\n * maxThoughtsInMemory: 500\r\n * }, LogLevel.DEBUG);\r\n *\r\n * // With file-based persistence\r\n * import { FileSessionStore } from './storage/file-store.js';\r\n * const storage = new FileSessionStore('./sessions');\r\n * await storage.initialize();\r\n * const manager = new SessionManager({}, LogLevel.INFO, storage);\r\n * ```\r\n */\r\n constructor(\r\n config?: Partial<SessionConfig>,\r\n logLevel?: LogLevel,\r\n storage?: SessionStorage\r\n ) {\r\n this.activeSessions = new Map();\r\n this.config = config || {};\r\n this.storage = storage;\r\n this.logger = createLogger({\r\n minLevel: logLevel || LogLevel.INFO,\r\n enableConsole: true\r\n });\r\n }\r\n\r\n /**\r\n * Create a new thinking session\r\n *\r\n * Creates and initializes a new thinking session with the specified configuration.\r\n * Sessions are stored in memory and tracked until explicitly deleted.\r\n *\r\n * @param options - Session creation options\r\n * @param options.title - Session title (default: 'Untitled Session')\r\n * @param options.mode - Thinking mode to use (default: HYBRID)\r\n * @param options.domain - Problem domain (e.g., 'mathematics', 'physics')\r\n * @param options.author - Session creator/author\r\n * @param options.config - Session-specific configuration overrides\r\n * @returns Promise resolving to the created session\r\n *\r\n * @example\r\n * ```typescript\r\n * const session = await manager.createSession({\r\n * title: 'Mathematical Proof',\r\n * mode: ThinkingMode.MATHEMATICS,\r\n * domain: 'number-theory',\r\n * author: 'user@example.com'\r\n * });\r\n * ```\r\n */\r\n async createSession(options: {\r\n title?: string;\r\n mode?: ThinkingMode;\r\n domain?: string;\r\n author?: string;\r\n config?: Partial<SessionConfig>;\r\n } = {}): Promise<ThinkingSession> {\r\n // Validate inputs\r\n const title = options.title\r\n ? sanitizeString(options.title, MAX_LENGTHS.TITLE, 'title')\r\n : 'Untitled Session';\r\n\r\n const domain = options.domain\r\n ? sanitizeString(options.domain, MAX_LENGTHS.DOMAIN, 'domain')\r\n : undefined;\r\n\r\n const author = options.author\r\n ? sanitizeString(options.author, MAX_LENGTHS.AUTHOR, 'author')\r\n : undefined;\r\n\r\n const sessionId = randomUUID();\r\n const now = new Date();\r\n\r\n const session: ThinkingSession = {\r\n id: sessionId,\r\n title,\r\n mode: options.mode || ThinkingMode.HYBRID,\r\n domain,\r\n config: this.mergeConfig(options.config),\r\n thoughts: [],\r\n createdAt: now,\r\n updatedAt: now,\r\n author,\r\n currentThoughtNumber: 0,\r\n isComplete: false,\r\n metrics: this.initializeMetrics(),\r\n tags: [],\r\n collaborators: author ? [author] : []\r\n };\r\n\r\n this.activeSessions.set(sessionId, session);\r\n\r\n // Auto-save to storage if enabled\r\n if (this.storage && session.config.enableAutoSave) {\r\n try {\r\n await this.storage.saveSession(session);\r\n this.logger.debug('Session persisted to storage', { sessionId });\r\n } catch (error) {\r\n this.logger.error('Failed to persist session', error as Error, { sessionId });\r\n // Don't throw - session is still created in memory\r\n }\r\n }\r\n\r\n this.logger.info('Session created', {\r\n sessionId,\r\n title,\r\n mode: session.mode,\r\n domain,\r\n author\r\n });\r\n\r\n return session;\r\n }\r\n\r\n /**\r\n * Get a session by ID\r\n *\r\n * Retrieves a session by its unique identifier. If the session is not in memory\r\n * but storage is available, it will attempt to load from storage.\r\n *\r\n * @param sessionId - Unique UUID v4 identifier of the session\r\n * @returns Promise resolving to the session, or null if not found\r\n *\r\n * @example\r\n * ```typescript\r\n * const session = await manager.getSession('550e8400-e29b-41d4-a716-446655440000');\r\n * if (session) {\r\n * console.log(`Session: ${session.title}`);\r\n * console.log(`Thoughts: ${session.thoughts.length}`);\r\n * }\r\n * ```\r\n */\r\n async getSession(sessionId: string): Promise<ThinkingSession | null> {\r\n // Check memory first\r\n let session = this.activeSessions.get(sessionId);\r\n\r\n // If not in memory and storage is available, try loading from storage\r\n if (!session && this.storage) {\r\n try {\r\n session = await this.storage.loadSession(sessionId);\r\n if (session) {\r\n // Add to active sessions cache\r\n this.activeSessions.set(sessionId, session);\r\n this.logger.debug('Session loaded from storage', { sessionId });\r\n }\r\n } catch (error) {\r\n this.logger.error('Failed to load session from storage', error as Error, { sessionId });\r\n }\r\n }\r\n\r\n return session || null;\r\n }\r\n\r\n /**\r\n * Add a thought to a session\r\n *\r\n * Adds a new thought to an existing session and automatically updates:\r\n * - Session metrics (uses O(1) incremental calculation)\r\n * - Thought timestamps\r\n * - Session completion status\r\n * - Mode-specific analytics\r\n *\r\n * @param sessionId - ID of the session to add thought to\r\n * @param thought - The thought object to add\r\n * @returns Promise resolving to the updated session\r\n * @throws Error if session is not found\r\n *\r\n * @example\r\n * ```typescript\r\n * await manager.addThought(session.id, {\r\n * thought: 'Initial hypothesis: the problem can be solved using...',\r\n * thoughtNumber: 1,\r\n * totalThoughts: 5,\r\n * nextThoughtNeeded: true,\r\n * uncertainty: 0.3\r\n * });\r\n * ```\r\n */\r\n async addThought(sessionId: string, thought: Thought): Promise<ThinkingSession> {\r\n // Validate session ID\r\n validateSessionId(sessionId);\r\n\r\n const session = this.activeSessions.get(sessionId);\r\n if (!session) {\r\n this.logger.error('Session not found', undefined, { sessionId });\r\n throw new SessionNotFoundError(sessionId);\r\n }\r\n\r\n // Validate thought content\r\n if (thought.content) {\r\n thought.content = sanitizeThoughtContent(thought.content);\r\n }\r\n\r\n // Update thought with session metadata\r\n thought.sessionId = sessionId;\r\n thought.timestamp = new Date();\r\n\r\n // Add thought to session\r\n session.thoughts.push(thought);\r\n session.currentThoughtNumber = thought.thoughtNumber;\r\n session.updatedAt = new Date();\r\n\r\n // Update metrics\r\n this.updateMetrics(session, thought);\r\n\r\n // Check if session is complete\r\n if (!thought.nextThoughtNeeded) {\r\n session.isComplete = true;\r\n this.logger.info('Session completed', {\r\n sessionId,\r\n title: session.title,\r\n totalThoughts: session.thoughts.length\r\n });\r\n }\r\n\r\n // Auto-save to storage if enabled\r\n if (this.storage && session.config.enableAutoSave) {\r\n try {\r\n await this.storage.saveSession(session);\r\n this.logger.debug('Session persisted after thought added', { sessionId });\r\n } catch (error) {\r\n this.logger.error('Failed to persist session', error as Error, { sessionId });\r\n // Don't throw - thought is still added in memory\r\n }\r\n }\r\n\r\n this.logger.debug('Thought added', {\r\n sessionId,\r\n thoughtNumber: thought.thoughtNumber,\r\n totalThoughts: session.thoughts.length\r\n });\r\n\r\n return session;\r\n }\r\n\r\n /**\r\n * Update session mode (switch reasoning approach mid-session)\r\n *\r\n * Changes the thinking mode of an active session. This is useful when\r\n * the problem requires a different reasoning approach.\r\n *\r\n * @param sessionId - ID of the session to update\r\n * @param newMode - New thinking mode to switch to\r\n * @param reason - Optional reason for the mode switch\r\n * @returns Promise resolving to the updated session\r\n * @throws Error if session is not found\r\n *\r\n * @example\r\n * ```typescript\r\n * await manager.switchMode(\r\n * session.id,\r\n * ThinkingMode.CAUSAL,\r\n * 'Need to analyze cause-effect relationships'\r\n * );\r\n * ```\r\n */\r\n async switchMode(\r\n sessionId: string,\r\n newMode: ThinkingMode,\r\n reason?: string\r\n ): Promise<ThinkingSession> {\r\n // Validate session ID\r\n validateSessionId(sessionId);\r\n\r\n const session = this.activeSessions.get(sessionId);\r\n if (!session) {\r\n this.logger.error('Session not found', undefined, { sessionId });\r\n throw new SessionNotFoundError(sessionId);\r\n }\r\n\r\n const oldMode = session.mode;\r\n session.mode = newMode;\r\n session.config.modeConfig.mode = newMode;\r\n session.updatedAt = new Date();\r\n\r\n // Auto-save to storage if enabled\r\n if (this.storage && session.config.enableAutoSave) {\r\n try {\r\n await this.storage.saveSession(session);\r\n this.logger.debug('Session persisted after mode switch', { sessionId });\r\n } catch (error) {\r\n this.logger.error('Failed to persist session', error as Error, { sessionId });\r\n }\r\n }\r\n\r\n this.logger.info('Session mode switched', {\r\n sessionId,\r\n oldMode,\r\n newMode,\r\n reason\r\n });\r\n\r\n return session;\r\n }\r\n\r\n /**\r\n * List all active sessions with metadata\r\n *\r\n * Returns summary information for all sessions. If storage is available,\r\n * includes both in-memory sessions and persisted sessions.\r\n *\r\n * @param includeStoredSessions - Whether to include sessions from storage (default: true)\r\n * @returns Promise resolving to array of session metadata\r\n *\r\n * @example\r\n * ```typescript\r\n * const sessions = await manager.listSessions();\r\n * sessions.forEach(s => {\r\n * console.log(`${s.title}: ${s.thoughtCount} thoughts (${s.mode})`);\r\n * });\r\n * ```\r\n */\r\n async listSessions(includeStoredSessions: boolean = true): Promise<SessionMetadata[]> {\r\n const memoryMetadata = Array.from(this.activeSessions.values()).map(session => ({\r\n id: session.id,\r\n title: session.title,\r\n createdAt: session.createdAt,\r\n updatedAt: session.updatedAt,\r\n thoughtCount: session.thoughts.length,\r\n mode: session.mode,\r\n isComplete: session.isComplete\r\n }));\r\n\r\n // If no storage or not including stored sessions, return memory sessions only\r\n if (!this.storage || !includeStoredSessions) {\r\n return memoryMetadata;\r\n }\r\n\r\n // Get stored sessions and merge with memory sessions\r\n try {\r\n const storedMetadata = await this.storage.listSessions();\r\n const memoryIds = new Set(memoryMetadata.map(s => s.id));\r\n\r\n // Combine memory sessions with stored sessions (avoiding duplicates)\r\n const combined = [\r\n ...memoryMetadata,\r\n ...storedMetadata.filter(s => !memoryIds.has(s.id))\r\n ];\r\n\r\n return combined;\r\n } catch (error) {\r\n this.logger.error('Failed to list stored sessions', error as Error);\r\n return memoryMetadata; // Return memory sessions if storage fails\r\n }\r\n }\r\n\r\n /**\r\n * Delete a session\r\n *\r\n * Removes a session from memory and storage (if available).\r\n * This operation cannot be undone.\r\n *\r\n * @param sessionId - ID of the session to delete\r\n * @returns Promise that resolves when deletion is complete\r\n *\r\n * @example\r\n * ```typescript\r\n * await manager.deleteSession('old-session-id');\r\n * ```\r\n */\r\n async deleteSession(sessionId: string): Promise<void> {\r\n const session = this.activeSessions.get(sessionId);\r\n const deletedFromMemory = this.activeSessions.delete(sessionId);\r\n\r\n // Also delete from storage if available\r\n if (this.storage) {\r\n try {\r\n await this.storage.deleteSession(sessionId);\r\n this.logger.debug('Session deleted from storage', { sessionId });\r\n } catch (error) {\r\n this.logger.error('Failed to delete session from storage', error as Error, { sessionId });\r\n }\r\n }\r\n\r\n if (deletedFromMemory && session) {\r\n this.logger.info('Session deleted', {\r\n sessionId,\r\n title: session.title,\r\n thoughtCount: session.thoughts.length\r\n });\r\n } else {\r\n this.logger.warn('Attempted to delete non-existent session from memory', { sessionId });\r\n }\r\n }\r\n\r\n /**\r\n * Generate a text summary of a session\r\n *\r\n * Creates a markdown-formatted summary including:\r\n * - Session metadata (title, mode, status)\r\n * - Total thought count\r\n * - Key thoughts (first 100 characters of each)\r\n *\r\n * @param sessionId - ID of the session to summarize\r\n * @returns Promise resolving to markdown-formatted summary\r\n * @throws Error if session is not found\r\n *\r\n * @example\r\n * ```typescript\r\n * const summary = await manager.generateSummary(session.id);\r\n * console.log(summary);\r\n * // Output:\r\n * // # Mathematical Proof\r\n * // Mode: mathematics\r\n * // Total Thoughts: 15\r\n * // Status: Complete\r\n * // ...\r\n * ```\r\n */\r\n async generateSummary(sessionId: string): Promise<string> {\r\n // Validate session ID\r\n validateSessionId(sessionId);\r\n\r\n const session = this.activeSessions.get(sessionId);\r\n if (!session) {\r\n throw new SessionNotFoundError(sessionId);\r\n }\r\n\r\n let summary = `# ${session.title}\\n\\n`;\r\n summary += `Mode: ${session.mode}\\n`;\r\n summary += `Total Thoughts: ${session.thoughts.length}\\n`;\r\n summary += `Status: ${session.isComplete ? 'Complete' : 'In Progress'}\\n\\n`;\r\n\r\n summary += `## Key Thoughts:\\n\\n`;\r\n for (const thought of session.thoughts) {\r\n summary += `${thought.thoughtNumber}. ${thought.content.substring(0, 100)}...\\n`;\r\n }\r\n\r\n return summary;\r\n }\r\n\r\n /**\r\n * Merge configurations (private helper)\r\n *\r\n * Combines default config, instance config, and user config\r\n * with proper precedence: user > instance > default\r\n */\r\n private mergeConfig(userConfig?: Partial<SessionConfig>): SessionConfig {\r\n return {\r\n ...DEFAULT_CONFIG,\r\n ...this.config,\r\n ...userConfig\r\n } as SessionConfig;\r\n }\r\n\r\n /**\r\n * Initialize metrics (private helper)\r\n *\r\n * Creates a fresh SessionMetrics object with zero values\r\n */\r\n private initializeMetrics(): SessionMetrics {\r\n return {\r\n totalThoughts: 0,\r\n thoughtsByType: {},\r\n averageUncertainty: 0,\r\n revisionCount: 0,\r\n timeSpent: 0,\r\n dependencyDepth: 0,\r\n customMetrics: new Map(),\r\n cacheStats: {\r\n hits: 0,\r\n misses: 0,\r\n hitRate: 0,\r\n size: 0,\r\n maxSize: 0,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Update session metrics (private helper)\r\n *\r\n * Incrementally updates metrics using O(1) algorithms for performance.\r\n * Handles mode-specific metrics for temporal, game theory, and evidential modes.\r\n *\r\n * @param session - Session to update\r\n * @param thought - Newly added thought\r\n */\r\n private updateMetrics(session: ThinkingSession, thought: Thought): void {\r\n const metrics = session.metrics;\r\n\r\n // Update total thoughts\r\n metrics.totalThoughts = session.thoughts.length;\r\n\r\n // Update thoughtsByType incrementally (O(1) instead of recalculating)\r\n const thoughtType = thought.type || 'unknown';\r\n metrics.thoughtsByType[thoughtType] = (metrics.thoughtsByType[thoughtType] || 0) + 1;\r\n\r\n // Update revision count\r\n if (thought.isRevision) {\r\n metrics.revisionCount++;\r\n }\r\n\r\n // Update time spent (in milliseconds)\r\n metrics.timeSpent = session.updatedAt.getTime() - session.createdAt.getTime();\r\n\r\n // Update average uncertainty incrementally (O(1) instead of O(n))\r\n if ('uncertainty' in thought && typeof (thought as any).uncertainty === 'number') {\r\n const uncertaintyValue = (thought as any).uncertainty;\r\n const currentSum = metrics._uncertaintySum || 0;\r\n const currentCount = metrics._uncertaintyCount || 0;\r\n\r\n metrics._uncertaintySum = currentSum + uncertaintyValue;\r\n metrics._uncertaintyCount = currentCount + 1;\r\n metrics.averageUncertainty = metrics._uncertaintySum / metrics._uncertaintyCount;\r\n }\r\n\r\n // Update dependency depth\r\n if ('dependencies' in thought && thought.dependencies) {\r\n const deps = (thought as any).dependencies as string[];\r\n if (deps && deps.length > metrics.dependencyDepth) {\r\n metrics.dependencyDepth = deps.length;\r\n }\r\n }\r\n\r\n // Temporal-specific metrics (Phase 3, v2.1)\r\n if (isTemporalThought(thought)) {\r\n if (thought.events) {\r\n metrics.customMetrics.set('totalEvents', thought.events.length);\r\n }\r\n if (thought.timeline) {\r\n metrics.customMetrics.set('timelineUnit', thought.timeline.timeUnit);\r\n }\r\n if (thought.relations) {\r\n const causalRelations = thought.relations.filter(r => r.relationType === 'causes');\r\n metrics.customMetrics.set('causalRelations', causalRelations.length);\r\n }\r\n if (thought.constraints) {\r\n metrics.customMetrics.set('temporalConstraints', thought.constraints.length);\r\n }\r\n if (thought.intervals) {\r\n metrics.customMetrics.set('timeIntervals', thought.intervals.length);\r\n }\r\n }\r\n\r\n // Game theory-specific metrics (Phase 3, v2.2)\r\n if (isGameTheoryThought(thought)) {\r\n if (thought.players) {\r\n metrics.customMetrics.set('numPlayers', thought.players.length);\r\n }\r\n if (thought.strategies) {\r\n metrics.customMetrics.set('totalStrategies', thought.strategies.length);\r\n const mixedStrategies = thought.strategies.filter(s => !s.isPure);\r\n metrics.customMetrics.set('mixedStrategies', mixedStrategies.length);\r\n }\r\n if (thought.nashEquilibria) {\r\n metrics.customMetrics.set('nashEquilibria', thought.nashEquilibria.length);\r\n const pureEquilibria = thought.nashEquilibria.filter(e => e.type === 'pure');\r\n metrics.customMetrics.set('pureNashEquilibria', pureEquilibria.length);\r\n }\r\n if (thought.dominantStrategies) {\r\n metrics.customMetrics.set('dominantStrategies', thought.dominantStrategies.length);\r\n }\r\n if (thought.game) {\r\n metrics.customMetrics.set('gameType', thought.game.type);\r\n metrics.customMetrics.set('isZeroSum', thought.game.isZeroSum);\r\n }\r\n }\r\n\r\n // Evidential-specific metrics (Phase 3, v2.3)\r\n if (isEvidentialThought(thought)) {\r\n if (thought.hypotheses) {\r\n metrics.customMetrics.set('totalHypotheses', thought.hypotheses.length);\r\n }\r\n if (thought.evidence) {\r\n metrics.customMetrics.set('totalEvidence', thought.evidence.length);\r\n const avgReliability = thought.evidence.reduce((sum, e) => sum + e.reliability, 0) / thought.evidence.length;\r\n metrics.customMetrics.set('avgEvidenceReliability', avgReliability);\r\n }\r\n if (thought.beliefFunctions) {\r\n metrics.customMetrics.set('beliefFunctions', thought.beliefFunctions.length);\r\n }\r\n if (thought.combinedBelief) {\r\n metrics.customMetrics.set('hasCombinedBelief', true);\r\n if (thought.combinedBelief.conflictMass !== undefined) {\r\n metrics.customMetrics.set('conflictMass', thought.combinedBelief.conflictMass);\r\n }\r\n }\r\n if (thought.decisions) {\r\n metrics.customMetrics.set('decisions', thought.decisions.length);\r\n }\r\n }\r\n\r\n // Update validation cache statistics\r\n this.updateCacheStats(session);\r\n }\r\n\r\n /**\r\n * Update validation cache statistics in session metrics\r\n *\r\n * @param session - Session to update\r\n */\r\n private updateCacheStats(session: ThinkingSession): void {\r\n const cacheStats = validationCache.getStats();\r\n session.metrics.cacheStats = {\r\n hits: cacheStats.hits,\r\n misses: cacheStats.misses,\r\n hitRate: cacheStats.hitRate,\r\n size: cacheStats.size,\r\n maxSize: cacheStats.maxSize,\r\n };\r\n }\r\n}\r\n","/**\r\n * Visual Export Module (v2.5)\r\n * Exports thinking sessions to visual formats: Mermaid, DOT, ASCII\r\n */\r\n\r\nimport type { CausalThought, TemporalThought, GameTheoryThought, BayesianThought } from '../types/index.js';\r\n\r\nexport type VisualFormat = 'mermaid' | 'dot' | 'ascii';\r\n\r\nexport interface VisualExportOptions {\r\n format: VisualFormat;\r\n colorScheme?: 'default' | 'monochrome' | 'pastel';\r\n includeLabels?: boolean;\r\n includeMetrics?: boolean;\r\n}\r\n\r\n/**\r\n * Visual Exporter for converting thoughts to visual diagram formats\r\n */\r\nexport class VisualExporter {\r\n /**\r\n * Export causal graph to visual format\r\n */\r\n exportCausalGraph(thought: CausalThought, options: VisualExportOptions): string {\r\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\r\n\r\n switch (format) {\r\n case 'mermaid':\r\n return this.causalGraphToMermaid(thought, colorScheme, includeLabels, includeMetrics);\r\n case 'dot':\r\n return this.causalGraphToDOT(thought, includeLabels, includeMetrics);\r\n case 'ascii':\r\n return this.causalGraphToASCII(thought);\r\n default:\r\n throw new Error(`Unsupported format: ${format}`);\r\n }\r\n }\r\n\r\n /**\r\n * Export temporal timeline to visual format\r\n */\r\n exportTemporalTimeline(thought: TemporalThought, options: VisualExportOptions): string {\r\n const { format, includeLabels = true } = options;\r\n\r\n switch (format) {\r\n case 'mermaid':\r\n return this.timelineToMermaidGantt(thought, includeLabels);\r\n case 'dot':\r\n return this.timelineToDOT(thought, includeLabels);\r\n case 'ascii':\r\n return this.timelineToASCII(thought);\r\n default:\r\n throw new Error(`Unsupported format: ${format}`);\r\n }\r\n }\r\n\r\n /**\r\n * Export game tree to visual format\r\n */\r\n exportGameTree(thought: GameTheoryThought, options: VisualExportOptions): string {\r\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\r\n\r\n switch (format) {\r\n case 'mermaid':\r\n return this.gameTreeToMermaid(thought, colorScheme, includeLabels, includeMetrics);\r\n case 'dot':\r\n return this.gameTreeToDOT(thought, includeLabels, includeMetrics);\r\n case 'ascii':\r\n return this.gameTreeToASCII(thought);\r\n default:\r\n throw new Error(`Unsupported format: ${format}`);\r\n }\r\n }\r\n\r\n /**\r\n * Export Bayesian network to visual format\r\n */\r\n exportBayesianNetwork(thought: BayesianThought, options: VisualExportOptions): string {\r\n const { format, colorScheme = 'default', includeLabels = true, includeMetrics = true } = options;\r\n\r\n switch (format) {\r\n case 'mermaid':\r\n return this.bayesianToMermaid(thought, colorScheme, includeLabels, includeMetrics);\r\n case 'dot':\r\n return this.bayesianToDOT(thought, includeLabels, includeMetrics);\r\n case 'ascii':\r\n return this.bayesianToASCII(thought);\r\n default:\r\n throw new Error(`Unsupported format: ${format}`);\r\n }\r\n }\r\n\r\n // ===== Causal Graph Exporters =====\r\n\r\n private causalGraphToMermaid(\r\n thought: CausalThought,\r\n colorScheme: string,\r\n includeLabels: boolean,\r\n includeMetrics: boolean\r\n ): string {\r\n let mermaid = 'graph TB\\n';\r\n\r\n // Add nodes with appropriate shapes\r\n for (const node of thought.causalGraph.nodes) {\r\n const nodeId = this.sanitizeId(node.id);\r\n const label = includeLabels ? node.name : nodeId;\r\n\r\n // Different shapes for different node types\r\n let shape: [string, string];\r\n switch (node.type) {\r\n case 'cause':\r\n shape = ['([', '])']; // Stadium shape\r\n break;\r\n case 'effect':\r\n shape = ['[[', ']]']; // Subroutine shape\r\n break;\r\n case 'mediator':\r\n shape = ['[', ']']; // Rectangle\r\n break;\r\n case 'confounder':\r\n shape = ['{', '}']; // Diamond\r\n break;\r\n default:\r\n shape = ['[', ']'];\r\n }\r\n\r\n mermaid += ` ${nodeId}${shape[0]}${label}${shape[1]}\\n`;\r\n }\r\n\r\n mermaid += '\\n';\r\n\r\n // Add edges with strength labels\r\n for (const edge of thought.causalGraph.edges) {\r\n const fromId = this.sanitizeId(edge.from);\r\n const toId = this.sanitizeId(edge.to);\r\n\r\n if (includeMetrics && edge.strength !== undefined) {\r\n mermaid += ` ${fromId} --> |${edge.strength.toFixed(2)}| ${toId}\\n`;\r\n } else {\r\n mermaid += ` ${fromId} --> ${toId}\\n`;\r\n }\r\n }\r\n\r\n // Add styling based on color scheme\r\n if (colorScheme !== 'monochrome') {\r\n mermaid += '\\n';\r\n const causes = thought.causalGraph.nodes.filter(n => n.type === 'cause');\r\n const effects = thought.causalGraph.nodes.filter(n => n.type === 'effect');\r\n\r\n for (const node of causes) {\r\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\r\n mermaid += ` style ${this.sanitizeId(node.id)} fill:${color}\\n`;\r\n }\r\n\r\n for (const node of effects) {\r\n const color = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\r\n mermaid += ` style ${this.sanitizeId(node.id)} fill:${color}\\n`;\r\n }\r\n }\r\n\r\n return mermaid;\r\n }\r\n\r\n private causalGraphToDOT(\r\n thought: CausalThought,\r\n includeLabels: boolean,\r\n includeMetrics: boolean\r\n ): string {\r\n let dot = 'digraph CausalGraph {\\n';\r\n dot += ' rankdir=TB;\\n';\r\n dot += ' node [shape=box, style=rounded];\\n\\n';\r\n\r\n // Add nodes\r\n for (const node of thought.causalGraph.nodes) {\r\n const nodeId = this.sanitizeId(node.id);\r\n const label = includeLabels ? node.name : nodeId;\r\n\r\n let shape = 'box';\r\n switch (node.type) {\r\n case 'cause': shape = 'ellipse'; break;\r\n case 'effect': shape = 'doubleoctagon'; break;\r\n case 'mediator': shape = 'box'; break;\r\n case 'confounder': shape = 'diamond'; break;\r\n }\r\n\r\n dot += ` ${nodeId} [label=\"${label}\", shape=${shape}];\\n`;\r\n }\r\n\r\n dot += '\\n';\r\n\r\n // Add edges\r\n for (const edge of thought.causalGraph.edges) {\r\n const fromId = this.sanitizeId(edge.from);\r\n const toId = this.sanitizeId(edge.to);\r\n\r\n if (includeMetrics && edge.strength !== undefined) {\r\n dot += ` ${fromId} -> ${toId} [label=\"${edge.strength.toFixed(2)}\"];\\n`;\r\n } else {\r\n dot += ` ${fromId} -> ${toId};\\n`;\r\n }\r\n }\r\n\r\n dot += '}\\n';\r\n return dot;\r\n }\r\n\r\n private causalGraphToASCII(thought: CausalThought): string {\r\n let ascii = 'Causal Graph:\\n';\r\n ascii += '=============\\n\\n';\r\n\r\n // List nodes\r\n ascii += 'Nodes:\\n';\r\n for (const node of thought.causalGraph.nodes) {\r\n ascii += ` [${node.type.toUpperCase()}] ${node.name}: ${node.description}\\n`;\r\n }\r\n\r\n ascii += '\\nEdges:\\n';\r\n for (const edge of thought.causalGraph.edges) {\r\n const fromNode = thought.causalGraph.nodes.find(n => n.id === edge.from);\r\n const toNode = thought.causalGraph.nodes.find(n => n.id === edge.to);\r\n const strength = edge.strength !== undefined ? ` (strength: ${edge.strength.toFixed(2)})` : '';\r\n ascii += ` ${fromNode?.name} --> ${toNode?.name}${strength}\\n`;\r\n }\r\n\r\n return ascii;\r\n }\r\n\r\n // ===== Temporal Timeline Exporters =====\r\n\r\n private timelineToMermaidGantt(thought: TemporalThought, includeLabels: boolean): string {\r\n let gantt = 'gantt\\n';\r\n gantt += ` title ${thought.timeline?.name || 'Timeline'}\\n`;\r\n gantt += ' dateFormat X\\n';\r\n gantt += ' axisFormat %s\\n\\n';\r\n\r\n if (!thought.events || thought.events.length === 0) {\r\n return gantt + ' No events\\n';\r\n }\r\n\r\n // Group events into sections if possible\r\n gantt += ' section Events\\n';\r\n\r\n for (const event of thought.events) {\r\n const label = includeLabels ? event.name : event.id;\r\n\r\n if (event.type === 'instant') {\r\n gantt += ` ${label} :milestone, ${event.timestamp}, 0s\\n`;\r\n } else if (event.type === 'interval' && event.duration) {\r\n gantt += ` ${label} :${event.timestamp}, ${event.duration}s\\n`;\r\n }\r\n }\r\n\r\n return gantt;\r\n }\r\n\r\n private timelineToDOT(thought: TemporalThought, includeLabels: boolean): string {\r\n let dot = 'digraph Timeline {\\n';\r\n dot += ' rankdir=LR;\\n';\r\n dot += ' node [shape=box];\\n\\n';\r\n\r\n if (!thought.events) {\r\n dot += '}\\n';\r\n return dot;\r\n }\r\n\r\n // Sort events by timestamp\r\n const sortedEvents = [...thought.events].sort((a, b) => a.timestamp - b.timestamp);\r\n\r\n // Add nodes\r\n for (const event of sortedEvents) {\r\n const nodeId = this.sanitizeId(event.id);\r\n const label = includeLabels ? `${event.name}\\\\n(t=${event.timestamp})` : nodeId;\r\n const shape = event.type === 'instant' ? 'ellipse' : 'box';\r\n\r\n dot += ` ${nodeId} [label=\"${label}\", shape=${shape}];\\n`;\r\n }\r\n\r\n dot += '\\n';\r\n\r\n // Connect sequential events\r\n for (let i = 0; i < sortedEvents.length - 1; i++) {\r\n const from = this.sanitizeId(sortedEvents[i].id);\r\n const to = this.sanitizeId(sortedEvents[i + 1].id);\r\n dot += ` ${from} -> ${to};\\n`;\r\n }\r\n\r\n // Add temporal relations if they exist\r\n if (thought.relations) {\r\n dot += '\\n // Causal relations\\n';\r\n for (const rel of thought.relations) {\r\n const from = this.sanitizeId(rel.from);\r\n const to = this.sanitizeId(rel.to);\r\n dot += ` ${from} -> ${to} [style=dashed, label=\"${rel.relationType}\"];\\n`;\r\n }\r\n }\r\n\r\n dot += '}\\n';\r\n return dot;\r\n }\r\n\r\n private timelineToASCII(thought: TemporalThought): string {\r\n let ascii = `Timeline: ${thought.timeline?.name || 'Untitled'}\\n`;\r\n ascii += '='.repeat(40) + '\\n\\n';\r\n\r\n if (!thought.events || thought.events.length === 0) {\r\n return ascii + 'No events\\n';\r\n }\r\n\r\n // Sort events by timestamp\r\n const sortedEvents = [...thought.events].sort((a, b) => a.timestamp - b.timestamp);\r\n\r\n for (const event of sortedEvents) {\r\n const marker = event.type === 'instant' ? '⦿' : '━';\r\n ascii += `t=${event.timestamp.toString().padStart(4)} ${marker} ${event.name}\\n`;\r\n if (event.duration) {\r\n ascii += ` ${'└'.padStart(5)}→ duration: ${event.duration}\\n`;\r\n }\r\n }\r\n\r\n return ascii;\r\n }\r\n\r\n // ===== Game Theory Exporters =====\r\n\r\n private gameTreeToMermaid(\r\n thought: GameTheoryThought,\r\n colorScheme: string,\r\n includeLabels: boolean,\r\n includeMetrics: boolean\r\n ): string {\r\n let mermaid = 'graph TD\\n';\r\n\r\n if (!thought.game) {\r\n return mermaid + ' root[No game defined]\\n';\r\n }\r\n\r\n // If we have a game tree structure, use it\r\n if (thought.gameTree && thought.gameTree.nodes) {\r\n for (const node of thought.gameTree.nodes) {\r\n const nodeId = this.sanitizeId(node.id);\r\n const label = includeLabels ? node.name : nodeId;\r\n\r\n // Terminal nodes use double boxes\r\n const shape = node.isTerminal ? ['[[', ']]'] : ['[', ']'];\r\n mermaid += ` ${nodeId}${shape[0]}${label}${shape[1]}\\n`;\r\n }\r\n\r\n mermaid += '\\n';\r\n\r\n for (const node of thought.gameTree.nodes) {\r\n if (node.childNodes && node.childNodes.length > 0) {\r\n for (const childId of node.childNodes) {\r\n const fromId = this.sanitizeId(node.id);\r\n const toId = this.sanitizeId(childId);\r\n\r\n // Find the child node to get its action\r\n const childNode = thought.gameTree.nodes.find(n => n.id === childId);\r\n\r\n if (includeMetrics && childNode?.action) {\r\n mermaid += ` ${fromId} --> |${childNode.action}| ${toId}\\n`;\r\n } else {\r\n mermaid += ` ${fromId} --> ${toId}\\n`;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n // Fallback: show strategies as a simple tree\r\n mermaid += ' root[Game]\\n';\r\n if (thought.strategies) {\r\n for (const strategy of thought.strategies.slice(0, 5)) {\r\n const stratId = this.sanitizeId(strategy.id);\r\n mermaid += ` root --> ${stratId}[${strategy.name}]\\n`;\r\n }\r\n }\r\n }\r\n\r\n return mermaid;\r\n }\r\n\r\n private gameTreeToDOT(\r\n thought: GameTheoryThought,\r\n includeLabels: boolean,\r\n includeMetrics: boolean\r\n ): string {\r\n let dot = 'digraph GameTree {\\n';\r\n dot += ' rankdir=TD;\\n';\r\n dot += ' node [shape=circle];\\n\\n';\r\n\r\n if (!thought.game) {\r\n dot += ' root [label=\"No game\"];\\n}\\n';\r\n return dot;\r\n }\r\n\r\n if (thought.gameTree && thought.gameTree.nodes) {\r\n for (const node of thought.gameTree.nodes) {\r\n const nodeId = this.sanitizeId(node.id);\r\n const label = includeLabels ? node.name : nodeId;\r\n const shape = node.isTerminal ? 'doublecircle' : 'circle';\r\n\r\n dot += ` ${nodeId} [label=\"${label}\", shape=${shape}];\\n`;\r\n }\r\n\r\n dot += '\\n';\r\n\r\n for (const node of thought.gameTree.nodes) {\r\n if (node.childNodes && node.childNodes.length > 0) {\r\n for (const childId of node.childNodes) {\r\n const fromId = this.sanitizeId(node.id);\r\n const toId = this.sanitizeId(childId);\r\n\r\n // Find the child node to get its action\r\n const childNode = thought.gameTree.nodes.find(n => n.id === childId);\r\n\r\n if (includeMetrics && childNode?.action) {\r\n dot += ` ${fromId} -> ${toId} [label=\"${childNode.action}\"];\\n`;\r\n } else {\r\n dot += ` ${fromId} -> ${toId};\\n`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n dot += '}\\n';\r\n return dot;\r\n }\r\n\r\n private gameTreeToASCII(thought: GameTheoryThought): string {\r\n let ascii = `Game: ${thought.game?.name || 'Untitled'}\\n`;\r\n ascii += '='.repeat(40) + '\\n\\n';\r\n\r\n if (thought.strategies && thought.strategies.length > 0) {\r\n ascii += 'Strategies:\\n';\r\n for (const strategy of thought.strategies) {\r\n ascii += ` • ${strategy.name} (${strategy.type})\\n`;\r\n }\r\n }\r\n\r\n if (thought.equilibria && thought.equilibria.length > 0) {\r\n ascii += '\\nEquilibria:\\n';\r\n for (const eq of thought.equilibria) {\r\n ascii += ` ⚖ ${eq.type}: ${eq.strategyProfile.join(', ')}\\n`;\r\n ascii += ` Payoffs: [${eq.payoffs.join(', ')}]\\n`;\r\n }\r\n }\r\n\r\n return ascii;\r\n }\r\n\r\n // ===== Bayesian Network Exporters =====\r\n\r\n private bayesianToMermaid(\r\n thought: BayesianThought,\r\n colorScheme: string,\r\n includeLabels: boolean,\r\n includeMetrics: boolean\r\n ): string {\r\n let mermaid = 'graph LR\\n';\r\n\r\n // Create nodes for hypothesis, prior, evidence, posterior\r\n mermaid += ` H([Hypothesis])\\n`;\r\n mermaid += ` Prior[Prior: ${includeMetrics ? thought.prior.probability.toFixed(3) : '?'}]\\n`;\r\n mermaid += ` Evidence[Evidence]\\n`;\r\n mermaid += ` Posterior[[Posterior: ${includeMetrics ? thought.posterior.probability.toFixed(3) : '?'}]]\\n`;\r\n\r\n mermaid += '\\n';\r\n mermaid += ' Prior --> H\\n';\r\n mermaid += ' Evidence --> H\\n';\r\n mermaid += ' H --> Posterior\\n';\r\n\r\n // Add styling\r\n if (colorScheme !== 'monochrome') {\r\n mermaid += '\\n';\r\n const priorColor = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\r\n const posteriorColor = colorScheme === 'pastel' ? '#c8e6c9' : '#81c784';\r\n\r\n mermaid += ` style Prior fill:${priorColor}\\n`;\r\n mermaid += ` style Posterior fill:${posteriorColor}\\n`;\r\n }\r\n\r\n return mermaid;\r\n }\r\n\r\n private bayesianToDOT(\r\n thought: BayesianThought,\r\n includeLabels: boolean,\r\n includeMetrics: boolean\r\n ): string {\r\n let dot = 'digraph BayesianNetwork {\\n';\r\n dot += ' rankdir=LR;\\n';\r\n dot += ' node [shape=ellipse];\\n\\n';\r\n\r\n const priorProb = includeMetrics ? `: ${thought.prior.probability.toFixed(3)}` : '';\r\n const posteriorProb = includeMetrics ? `: ${thought.posterior.probability.toFixed(3)}` : '';\r\n\r\n dot += ` Prior [label=\"Prior${priorProb}\"];\\n`;\r\n dot += ` Hypothesis [label=\"Hypothesis\", shape=box];\\n`;\r\n dot += ` Evidence [label=\"Evidence\"];\\n`;\r\n dot += ` Posterior [label=\"Posterior${posteriorProb}\", shape=doublecircle];\\n`;\r\n\r\n dot += '\\n';\r\n dot += ' Prior -> Hypothesis;\\n';\r\n dot += ' Evidence -> Hypothesis;\\n';\r\n dot += ' Hypothesis -> Posterior;\\n';\r\n\r\n dot += '}\\n';\r\n return dot;\r\n }\r\n\r\n private bayesianToASCII(thought: BayesianThought): string {\r\n let ascii = 'Bayesian Network:\\n';\r\n ascii += '=================\\n\\n';\r\n\r\n ascii += `Hypothesis: ${thought.hypothesis.statement}\\n\\n`;\r\n ascii += `Prior Probability: ${thought.prior.probability.toFixed(3)}\\n`;\r\n ascii += ` Justification: ${thought.prior.justification}\\n\\n`;\r\n\r\n if (thought.evidence && thought.evidence.length > 0) {\r\n ascii += 'Evidence:\\n';\r\n for (const ev of thought.evidence) {\r\n ascii += ` • ${ev.observation}\\n`;\r\n }\r\n ascii += '\\n';\r\n }\r\n\r\n ascii += `Posterior Probability: ${thought.posterior.probability.toFixed(3)}\\n`;\r\n ascii += ` Justification: ${thought.posterior.justification}\\n`;\r\n\r\n if (thought.bayesFactor !== undefined) {\r\n ascii += `\\nBayes Factor: ${thought.bayesFactor.toFixed(2)}\\n`;\r\n }\r\n\r\n return ascii;\r\n }\r\n\r\n // ===== Utility Methods =====\r\n\r\n /**\r\n * Sanitize ID for use in diagram formats\r\n */\r\n private sanitizeId(id: string): string {\r\n return id.replace(/[^a-zA-Z0-9_]/g, '_');\r\n }\r\n}\r\n","/**\r\n * Type guards for runtime type checking\r\n *\r\n * Provides safe type narrowing without using 'as any' assertions\r\n */\r\n\r\nimport { ExtendedThoughtType } from '../types/core.js';\r\n\r\n/**\r\n * Valid ExtendedThoughtType values\r\n */\r\nconst VALID_THOUGHT_TYPES: readonly ExtendedThoughtType[] = [\r\n 'problem_definition',\r\n 'constraints',\r\n 'model',\r\n 'proof',\r\n 'implementation',\r\n 'axiom_definition',\r\n 'theorem_statement',\r\n 'proof_construction',\r\n 'lemma_derivation',\r\n 'corollary',\r\n 'counterexample',\r\n 'algebraic_manipulation',\r\n 'symbolic_computation',\r\n 'numerical_analysis',\r\n 'symmetry_analysis',\r\n 'gauge_theory',\r\n 'field_equations',\r\n 'lagrangian',\r\n 'hamiltonian',\r\n 'conservation_law',\r\n 'dimensional_analysis',\r\n 'tensor_formulation',\r\n 'differential_geometry',\r\n 'decomposition',\r\n 'synthesis',\r\n 'abstraction',\r\n 'analogy',\r\n 'metacognition',\r\n] as const;\r\n\r\n/**\r\n * Type guard for ExtendedThoughtType\r\n *\r\n * @param value - Value to check\r\n * @returns true if value is a valid ExtendedThoughtType\r\n */\r\nexport function isExtendedThoughtType(value: unknown): value is ExtendedThoughtType {\r\n return typeof value === 'string' && VALID_THOUGHT_TYPES.includes(value as ExtendedThoughtType);\r\n}\r\n\r\n/**\r\n * Validate and cast to ExtendedThoughtType\r\n *\r\n * @param value - Value to validate\r\n * @param fallback - Fallback value if invalid (optional)\r\n * @returns Validated ExtendedThoughtType\r\n * @throws Error if value is invalid and no fallback provided\r\n */\r\nexport function toExtendedThoughtType(\r\n value: unknown,\r\n fallback?: ExtendedThoughtType\r\n): ExtendedThoughtType {\r\n if (isExtendedThoughtType(value)) {\r\n return value;\r\n }\r\n\r\n if (fallback !== undefined) {\r\n return fallback;\r\n }\r\n\r\n throw new Error(\r\n `Invalid ExtendedThoughtType: ${value}. Must be one of: ${VALID_THOUGHT_TYPES.join(', ')}`\r\n );\r\n}\r\n\r\n/**\r\n * Type guard for checking if value is a number\r\n */\r\nexport function isNumber(value: unknown): value is number {\r\n return typeof value === 'number' && !isNaN(value) && isFinite(value);\r\n}\r\n\r\n/**\r\n * Type guard for checking if value is a non-empty string\r\n */\r\nexport function isNonEmptyString(value: unknown): value is string {\r\n return typeof value === 'string' && value.length > 0;\r\n}\r\n\r\n/**\r\n * Type guard for checking if value is an array\r\n */\r\nexport function isArray<T>(value: unknown, itemGuard?: (item: unknown) => item is T): value is T[] {\r\n if (!Array.isArray(value)) {\r\n return false;\r\n }\r\n\r\n if (itemGuard) {\r\n return value.every(itemGuard);\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Type guard for checking if value is a plain object\r\n */\r\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\r\n return typeof value === 'object' && value !== null && !Array.isArray(value);\r\n}\r\n\r\n/**\r\n * Safe type cast with runtime validation\r\n *\r\n * @param value - Value to cast\r\n * @param guard - Type guard function\r\n * @param errorMessage - Error message if validation fails\r\n * @returns Validated value\r\n * @throws Error if validation fails\r\n */\r\nexport function safeCast<T>(\r\n value: unknown,\r\n guard: (value: unknown) => value is T,\r\n errorMessage: string\r\n): T {\r\n if (guard(value)) {\r\n return value;\r\n }\r\n throw new Error(errorMessage);\r\n}\r\n","#!/usr/bin/env node\r\n\r\n/**\r\n * DeepThinking MCP Server\r\n * Unified deep thinking server combining sequential, Shannon, and mathematical reasoning\r\n */\r\n\r\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\r\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\r\nimport {\r\n CallToolRequestSchema,\r\n ListToolsRequestSchema,\r\n} from '@modelcontextprotocol/sdk/types.js';\r\nimport { randomUUID } from 'crypto';\r\nimport { readFileSync } from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport { dirname, join } from 'path';\r\n\r\n// Import package.json for version sync\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = dirname(__filename);\r\nconst packageJson = JSON.parse(\r\n readFileSync(join(__dirname, '../package.json'), 'utf-8')\r\n);\r\n\r\nimport { thinkingTool, ThinkingToolInput, ThinkingToolSchema } from './tools/thinking.js';\r\nimport { SessionManager } from './session/index.js';\r\nimport {\r\n ThinkingMode,\r\n ShannonStage,\r\n SequentialThought,\r\n ShannonThought,\r\n MathematicsThought,\r\n PhysicsThought,\r\n HybridThought,\r\n AbductiveThought,\r\n CausalThought,\r\n BayesianThought,\r\n CounterfactualThought,\r\n AnalogicalThought,\r\n TemporalThought,\r\n GameTheoryThought,\r\n EvidentialThought,\r\n ModeRecommender,\r\n} from './types/index.js';\r\nimport { VisualExporter, type VisualFormat } from './export/visual.js';\r\nimport { toExtendedThoughtType } from './utils/type-guards.js';\r\n\r\nconst server = new Server(\r\n {\r\n name: packageJson.name,\r\n version: packageJson.version,\r\n },\r\n {\r\n capabilities: {\r\n tools: {},\r\n },\r\n }\r\n);\r\n\r\nconst sessionManager = new SessionManager();\r\n\r\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\r\n return {\r\n tools: [thinkingTool],\r\n };\r\n});\r\n\r\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\r\n const { name, arguments: args } = request.params;\r\n\r\n if (name === 'deepthinking') {\r\n try {\r\n const input = ThinkingToolSchema.parse(args) as ThinkingToolInput;\r\n\r\n switch (input.action) {\r\n case 'add_thought':\r\n return await handleAddThought(input);\r\n case 'summarize':\r\n return await handleSummarize(input);\r\n case 'export':\r\n return await handleExport(input);\r\n case 'switch_mode':\r\n return await handleSwitchMode(input);\r\n case 'get_session':\r\n return await handleGetSession(input);\r\n case 'recommend_mode':\r\n return await handleRecommendMode(input);\r\n default:\r\n throw new Error(`Unknown action: ${input.action}`);\r\n }\r\n } catch (error) {\r\n return {\r\n content: [\r\n {\r\n type: 'text',\r\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\r\n },\r\n ],\r\n isError: true,\r\n };\r\n }\r\n }\r\n\r\n throw new Error(`Unknown tool: ${name}`);\r\n});\r\n\r\nasync function handleAddThought(input: ThinkingToolInput) {\r\n let sessionId = input.sessionId;\r\n if (!sessionId) {\r\n const session = await sessionManager.createSession({\r\n mode: input.mode as ThinkingMode,\r\n title: `Thinking Session ${new Date().toISOString()}`,\r\n });\r\n sessionId = session.id;\r\n }\r\n\r\n const thought = createThought(input, sessionId);\r\n const session = await sessionManager.addThought(sessionId, thought);\r\n\r\n return {\r\n content: [\r\n {\r\n type: 'text',\r\n text: JSON.stringify({\r\n sessionId: session.id,\r\n thoughtId: thought.id,\r\n thoughtNumber: thought.thoughtNumber,\r\n mode: thought.mode,\r\n nextThoughtNeeded: thought.nextThoughtNeeded,\r\n sessionComplete: session.isComplete,\r\n totalThoughts: session.thoughts.length,\r\n }, null, 2),\r\n },\r\n ],\r\n };\r\n}\r\n\r\nasync function handleSummarize(input: ThinkingToolInput) {\r\n if (!input.sessionId) {\r\n throw new Error('sessionId required for summarize action');\r\n }\r\n\r\n const summary = await sessionManager.generateSummary(input.sessionId);\r\n\r\n return {\r\n content: [\r\n {\r\n type: 'text',\r\n text: summary,\r\n },\r\n ],\r\n };\r\n}\r\n\r\nasync function handleExport(input: ThinkingToolInput) {\r\n if (!input.sessionId) {\r\n throw new Error('sessionId required for export action');\r\n }\r\n\r\n const session = await sessionManager.getSession(input.sessionId);\r\n if (!session) {\r\n throw new Error(`Session ${input.sessionId} not found`);\r\n }\r\n\r\n const format = input.exportFormat || 'json';\r\n\r\n // For visual formats, check if applicable and use VisualExporter\r\n if (format === 'mermaid' || format === 'dot' || format === 'ascii') {\r\n const visualExporter = new VisualExporter();\r\n const lastThought = session.thoughts[session.thoughts.length - 1];\r\n\r\n if (!lastThought) {\r\n throw new Error('No thoughts in session to export');\r\n }\r\n\r\n let exported: string;\r\n\r\n // Determine which visual export method to use based on mode\r\n if (lastThought.mode === 'causal' && 'causalGraph' in lastThought) {\r\n exported = visualExporter.exportCausalGraph(lastThought as CausalThought, {\r\n format: format as VisualFormat,\r\n colorScheme: 'default',\r\n includeLabels: true,\r\n includeMetrics: true,\r\n });\r\n } else if (lastThought.mode === 'temporal' && 'timeline' in lastThought) {\r\n exported = visualExporter.exportTemporalTimeline(lastThought as TemporalThought, {\r\n format: format as VisualFormat,\r\n includeLabels: true,\r\n });\r\n } else if (lastThought.mode === 'gametheory' && 'game' in lastThought) {\r\n exported = visualExporter.exportGameTree(lastThought as GameTheoryThought, {\r\n format: format as VisualFormat,\r\n colorScheme: 'default',\r\n includeLabels: true,\r\n includeMetrics: true,\r\n });\r\n } else if (lastThought.mode === 'bayesian' && 'hypothesis' in lastThought) {\r\n exported = visualExporter.exportBayesianNetwork(lastThought as BayesianThought, {\r\n format: format as VisualFormat,\r\n colorScheme: 'default',\r\n includeLabels: true,\r\n includeMetrics: true,\r\n });\r\n } else {\r\n throw new Error(`Visual export not supported for mode: ${lastThought.mode}`);\r\n }\r\n\r\n return {\r\n content: [{\r\n type: 'text' as const,\r\n text: exported,\r\n }],\r\n };\r\n }\r\n\r\n // Standard exports (json, markdown, latex, html, jupyter)\r\n const sessionWithCustomMetrics = {\r\n ...session,\r\n metrics: {\r\n ...session.metrics,\r\n customMetrics: Object.fromEntries(session.metrics.customMetrics),\r\n },\r\n };\r\n\r\n let exported: string;\r\n\r\n switch (format) {\r\n case 'json':\r\n exported = JSON.stringify(sessionWithCustomMetrics, null, 2);\r\n break;\r\n case 'markdown':\r\n exported = exportToMarkdown(sessionWithCustomMetrics);\r\n break;\r\n case 'latex':\r\n exported = exportToLatex(sessionWithCustomMetrics);\r\n break;\r\n case 'html':\r\n exported = exportToHTML(sessionWithCustomMetrics);\r\n break;\r\n case 'jupyter':\r\n exported = exportToJupyter(sessionWithCustomMetrics);\r\n break;\r\n default:\r\n exported = JSON.stringify(sessionWithCustomMetrics, null, 2);\r\n }\r\n\r\n return {\r\n content: [{\r\n type: 'text' as const,\r\n text: exported,\r\n }],\r\n };\r\n}\r\n\r\n\r\nasync function handleSwitchMode(input: ThinkingToolInput) {\r\n if (!input.sessionId || !input.newMode) {\r\n throw new Error('sessionId and newMode required for switch_mode action');\r\n }\r\n\r\n const session = await sessionManager.switchMode(\r\n input.sessionId,\r\n input.newMode as ThinkingMode,\r\n 'User requested mode switch'\r\n );\r\n\r\n return {\r\n content: [\r\n {\r\n type: 'text',\r\n text: `Switched session ${session.id} to ${session.mode} mode`,\r\n },\r\n ],\r\n };\r\n}\r\n\r\nasync function handleGetSession(input: ThinkingToolInput) {\r\n if (!input.sessionId) {\r\n throw new Error('sessionId required for get_session action');\r\n }\r\n\r\n const session = await sessionManager.getSession(input.sessionId);\r\n if (!session) {\r\n throw new Error(`Session ${input.sessionId} not found`);\r\n }\r\n\r\n // Convert Map to object for JSON serialization\r\n const metricsWithCustom = {\r\n ...session.metrics,\r\n customMetrics: Object.fromEntries(session.metrics.customMetrics),\r\n };\r\n\r\n return {\r\n content: [\r\n {\r\n type: 'text',\r\n text: JSON.stringify({\r\n id: session.id,\r\n title: session.title,\r\n mode: session.mode,\r\n thoughtCount: session.thoughts.length,\r\n isComplete: session.isComplete,\r\n metrics: metricsWithCustom,\r\n }, null, 2),\r\n },\r\n ],\r\n };\r\n}\r\n\r\nfunction createThought(input: ThinkingToolInput, sessionId: string) {\r\n const baseThought = {\r\n id: randomUUID(),\r\n sessionId,\r\n thoughtNumber: input.thoughtNumber,\r\n totalThoughts: input.totalThoughts,\r\n content: input.thought,\r\n timestamp: new Date(),\r\n nextThoughtNeeded: input.nextThoughtNeeded,\r\n isRevision: input.isRevision,\r\n revisesThought: input.revisesThought,\r\n };\r\n\r\n switch (input.mode) {\r\n case 'sequential':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.SEQUENTIAL,\r\n revisionReason: input.revisionReason,\r\n branchFrom: input.branchFrom,\r\n branchId: input.branchId,\r\n } as SequentialThought;\r\n\r\n case 'shannon':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.SHANNON,\r\n stage: (input.stage as ShannonStage) || ShannonStage.PROBLEM_DEFINITION,\r\n uncertainty: input.uncertainty || 0.5,\r\n dependencies: input.dependencies || [],\r\n assumptions: input.assumptions || [],\r\n } as ShannonThought;\r\n\r\n case 'mathematics':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.MATHEMATICS,\r\n thoughtType: toExtendedThoughtType(input.thoughtType, 'model'),\r\n mathematicalModel: input.mathematicalModel,\r\n proofStrategy: input.proofStrategy,\r\n dependencies: input.dependencies || [],\r\n assumptions: input.assumptions || [],\r\n uncertainty: input.uncertainty || 0.5,\r\n } as MathematicsThought;\r\n\r\n case 'physics':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.PHYSICS,\r\n thoughtType: toExtendedThoughtType(input.thoughtType, 'model'),\r\n tensorProperties: input.tensorProperties,\r\n physicalInterpretation: input.physicalInterpretation,\r\n dependencies: input.dependencies || [],\r\n assumptions: input.assumptions || [],\r\n uncertainty: input.uncertainty || 0.5,\r\n } as PhysicsThought;\r\n\r\n case 'abductive':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.ABDUCTIVE,\r\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\r\n observations: input.observations || [],\r\n hypotheses: input.hypotheses || [],\r\n evaluationCriteria: input.evaluationCriteria,\r\n evidence: input.evidence || [],\r\n bestExplanation: input.bestExplanation,\r\n } as AbductiveThought;\r\n\r\n case 'causal':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.CAUSAL,\r\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\r\n causalGraph: input.causalGraph,\r\n interventions: input.interventions || [],\r\n mechanisms: input.mechanisms || [],\r\n confounders: input.confounders || [],\r\n } as CausalThought;\r\n\r\n case 'bayesian':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.BAYESIAN,\r\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\r\n hypothesis: input.hypothesis,\r\n prior: input.prior,\r\n likelihood: input.likelihood,\r\n evidence: input.evidence || [],\r\n posterior: input.posterior,\r\n bayesFactor: input.bayesFactor,\r\n } as unknown as BayesianThought;\r\n\r\n case 'counterfactual':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.COUNTERFACTUAL,\r\n thoughtType: toExtendedThoughtType(input.thoughtType, 'problem_definition'),\r\n actual: input.actual,\r\n counterfactuals: input.counterfactuals || [],\r\n comparison: input.comparison,\r\n interventionPoint: input.interventionPoint,\r\n causalChains: input.causalChains || [],\r\n } as CounterfactualThought;\r\n\r\n case 'analogical':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.ANALOGICAL,\r\n thoughtType: toExtendedThoughtType(input.thoughtType, 'analogy'),\r\n sourceDomain: input.sourceDomain,\r\n targetDomain: input.targetDomain,\r\n mapping: input.mapping || [],\r\n insights: input.insights || [],\r\n inferences: input.inferences || [],\r\n limitations: input.limitations || [],\r\n analogyStrength: input.analogyStrength,\r\n } as unknown as AnalogicalThought;\r\n\r\n case 'temporal':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.TEMPORAL,\r\n thoughtType: input.thoughtType || 'event_definition',\r\n timeline: input.timeline,\r\n events: input.events || [],\r\n intervals: input.intervals || [],\r\n constraints: input.constraints || [],\r\n relations: input.relations || [],\r\n } as unknown as TemporalThought;\r\n\r\n case 'gametheory':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.GAMETHEORY,\r\n thoughtType: input.thoughtType || 'game_definition',\r\n game: input.game,\r\n players: input.players || [],\r\n strategies: input.strategies || [],\r\n payoffMatrix: input.payoffMatrix,\r\n nashEquilibria: input.nashEquilibria || [],\r\n dominantStrategies: input.dominantStrategies || [],\r\n gameTree: input.gameTree,\r\n } as unknown as GameTheoryThought;\r\n\r\n case 'evidential':\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.EVIDENTIAL,\r\n thoughtType: input.thoughtType || 'hypothesis_definition',\r\n frameOfDiscernment: input.frameOfDiscernment,\r\n hypotheses: input.hypotheses || [],\r\n evidence: input.evidence || [],\r\n beliefFunctions: input.beliefFunctions || [],\r\n combinedBelief: input.combinedBelief,\r\n plausibility: input.plausibility,\r\n decisions: input.decisions || [],\r\n } as unknown as EvidentialThought;\r\n\r\n case 'hybrid':\r\n default:\r\n return {\r\n ...baseThought,\r\n mode: ThinkingMode.HYBRID,\r\n thoughtType: toExtendedThoughtType(input.thoughtType, 'synthesis'),\r\n stage: input.stage as ShannonStage,\r\n uncertainty: input.uncertainty,\r\n dependencies: input.dependencies,\r\n assumptions: input.assumptions,\r\n mathematicalModel: input.mathematicalModel,\r\n tensorProperties: input.tensorProperties,\r\n physicalInterpretation: input.physicalInterpretation,\r\n primaryMode: (input.mode || ThinkingMode.HYBRID) as any,\r\n secondaryFeatures: [],\r\n } as unknown as HybridThought;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Handle mode recommendation requests\r\n */\r\nasync function handleRecommendMode(input: ThinkingToolInput) {\r\n const recommender = new ModeRecommender();\r\n \r\n // Quick recommendation based on problem type\r\n if (input.problemType && !input.problemCharacteristics) {\r\n const recommendedMode = recommender.quickRecommend(input.problemType);\r\n \r\n return {\r\n content: [{\r\n type: 'text' as const,\r\n text: `Quick recommendation for \"${input.problemType}\":\\n\\n**Recommended Mode**: ${recommendedMode}\\n\\nFor more detailed recommendations, provide problemCharacteristics.`\r\n }],\r\n isError: false,\r\n };\r\n }\r\n \r\n // Comprehensive recommendations based on problem characteristics\r\n if (input.problemCharacteristics) {\r\n const modeRecs = recommender.recommendModes(input.problemCharacteristics);\r\n const combinationRecs = input.includeCombinations \r\n ? recommender.recommendCombinations(input.problemCharacteristics)\r\n : [];\r\n \r\n let response = '# Mode Recommendations\\n\\n';\r\n \r\n // Single mode recommendations\r\n response += '## Individual Modes\\n\\n';\r\n for (const rec of modeRecs) {\r\n response += `### ${rec.mode} (Score: ${rec.score})\\n`;\r\n response += `**Reasoning**: ${rec.reasoning}\\n\\n`;\r\n response += `**Strengths**:\\n`;\r\n for (const strength of rec.strengths) {\r\n response += `- ${strength}\\n`;\r\n }\r\n response += `\\n**Limitations**:\\n`;\r\n for (const limitation of rec.limitations) {\r\n response += `- ${limitation}\\n`;\r\n }\r\n response += `\\n**Examples**: ${rec.examples.join(', ')}\\n\\n`;\r\n response += '---\\n\\n';\r\n }\r\n \r\n // Mode combinations\r\n if (combinationRecs.length > 0) {\r\n response += '## Recommended Mode Combinations\\n\\n';\r\n for (const combo of combinationRecs) {\r\n response += `### ${combo.modes.join(' + ')} (${combo.sequence})\\n`;\r\n response += `**Rationale**: ${combo.rationale}\\n\\n`;\r\n response += `**Benefits**:\\n`;\r\n for (const benefit of combo.benefits) {\r\n response += `- ${benefit}\\n`;\r\n }\r\n response += `\\n**Synergies**:\\n`;\r\n for (const synergy of combo.synergies) {\r\n response += `- ${synergy}\\n`;\r\n }\r\n response += '\\n---\\n\\n';\r\n }\r\n }\r\n \r\n return {\r\n content: [{\r\n type: 'text' as const,\r\n text: response\r\n }],\r\n isError: false,\r\n };\r\n }\r\n \r\n // No valid input provided\r\n return {\r\n content: [{\r\n type: 'text' as const,\r\n text: 'Error: Please provide either problemType or problemCharacteristics for mode recommendations.'\r\n }],\r\n isError: true,\r\n };\r\n}\r\n\r\n\r\n// Helper export functions\r\nfunction exportToMarkdown(session: any): string {\r\n let md = `# Thinking Session: ${session.id}\r\n\r\n`;\r\n md += `**Mode**: ${session.mode}\r\n`;\r\n md += `**Created**: ${session.createdAt}\r\n`;\r\n md += `**Status**: ${session.status}\r\n\r\n`;\r\n md += `## Thoughts\r\n\r\n`;\r\n\r\n for (const thought of session.thoughts) {\r\n md += `### Thought ${thought.thoughtNumber}/${session.thoughts.length}\r\n\r\n`;\r\n md += `${thought.content}\r\n\r\n`;\r\n }\r\n\r\n return md;\r\n}\r\n\r\nfunction exportToLatex(session: any): string {\r\n let latex = `\\\\documentclass{article}\r\n`;\r\n latex += `\\\\title{Thinking Session: ${session.id}}\r\n`;\r\n latex += `\\\\begin{document}\r\n`;\r\n latex += `\\\\maketitle\r\n\r\n`;\r\n latex += `\\\\section{Session Details}\r\n`;\r\n latex += `Mode: ${session.mode}\\\\\\\\\r\n`;\r\n latex += `Status: ${session.status}\\\\\\\\\r\n\r\n`;\r\n latex += `\\\\section{Thoughts}\r\n`;\r\n\r\n for (const thought of session.thoughts) {\r\n latex += `\\\\subsection{Thought ${thought.thoughtNumber}}\r\n`;\r\n latex += `${thought.content}\r\n\r\n`;\r\n }\r\n\r\n latex += `\\\\end{document}\r\n`;\r\n return latex;\r\n}\r\n\r\nfunction exportToHTML(session: any): string {\r\n let html = `<!DOCTYPE html>\r\n<html>\r\n<head>\r\n`;\r\n html += ` <title>Thinking Session: ${session.id}</title>\r\n`;\r\n html += ` <style>body { font-family: Arial, sans-serif; max-width: 800px; margin: 50px auto; }</style>\r\n`;\r\n html += `</head>\r\n<body>\r\n`;\r\n html += ` <h1>Thinking Session: ${session.id}</h1>\r\n`;\r\n html += ` <p><strong>Mode:</strong> ${session.mode}</p>\r\n`;\r\n html += ` <p><strong>Status:</strong> ${session.status}</p>\r\n`;\r\n html += ` <h2>Thoughts</h2>\r\n`;\r\n\r\n for (const thought of session.thoughts) {\r\n html += ` <div>\r\n`;\r\n html += ` <h3>Thought ${thought.thoughtNumber}/${session.thoughts.length}</h3>\r\n`;\r\n html += ` <p>${thought.content}</p>\r\n`;\r\n html += ` </div>\r\n`;\r\n }\r\n\r\n html += `</body>\r\n</html>\r\n`;\r\n return html;\r\n}\r\n\r\nfunction exportToJupyter(session: any): string {\r\n const notebook = {\r\n cells: [] as any[],\r\n metadata: {},\r\n nbformat: 4,\r\n nbformat_minor: 2,\r\n };\r\n\r\n // Add title cell\r\n notebook.cells.push({\r\n cell_type: 'markdown',\r\n metadata: {},\r\n source: [`# Thinking Session: ${session.id}\r\n`, `\r\n`, `**Mode**: ${session.mode} \r\n`, `**Status**: ${session.status}\r\n`],\r\n });\r\n\r\n // Add thought cells\r\n for (const thought of session.thoughts) {\r\n notebook.cells.push({\r\n cell_type: 'markdown',\r\n metadata: {},\r\n source: [`## Thought ${thought.thoughtNumber}/${session.thoughts.length}\r\n`, `\r\n`, `${thought.content}\r\n`],\r\n });\r\n }\r\n\r\n return JSON.stringify(notebook, null, 2);\r\n}\r\n\r\nasync function main() {\r\n const transport = new StdioServerTransport();\r\n await server.connect(transport);\r\n console.error('DeepThinking MCP server running on stdio');\r\n}\r\n\r\nmain().catch((error) => {\r\n console.error('Fatal error:', error);\r\n process.exit(1);\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/tools/thinking.ts","../src/types/core.ts","../src/types/modes/recommendations.ts","../src/utils/errors.ts","../src/utils/sanitization.ts","../src/utils/logger.ts","../src/config/index.ts","../src/validation/cache.ts","../src/session/manager.ts","../src/export/visual.ts","../src/utils/type-guards.ts","../src/index.ts"],"names":["LogLevel","DEFAULT_CONFIG","__filename","__dirname","session","exported","randomUUID"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Unified thinking tool for DeepThinking MCP v2.1+\n * Supports 13 thinking modes\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', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential', 'firstprinciple']).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 // Abductive reasoning properties (v2.0)\n observations: z.array(z.object({\n id: z.string(),\n description: z.string(),\n confidence: z.number().min(0).max(1),\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.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 reasoning properties (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 })).optional(),\n derivationSteps: z.array(z.object({\n stepNumber: z.number(),\n principle: 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 }),\n inference: z.string(),\n logicalForm: z.string().optional(),\n confidence: z.number().min(0).max(1),\n })).optional(),\n conclusion: z.object({\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 }).optional(),\n alternativeInterpretations: z.array(z.string()).optional(),\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', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential', 'firstprinciple']).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 * Tool definition using plain JSON Schema (MCP standard format)\n */\nexport const thinkingTool = {\n name: 'deepthinking',\n description: `Advanced deep thinking tool supporting 13 reasoning modes:\n\nCore Modes:\n- sequential: Iterative refinement and exploration\n- shannon: Systematic 5-stage problem-solving\n- mathematics: Theorem proving and symbolic reasoning\n- physics: Tensor mathematics and field theory\n- hybrid: Intelligently combines multiple approaches\n\nAdvanced Modes (v2.0):\n- abductive: Inference to the best explanation, hypothesis generation\n- causal: Cause-effect analysis with causal graphs\n- bayesian: Probabilistic reasoning with evidence updates\n- counterfactual: What-if scenario analysis\n- analogical: Cross-domain pattern matching and insights\n\nPhase 3 Modes (v2.1+):\n- temporal: Event timelines, temporal constraints, causal relations over time\n- gametheory: Nash equilibria, strategic analysis, payoff matrices\n- evidential: Dempster-Shafer theory, belief functions, evidence combination\n\nActions:\n- add_thought: Add a new thought to the session (default)\n- summarize: Generate a summary of the session\n- export: Export session in various formats (markdown, latex, json, html, jupyter, mermaid, dot, ascii)\n- switch_mode: Change reasoning mode mid-session\n- get_session: Retrieve session information\n- recommend_mode: Get intelligent mode recommendations based on problem characteristics\n\nMode Recommendations (v2.4):\nUse action 'recommend_mode' with either:\n • problemType: Quick recommendation (e.g., 'debugging', 'proof', 'timeline', 'strategy')\n • problemCharacteristics: Detailed analysis with 10 dimensions (domain, complexity, uncertainty, etc.)\n • includeCombinations: Set to true for synergistic mode combination suggestions\n\nChoose the mode that best fits your problem type, or use recommend_mode to get intelligent suggestions.`,\n inputSchema: {\n type: \"object\",\n properties: {\n sessionId: {\n type: \"string\",\n description: \"Session ID (creates new if omitted)\"\n },\n mode: {\n type: \"string\",\n enum: [\"sequential\", \"shannon\", \"mathematics\", \"physics\", \"hybrid\", \"abductive\", \"causal\", \"bayesian\", \"counterfactual\", \"analogical\", \"temporal\", \"gametheory\", \"evidential\"],\n description: \"Thinking mode to use\"\n },\n thought: {\n type: \"string\",\n description: \"The thought content\"\n },\n thoughtNumber: {\n type: \"integer\",\n minimum: 1,\n description: \"Position in sequence\"\n },\n totalThoughts: {\n type: \"integer\",\n minimum: 1,\n description: \"Estimated total thoughts\"\n },\n nextThoughtNeeded: {\n type: \"boolean\",\n description: \"Should thinking continue?\"\n },\n isRevision: {\n type: \"boolean\",\n description: \"Whether this revises previous thinking\"\n },\n revisesThought: {\n type: \"string\",\n description: \"Which thought is being reconsidered\"\n },\n revisionReason: {\n type: \"string\",\n description: \"Reason for revision\"\n },\n branchFrom: {\n type: \"string\",\n description: \"Branching point thought\"\n },\n branchId: {\n type: \"string\",\n description: \"Branch identifier\"\n },\n stage: {\n type: \"string\",\n enum: [\"problem_definition\", \"constraints\", \"model\", \"proof\", \"implementation\"],\n description: \"Shannon methodology stage\"\n },\n uncertainty: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Uncertainty level (0-1)\"\n },\n dependencies: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Dependencies on other thoughts\"\n },\n assumptions: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Assumptions made\"\n },\n thoughtType: {\n type: \"string\",\n description: \"Type of mathematical thought\"\n },\n mathematicalModel: {\n type: \"object\",\n properties: {\n latex: { type: \"string\", description: \"LaTeX representation\" },\n symbolic: { type: \"string\", description: \"Symbolic representation\" },\n ascii: { type: \"string\", description: \"ASCII representation\" }\n },\n required: [\"latex\", \"symbolic\"]\n },\n proofStrategy: {\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"direct\", \"contradiction\", \"induction\", \"construction\", \"contrapositive\"]\n },\n steps: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n required: [\"type\", \"steps\"]\n },\n tensorProperties: {\n type: \"object\",\n properties: {\n rank: {\n type: \"array\",\n items: { type: \"number\" },\n minItems: 2,\n maxItems: 2\n },\n components: { type: \"string\" },\n latex: { type: \"string\" },\n symmetries: {\n type: \"array\",\n items: { type: \"string\" }\n },\n invariants: {\n type: \"array\",\n items: { type: \"string\" }\n },\n transformation: {\n type: \"string\",\n enum: [\"covariant\", \"contravariant\", \"mixed\"]\n }\n },\n required: [\"rank\", \"components\", \"latex\", \"symmetries\", \"invariants\", \"transformation\"]\n },\n physicalInterpretation: {\n type: \"object\",\n properties: {\n quantity: { type: \"string\" },\n units: { type: \"string\" },\n conservationLaws: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n required: [\"quantity\", \"units\", \"conservationLaws\"]\n },\n // Temporal reasoning properties (Phase 3, v2.1)\n timeline: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n timeUnit: {\n type: \"string\",\n enum: [\"milliseconds\", \"seconds\", \"minutes\", \"hours\", \"days\", \"months\", \"years\"],\n description: \"Time unit for the timeline\"\n },\n startTime: { type: \"number\", description: \"Optional start time\" },\n endTime: { type: \"number\", description: \"Optional end time\" },\n events: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Event IDs in this timeline\"\n }\n },\n required: [\"id\", \"name\", \"timeUnit\", \"events\"],\n description: \"Timeline structure for temporal reasoning\"\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\" },\n duration: { type: \"number\", description: \"Duration for interval events\" },\n type: {\n type: \"string\",\n enum: [\"instant\", \"interval\"],\n description: \"Event type\"\n },\n properties: {\n type: \"object\",\n description: \"Additional event properties\"\n }\n },\n required: [\"id\", \"name\", \"description\", \"timestamp\", \"type\", \"properties\"]\n },\n description: \"Temporal events\"\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 time\" },\n end: { type: \"number\", description: \"Interval end time\" },\n overlaps: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"IDs of overlapping intervals\"\n },\n contains: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"IDs of contained intervals\"\n }\n },\n required: [\"id\", \"name\", \"start\", \"end\"]\n },\n description: \"Time intervals with Allen's algebra relationships\"\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\", \"overlaps\", \"meets\", \"starts\", \"finishes\", \"equals\"],\n description: \"Allen's interval algebra constraint type\"\n },\n subject: { type: \"string\", description: \"Subject event/interval ID\" },\n object: { type: \"string\", description: \"Object event/interval ID\" },\n confidence: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Confidence in constraint (0-1)\"\n }\n },\n required: [\"id\", \"type\", \"subject\", \"object\", \"confidence\"]\n },\n description: \"Temporal constraints using Allen's interval algebra\"\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: [\"causes\", \"enables\", \"prevents\", \"precedes\", \"follows\"],\n description: \"Type of temporal relation\"\n },\n strength: {\n type: \"number\",\n minimum: 0,\n maximum: 1,\n description: \"Relation strength (0-1)\"\n },\n delay: { type: \"number\", description: \"Optional time delay between events\" }\n },\n required: [\"id\", \"from\", \"to\", \"relationType\", \"strength\"]\n },\n description: \"Temporal causal/enabling relations\"\n },\n // Game theory properties (Phase 3, v2.2)\n players: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n name: { type: \"string\" },\n role: { type: \"string\" },\n isRational: { type: \"boolean\" },\n availableStrategies: {\n type: \"array\",\n items: { type: \"string\" }\n }\n },\n required: [\"id\", \"name\", \"isRational\", \"availableStrategies\"]\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\" },\n name: { type: \"string\" },\n description: { type: \"string\" },\n isPure: { type: \"boolean\" },\n probability: { type: \"number\", minimum: 0, maximum: 1 }\n },\n required: [\"id\", \"playerId\", \"name\", \"description\", \"isPure\"]\n },\n description: \"Available strategies\"\n },\n payoffMatrix: {\n type: \"object\",\n properties: {\n players: {\n type: \"array\",\n items: { type: \"string\" }\n },\n dimensions: {\n type: \"array\",\n items: { type: \"number\" }\n },\n payoffs: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n strategyProfile: {\n type: \"array\",\n items: { type: \"string\" }\n },\n payoffs: {\n type: \"array\",\n items: { type: \"number\" }\n }\n },\n required: [\"strategyProfile\", \"payoffs\"]\n }\n }\n },\n required: [\"players\", \"dimensions\", \"payoffs\"],\n description: \"Payoff matrix for the game\"\n },\n // Evidential reasoning properties (Phase 3, v2.3)\n frameOfDiscernment: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Frame of discernment (set of all possible hypotheses)\"\n },\n beliefMasses: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n hypothesisSet: {\n type: \"array\",\n items: { type: \"string\" }\n },\n mass: {\n type: \"number\",\n minimum: 0,\n maximum: 1\n },\n justification: { type: \"string\" }\n },\n required: [\"hypothesisSet\", \"mass\", \"justification\"]\n },\n description: \"Belief mass assignments (Dempster-Shafer)\"\n },\n action: {\n type: \"string\",\n enum: [\"add_thought\", \"summarize\", \"export\", \"switch_mode\", \"get_session\", \"recommend_mode\"],\n description: \"Action to perform\"\n },\n exportFormat: {\n type: \"string\",\n enum: [\"markdown\", \"latex\", \"json\", \"html\", \"jupyter\", \"mermaid\", \"dot\", \"ascii\"],\n description: \"Export format\"\n },\n newMode: {\n type: \"string\",\n enum: [\"sequential\", \"shannon\", \"mathematics\", \"physics\", \"hybrid\", \"abductive\", \"causal\", \"bayesian\", \"counterfactual\", \"analogical\", \"temporal\", \"gametheory\", \"evidential\"],\n description: \"New mode for switch_mode action\"\n }\n,\n problemType: {\n type: \"string\",\n description: \"Simple problem type for quick recommendations (e.g., 'debugging', 'proof', 'timeline')\"\n },\n problemCharacteristics: {\n type: \"object\",\n properties: {\n domain: { type: \"string\", description: \"Problem domain\" },\n complexity: { type: \"string\", enum: [\"low\", \"medium\", \"high\"], description: \"Problem complexity\" },\n uncertainty: { type: \"string\", enum: [\"low\", \"medium\", \"high\"], description: \"Uncertainty level\" },\n timeDependent: { type: \"boolean\", description: \"Whether problem involves time sequences\" },\n multiAgent: { type: \"boolean\", description: \"Whether multiple agents interact\" },\n requiresProof: { type: \"boolean\", description: \"Whether formal proof is needed\" },\n requiresQuantification: { type: \"boolean\", description: \"Whether quantification 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 description: \"Detailed problem characteristics for comprehensive recommendations\"\n },\n includeCombinations: {\n type: \"boolean\",\n description: \"Whether to include mode combination suggestions\"\n }\n },\n required: [\"thought\", \"thoughtNumber\", \"totalThoughts\", \"nextThoughtNeeded\"]\n }\n};\n","/**\n * Core type definitions for the DeepThinking MCP server v2.1+\n * Supports 13 thinking modes: Sequential, Shannon, Mathematics, Physics, Hybrid,\n * Abductive, Causal, Bayesian, Counterfactual, Analogical, Temporal, GameTheory, Evidential\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 { FirstPrincipleThought } from './modes/firstprinciple.js';\n\n/**\n * Available thinking modes\n */\nexport enum ThinkingMode {\n SEQUENTIAL = 'sequential',\n SHANNON = 'shannon',\n MATHEMATICS = 'mathematics',\n PHYSICS = 'physics',\n HYBRID = 'hybrid',\n ABDUCTIVE = 'abductive',\n CAUSAL = 'causal',\n BAYESIAN = 'bayesian',\n COUNTERFACTUAL = 'counterfactual',\n ANALOGICAL = 'analogical',\n TEMPORAL = 'temporal', // Phase 3 (v2.1)\n GAMETHEORY = 'gametheory', // Phase 3 (v2.2)\n EVIDENTIAL = 'evidential', // Phase 3 (v2.3)\n FIRSTPRINCIPLE = 'firstprinciple', // v3.1.0\n CUSTOM = 'custom'\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// ===== 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}\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}\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}\n\n/**\n * Likelihood of evidence\n */\nexport interface Likelihood {\n probability: number; // 0-1\n description: string;\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}\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 | AbductiveThought\n | CausalThought\n | BayesianThought\n | CounterfactualThought\n | AnalogicalThought\n | TemporalThought\n | GameTheoryThought\n | EvidentialThought\n | FirstPrincipleThought;\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 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}\nexport function isFirstPrincipleThought(thought: Thought): thought is FirstPrincipleThought {\n return thought.mode === ThinkingMode.FIRSTPRINCIPLE;\n}\n\n// Re-export Phase 3 types\nexport type { TemporalThought, GameTheoryThought, EvidentialThought, FirstPrincipleThought };\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 * Custom error classes for DeepThinking MCP\n * Provides structured error handling with proper error codes and context\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 * 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 * Logging utility for DeepThinking MCP\n * Provides structured logging with levels and context\n */\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 {\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","/**\r\n * Centralized configuration for DeepThinking MCP Server\r\n *\r\n * All configurable values should be defined here to enable\r\n * easy environment-based configuration and deployment flexibility.\r\n */\r\n\r\n/**\r\n * Server configuration\r\n */\r\nexport interface ServerConfig {\r\n /** Maximum number of thoughts to keep in memory per session */\r\n maxThoughtsInMemory: number;\r\n\r\n /** Threshold for compressing old thoughts */\r\n compressionThreshold: number;\r\n\r\n /** Maximum content length in characters */\r\n maxContentLength: number;\r\n\r\n /** Validation tolerance for mathematical checks (e.g., mass sum) */\r\n validationTolerance: number;\r\n\r\n /** Maximum number of active sessions to keep in memory */\r\n maxActiveSessions: number;\r\n\r\n /** Session timeout in milliseconds (0 = no timeout) */\r\n sessionTimeoutMs: number;\r\n\r\n /** Enable validation result caching */\r\n enableValidationCache: boolean;\r\n\r\n /** Validation cache max size (number of entries) */\r\n validationCacheMaxSize: number;\r\n\r\n /** Enable session persistence to disk */\r\n enablePersistence: boolean;\r\n\r\n /** Directory for session persistence (if enabled) */\r\n persistenceDir: string;\r\n\r\n /** Log level: 'debug' | 'info' | 'warn' | 'error' */\r\n logLevel: 'debug' | 'info' | 'warn' | 'error';\r\n\r\n /** Enable performance metrics logging */\r\n enablePerformanceMetrics: boolean;\r\n}\r\n\r\n/**\r\n * Default configuration values\r\n */\r\nconst defaultConfig: ServerConfig = {\r\n maxThoughtsInMemory: parseInt(process.env.MCP_MAX_THOUGHTS || '1000', 10),\r\n compressionThreshold: parseInt(process.env.MCP_COMPRESSION_THRESHOLD || '500', 10),\r\n maxContentLength: parseInt(process.env.MCP_MAX_CONTENT_LENGTH || '10000', 10),\r\n validationTolerance: parseFloat(process.env.MCP_VALIDATION_TOLERANCE || '0.01'),\r\n maxActiveSessions: parseInt(process.env.MCP_MAX_SESSIONS || '100', 10),\r\n sessionTimeoutMs: parseInt(process.env.MCP_SESSION_TIMEOUT_MS || '0', 10),\r\n enableValidationCache: process.env.MCP_ENABLE_VALIDATION_CACHE !== 'false',\r\n validationCacheMaxSize: parseInt(process.env.MCP_VALIDATION_CACHE_SIZE || '1000', 10),\r\n enablePersistence: process.env.MCP_ENABLE_PERSISTENCE === 'true',\r\n persistenceDir: process.env.MCP_PERSISTENCE_DIR || './.deepthinking-sessions',\r\n logLevel: (process.env.MCP_LOG_LEVEL || 'info') as ServerConfig['logLevel'],\r\n enablePerformanceMetrics: process.env.MCP_ENABLE_PERF_METRICS === 'true',\r\n};\r\n\r\n/**\r\n * Current active configuration (can be overridden)\r\n */\r\nlet activeConfig: ServerConfig = { ...defaultConfig };\r\n\r\n/**\r\n * Get the current configuration\r\n */\r\nexport function getConfig(): Readonly<ServerConfig> {\r\n return Object.freeze({ ...activeConfig });\r\n}\r\n\r\n/**\r\n * Update configuration (for testing or runtime changes)\r\n *\r\n * @param updates - Partial configuration to merge with existing config\r\n * @returns The updated configuration\r\n */\r\nexport function updateConfig(updates: Partial<ServerConfig>): Readonly<ServerConfig> {\r\n activeConfig = { ...activeConfig, ...updates };\r\n return getConfig();\r\n}\r\n\r\n/**\r\n * Reset configuration to defaults\r\n */\r\nexport function resetConfig(): void {\r\n activeConfig = { ...defaultConfig };\r\n}\r\n\r\n/**\r\n * Validate configuration values\r\n *\r\n * @throws Error if configuration is invalid\r\n */\r\nexport function validateConfig(config: ServerConfig): void {\r\n if (config.maxThoughtsInMemory < 1) {\r\n throw new Error('maxThoughtsInMemory must be at least 1');\r\n }\r\n\r\n if (config.compressionThreshold < 0) {\r\n throw new Error('compressionThreshold must be non-negative');\r\n }\r\n\r\n if (config.maxContentLength < 1) {\r\n throw new Error('maxContentLength must be at least 1');\r\n }\r\n\r\n if (config.validationTolerance < 0 || config.validationTolerance > 1) {\r\n throw new Error('validationTolerance must be between 0 and 1');\r\n }\r\n\r\n if (config.maxActiveSessions < 1) {\r\n throw new Error('maxActiveSessions must be at least 1');\r\n }\r\n\r\n if (config.sessionTimeoutMs < 0) {\r\n throw new Error('sessionTimeoutMs must be non-negative');\r\n }\r\n\r\n if (config.validationCacheMaxSize < 0) {\r\n throw new Error('validationCacheMaxSize must be non-negative');\r\n }\r\n\r\n if (!['debug', 'info', 'warn', 'error'].includes(config.logLevel)) {\r\n throw new Error('logLevel must be one of: debug, info, warn, error');\r\n }\r\n}\r\n\r\n// Validate default config on load\r\nvalidateConfig(activeConfig);\r\n\r\n/**\r\n * Export constants for common use\r\n */\r\nexport const CONFIG = getConfig();\r\n","/**\r\n * Validation result caching for performance optimization\r\n *\r\n * Caches validation results to avoid redundant validation of unchanging content.\r\n * Uses content-based hashing for cache keys to ensure correctness.\r\n */\r\n\r\nimport { getConfig } from '../config/index.js';\r\nimport { ValidationResult } from '../types/session.js';\r\nimport { createHash } from 'crypto';\r\n\r\n/**\r\n * Validation result entry\r\n */\r\nexport interface ValidationCacheEntry {\r\n /** Cached validation result */\r\n result: ValidationResult;\r\n\r\n /** Timestamp of validation */\r\n timestamp: number;\r\n\r\n /** Number of times this cache entry was hit */\r\n hitCount: number;\r\n}\r\n\r\n/**\r\n * LRU Cache for validation results\r\n */\r\nexport class ValidationCache {\r\n private cache: Map<string, ValidationCacheEntry>;\r\n private maxSize: number;\r\n private hits: number = 0;\r\n private misses: number = 0;\r\n\r\n constructor(maxSize?: number) {\r\n const config = getConfig();\r\n this.maxSize = maxSize || config.validationCacheMaxSize;\r\n this.cache = new Map();\r\n }\r\n\r\n /**\r\n * Generate a cache key from thought content\r\n *\r\n * Uses SHA-256 hash of JSON-serialized content for reliable cache keys\r\n *\r\n * @param content - Content to hash\r\n * @returns Cache key\r\n */\r\n private generateKey(content: unknown): string {\r\n const json = JSON.stringify(content);\r\n return createHash('sha256').update(json).digest('hex');\r\n }\r\n\r\n /**\r\n * Get validation result from cache\r\n *\r\n * @param content - Content to look up\r\n * @returns Cached result or undefined if not found\r\n */\r\n get(content: unknown): ValidationCacheEntry | undefined {\r\n const key = this.generateKey(content);\r\n const entry = this.cache.get(key);\r\n\r\n if (entry) {\r\n this.hits++;\r\n entry.hitCount++;\r\n\r\n // Move to end (LRU)\r\n this.cache.delete(key);\r\n this.cache.set(key, entry);\r\n\r\n return entry;\r\n }\r\n\r\n this.misses++;\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Store validation result in cache\r\n *\r\n * @param content - Content that was validated\r\n * @param result - Validation result to cache\r\n */\r\n set(content: unknown, result: ValidationResult): void {\r\n const key = this.generateKey(content);\r\n\r\n // If cache is full, remove least recently used (first entry)\r\n if (this.cache.size >= this.maxSize) {\r\n const firstKey = this.cache.keys().next().value;\r\n if (firstKey !== undefined) {\r\n this.cache.delete(firstKey);\r\n }\r\n }\r\n\r\n const entry: ValidationCacheEntry = {\r\n result,\r\n timestamp: Date.now(),\r\n hitCount: 0,\r\n };\r\n\r\n this.cache.set(key, entry);\r\n }\r\n\r\n /**\r\n * Check if content is in cache\r\n *\r\n * @param content - Content to check\r\n * @returns true if cached\r\n */\r\n has(content: unknown): boolean {\r\n const key = this.generateKey(content);\r\n return this.cache.has(key);\r\n }\r\n\r\n /**\r\n * Clear all cached validation results\r\n */\r\n clear(): void {\r\n this.cache.clear();\r\n this.hits = 0;\r\n this.misses = 0;\r\n }\r\n\r\n /**\r\n * Get cache statistics\r\n */\r\n getStats(): {\r\n size: number;\r\n maxSize: number;\r\n hits: number;\r\n misses: number;\r\n hitRate: number;\r\n } {\r\n const total = this.hits + this.misses;\r\n return {\r\n size: this.cache.size,\r\n maxSize: this.maxSize,\r\n hits: this.hits,\r\n misses: this.misses,\r\n hitRate: total > 0 ? this.hits / total : 0,\r\n };\r\n }\r\n\r\n /**\r\n * Resize the cache\r\n *\r\n * @param newSize - New maximum cache size\r\n */\r\n resize(newSize: number): void {\r\n this.maxSize = newSize;\r\n\r\n // If cache is now too large, trim it\r\n if (this.cache.size > newSize) {\r\n const keysToDelete = this.cache.size - newSize;\r\n const keys = Array.from(this.cache.keys());\r\n\r\n for (let i = 0; i < keysToDelete; i++) {\r\n this.cache.delete(keys[i]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get entries sorted by hit count (most used first)\r\n */\r\n getTopEntries(limit: number = 10): Array<{ key: string; entry: ValidationCacheEntry }> {\r\n const entries = Array.from(this.cache.entries())\r\n .map(([key, entry]) => ({ key, entry }))\r\n .sort((a, b) => b.entry.hitCount - a.entry.hitCount);\r\n\r\n return entries.slice(0, limit);\r\n }\r\n\r\n /**\r\n * Remove entries older than a certain age\r\n *\r\n * @param maxAgeMs - Maximum age in milliseconds\r\n * @returns Number of entries removed\r\n */\r\n evictOld(maxAgeMs: number): number {\r\n const now = Date.now();\r\n let removed = 0;\r\n\r\n for (const [key, entry] of this.cache.entries()) {\r\n if (now - entry.timestamp > maxAgeMs) {\r\n this.cache.delete(key);\r\n removed++;\r\n }\r\n }\r\n\r\n return removed;\r\n }\r\n}\r\n\r\n/**\r\n * Global validation cache instance\r\n */\r\nexport const validationCache = new ValidationCache();\r\n","/**\r\n * Session Manager for DeepThinking MCP\r\n * Manages thinking sessions, persistence, and analytics\r\n */\r\n\r\nimport { randomUUID } from 'crypto';\r\nimport {\r\n ThinkingSession,\r\n SessionConfig,\r\n SessionMetrics,\r\n SessionMetadata,\r\n Thought,\r\n ThinkingMode\r\n} from '../types/index.js';\r\nimport { isTemporalThought, isGameTheoryThought, isEvidentialThought } from '../types/core.js';\r\nimport { SessionNotFoundError } from '../utils/errors.js';\r\nimport { sanitizeString, sanitizeThoughtContent, validateSessionId, MAX_LENGTHS } from '../utils/sanitization.js';\r\nimport { Logger, createLogger, LogLevel } from '../utils/logger.js';\r\nimport { validationCache } from '../validation/cache.js';\r\nimport { SessionStorage } from './storage/interface.js';\r\n\r\n/**\r\n * Default session configuration\r\n */\r\nconst DEFAULT_CONFIG: SessionConfig = {\r\n modeConfig: {\r\n mode: ThinkingMode.HYBRID,\r\n strictValidation: false,\r\n allowModeSwitch: true\r\n },\r\n enableAutoSave: true,\r\n enableValidation: true,\r\n enableVisualization: true,\r\n integrations: {},\r\n exportFormats: ['markdown', 'latex', 'json'],\r\n autoExportOnComplete: false,\r\n maxThoughtsInMemory: 1000,\r\n compressionThreshold: 500\r\n};\r\n\r\n/**\r\n * Session Manager - Manages thinking session lifecycle and analytics\r\n *\r\n * The SessionManager provides a centralized interface for creating, managing,\r\n * and analyzing deep thinking sessions across all 13 reasoning modes.\r\n *\r\n * @example\r\n * ```typescript\r\n * const manager = new SessionManager();\r\n * const session = await manager.createSession({\r\n * title: 'Problem Analysis',\r\n * mode: ThinkingMode.SEQUENTIAL\r\n * });\r\n *\r\n * await manager.addThought(session.id, {\r\n * thought: 'Initial analysis...',\r\n * thoughtNumber: 1,\r\n * totalThoughts: 5,\r\n * nextThoughtNeeded: true\r\n * });\r\n * ```\r\n */\r\nexport class SessionManager {\r\n private activeSessions: Map<string, ThinkingSession>;\r\n private config: Partial<SessionConfig>;\r\n private logger: Logger;\r\n private storage?: SessionStorage;\r\n\r\n /**\r\n * Creates a new SessionManager instance\r\n *\r\n * @param config - Optional default configuration applied to all new sessions\r\n * @param logLevel - Optional minimum log level (default: INFO)\r\n * @param storage - Optional persistent storage backend for sessions\r\n *\r\n * @example\r\n * ```typescript\r\n * // Memory-only mode (default)\r\n * const manager = new SessionManager({\r\n * enableAutoSave: true,\r\n * maxThoughtsInMemory: 500\r\n * }, LogLevel.DEBUG);\r\n *\r\n * // With file-based persistence\r\n * import { FileSessionStore } from './storage/file-store.js';\r\n * const storage = new FileSessionStore('./sessions');\r\n * await storage.initialize();\r\n * const manager = new SessionManager({}, LogLevel.INFO, storage);\r\n * ```\r\n */\r\n constructor(\r\n config?: Partial<SessionConfig>,\r\n logLevel?: LogLevel,\r\n storage?: SessionStorage\r\n ) {\r\n this.activeSessions = new Map();\r\n this.config = config || {};\r\n this.storage = storage;\r\n this.logger = createLogger({\r\n minLevel: logLevel || LogLevel.INFO,\r\n enableConsole: true\r\n });\r\n }\r\n\r\n /**\r\n * Create a new thinking session\r\n *\r\n * Creates and initializes a new thinking session with the specified configuration.\r\n * Sessions are stored in memory and tracked until explicitly deleted.\r\n *\r\n * @param options - Session creation options\r\n * @param options.title - Session title (default: 'Untitled Session')\r\n * @param options.mode - Thinking mode to use (default: HYBRID)\r\n * @param options.domain - Problem domain (e.g., 'mathematics', 'physics')\r\n * @param options.author - Session creator/author\r\n * @param options.config - Session-specific configuration overrides\r\n * @returns Promise resolving to the created session\r\n *\r\n * @example\r\n * ```typescript\r\n * const session = await manager.createSession({\r\n * title: 'Mathematical Proof',\r\n * mode: ThinkingMode.MATHEMATICS,\r\n * domain: 'number-theory',\r\n * author: 'user@example.com'\r\n * });\r\n * ```\r\n */\r\n async createSession(options: {\r\n title?: string;\r\n mode?: ThinkingMode;\r\n domain?: string;\r\n author?: string;\r\n config?: Partial<SessionConfig>;\r\n } = {}): Promise<ThinkingSession> {\r\n // Validate inputs\r\n const title = options.title\r\n ? sanitizeString(options.title, MAX_LENGTHS.TITLE, 'title')\r\n : 'Untitled Session';\r\n\r\n const domain = options.domain\r\n ? sanitizeString(options.domain, MAX_LENGTHS.DOMAIN, 'domain')\r\n : undefined;\r\n\r\n const author = options.author\r\n ? sanitizeString(options.author, MAX_LENGTHS.AUTHOR, 'author')\r\n : undefined;\r\n\r\n const sessionId = randomUUID();\r\n const now = new Date();\r\n\r\n const session: ThinkingSession = {\r\n id: sessionId,\r\n title,\r\n mode: options.mode || ThinkingMode.HYBRID,\r\n domain,\r\n config: this.mergeConfig(options.config),\r\n thoughts: [],\r\n createdAt: now,\r\n updatedAt: now,\r\n author,\r\n currentThoughtNumber: 0,\r\n isComplete: false,\r\n metrics: this.initializeMetrics(),\r\n tags: [],\r\n collaborators: author ? [author] : []\r\n };\r\n\r\n this.activeSessions.set(sessionId, session);\r\n\r\n // Auto-save to storage if enabled\r\n if (this.storage && session.config.enableAutoSave) {\r\n try {\r\n await this.storage.saveSession(session);\r\n this.logger.debug('Session persisted to storage', { sessionId });\r\n } catch (error) {\r\n this.logger.error('Failed to persist session', error as Error, { sessionId });\r\n // Don't throw - session is still created in memory\r\n }\r\n }\r\n\r\n this.logger.info('Session created', {\r\n sessionId,\r\n title,\r\n mode: session.mode,\r\n domain,\r\n author\r\n });\r\n\r\n return session;\r\n }\r\n\r\n /**\r\n * Get a session by ID\r\n *\r\n * Retrieves a session by its unique identifier. If the session is not in memory\r\n * but storage is available, it will attempt to load from storage.\r\n *\r\n * @param sessionId - Unique UUID v4 identifier of the session\r\n * @returns Promise resolving to the session, or null if not found\r\n *\r\n * @example\r\n * ```typescript\r\n * const session = await manager.getSession('550e8400-e29b-41d4-a716-446655440000');\r\n * if (session) {\r\n * console.log(`Session: ${session.title}`);\r\n * console.log(`Thoughts: ${session.thoughts.length}`);\r\n * }\r\n * ```\r\n */\r\n async getSession(sessionId: string): Promise<ThinkingSession | null> {\r\n // Check memory first\r\n let session = this.activeSessions.get(sessionId);\r\n\r\n // If not in memory and storage is available, try loading from storage\r\n if (!session && this.storage) {\r\n try {\r\n session = (await this.storage.loadSession(sessionId)) ?? undefined;\r\n if (session) {\r\n // Add to active sessions cache\r\n this.activeSessions.set(sessionId, session);\r\n this.logger.debug('Session loaded from storage', { sessionId });\r\n }\r\n } catch (error) {\r\n this.logger.error('Failed to load session from storage', error as Error, { sessionId });\r\n }\r\n }\r\n\r\n return session || null;\r\n }\r\n\r\n /**\r\n * Add a thought to a session\r\n *\r\n * Adds a new thought to an existing session and automatically updates:\r\n * - Session metrics (uses O(1) incremental calculation)\r\n * - Thought timestamps\r\n * - Session completion status\r\n * - Mode-specific analytics\r\n *\r\n * @param sessionId - ID of the session to add thought to\r\n * @param thought - The thought object to add\r\n * @returns Promise resolving to the updated session\r\n * @throws Error if session is not found\r\n *\r\n * @example\r\n * ```typescript\r\n * await manager.addThought(session.id, {\r\n * thought: 'Initial hypothesis: the problem can be solved using...',\r\n * thoughtNumber: 1,\r\n * totalThoughts: 5,\r\n * nextThoughtNeeded: true,\r\n * uncertainty: 0.3\r\n * });\r\n * ```\r\n */\r\n async addThought(sessionId: string, thought: Thought): Promise<ThinkingSession> {\r\n // Validate session ID\r\n validateSessionId(sessionId);\r\n\r\n const session = this.activeSessions.get(sessionId);\r\n if (!session) {\r\n this.logger.error('Session not found', undefined, { sessionId });\r\n throw new SessionNotFoundError(sessionId);\r\n }\r\n\r\n // Validate thought content\r\n if (thought.content) {\r\n thought.content = sanitizeThoughtContent(thought.content);\r\n }\r\n\r\n // Update thought with session metadata\r\n thought.sessionId = sessionId;\r\n thought.timestamp = new Date();\r\n\r\n // Add thought to session\r\n session.thoughts.push(thought);\r\n session.currentThoughtNumber = thought.thoughtNumber;\r\n session.updatedAt = new Date();\r\n\r\n // Update metrics\r\n this.updateMetrics(session, thought);\r\n\r\n // Check if session is complete\r\n if (!thought.nextThoughtNeeded) {\r\n session.isComplete = true;\r\n this.logger.info('Session completed', {\r\n sessionId,\r\n title: session.title,\r\n totalThoughts: session.thoughts.length\r\n });\r\n }\r\n\r\n // Auto-save to storage if enabled\r\n if (this.storage && session.config.enableAutoSave) {\r\n try {\r\n await this.storage.saveSession(session);\r\n this.logger.debug('Session persisted after thought added', { sessionId });\r\n } catch (error) {\r\n this.logger.error('Failed to persist session', error as Error, { sessionId });\r\n // Don't throw - thought is still added in memory\r\n }\r\n }\r\n\r\n this.logger.debug('Thought added', {\r\n sessionId,\r\n thoughtNumber: thought.thoughtNumber,\r\n totalThoughts: session.thoughts.length\r\n });\r\n\r\n return session;\r\n }\r\n\r\n /**\r\n * Update session mode (switch reasoning approach mid-session)\r\n *\r\n * Changes the thinking mode of an active session. This is useful when\r\n * the problem requires a different reasoning approach.\r\n *\r\n * @param sessionId - ID of the session to update\r\n * @param newMode - New thinking mode to switch to\r\n * @param reason - Optional reason for the mode switch\r\n * @returns Promise resolving to the updated session\r\n * @throws Error if session is not found\r\n *\r\n * @example\r\n * ```typescript\r\n * await manager.switchMode(\r\n * session.id,\r\n * ThinkingMode.CAUSAL,\r\n * 'Need to analyze cause-effect relationships'\r\n * );\r\n * ```\r\n */\r\n async switchMode(\r\n sessionId: string,\r\n newMode: ThinkingMode,\r\n reason?: string\r\n ): Promise<ThinkingSession> {\r\n // Validate session ID\r\n validateSessionId(sessionId);\r\n\r\n const session = this.activeSessions.get(sessionId);\r\n if (!session) {\r\n this.logger.error('Session not found', undefined, { sessionId });\r\n throw new SessionNotFoundError(sessionId);\r\n }\r\n\r\n const oldMode = session.mode;\r\n session.mode = newMode;\r\n session.config.modeConfig.mode = newMode;\r\n session.updatedAt = new Date();\r\n\r\n // Auto-save to storage if enabled\r\n if (this.storage && session.config.enableAutoSave) {\r\n try {\r\n await this.storage.saveSession(session);\r\n this.logger.debug('Session persisted after mode switch', { sessionId });\r\n } catch (error) {\r\n this.logger.error('Failed to persist session', error as Error, { sessionId });\r\n }\r\n }\r\n\r\n this.logger.info('Session mode switched', {\r\n sessionId,\r\n oldMode,\r\n newMode,\r\n reason\r\n });\r\n\r\n return session;\r\n }\r\n\r\n /**\r\n * List all active sessions with metadata\r\n *\r\n * Returns summary information for all sessions. If storage is available,\r\n * includes both in-memory sessions and persisted sessions.\r\n *\r\n * @param includeStoredSessions - Whether to include sessions from storage (default: true)\r\n * @returns Promise resolving to array of session metadata\r\n *\r\n * @example\r\n * ```typescript\r\n * const sessions = await manager.listSessions();\r\n * sessions.forEach(s => {\r\n * console.log(`${s.title}: ${s.thoughtCount} thoughts (${s.mode})`);\r\n * });\r\n * ```\r\n */\r\n async listSessions(includeStoredSessions: boolean = true): Promise<SessionMetadata[]> {\r\n const memoryMetadata = Array.from(this.activeSessions.values()).map(session => ({\r\n id: session.id,\r\n title: session.title,\r\n createdAt: session.createdAt,\r\n updatedAt: session.updatedAt,\r\n thoughtCount: session.thoughts.length,\r\n mode: session.mode,\r\n isComplete: session.isComplete\r\n }));\r\n\r\n // If no storage or not including stored sessions, return memory sessions only\r\n if (!this.storage || !includeStoredSessions) {\r\n return memoryMetadata;\r\n }\r\n\r\n // Get stored sessions and merge with memory sessions\r\n try {\r\n const storedMetadata = await this.storage.listSessions();\r\n const memoryIds = new Set(memoryMetadata.map(s => s.id));\r\n\r\n // Combine memory sessions with stored sessions (avoiding duplicates)\r\n const combined = [\r\n ...memoryMetadata,\r\n ...storedMetadata.filter(s => !memoryIds.has(s.id))\r\n ];\r\n\r\n return combined;\r\n } catch (error) {\r\n this.logger.error('Failed to list stored sessions', error as Error);\r\n return memoryMetadata; // Return memory sessions if storage fails\r\n }\r\n }\r\n\r\n /**\r\n * Delete a session\r\n *\r\n * Removes a session from memory and storage (if available).\r\n * This operation cannot be undone.\r\n *\r\n * @param sessionId - ID of the session to delete\r\n * @returns Promise that resolves when deletion is complete\r\n *\r\n * @example\r\n * ```typescript\r\n * await manager.deleteSession('old-session-id');\r\n * ```\r\n */\r\n async deleteSession(sessionId: string): Promise<void> {\r\n const session = this.activeSessions.get(sessionId);\r\n const deletedFromMemory = this.activeSessions.delete(sessionId);\r\n\r\n // Also delete from storage if available\r\n if (this.storage) {\r\n try {\r\n await this.storage.deleteSession(sessionId);\r\n this.logger.debug('Session deleted from storage', { sessionId });\r\n } catch (error) {\r\n this.logger.error('Failed to delete session from storage', error as Error, { sessionId });\r\n }\r\n }\r\n\r\n if (deletedFromMemory && session) {\r\n this.logger.info('Session deleted', {\r\n sessionId,\r\n title: session.title,\r\n thoughtCount: session.thoughts.length\r\n });\r\n } else {\r\n this.logger.warn('Attempted to delete non-existent session from memory', { sessionId });\r\n }\r\n }\r\n\r\n /**\r\n * Generate a text summary of a session\r\n *\r\n * Creates a markdown-formatted summary including:\r\n * - Session metadata (title, mode, status)\r\n * - Total thought count\r\n * - Key thoughts (first 100 characters of each)\r\n *\r\n * @param sessionId - ID of the session to summarize\r\n * @returns Promise resolving to markdown-formatted summary\r\n * @throws Error if session is not found\r\n *\r\n * @example\r\n * ```typescript\r\n * const summary = await manager.generateSummary(session.id);\r\n * console.log(summary);\r\n * // Output:\r\n * // # Mathematical Proof\r\n * // Mode: mathematics\r\n * // Total Thoughts: 15\r\n * // Status: Complete\r\n * // ...\r\n * ```\r\n */\r\n async generateSummary(sessionId: string): Promise<string> {\r\n // Validate session ID\r\n validateSessionId(sessionId);\r\n\r\n const session = this.activeSessions.get(sessionId);\r\n if (!session) {\r\n throw new SessionNotFoundError(sessionId);\r\n }\r\n\r\n let summary = `# ${session.title}\\n\\n`;\r\n summary += `Mode: ${session.mode}\\n`;\r\n summary += `Total Thoughts: ${session.thoughts.length}\\n`;\r\n summary += `Status: ${session.isComplete ? 'Complete' : 'In Progress'}\\n\\n`;\r\n\r\n summary += `## Key Thoughts:\\n\\n`;\r\n for (const thought of session.thoughts) {\r\n summary += `${thought.thoughtNumber}. ${thought.content.substring(0, 100)}...\\n`;\r\n }\r\n\r\n return summary;\r\n }\r\n\r\n /**\r\n * Merge configurations (private helper)\r\n *\r\n * Combines default config, instance config, and user config\r\n * with proper precedence: user > instance > default\r\n */\r\n private mergeConfig(userConfig?: Partial<SessionConfig>): SessionConfig {\r\n return {\r\n ...DEFAULT_CONFIG,\r\n ...this.config,\r\n ...userConfig\r\n } as SessionConfig;\r\n }\r\n\r\n /**\r\n * Initialize metrics (private helper)\r\n *\r\n * Creates a fresh SessionMetrics object with zero values\r\n */\r\n private initializeMetrics(): SessionMetrics {\r\n return {\r\n totalThoughts: 0,\r\n thoughtsByType: {},\r\n averageUncertainty: 0,\r\n revisionCount: 0,\r\n timeSpent: 0,\r\n dependencyDepth: 0,\r\n customMetrics: new Map(),\r\n cacheStats: {\r\n hits: 0,\r\n misses: 0,\r\n hitRate: 0,\r\n size: 0,\r\n maxSize: 0,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Update session metrics (private helper)\r\n *\r\n * Incrementally updates metrics using O(1) algorithms for performance.\r\n * Handles mode-specific metrics for temporal, game theory, and evidential modes.\r\n *\r\n * @param session - Session to update\r\n * @param thought - Newly added thought\r\n */\r\n private updateMetrics(session: ThinkingSession, thought: Thought): void {\r\n const metrics = session.metrics;\r\n\r\n // Update total thoughts\r\n metrics.totalThoughts = session.thoughts.length;\r\n\r\n // Update thoughtsByType incrementally (O(1) instead of recalculating)\r\n const thoughtType = thought.mode || 'unknown';\r\n metrics.thoughtsByType[thoughtType] = (metrics.thoughtsByType[thoughtType] || 0) + 1;\r\n\r\n // Update revision count\r\n if (thought.isRevision) {\r\n metrics.revisionCount++;\r\n }\r\n\r\n // Update time spent (in milliseconds)\r\n metrics.timeSpent = session.updatedAt.getTime() - session.createdAt.getTime();\r\n\r\n // Update average uncertainty incrementally (O(1) instead of O(n))\r\n if ('uncertainty' in thought && typeof (thought as any).uncertainty === 'number') {\r\n const uncertaintyValue = (thought as any).uncertainty;\r\n const currentSum = metrics._uncertaintySum || 0;\r\n const currentCount = metrics._uncertaintyCount || 0;\r\n\r\n const newSum = currentSum + uncertaintyValue;\r\n const newCount = currentCount + 1;\r\n\r\n metrics._uncertaintySum = newSum;\r\n metrics._uncertaintyCount = newCount;\r\n metrics.averageUncertainty = newSum / newCount;\r\n }\r\n\r\n // Update dependency depth\r\n if ('dependencies' in thought && thought.dependencies) {\r\n const deps = (thought as any).dependencies as string[];\r\n if (deps && deps.length > metrics.dependencyDepth) {\r\n metrics.dependencyDepth = deps.length;\r\n }\r\n }\r\n\r\n // Temporal-specific metrics (Phase 3, v2.1)\r\n if (isTemporalThought(thought)) {\r\n if (thought.events) {\r\n metrics.customMetrics.set('totalEvents', thought.events.length);\r\n }\r\n if (thought.timeline) {\r\n metrics.customMetrics.set('timelineUnit', thought.timeline.timeUnit);\r\n }\r\n if (thought.relations) {\r\n const causalRelations = thought.relations.filter(r => r.relationType === 'causes');\r\n metrics.customMetrics.set('causalRelations', causalRelations.length);\r\n }\r\n if (thought.constraints) {\r\n metrics.customMetrics.set('temporalConstraints', thought.constraints.length);\r\n }\r\n if (thought.intervals) {\r\n metrics.customMetrics.set('timeIntervals', thought.intervals.length);\r\n }\r\n }\r\n\r\n // Game theory-specific metrics (Phase 3, v2.2)\r\n if (isGameTheoryThought(thought)) {\r\n if (thought.players) {\r\n metrics.customMetrics.set('numPlayers', thought.players.length);\r\n }\r\n if (thought.strategies) {\r\n metrics.customMetrics.set('totalStrategies', thought.strategies.length);\r\n const mixedStrategies = thought.strategies.filter(s => !s.isPure);\r\n metrics.customMetrics.set('mixedStrategies', mixedStrategies.length);\r\n }\r\n if (thought.nashEquilibria) {\r\n metrics.customMetrics.set('nashEquilibria', thought.nashEquilibria.length);\r\n const pureEquilibria = thought.nashEquilibria.filter(e => e.type === 'pure');\r\n metrics.customMetrics.set('pureNashEquilibria', pureEquilibria.length);\r\n }\r\n if (thought.dominantStrategies) {\r\n metrics.customMetrics.set('dominantStrategies', thought.dominantStrategies.length);\r\n }\r\n if (thought.game) {\r\n metrics.customMetrics.set('gameType', thought.game.type);\r\n metrics.customMetrics.set('isZeroSum', thought.game.isZeroSum);\r\n }\r\n }\r\n\r\n // Evidential-specific metrics (Phase 3, v2.3)\r\n if (isEvidentialThought(thought)) {\r\n if (thought.hypotheses) {\r\n metrics.customMetrics.set('totalHypotheses', thought.hypotheses.length);\r\n }\r\n if (thought.evidence) {\r\n metrics.customMetrics.set('totalEvidence', thought.evidence.length);\r\n const avgReliability = thought.evidence.reduce((sum, e) => sum + e.reliability, 0) / thought.evidence.length;\r\n metrics.customMetrics.set('avgEvidenceReliability', avgReliability);\r\n }\r\n if (thought.beliefFunctions) {\r\n metrics.customMetrics.set('beliefFunctions', thought.beliefFunctions.length);\r\n }\r\n if (thought.combinedBelief) {\r\n metrics.customMetrics.set('hasCombinedBelief', true);\r\n if (thought.combinedBelief.conflictMass !== undefined) {\r\n metrics.customMetrics.set('conflictMass', thought.combinedBelief.conflictMass);\r\n }\r\n }\r\n if (thought.decisions) {\r\n metrics.customMetrics.set('decisions', thought.decisions.length);\r\n }\r\n }\r\n\r\n // Update validation cache statistics\r\n this.updateCacheStats(session);\r\n }\r\n\r\n /**\r\n * Update validation cache statistics in session metrics\r\n *\r\n * @param session - Session to update\r\n */\r\n private updateCacheStats(session: ThinkingSession): void {\r\n const cacheStats = validationCache.getStats();\r\n session.metrics.cacheStats = {\r\n hits: cacheStats.hits,\r\n misses: cacheStats.misses,\r\n hitRate: cacheStats.hitRate,\r\n size: cacheStats.size,\r\n maxSize: cacheStats.maxSize,\r\n };\r\n }\r\n}\r\n","/**\n * Visual Export Module (v2.5)\n * Exports thinking sessions to visual formats: Mermaid, DOT, ASCII\n */\n\nimport type { CausalThought, TemporalThought, GameTheoryThought, BayesianThought, FirstPrincipleThought, BaseThought, SequentialThought, ShannonThought, MathematicsThought, PhysicsThought, HybridThought, AbductiveThought, CounterfactualThought, AnalogicalThought, EvidentialThought } from '../types/index.js';\n\nexport type VisualFormat = 'mermaid' | 'dot' | 'ascii';\n\nexport interface VisualExportOptions {\n format: VisualFormat;\n colorScheme?: 'default' | 'monochrome' | 'pastel';\n includeLabels?: boolean;\n includeMetrics?: boolean;\n}\n\n/**\n * Visual Exporter for converting thoughts to visual diagram formats\n */\nexport class VisualExporter {\n /**\n * Export causal graph to visual format\n */\n 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 this.causalGraphToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return this.causalGraphToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return this.causalGraphToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n }\n\n /**\n * Export temporal timeline to visual format\n */\n exportTemporalTimeline(thought: TemporalThought, options: VisualExportOptions): string {\n const { format, includeLabels = true } = options;\n\n switch (format) {\n case 'mermaid':\n return this.timelineToMermaidGantt(thought, includeLabels);\n case 'dot':\n return this.timelineToDOT(thought, includeLabels);\n case 'ascii':\n return this.timelineToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n }\n\n /**\n * Export game tree to visual format\n */\n 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 this.gameTreeToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return this.gameTreeToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return this.gameTreeToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n }\n\n /**\n * Export Bayesian network to visual format\n */\n 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 this.bayesianToMermaid(thought, colorScheme, includeLabels, includeMetrics);\n case 'dot':\n return this.bayesianToDOT(thought, includeLabels, includeMetrics);\n case 'ascii':\n return this.bayesianToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n }\n\n // ===== Causal Graph Exporters =====\n\n private causalGraphToMermaid(\n thought: CausalThought,\n colorScheme: string,\n includeLabels: boolean,\n includeMetrics: boolean\n ): string {\n let mermaid = 'graph TB\\n';\n\n // Add nodes with appropriate shapes\n for (const node of thought.causalGraph.nodes) {\n const nodeId = this.sanitizeId(node.id);\n const label = includeLabels ? node.name : nodeId;\n\n // Different shapes for different node types\n let shape: [string, string];\n switch (node.type) {\n case 'cause':\n shape = ['([', '])']; // Stadium shape\n break;\n case 'effect':\n shape = ['[[', ']]']; // Subroutine shape\n break;\n case 'mediator':\n shape = ['[', ']']; // Rectangle\n break;\n case 'confounder':\n shape = ['{', '}']; // Diamond\n break;\n default:\n shape = ['[', ']'];\n }\n\n mermaid += ` ${nodeId}${shape[0]}${label}${shape[1]}\\n`;\n }\n\n mermaid += '\\n';\n\n // Add edges with strength labels\n for (const edge of thought.causalGraph.edges) {\n const fromId = this.sanitizeId(edge.from);\n const toId = this.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 // Add styling based on color scheme\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 ${this.sanitizeId(node.id)} fill:${color}\\n`;\n }\n\n for (const node of effects) {\n const color = colorScheme === 'pastel' ? '#fff3e0' : '#ffd699';\n mermaid += ` style ${this.sanitizeId(node.id)} fill:${color}\\n`;\n }\n }\n\n return mermaid;\n }\n\n private 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 // Add nodes\n for (const node of thought.causalGraph.nodes) {\n const nodeId = this.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 // Add edges\n for (const edge of thought.causalGraph.edges) {\n const fromId = this.sanitizeId(edge.from);\n const toId = this.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\n private causalGraphToASCII(thought: CausalThought): string {\n let ascii = 'Causal Graph:\\n';\n ascii += '=============\\n\\n';\n\n // List nodes\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 Timeline Exporters =====\n\n private 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 // Group events into sections if possible\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\n private 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 // Sort events by timestamp\n const sortedEvents = [...thought.events].sort((a, b) => a.timestamp - b.timestamp);\n\n // Add nodes\n for (const event of sortedEvents) {\n const nodeId = this.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 // Connect sequential events\n for (let i = 0; i < sortedEvents.length - 1; i++) {\n const from = this.sanitizeId(sortedEvents[i].id);\n const to = this.sanitizeId(sortedEvents[i + 1].id);\n dot += ` ${from} -> ${to};\\n`;\n }\n\n // Add temporal relations if they exist\n if (thought.relations) {\n dot += '\\n // Causal relations\\n';\n for (const rel of thought.relations) {\n const from = this.sanitizeId(rel.from);\n const to = this.sanitizeId(rel.to);\n dot += ` ${from} -> ${to} [style=dashed, label=\"${rel.relationType}\"];\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n }\n\n private 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 // Sort events by timestamp\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 Exporters =====\n\n private 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 we have a game tree structure, use it\n if (thought.gameTree && thought.gameTree.nodes) {\n for (const node of thought.gameTree.nodes) {\n const nodeId = this.sanitizeId(node.id);\n const label = includeLabels ? (node.action || node.id) : nodeId;\n\n // Terminal nodes use double boxes\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 = this.sanitizeId(node.id);\n const toId = this.sanitizeId(childId);\n\n // Find the child node to get its action\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 // Fallback: show strategies as a simple tree\n mermaid += ' root[Game]\\n';\n if (thought.strategies) {\n for (const strategy of thought.strategies.slice(0, 5)) {\n const stratId = this.sanitizeId(strategy.id);\n mermaid += ` root --> ${stratId}[${strategy.name}]\\n`;\n }\n }\n }\n\n return mermaid;\n }\n\n private 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 = this.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 = this.sanitizeId(node.id);\n const toId = this.sanitizeId(childId);\n\n // Find the child node to get its action\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\n private 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 Network Exporters =====\n\n private bayesianToMermaid(\n thought: BayesianThought,\n colorScheme: string,\n _includeLabels: boolean,\n includeMetrics: boolean\n ): string {\n let mermaid = 'graph LR\\n';\n\n // Create nodes for hypothesis, prior, evidence, posterior\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 // Add styling\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\n private 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\n private 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 // ===== Utility Methods =====\n\n /**\n * Sanitize ID for use in diagram formats\n */\n private sanitizeId(id: string): string {\n return id.replace(/[^a-zA-Z0-9_]/g, '_');\n }\n\n // ===== Generic Thought Sequence Export =====\n\n /**\n * Export any thought sequence as a flow diagram\n * Works for sequential, shannon, mathematics, physics, hybrid, abductive,\n * counterfactual, analogical, and evidential modes\n */\n exportThoughtSequence(thoughts: BaseThought[], options: VisualExportOptions): string {\n const { format, colorScheme = 'default' } = options;\n\n switch (format) {\n case 'mermaid':\n return this.thoughtSequenceToMermaid(thoughts, colorScheme);\n case 'dot':\n return this.thoughtSequenceToDOT(thoughts);\n case 'ascii':\n return this.thoughtSequenceToASCII(thoughts);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n }\n\n private thoughtSequenceToMermaid(thoughts: BaseThought[], colorScheme: string): string {\n let mermaid = 'graph TD\\n';\n\n for (let i = 0; i < thoughts.length; i++) {\n const thought = thoughts[i];\n const nodeId = `T${i + 1}`;\n const content = thought.content.substring(0, 60).replace(/\\n/g, ' ');\n const label = `${i + 1}. ${content}${thought.content.length > 60 ? '...' : ''}`;\n\n mermaid += ` ${nodeId}[\"${label}\"]\\n`;\n\n if (i > 0) {\n mermaid += ` T${i} --> ${nodeId}\\n`;\n }\n }\n\n if (colorScheme !== 'monochrome' && thoughts.length > 0) {\n mermaid += '\\n';\n const color = colorScheme === 'pastel' ? '#e1f5ff' : '#a8d5ff';\n mermaid += ` style T1 fill:${color}\\n`;\n if (thoughts.length > 1) {\n const endColor = colorScheme === 'pastel' ? '#e8f5e9' : '#c8e6c9';\n mermaid += ` style T${thoughts.length} fill:${endColor}\\n`;\n }\n }\n\n return mermaid;\n }\n\n private thoughtSequenceToDOT(thoughts: BaseThought[]): string {\n let dot = 'digraph ThoughtSequence {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n for (let i = 0; i < thoughts.length; i++) {\n const thought = thoughts[i];\n const nodeId = `T${i + 1}`;\n const content = thought.content.substring(0, 60).replace(/\"/g, '\\\\\"').replace(/\\n/g, ' ');\n const label = `${i + 1}. ${content}${thought.content.length > 60 ? '...' : ''}`;\n\n dot += ` ${nodeId} [label=\"${label}\"];\\n`;\n\n if (i > 0) {\n dot += ` T${i} -> ${nodeId};\\n`;\n }\n }\n\n dot += '}\\n';\n return dot;\n }\n\n private thoughtSequenceToASCII(thoughts: BaseThought[]): string {\n let ascii = 'Thought Sequence:\\n';\n ascii += '=================\\n\\n';\n\n for (let i = 0; i < thoughts.length; i++) {\n const thought = thoughts[i];\n ascii += `${i + 1}. ${thought.content}\\n`;\n\n if (i < thoughts.length - 1) {\n ascii += ' ↓\\n';\n }\n ascii += '\\n';\n }\n\n return ascii;\n }\n\n // ===== First-Principles Export =====\n\n /**\n * Export first-principles reasoning to visual format\n */\n exportFirstPrinciples(thought: FirstPrincipleThought, options: VisualExportOptions): string {\n const { format, colorScheme = 'default' } = options;\n\n switch (format) {\n case 'mermaid':\n return this.firstPrinciplesToMermaid(thought, colorScheme);\n case 'dot':\n return this.firstPrinciplesToDOT(thought);\n case 'ascii':\n return this.firstPrinciplesToASCII(thought);\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n }\n\n private firstPrinciplesToMermaid(thought: FirstPrincipleThought, colorScheme: string): string {\n let mermaid = 'graph TD\\n';\n\n // Add question\n mermaid += ` Q[\"Question: ${thought.question}\"]\\n`;\n\n // Add principles\n for (const principle of thought.principles) {\n const pid = this.sanitizeId(principle.id);\n mermaid += ` ${pid}[\"${principle.type}: ${principle.statement}\"]\\n`;\n }\n\n // Add derivation steps\n for (const step of thought.derivationSteps) {\n const sid = `S${step.stepNumber}`;\n const pid = this.sanitizeId(step.principle.id);\n mermaid += ` ${sid}[\"Step ${step.stepNumber}: ${step.inference}\"]\\n`;\n mermaid += ` ${pid} --> ${sid}\\n`;\n\n if (step.stepNumber > 1) {\n mermaid += ` S${step.stepNumber - 1} --> ${sid}\\n`;\n } else {\n mermaid += ` Q --> ${pid}\\n`;\n }\n }\n\n // Add conclusion\n mermaid += ` C[[\"Conclusion: ${thought.conclusion.statement}\"]]:\\n`;\n if (thought.derivationSteps.length > 0) {\n mermaid += ` S${thought.derivationSteps.length} --> C\\n`;\n }\n\n // Styling\n if (colorScheme !== 'monochrome') {\n mermaid += '\\n';\n const qColor = colorScheme === 'pastel' ? '#fff3e0' : '#ffeb3b';\n const cColor = colorScheme === 'pastel' ? '#e8f5e9' : '#4caf50';\n mermaid += ` style Q fill:${qColor}\\n`;\n mermaid += ` style C fill:${cColor}\\n`;\n }\n\n return mermaid;\n }\n\n private firstPrinciplesToDOT(thought: FirstPrincipleThought): string {\n let dot = 'digraph FirstPrinciples {\\n';\n dot += ' rankdir=TD;\\n';\n dot += ' node [shape=box, style=rounded];\\n\\n';\n\n // Question\n dot += ` Q [label=\"Question:\\\\n${thought.question}\", shape=ellipse];\\n`;\n\n // Principles\n for (const principle of thought.principles) {\n const pid = this.sanitizeId(principle.id);\n dot += ` ${pid} [label=\"${principle.type}:\\\\n${principle.statement}\"];\\n`;\n }\n\n // Steps\n for (const step of thought.derivationSteps) {\n const sid = `S${step.stepNumber}`;\n const pid = this.sanitizeId(step.principle.id);\n dot += ` ${sid} [label=\"Step ${step.stepNumber}:\\\\n${step.inference}\"];\\n`;\n dot += ` ${pid} -> ${sid};\\n`;\n\n if (step.stepNumber > 1) {\n dot += ` S${step.stepNumber - 1} -> ${sid};\\n`;\n } else {\n dot += ` Q -> ${pid};\\n`;\n }\n }\n\n // Conclusion\n dot += ` C [label=\"Conclusion:\\\\n${thought.conclusion.statement}\", shape=doubleoctagon];\\n`;\n if (thought.derivationSteps.length > 0) {\n dot += ` S${thought.derivationSteps.length} -> C;\\n`;\n }\n\n dot += '}\\n';\n return dot;\n }\n\n private firstPrinciplesToASCII(thought: FirstPrincipleThought): string {\n let ascii = 'First-Principles Reasoning:\\n';\n ascii += '===========================\\n\\n';\n\n ascii += `Question: ${thought.question}\\n\\n`;\n\n ascii += 'Foundational Principles:\\n';\n for (const principle of thought.principles) {\n ascii += ` • [${principle.type}] ${principle.statement}\\n`;\n ascii += ` Justification: ${principle.justification}\\n`;\n }\n ascii += '\\n';\n\n ascii += 'Derivation Chain:\\n';\n for (const step of thought.derivationSteps) {\n ascii += ` ${step.stepNumber}. ${step.inference}\\n`;\n ascii += ` (From: ${step.principle.statement})\\n`;\n ascii += ` Confidence: ${(step.confidence * 100).toFixed(0)}%\\n`;\n }\n ascii += '\\n';\n\n ascii += `Conclusion: ${thought.conclusion.statement}\\n`;\n ascii += `Certainty: ${(thought.conclusion.certainty * 100).toFixed(0)}%\\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 return ascii;\n }\n}\n","/**\r\n * Type guards for runtime type checking\r\n *\r\n * Provides safe type narrowing without using 'as any' assertions\r\n */\r\n\r\nimport { ExtendedThoughtType } from '../types/core.js';\r\n\r\n/**\r\n * Valid ExtendedThoughtType values\r\n */\r\nconst VALID_THOUGHT_TYPES: readonly ExtendedThoughtType[] = [\r\n 'problem_definition',\r\n 'constraints',\r\n 'model',\r\n 'proof',\r\n 'implementation',\r\n 'axiom_definition',\r\n 'theorem_statement',\r\n 'proof_construction',\r\n 'lemma_derivation',\r\n 'corollary',\r\n 'counterexample',\r\n 'algebraic_manipulation',\r\n 'symbolic_computation',\r\n 'numerical_analysis',\r\n 'symmetry_analysis',\r\n 'gauge_theory',\r\n 'field_equations',\r\n 'lagrangian',\r\n 'hamiltonian',\r\n 'conservation_law',\r\n 'dimensional_analysis',\r\n 'tensor_formulation',\r\n 'differential_geometry',\r\n 'decomposition',\r\n 'synthesis',\r\n 'abstraction',\r\n 'analogy',\r\n 'metacognition',\r\n] as const;\r\n\r\n/**\r\n * Type guard for ExtendedThoughtType\r\n *\r\n * @param value - Value to check\r\n * @returns true if value is a valid ExtendedThoughtType\r\n */\r\nexport function isExtendedThoughtType(value: unknown): value is ExtendedThoughtType {\r\n return typeof value === 'string' && VALID_THOUGHT_TYPES.includes(value as ExtendedThoughtType);\r\n}\r\n\r\n/**\r\n * Validate and cast to ExtendedThoughtType\r\n *\r\n * @param value - Value to validate\r\n * @param fallback - Fallback value if invalid (optional)\r\n * @returns Validated ExtendedThoughtType\r\n * @throws Error if value is invalid and no fallback provided\r\n */\r\nexport function toExtendedThoughtType(\r\n value: unknown,\r\n fallback?: ExtendedThoughtType\r\n): ExtendedThoughtType {\r\n if (isExtendedThoughtType(value)) {\r\n return value;\r\n }\r\n\r\n if (fallback !== undefined) {\r\n return fallback;\r\n }\r\n\r\n throw new Error(\r\n `Invalid ExtendedThoughtType: ${value}. Must be one of: ${VALID_THOUGHT_TYPES.join(', ')}`\r\n );\r\n}\r\n\r\n/**\r\n * Type guard for checking if value is a number\r\n */\r\nexport function isNumber(value: unknown): value is number {\r\n return typeof value === 'number' && !isNaN(value) && isFinite(value);\r\n}\r\n\r\n/**\r\n * Type guard for checking if value is a non-empty string\r\n */\r\nexport function isNonEmptyString(value: unknown): value is string {\r\n return typeof value === 'string' && value.length > 0;\r\n}\r\n\r\n/**\r\n * Type guard for checking if value is an array\r\n */\r\nexport function isArray<T>(value: unknown, itemGuard?: (item: unknown) => item is T): value is T[] {\r\n if (!Array.isArray(value)) {\r\n return false;\r\n }\r\n\r\n if (itemGuard) {\r\n return value.every(itemGuard);\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Type guard for checking if value is a plain object\r\n */\r\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\r\n return typeof value === 'object' && value !== null && !Array.isArray(value);\r\n}\r\n\r\n/**\r\n * Safe type cast with runtime validation\r\n *\r\n * @param value - Value to cast\r\n * @param guard - Type guard function\r\n * @param errorMessage - Error message if validation fails\r\n * @returns Validated value\r\n * @throws Error if validation fails\r\n */\r\nexport function safeCast<T>(\r\n value: unknown,\r\n guard: (value: unknown) => value is T,\r\n errorMessage: string\r\n): T {\r\n if (guard(value)) {\r\n return value;\r\n }\r\n throw new Error(errorMessage);\r\n}\r\n","#!/usr/bin/env node\n\n/**\n * DeepThinking MCP Server\n * Unified deep thinking server combining sequential, Shannon, and mathematical reasoning\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 { randomUUID } from 'crypto';\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\nimport { thinkingTool, ThinkingToolInput, ThinkingToolSchema } from './tools/thinking.js';\nimport { SessionManager } from './session/index.js';\nimport {\n ThinkingMode,\n ShannonStage,\n SequentialThought,\n ShannonThought,\n MathematicsThought,\n PhysicsThought,\n HybridThought,\n AbductiveThought,\n CausalThought,\n BayesianThought,\n CounterfactualThought,\n AnalogicalThought,\n TemporalThought,\n GameTheoryThought,\n EvidentialThought,\n FirstPrincipleThought,\n ModeRecommender,\n} from './types/index.js';\nimport { VisualExporter, type VisualFormat } from './export/visual.js';\nimport { toExtendedThoughtType } from './utils/type-guards.js';\n\nconst server = new Server(\n {\n name: packageJson.name,\n version: packageJson.version,\n },\n {\n capabilities: {\n tools: {},\n },\n }\n);\n\nconst sessionManager = new SessionManager();\n\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: [thinkingTool],\n };\n});\n\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n\n if (name === 'deepthinking') {\n try {\n const input = ThinkingToolSchema.parse(args) as ThinkingToolInput;\n\n switch (input.action) {\n case 'add_thought':\n return await handleAddThought(input);\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 action: ${input.action}`);\n }\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 throw new Error(`Unknown tool: ${name}`);\n});\n\nasync function handleAddThought(input: ThinkingToolInput) {\n let sessionId = input.sessionId;\n if (!sessionId) {\n const session = await sessionManager.createSession({\n mode: input.mode as ThinkingMode,\n title: `Thinking Session ${new Date().toISOString()}`,\n });\n sessionId = session.id;\n }\n\n const thought = createThought(input, 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\nasync function handleSummarize(input: ThinkingToolInput) {\n if (!input.sessionId) {\n throw new Error('sessionId required for summarize action');\n }\n\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\nasync function handleExport(input: ThinkingToolInput) {\n if (!input.sessionId) {\n throw new Error('sessionId required for export action');\n }\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\n // For visual formats, check if applicable and use VisualExporter\n if (format === 'mermaid' || format === 'dot' || format === 'ascii') {\n const visualExporter = new VisualExporter();\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 let exported: string;\n\n // Determine which visual export method to use based on mode\n if (lastThought.mode === 'causal' && 'causalGraph' in lastThought) {\n exported = visualExporter.exportCausalGraph(lastThought as CausalThought, {\n format: format as VisualFormat,\n colorScheme: 'default',\n includeLabels: true,\n includeMetrics: true,\n });\n } else if (lastThought.mode === 'temporal' && 'timeline' in lastThought) {\n exported = visualExporter.exportTemporalTimeline(lastThought as TemporalThought, {\n format: format as VisualFormat,\n includeLabels: true,\n });\n } else if (lastThought.mode === 'gametheory' && 'game' in lastThought) {\n exported = visualExporter.exportGameTree(lastThought as GameTheoryThought, {\n format: format as VisualFormat,\n colorScheme: 'default',\n includeLabels: true,\n includeMetrics: true,\n });\n } else if (lastThought.mode === 'bayesian' && 'hypothesis' in lastThought) {\n exported = visualExporter.exportBayesianNetwork(lastThought as BayesianThought, {\n format: format as VisualFormat,\n colorScheme: 'default',\n includeLabels: true,\n includeMetrics: true,\n });\n } else if (lastThought.mode === 'firstprinciple' && 'question' in lastThought) {\n exported = visualExporter.exportFirstPrinciples(lastThought as FirstPrincipleThought, {\n format: format as VisualFormat,\n colorScheme: 'default',\n });\n } else {\n // Generic thought sequence export for all other modes\n exported = visualExporter.exportThoughtSequence(session.thoughts, {\n format: format as VisualFormat,\n colorScheme: 'default',\n });\n }\n\n return {\n content: [{\n type: 'text' as const,\n text: exported,\n }],\n };\n }\n\n // Standard exports (json, markdown, latex, html, jupyter)\n const sessionWithCustomMetrics = {\n ...session,\n metrics: {\n ...session.metrics,\n customMetrics: Object.fromEntries(session.metrics.customMetrics),\n },\n };\n\n let exported: string;\n\n switch (format) {\n case 'json':\n exported = JSON.stringify(sessionWithCustomMetrics, null, 2);\n break;\n case 'markdown':\n exported = exportToMarkdown(sessionWithCustomMetrics);\n break;\n case 'latex':\n exported = exportToLatex(sessionWithCustomMetrics);\n break;\n case 'html':\n exported = exportToHTML(sessionWithCustomMetrics);\n break;\n case 'jupyter':\n exported = exportToJupyter(sessionWithCustomMetrics);\n break;\n default:\n exported = JSON.stringify(sessionWithCustomMetrics, null, 2);\n }\n\n return {\n content: [{\n type: 'text' as const,\n text: exported,\n }],\n };\n}\n\n\nasync function handleSwitchMode(input: ThinkingToolInput) {\n if (!input.sessionId || !input.newMode) {\n throw new Error('sessionId and newMode required for switch_mode action');\n }\n\n const session = await sessionManager.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\nasync function handleGetSession(input: ThinkingToolInput) {\n if (!input.sessionId) {\n throw new Error('sessionId required for get_session action');\n }\n\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\nfunction createThought(input: ThinkingToolInput, sessionId: string) {\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 '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 unknown as BayesianThought;\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 unknown as CounterfactualThought;\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 unknown as AnalogicalThought;\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 unknown as TemporalThought;\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 unknown as GameTheoryThought;\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 unknown as EvidentialThought;\n\n case 'firstprinciple': return { ...baseThought, mode: ThinkingMode.FIRSTPRINCIPLE, question: input.question || '', principles: input.principles || [], derivationSteps: input.derivationSteps || [], conclusion: input.conclusion || { statement: '', derivationChain: [], certainty: 0 }, alternativeInterpretations: input.alternativeInterpretations || [], } as unknown as FirstPrincipleThought;\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 unknown as HybridThought;\n }\n}\n\n\n/**\n * Handle mode recommendation requests\n */\nasync function handleRecommendMode(input: ThinkingToolInput) {\n const recommender = new ModeRecommender();\n \n // Quick recommendation based on problem type\n if (input.problemType && !input.problemCharacteristics) {\n const recommendedMode = recommender.quickRecommend(input.problemType);\n \n return {\n content: [{\n type: 'text' as const,\n text: `Quick recommendation for \"${input.problemType}\":\\n\\n**Recommended Mode**: ${recommendedMode}\\n\\nFor more detailed recommendations, provide problemCharacteristics.`\n }],\n isError: false,\n };\n }\n \n // Comprehensive recommendations based on problem characteristics\n if (input.problemCharacteristics) {\n const modeRecs = recommender.recommendModes(input.problemCharacteristics);\n const combinationRecs = input.includeCombinations \n ? recommender.recommendCombinations(input.problemCharacteristics)\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 {\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// Helper export functions\nfunction exportToMarkdown(session: any): string {\n let md = `# Thinking Session: ${session.id}\n\n`;\n md += `**Mode**: ${session.mode}\n`;\n md += `**Created**: ${session.createdAt}\n`;\n md += `**Status**: ${session.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\nfunction exportToLatex(session: any): string {\n let latex = `\\\\documentclass{article}\n`;\n latex += `\\\\title{Thinking Session: ${session.id}}\n`;\n latex += `\\\\begin{document}\n`;\n latex += `\\\\maketitle\n\n`;\n latex += `\\\\section{Session Details}\n`;\n latex += `Mode: ${session.mode}\\\\\\\\\n`;\n latex += `Status: ${session.status}\\\\\\\\\n\n`;\n latex += `\\\\section{Thoughts}\n`;\n\n for (const thought of session.thoughts) {\n latex += `\\\\subsection{Thought ${thought.thoughtNumber}}\n`;\n latex += `${thought.content}\n\n`;\n }\n\n latex += `\\\\end{document}\n`;\n return latex;\n}\n\nfunction exportToHTML(session: any): string {\n let html = `<!DOCTYPE html>\n<html>\n<head>\n`;\n html += ` <title>Thinking Session: ${session.id}</title>\n`;\n html += ` <style>body { font-family: Arial, sans-serif; max-width: 800px; margin: 50px auto; }</style>\n`;\n html += `</head>\n<body>\n`;\n html += ` <h1>Thinking Session: ${session.id}</h1>\n`;\n html += ` <p><strong>Mode:</strong> ${session.mode}</p>\n`;\n html += ` <p><strong>Status:</strong> ${session.status}</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>${thought.content}</p>\n`;\n html += ` </div>\n`;\n }\n\n html += `</body>\n</html>\n`;\n return html;\n}\n\nfunction exportToJupyter(session: any): string {\n const notebook = {\n cells: [] as any[],\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: [`# Thinking Session: ${session.id}\n`, `\n`, `**Mode**: ${session.mode} \n`, `**Status**: ${session.status}\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: [`## Thought ${thought.thoughtNumber}/${session.thoughts.length}\n`, `\n`, `${thought.content}\n`],\n });\n }\n\n return JSON.stringify(notebook, null, 2);\n}\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"]}
|