deepthinking-mcp 2.1.4 → 2.3.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 +27 -5
- package/dist/index.js +210 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# DeepThinking MCP v2.
|
|
1
|
+
# DeepThinking MCP v2.3
|
|
2
2
|
|
|
3
|
-
A comprehensive Model Context Protocol (MCP) server featuring **
|
|
3
|
+
A comprehensive Model Context Protocol (MCP) server featuring **13 advanced reasoning modes** for complex problem-solving, analysis, and decision-making.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
DeepThinking MCP v2.
|
|
7
|
+
DeepThinking MCP v2.3 provides a complete toolkit for structured reasoning with 13 specialized modes:
|
|
8
8
|
|
|
9
9
|
### Core Modes
|
|
10
10
|
- **Sequential**: Iterative refinement with revision capabilities
|
|
@@ -19,8 +19,10 @@ DeepThinking MCP v2.1 provides a complete toolkit for structured reasoning with
|
|
|
19
19
|
- **Bayesian**: Probabilistic reasoning with evidence updates
|
|
20
20
|
- **Counterfactual**: What-if scenario analysis and alternative histories
|
|
21
21
|
- **Analogical**: Cross-domain pattern matching and knowledge transfer
|
|
22
|
-
n### Phase 3 Modes (v2.
|
|
22
|
+
n### Phase 3 Modes (v2.3+)
|
|
23
23
|
- **Temporal**: Event timelines, temporal constraints, Allen's interval algebra, causal relations over time
|
|
24
|
+
- **Game Theory**: Nash equilibria, strategic analysis, payoff matrices, dominant strategies, game trees
|
|
25
|
+
- **Evidential**: Dempster-Shafer theory, belief functions, evidence combination, uncertainty intervals
|
|
24
26
|
|
|
25
27
|
## Features
|
|
26
28
|
|
|
@@ -39,8 +41,10 @@ n### Phase 3 Modes (v2.1+)
|
|
|
39
41
|
- **Bayesian**: Update beliefs using probabilistic reasoning with priors, likelihoods, and evidence. Essential for risk assessment and A/B testing.
|
|
40
42
|
- **Counterfactual**: Explore alternative scenarios and compare outcomes. Excellent for post-mortems and strategic planning.
|
|
41
43
|
- **Analogical**: Transfer knowledge across domains by identifying structural similarities. Great for design patterns and innovative problem-solving.
|
|
42
|
-
n#### Phase 3 Reasoning Modes (v2.
|
|
44
|
+
n#### Phase 3 Reasoning Modes (v2.3+)
|
|
43
45
|
- **Temporal**: Model events, intervals, and temporal relationships using Allen's interval algebra. Track causality over time with timestamps, durations, and temporal constraints. Perfect for timeline analysis, scheduling problems, and understanding event sequences.
|
|
46
|
+
- **Game Theory**: Analyze strategic interactions between rational agents. Define games, players, and strategies. Compute Nash equilibria (pure and mixed), identify dominant strategies, construct payoff matrices, and build extensive-form game trees. Ideal for competitive analysis, mechanism design, and strategic decision-making.
|
|
47
|
+
- **Evidential**: Apply Dempster-Shafer theory for reasoning with uncertain and incomplete evidence. Define hypotheses, collect evidence with reliability scores, assign belief functions with mass assignments, combine evidence using Dempster's rule, compute belief and plausibility intervals, and make decisions under uncertainty. Ideal for sensor fusion, diagnostic reasoning, intelligence analysis, and situations with incomplete information.
|
|
44
48
|
|
|
45
49
|
### Mathematical Enhancements
|
|
46
50
|
- **Symbolic computation** support with LaTeX and symbolic formats
|
|
@@ -190,6 +194,24 @@ n#### Temporal Mode
|
|
|
190
194
|
- `constraints`: Allen's interval algebra constraints (before, after, during, overlaps, meets, starts, finishes, equals)
|
|
191
195
|
- `relations`: Temporal causal relations (causes, enables, prevents, precedes, follows) with strength and delay
|
|
192
196
|
|
|
197
|
+
#### Game Theory Mode
|
|
198
|
+
- `game`: Game definition (id, name, type, numPlayers, isZeroSum, isPerfectInformation)
|
|
199
|
+
- `players`: Player definitions with roles, rationality, available strategies
|
|
200
|
+
- `strategies`: Pure or mixed strategies with probabilities
|
|
201
|
+
- `payoffMatrix`: Normal-form payoff matrix with strategy profiles and payoffs
|
|
202
|
+
- `nashEquilibria`: Nash equilibrium solutions (pure/mixed, strict, stability)
|
|
203
|
+
- `dominantStrategies`: Dominant strategy analysis (strictly/weakly dominant)
|
|
204
|
+
- `gameTree`: Extensive-form game tree with decision, chance, and terminal nodes
|
|
205
|
+
|
|
206
|
+
#### Evidential Mode
|
|
207
|
+
- `frameOfDiscernment`: Set of all possible hypotheses being considered
|
|
208
|
+
- `hypotheses`: Hypothesis definitions (id, name, description, mutuallyExclusive, subsets)
|
|
209
|
+
- `evidence`: Evidence items with source, reliability (0-1), timestamp, supports, contradicts
|
|
210
|
+
- `beliefFunctions`: Belief function with mass assignments (hypothesisSet, mass, justification)
|
|
211
|
+
- `combinedBelief`: Belief function resulting from Dempster-Shafer combination (includes conflictMass)
|
|
212
|
+
- `plausibility`: Plausibility function with belief/plausibility values and uncertainty intervals
|
|
213
|
+
- `decisions`: Decision analysis (selectedHypothesis, confidence, reasoning, alternatives)
|
|
214
|
+
|
|
193
215
|
### Actions
|
|
194
216
|
- `add_thought` (default): Add a new thought to session
|
|
195
217
|
- `summarize`: Generate session summary
|
package/dist/index.js
CHANGED
|
@@ -52,10 +52,16 @@ var ThinkingToolSchema = z.object({
|
|
|
52
52
|
})).optional(),
|
|
53
53
|
hypotheses: z.array(z.object({
|
|
54
54
|
id: z.string(),
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
// Abductive fields
|
|
56
|
+
explanation: z.string().optional(),
|
|
57
|
+
assumptions: z.array(z.string()).optional(),
|
|
58
|
+
predictions: z.array(z.string()).optional(),
|
|
59
|
+
score: z.number().optional(),
|
|
60
|
+
// Evidential fields
|
|
61
|
+
name: z.string().optional(),
|
|
62
|
+
description: z.string().optional(),
|
|
63
|
+
mutuallyExclusive: z.boolean().optional(),
|
|
64
|
+
subsets: z.array(z.string()).optional()
|
|
59
65
|
})).optional(),
|
|
60
66
|
evaluationCriteria: z.object({
|
|
61
67
|
parsimony: z.number(),
|
|
@@ -65,10 +71,17 @@ var ThinkingToolSchema = z.object({
|
|
|
65
71
|
}).optional(),
|
|
66
72
|
evidence: z.array(z.object({
|
|
67
73
|
id: z.string(),
|
|
68
|
-
hypothesisId: z.string(),
|
|
69
|
-
type: z.enum(["supporting", "contradicting", "neutral"]),
|
|
70
74
|
description: z.string(),
|
|
71
|
-
|
|
75
|
+
// Abductive fields
|
|
76
|
+
hypothesisId: z.string().optional(),
|
|
77
|
+
type: z.enum(["supporting", "contradicting", "neutral"]).optional(),
|
|
78
|
+
strength: z.number().min(0).max(1).optional(),
|
|
79
|
+
// Evidential fields
|
|
80
|
+
source: z.string().optional(),
|
|
81
|
+
reliability: z.number().min(0).max(1).optional(),
|
|
82
|
+
timestamp: z.number().optional(),
|
|
83
|
+
supports: z.array(z.string()).optional(),
|
|
84
|
+
contradicts: z.array(z.string()).optional()
|
|
72
85
|
})).optional(),
|
|
73
86
|
bestExplanation: z.object({
|
|
74
87
|
id: z.string(),
|
|
@@ -271,6 +284,116 @@ var ThinkingToolSchema = z.object({
|
|
|
271
284
|
strength: z.number().min(0).max(1),
|
|
272
285
|
delay: z.number().optional()
|
|
273
286
|
})).optional(),
|
|
287
|
+
// Game theory properties (Phase 3, v2.2)
|
|
288
|
+
game: z.object({
|
|
289
|
+
id: z.string(),
|
|
290
|
+
name: z.string(),
|
|
291
|
+
description: z.string(),
|
|
292
|
+
type: z.enum(["normal_form", "extensive_form", "cooperative", "non_cooperative"]),
|
|
293
|
+
numPlayers: z.number().int().min(2),
|
|
294
|
+
isZeroSum: z.boolean(),
|
|
295
|
+
isPerfectInformation: z.boolean()
|
|
296
|
+
}).optional(),
|
|
297
|
+
players: z.array(z.object({
|
|
298
|
+
id: z.string(),
|
|
299
|
+
name: z.string(),
|
|
300
|
+
role: z.string().optional(),
|
|
301
|
+
isRational: z.boolean(),
|
|
302
|
+
availableStrategies: z.array(z.string())
|
|
303
|
+
})).optional(),
|
|
304
|
+
strategies: z.array(z.object({
|
|
305
|
+
id: z.string(),
|
|
306
|
+
playerId: z.string(),
|
|
307
|
+
name: z.string(),
|
|
308
|
+
description: z.string(),
|
|
309
|
+
isPure: z.boolean(),
|
|
310
|
+
probability: z.number().min(0).max(1).optional()
|
|
311
|
+
})).optional(),
|
|
312
|
+
payoffMatrix: z.object({
|
|
313
|
+
players: z.array(z.string()),
|
|
314
|
+
dimensions: z.array(z.number()),
|
|
315
|
+
payoffs: z.array(z.object({
|
|
316
|
+
strategyProfile: z.array(z.string()),
|
|
317
|
+
payoffs: z.array(z.number())
|
|
318
|
+
}))
|
|
319
|
+
}).optional(),
|
|
320
|
+
nashEquilibria: z.array(z.object({
|
|
321
|
+
id: z.string(),
|
|
322
|
+
strategyProfile: z.array(z.string()),
|
|
323
|
+
payoffs: z.array(z.number()),
|
|
324
|
+
type: z.enum(["pure", "mixed"]),
|
|
325
|
+
isStrict: z.boolean(),
|
|
326
|
+
stability: z.number().min(0).max(1)
|
|
327
|
+
})).optional(),
|
|
328
|
+
dominantStrategies: z.array(z.object({
|
|
329
|
+
playerId: z.string(),
|
|
330
|
+
strategyId: z.string(),
|
|
331
|
+
type: z.enum(["strictly_dominant", "weakly_dominant"]),
|
|
332
|
+
dominatesStrategies: z.array(z.string()),
|
|
333
|
+
justification: z.string()
|
|
334
|
+
})).optional(),
|
|
335
|
+
gameTree: z.object({
|
|
336
|
+
rootNode: z.string(),
|
|
337
|
+
nodes: z.array(z.object({
|
|
338
|
+
id: z.string(),
|
|
339
|
+
type: z.enum(["decision", "chance", "terminal"]),
|
|
340
|
+
playerId: z.string().optional(),
|
|
341
|
+
parentNode: z.string().optional(),
|
|
342
|
+
childNodes: z.array(z.string()),
|
|
343
|
+
action: z.string().optional(),
|
|
344
|
+
probability: z.number().min(0).max(1).optional(),
|
|
345
|
+
payoffs: z.array(z.number()).optional()
|
|
346
|
+
})),
|
|
347
|
+
informationSets: z.array(z.object({
|
|
348
|
+
id: z.string(),
|
|
349
|
+
playerId: z.string(),
|
|
350
|
+
nodes: z.array(z.string()),
|
|
351
|
+
availableActions: z.array(z.string())
|
|
352
|
+
})).optional()
|
|
353
|
+
}).optional(),
|
|
354
|
+
// Evidential properties (Phase 3, v2.3)
|
|
355
|
+
frameOfDiscernment: z.array(z.string()).optional(),
|
|
356
|
+
beliefFunctions: z.array(z.object({
|
|
357
|
+
id: z.string(),
|
|
358
|
+
source: z.string(),
|
|
359
|
+
massAssignments: z.array(z.object({
|
|
360
|
+
hypothesisSet: z.array(z.string()),
|
|
361
|
+
mass: z.number().min(0).max(1),
|
|
362
|
+
justification: z.string()
|
|
363
|
+
})),
|
|
364
|
+
conflictMass: z.number().optional()
|
|
365
|
+
})).optional(),
|
|
366
|
+
combinedBelief: z.object({
|
|
367
|
+
id: z.string(),
|
|
368
|
+
source: z.string(),
|
|
369
|
+
massAssignments: z.array(z.object({
|
|
370
|
+
hypothesisSet: z.array(z.string()),
|
|
371
|
+
mass: z.number().min(0).max(1),
|
|
372
|
+
justification: z.string()
|
|
373
|
+
})),
|
|
374
|
+
conflictMass: z.number().optional()
|
|
375
|
+
}).optional(),
|
|
376
|
+
plausibility: z.object({
|
|
377
|
+
id: z.string(),
|
|
378
|
+
assignments: z.array(z.object({
|
|
379
|
+
hypothesisSet: z.array(z.string()),
|
|
380
|
+
plausibility: z.number().min(0).max(1),
|
|
381
|
+
belief: z.number().min(0).max(1),
|
|
382
|
+
uncertaintyInterval: z.tuple([z.number(), z.number()])
|
|
383
|
+
}))
|
|
384
|
+
}).optional(),
|
|
385
|
+
decisions: z.array(z.object({
|
|
386
|
+
id: z.string(),
|
|
387
|
+
name: z.string(),
|
|
388
|
+
selectedHypothesis: z.array(z.string()),
|
|
389
|
+
confidence: z.number().min(0).max(1),
|
|
390
|
+
reasoning: z.string(),
|
|
391
|
+
alternatives: z.array(z.object({
|
|
392
|
+
hypothesis: z.array(z.string()),
|
|
393
|
+
expectedUtility: z.number(),
|
|
394
|
+
risk: z.number()
|
|
395
|
+
}))
|
|
396
|
+
})).optional(),
|
|
274
397
|
action: z.enum(["add_thought", "summarize", "export", "switch_mode", "get_session"]).default("add_thought"),
|
|
275
398
|
exportFormat: z.enum(["markdown", "latex", "json", "html", "jupyter"]).optional(),
|
|
276
399
|
newMode: z.enum(["sequential", "shannon", "mathematics", "physics", "hybrid", "abductive", "causal", "bayesian", "counterfactual", "analogical", "temporal", "gametheory", "evidential"]).optional()
|
|
@@ -579,6 +702,16 @@ function isTemporalThought(thought) {
|
|
|
579
702
|
return thought.mode === "temporal";
|
|
580
703
|
}
|
|
581
704
|
|
|
705
|
+
// src/types/modes/gametheory.ts
|
|
706
|
+
function isGameTheoryThought(thought) {
|
|
707
|
+
return thought.mode === "gametheory";
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
// src/types/modes/evidential.ts
|
|
711
|
+
function isEvidentialThought(thought) {
|
|
712
|
+
return thought.mode === "evidential";
|
|
713
|
+
}
|
|
714
|
+
|
|
582
715
|
// src/session/manager.ts
|
|
583
716
|
var DEFAULT_CONFIG = {
|
|
584
717
|
modeConfig: {
|
|
@@ -775,6 +908,50 @@ var SessionManager = class {
|
|
|
775
908
|
if (thought.intervals) {
|
|
776
909
|
metrics.customMetrics.set("timeIntervals", thought.intervals.length);
|
|
777
910
|
}
|
|
911
|
+
if (isGameTheoryThought(thought)) {
|
|
912
|
+
if (thought.players) {
|
|
913
|
+
metrics.customMetrics.set("numPlayers", thought.players.length);
|
|
914
|
+
}
|
|
915
|
+
if (thought.strategies) {
|
|
916
|
+
metrics.customMetrics.set("totalStrategies", thought.strategies.length);
|
|
917
|
+
const mixedStrategies = thought.strategies.filter((s) => !s.isPure);
|
|
918
|
+
metrics.customMetrics.set("mixedStrategies", mixedStrategies.length);
|
|
919
|
+
}
|
|
920
|
+
if (thought.nashEquilibria) {
|
|
921
|
+
metrics.customMetrics.set("nashEquilibria", thought.nashEquilibria.length);
|
|
922
|
+
const pureEquilibria = thought.nashEquilibria.filter((e) => e.type === "pure");
|
|
923
|
+
metrics.customMetrics.set("pureNashEquilibria", pureEquilibria.length);
|
|
924
|
+
}
|
|
925
|
+
if (thought.dominantStrategies) {
|
|
926
|
+
metrics.customMetrics.set("dominantStrategies", thought.dominantStrategies.length);
|
|
927
|
+
}
|
|
928
|
+
if (thought.game) {
|
|
929
|
+
metrics.customMetrics.set("gameType", thought.game.type);
|
|
930
|
+
metrics.customMetrics.set("isZeroSum", thought.game.isZeroSum);
|
|
931
|
+
}
|
|
932
|
+
if (isEvidentialThought(thought)) {
|
|
933
|
+
if (thought.hypotheses) {
|
|
934
|
+
metrics.customMetrics.set("totalHypotheses", thought.hypotheses.length);
|
|
935
|
+
}
|
|
936
|
+
if (thought.evidence) {
|
|
937
|
+
metrics.customMetrics.set("totalEvidence", thought.evidence.length);
|
|
938
|
+
const avgReliability = thought.evidence.reduce((sum, e) => sum + e.reliability, 0) / thought.evidence.length;
|
|
939
|
+
metrics.customMetrics.set("avgEvidenceReliability", avgReliability);
|
|
940
|
+
}
|
|
941
|
+
if (thought.beliefFunctions) {
|
|
942
|
+
metrics.customMetrics.set("beliefFunctions", thought.beliefFunctions.length);
|
|
943
|
+
}
|
|
944
|
+
if (thought.combinedBelief) {
|
|
945
|
+
metrics.customMetrics.set("hasCombinedBelief", true);
|
|
946
|
+
if (thought.combinedBelief.conflictMass !== void 0) {
|
|
947
|
+
metrics.customMetrics.set("conflictMass", thought.combinedBelief.conflictMass);
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
if (thought.decisions) {
|
|
951
|
+
metrics.customMetrics.set("decisions", thought.decisions.length);
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
}
|
|
778
955
|
}
|
|
779
956
|
}
|
|
780
957
|
};
|
|
@@ -1063,6 +1240,32 @@ function createThought(input, sessionId) {
|
|
|
1063
1240
|
constraints: input.constraints || [],
|
|
1064
1241
|
relations: input.relations || []
|
|
1065
1242
|
};
|
|
1243
|
+
case "gametheory":
|
|
1244
|
+
return {
|
|
1245
|
+
...baseThought,
|
|
1246
|
+
mode: "gametheory" /* GAMETHEORY */,
|
|
1247
|
+
thoughtType: input.thoughtType,
|
|
1248
|
+
game: input.game,
|
|
1249
|
+
players: input.players || [],
|
|
1250
|
+
strategies: input.strategies || [],
|
|
1251
|
+
payoffMatrix: input.payoffMatrix,
|
|
1252
|
+
nashEquilibria: input.nashEquilibria || [],
|
|
1253
|
+
dominantStrategies: input.dominantStrategies || [],
|
|
1254
|
+
gameTree: input.gameTree
|
|
1255
|
+
};
|
|
1256
|
+
case "evidential":
|
|
1257
|
+
return {
|
|
1258
|
+
...baseThought,
|
|
1259
|
+
mode: "evidential" /* EVIDENTIAL */,
|
|
1260
|
+
thoughtType: input.thoughtType,
|
|
1261
|
+
frameOfDiscernment: input.frameOfDiscernment,
|
|
1262
|
+
hypotheses: input.hypotheses || [],
|
|
1263
|
+
evidence: input.evidence || [],
|
|
1264
|
+
beliefFunctions: input.beliefFunctions || [],
|
|
1265
|
+
combinedBelief: input.combinedBelief,
|
|
1266
|
+
plausibility: input.plausibility,
|
|
1267
|
+
decisions: input.decisions || []
|
|
1268
|
+
};
|
|
1066
1269
|
case "hybrid":
|
|
1067
1270
|
default:
|
|
1068
1271
|
return {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tools/thinking.ts","../src/types/modes/temporal.ts","../src/session/manager.ts","../src/index.ts"],"names":["session","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']).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 explanation: z.string(),\n assumptions: z.array(z.string()),\n predictions: z.array(z.string()),\n score: z.number(),\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 hypothesisId: z.string(),\n type: z.enum(['supporting', 'contradicting', 'neutral']),\n description: z.string(),\n strength: z.number().min(0).max(1),\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 action: z.enum(['add_thought', 'summarize', 'export', 'switch_mode', 'get_session']).default('add_thought'),\n exportFormat: z.enum(['markdown', 'latex', 'json', 'html', 'jupyter']).optional(),\n newMode: z.enum(['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential']).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\nChoose the mode that best fits your problem type.`,\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 action: {\n type: \"string\",\n enum: [\"add_thought\", \"summarize\", \"export\", \"switch_mode\", \"get_session\"],\n description: \"Action to perform\"\n },\n exportFormat: {\n type: \"string\",\n enum: [\"markdown\", \"latex\", \"json\", \"html\", \"jupyter\"],\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 required: [\"thought\", \"thoughtNumber\", \"totalThoughts\", \"nextThoughtNeeded\"]\n }\n};\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 * Session Manager for DeepThinking MCP\n * Manages thinking sessions, persistence, and analytics\n */\n\nimport { randomUUID } from 'crypto';\nimport {\n ThinkingSession,\n SessionConfig,\n SessionMetrics,\n SessionMetadata,\n Thought,\n ThinkingMode,\n ExportFormat\n} from '../types/index.js';\nimport { TemporalThought, isTemporalThought } from '../types/modes/temporal.js';\n\n/**\n * Default session configuration\n */\nconst DEFAULT_CONFIG: SessionConfig = {\n modeConfig: {\n mode: ThinkingMode.HYBRID,\n strictValidation: false,\n allowModeSwitch: true\n },\n enableAutoSave: true,\n enableValidation: true,\n enableVisualization: true,\n integrations: {},\n exportFormats: ['markdown', 'latex', 'json'],\n autoExportOnComplete: false,\n maxThoughtsInMemory: 1000,\n compressionThreshold: 500\n};\n\n/**\n * Session Manager\n */\nexport class SessionManager {\n private activeSessions: Map<string, ThinkingSession>;\n private config: Partial<SessionConfig>;\n\n constructor(config?: Partial<SessionConfig>) {\n this.activeSessions = new Map();\n this.config = config || {};\n }\n\n /**\n * Create a new thinking session\n */\n async createSession(options: {\n title?: string;\n mode?: ThinkingMode;\n domain?: string;\n author?: string;\n config?: Partial<SessionConfig>;\n } = {}): Promise<ThinkingSession> {\n const sessionId = randomUUID();\n const now = new Date();\n\n const session: ThinkingSession = {\n id: sessionId,\n title: options.title || 'Untitled Session',\n mode: options.mode || ThinkingMode.HYBRID,\n domain: options.domain,\n config: this.mergeConfig(options.config),\n thoughts: [],\n createdAt: now,\n updatedAt: now,\n author: options.author,\n currentThoughtNumber: 0,\n isComplete: false,\n metrics: this.initializeMetrics(),\n tags: [],\n collaborators: options.author ? [options.author] : []\n };\n\n this.activeSessions.set(sessionId, session);\n return session;\n }\n\n /**\n * Get a session by ID\n */\n async getSession(sessionId: string): Promise<ThinkingSession | null> {\n return this.activeSessions.get(sessionId) || null;\n }\n\n /**\n * Add a thought to a session\n */\n async addThought(sessionId: string, thought: Thought): Promise<ThinkingSession> {\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n throw new Error(`Session ${sessionId} not found`);\n }\n\n // Update thought with session metadata\n thought.sessionId = sessionId;\n thought.timestamp = new Date();\n\n // Add thought to session\n session.thoughts.push(thought);\n session.currentThoughtNumber = thought.thoughtNumber;\n session.updatedAt = new Date();\n\n // Update metrics\n this.updateMetrics(session, thought);\n\n // Check if session is complete\n if (!thought.nextThoughtNeeded) {\n session.isComplete = true;\n }\n\n return session;\n }\n\n /**\n * Update session mode\n */\n async switchMode(\n sessionId: string,\n newMode: ThinkingMode,\n reason?: string\n ): Promise<ThinkingSession> {\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n throw new Error(`Session ${sessionId} not found`);\n }\n\n const oldMode = session.mode;\n session.mode = newMode;\n session.config.modeConfig.mode = newMode;\n session.updatedAt = new Date();\n\n return session;\n }\n\n /**\n * List all sessions\n */\n async listSessions(): Promise<SessionMetadata[]> {\n return Array.from(this.activeSessions.values()).map(session => ({\n id: session.id,\n title: session.title,\n createdAt: session.createdAt,\n updatedAt: session.updatedAt,\n thoughtCount: session.thoughts.length,\n mode: session.mode,\n isComplete: session.isComplete\n }));\n }\n\n /**\n * Delete a session\n */\n async deleteSession(sessionId: string): Promise<void> {\n this.activeSessions.delete(sessionId);\n }\n\n /**\n * Generate summary of session\n */\n async generateSummary(sessionId: string): Promise<string> {\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n throw new Error(`Session ${sessionId} not found`);\n }\n\n let summary = `# ${session.title}\\n\\n`;\n summary += `Mode: ${session.mode}\\n`;\n summary += `Total Thoughts: ${session.thoughts.length}\\n`;\n summary += `Status: ${session.isComplete ? 'Complete' : 'In Progress'}\\n\\n`;\n\n summary += `## Key Thoughts:\\n\\n`;\n for (const thought of session.thoughts) {\n summary += `${thought.thoughtNumber}. ${thought.content.substring(0, 100)}...\\n`;\n }\n\n return summary;\n }\n\n /**\n * Merge configurations\n */\n private mergeConfig(userConfig?: Partial<SessionConfig>): SessionConfig {\n return {\n ...DEFAULT_CONFIG,\n ...this.config,\n ...userConfig\n } as SessionConfig;\n }\n\n /**\n * Initialize metrics\n */\n private initializeMetrics(): SessionMetrics {\n return {\n totalThoughts: 0,\n thoughtsByType: {},\n averageUncertainty: 0,\n revisionCount: 0,\n timeSpent: 0,\n dependencyDepth: 0,\n customMetrics: new Map(),\n };\n }\n\n /**\n * Update session metrics\n */\n private updateMetrics(session: ThinkingSession, thought: Thought): void {\n const metrics = session.metrics;\n\n // Update total thoughts\n metrics.totalThoughts = session.thoughts.length;\n\n // Update revision count\n if (thought.isRevision) {\n metrics.revisionCount++;\n }\n\n // Update time spent (in milliseconds)\n metrics.timeSpent = session.updatedAt.getTime() - session.createdAt.getTime();\n\n // Update average uncertainty (for modes that have uncertainty)\n if ('uncertainty' in thought) {\n const totalUncertainty = session.thoughts\n .filter(t => 'uncertainty' in t)\n .reduce((sum, t) => sum + (t as any).uncertainty, 0);\n const thoughtsWithUncertainty = session.thoughts.filter(t => 'uncertainty' in t).length;\n metrics.averageUncertainty = thoughtsWithUncertainty > 0\n ? totalUncertainty / thoughtsWithUncertainty\n : 0;\n }\n\n // Update dependency depth\n if ('dependencies' in thought && thought.dependencies) {\n const deps = (thought as any).dependencies as string[];\n if (deps && deps.length > metrics.dependencyDepth) {\n metrics.dependencyDepth = deps.length;\n }\n }\n\n // Temporal-specific metrics (Phase 3, v2.1)\n if (isTemporalThought(thought)) {\n if (thought.events) {\n metrics.customMetrics.set('totalEvents', thought.events.length);\n }\n if (thought.timeline) {\n metrics.customMetrics.set('timelineUnit', thought.timeline.timeUnit);\n }\n if (thought.relations) {\n const causalRelations = thought.relations.filter(r => r.relationType === 'causes');\n metrics.customMetrics.set('causalRelations', causalRelations.length);\n }\n if (thought.constraints) {\n metrics.customMetrics.set('temporalConstraints', thought.constraints.length);\n }\n if (thought.intervals) {\n metrics.customMetrics.set('timeIntervals', thought.intervals.length);\n }\n }\n }\n}\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';\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} from './types/index.js';\n\nconst server = new Server(\n {\n name: 'deepthinking-mcp',\n version: '1.0.0',\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 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 // Convert Map to object for JSON serialization\n const sessionWithCustomMetrics = {\n ...session,\n metrics: {\n ...session.metrics,\n customMetrics: Object.fromEntries(session.metrics.customMetrics),\n },\n };\n\n const exported = JSON.stringify(sessionWithCustomMetrics, null, 2);\n\n return {\n content: [\n {\n type: 'text',\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: input.thoughtType as any,\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: input.thoughtType as any,\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: input.thoughtType as any,\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: input.thoughtType as any,\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: input.thoughtType as any,\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: input.thoughtType as any,\n actual: input.actual,\n counterfactuals: input.counterfactuals || [],\n comparison: input.comparison,\n interventionPoint: input.interventionPoint,\n causalChains: input.causalChains || [],\n } as CounterfactualThought;\n\n case 'analogical':\n return {\n ...baseThought,\n mode: ThinkingMode.ANALOGICAL,\n thoughtType: input.thoughtType as any,\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 as any,\n timeline: input.timeline,\n events: input.events || [],\n intervals: input.intervals || [],\n constraints: input.constraints || [],\n relations: input.relations || [],\n } as TemporalThought;\n\n case 'hybrid':\n default:\n return {\n ...baseThought,\n mode: ThinkingMode.HYBRID,\n thoughtType: input.thoughtType as any,\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 as any,\n secondaryFeatures: [],\n } as HybridThought;\n }\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/tools/thinking.ts","../src/types/modes/temporal.ts","../src/types/modes/gametheory.ts","../src/types/modes/evidential.ts","../src/session/manager.ts","../src/index.ts"],"names":["session","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']).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 action: z.enum(['add_thought', 'summarize', 'export', 'switch_mode', 'get_session']).default('add_thought'),\n exportFormat: z.enum(['markdown', 'latex', 'json', 'html', 'jupyter']).optional(),\n newMode: z.enum(['sequential', 'shannon', 'mathematics', 'physics', 'hybrid', 'abductive', 'causal', 'bayesian', 'counterfactual', 'analogical', 'temporal', 'gametheory', 'evidential']).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\nChoose the mode that best fits your problem type.`,\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 action: {\n type: \"string\",\n enum: [\"add_thought\", \"summarize\", \"export\", \"switch_mode\", \"get_session\"],\n description: \"Action to perform\"\n },\n exportFormat: {\n type: \"string\",\n enum: [\"markdown\", \"latex\", \"json\", \"html\", \"jupyter\"],\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 required: [\"thought\", \"thoughtNumber\", \"totalThoughts\", \"nextThoughtNeeded\"]\n }\n};\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 * Session Manager for DeepThinking MCP\n * Manages thinking sessions, persistence, and analytics\n */\n\nimport { randomUUID } from 'crypto';\nimport {\n ThinkingSession,\n SessionConfig,\n SessionMetrics,\n SessionMetadata,\n Thought,\n ThinkingMode,\n ExportFormat\n} from '../types/index.js';\nimport { TemporalThought, isTemporalThought } from '../types/modes/temporal.js';\nimport { GameTheoryThought, isGameTheoryThought } from '../types/modes/gametheory.js';\nimport { EvidentialThought, isEvidentialThought } from '../types/modes/evidential.js';\n\n/**\n * Default session configuration\n */\nconst DEFAULT_CONFIG: SessionConfig = {\n modeConfig: {\n mode: ThinkingMode.HYBRID,\n strictValidation: false,\n allowModeSwitch: true\n },\n enableAutoSave: true,\n enableValidation: true,\n enableVisualization: true,\n integrations: {},\n exportFormats: ['markdown', 'latex', 'json'],\n autoExportOnComplete: false,\n maxThoughtsInMemory: 1000,\n compressionThreshold: 500\n};\n\n/**\n * Session Manager\n */\nexport class SessionManager {\n private activeSessions: Map<string, ThinkingSession>;\n private config: Partial<SessionConfig>;\n\n constructor(config?: Partial<SessionConfig>) {\n this.activeSessions = new Map();\n this.config = config || {};\n }\n\n /**\n * Create a new thinking session\n */\n async createSession(options: {\n title?: string;\n mode?: ThinkingMode;\n domain?: string;\n author?: string;\n config?: Partial<SessionConfig>;\n } = {}): Promise<ThinkingSession> {\n const sessionId = randomUUID();\n const now = new Date();\n\n const session: ThinkingSession = {\n id: sessionId,\n title: options.title || 'Untitled Session',\n mode: options.mode || ThinkingMode.HYBRID,\n domain: options.domain,\n config: this.mergeConfig(options.config),\n thoughts: [],\n createdAt: now,\n updatedAt: now,\n author: options.author,\n currentThoughtNumber: 0,\n isComplete: false,\n metrics: this.initializeMetrics(),\n tags: [],\n collaborators: options.author ? [options.author] : []\n };\n\n this.activeSessions.set(sessionId, session);\n return session;\n }\n\n /**\n * Get a session by ID\n */\n async getSession(sessionId: string): Promise<ThinkingSession | null> {\n return this.activeSessions.get(sessionId) || null;\n }\n\n /**\n * Add a thought to a session\n */\n async addThought(sessionId: string, thought: Thought): Promise<ThinkingSession> {\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n throw new Error(`Session ${sessionId} not found`);\n }\n\n // Update thought with session metadata\n thought.sessionId = sessionId;\n thought.timestamp = new Date();\n\n // Add thought to session\n session.thoughts.push(thought);\n session.currentThoughtNumber = thought.thoughtNumber;\n session.updatedAt = new Date();\n\n // Update metrics\n this.updateMetrics(session, thought);\n\n // Check if session is complete\n if (!thought.nextThoughtNeeded) {\n session.isComplete = true;\n }\n\n return session;\n }\n\n /**\n * Update session mode\n */\n async switchMode(\n sessionId: string,\n newMode: ThinkingMode,\n reason?: string\n ): Promise<ThinkingSession> {\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n throw new Error(`Session ${sessionId} not found`);\n }\n\n const oldMode = session.mode;\n session.mode = newMode;\n session.config.modeConfig.mode = newMode;\n session.updatedAt = new Date();\n\n return session;\n }\n\n /**\n * List all sessions\n */\n async listSessions(): Promise<SessionMetadata[]> {\n return Array.from(this.activeSessions.values()).map(session => ({\n id: session.id,\n title: session.title,\n createdAt: session.createdAt,\n updatedAt: session.updatedAt,\n thoughtCount: session.thoughts.length,\n mode: session.mode,\n isComplete: session.isComplete\n }));\n }\n\n /**\n * Delete a session\n */\n async deleteSession(sessionId: string): Promise<void> {\n this.activeSessions.delete(sessionId);\n }\n\n /**\n * Generate summary of session\n */\n async generateSummary(sessionId: string): Promise<string> {\n const session = this.activeSessions.get(sessionId);\n if (!session) {\n throw new Error(`Session ${sessionId} not found`);\n }\n\n let summary = `# ${session.title}\\n\\n`;\n summary += `Mode: ${session.mode}\\n`;\n summary += `Total Thoughts: ${session.thoughts.length}\\n`;\n summary += `Status: ${session.isComplete ? 'Complete' : 'In Progress'}\\n\\n`;\n\n summary += `## Key Thoughts:\\n\\n`;\n for (const thought of session.thoughts) {\n summary += `${thought.thoughtNumber}. ${thought.content.substring(0, 100)}...\\n`;\n }\n\n return summary;\n }\n\n /**\n * Merge configurations\n */\n private mergeConfig(userConfig?: Partial<SessionConfig>): SessionConfig {\n return {\n ...DEFAULT_CONFIG,\n ...this.config,\n ...userConfig\n } as SessionConfig;\n }\n\n /**\n * Initialize metrics\n */\n private initializeMetrics(): SessionMetrics {\n return {\n totalThoughts: 0,\n thoughtsByType: {},\n averageUncertainty: 0,\n revisionCount: 0,\n timeSpent: 0,\n dependencyDepth: 0,\n customMetrics: new Map(),\n };\n }\n\n /**\n * Update session metrics\n */\n private updateMetrics(session: ThinkingSession, thought: Thought): void {\n const metrics = session.metrics;\n\n // Update total thoughts\n metrics.totalThoughts = session.thoughts.length;\n\n // Update revision count\n if (thought.isRevision) {\n metrics.revisionCount++;\n }\n\n // Update time spent (in milliseconds)\n metrics.timeSpent = session.updatedAt.getTime() - session.createdAt.getTime();\n\n // Update average uncertainty (for modes that have uncertainty)\n if ('uncertainty' in thought) {\n const totalUncertainty = session.thoughts\n .filter(t => 'uncertainty' in t)\n .reduce((sum, t) => sum + (t as any).uncertainty, 0);\n const thoughtsWithUncertainty = session.thoughts.filter(t => 'uncertainty' in t).length;\n metrics.averageUncertainty = thoughtsWithUncertainty > 0\n ? totalUncertainty / thoughtsWithUncertainty\n : 0;\n }\n\n // Update dependency depth\n if ('dependencies' in thought && thought.dependencies) {\n const deps = (thought as any).dependencies as string[];\n if (deps && deps.length > metrics.dependencyDepth) {\n metrics.dependencyDepth = deps.length;\n }\n }\n\n // Temporal-specific metrics (Phase 3, v2.1)\n if (isTemporalThought(thought)) {\n if (thought.events) {\n metrics.customMetrics.set('totalEvents', thought.events.length);\n }\n if (thought.timeline) {\n metrics.customMetrics.set('timelineUnit', thought.timeline.timeUnit);\n }\n if (thought.relations) {\n const causalRelations = thought.relations.filter(r => r.relationType === 'causes');\n metrics.customMetrics.set('causalRelations', causalRelations.length);\n }\n if (thought.constraints) {\n metrics.customMetrics.set('temporalConstraints', thought.constraints.length);\n }\n if (thought.intervals) {\n metrics.customMetrics.set('timeIntervals', thought.intervals.length);\n }\n\n // Game theory-specific metrics (Phase 3, v2.2)\n if (isGameTheoryThought(thought)) {\n if (thought.players) {\n metrics.customMetrics.set('numPlayers', thought.players.length);\n }\n if (thought.strategies) {\n metrics.customMetrics.set('totalStrategies', thought.strategies.length);\n const mixedStrategies = thought.strategies.filter(s => !s.isPure);\n metrics.customMetrics.set('mixedStrategies', mixedStrategies.length);\n }\n if (thought.nashEquilibria) {\n metrics.customMetrics.set('nashEquilibria', thought.nashEquilibria.length);\n const pureEquilibria = thought.nashEquilibria.filter(e => e.type === 'pure');\n metrics.customMetrics.set('pureNashEquilibria', pureEquilibria.length);\n }\n if (thought.dominantStrategies) {\n metrics.customMetrics.set('dominantStrategies', thought.dominantStrategies.length);\n }\n if (thought.game) {\n metrics.customMetrics.set('gameType', thought.game.type);\n metrics.customMetrics.set('isZeroSum', thought.game.isZeroSum);\n }\n\n // Evidential-specific metrics (Phase 3, v2.3)\n if (isEvidentialThought(thought)) {\n if (thought.hypotheses) {\n metrics.customMetrics.set('totalHypotheses', thought.hypotheses.length);\n }\n if (thought.evidence) {\n metrics.customMetrics.set('totalEvidence', thought.evidence.length);\n const avgReliability = thought.evidence.reduce((sum, e) => sum + e.reliability, 0) / thought.evidence.length;\n metrics.customMetrics.set('avgEvidenceReliability', avgReliability);\n }\n if (thought.beliefFunctions) {\n metrics.customMetrics.set('beliefFunctions', thought.beliefFunctions.length);\n }\n if (thought.combinedBelief) {\n metrics.customMetrics.set('hasCombinedBelief', true);\n if (thought.combinedBelief.conflictMass !== undefined) {\n metrics.customMetrics.set('conflictMass', thought.combinedBelief.conflictMass);\n }\n }\n if (thought.decisions) {\n metrics.customMetrics.set('decisions', thought.decisions.length);\n }\n }\n }\n }\n }\n}\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';\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} from './types/index.js';\n\nconst server = new Server(\n {\n name: 'deepthinking-mcp',\n version: '1.0.0',\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 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 // Convert Map to object for JSON serialization\n const sessionWithCustomMetrics = {\n ...session,\n metrics: {\n ...session.metrics,\n customMetrics: Object.fromEntries(session.metrics.customMetrics),\n },\n };\n\n const exported = JSON.stringify(sessionWithCustomMetrics, null, 2);\n\n return {\n content: [\n {\n type: 'text',\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: input.thoughtType as any,\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: input.thoughtType as any,\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: input.thoughtType as any,\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: input.thoughtType as any,\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: input.thoughtType as any,\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: input.thoughtType as any,\n actual: input.actual,\n counterfactuals: input.counterfactuals || [],\n comparison: input.comparison,\n interventionPoint: input.interventionPoint,\n causalChains: input.causalChains || [],\n } as CounterfactualThought;\n\n case 'analogical':\n return {\n ...baseThought,\n mode: ThinkingMode.ANALOGICAL,\n thoughtType: input.thoughtType as any,\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 as any,\n timeline: input.timeline,\n events: input.events || [],\n intervals: input.intervals || [],\n constraints: input.constraints || [],\n relations: input.relations || [],\n } as TemporalThought;\n\n case 'gametheory':\n return {\n ...baseThought,\n mode: ThinkingMode.GAMETHEORY,\n thoughtType: input.thoughtType as any,\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 GameTheoryThought;\n\n case 'evidential':\n return {\n ...baseThought,\n mode: ThinkingMode.EVIDENTIAL,\n thoughtType: input.thoughtType as any,\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 EvidentialThought;\n\n case 'hybrid':\n default:\n return {\n ...baseThought,\n mode: ThinkingMode.HYBRID,\n thoughtType: input.thoughtType as any,\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 as any,\n secondaryFeatures: [],\n } as HybridThought;\n }\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deepthinking-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Comprehensive MCP server with 10 advanced reasoning modes: Sequential, Shannon, Mathematics, Physics, Hybrid, Abductive, Causal, Bayesian, Counterfactual, and Analogical reasoning",
|
|
5
5
|
"author": "Daniel Simon Jr.",
|
|
6
6
|
"license": "MIT",
|