gthinking 1.3.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +34 -0
- package/ANALYSIS_SUMMARY.md +363 -0
- package/README.md +230 -250
- package/dist/analysis/analysis-engine.d.ts +63 -0
- package/dist/analysis/analysis-engine.d.ts.map +1 -0
- package/dist/analysis/analysis-engine.js +322 -0
- package/dist/analysis/analysis-engine.js.map +1 -0
- package/dist/core/config.d.ts +1419 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +361 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/engine.d.ts +176 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +604 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/errors.d.ts +153 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +287 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/{types.js → core/index.js} +8 -4
- package/dist/core/index.js.map +1 -0
- package/dist/core/pipeline.d.ts +121 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +289 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/rate-limiter.d.ts +58 -0
- package/dist/core/rate-limiter.d.ts.map +1 -0
- package/dist/core/rate-limiter.js +133 -0
- package/dist/core/rate-limiter.js.map +1 -0
- package/dist/core/session-manager.d.ts +96 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +223 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/creativity/creativity-engine.d.ts +6 -0
- package/dist/creativity/creativity-engine.d.ts.map +1 -0
- package/dist/creativity/creativity-engine.js +17 -0
- package/dist/creativity/creativity-engine.js.map +1 -0
- package/dist/index.d.ts +24 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +130 -104
- package/dist/index.js.map +1 -1
- package/dist/learning/learning-engine.d.ts +6 -0
- package/dist/learning/learning-engine.d.ts.map +1 -0
- package/dist/learning/learning-engine.js +17 -0
- package/dist/learning/learning-engine.js.map +1 -0
- package/dist/llm/index.d.ts +10 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +26 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm-service.d.ts +109 -0
- package/dist/llm/llm-service.d.ts.map +1 -0
- package/dist/llm/llm-service.js +224 -0
- package/dist/llm/llm-service.js.map +1 -0
- package/dist/llm/providers/base.d.ts +85 -0
- package/dist/llm/providers/base.d.ts.map +1 -0
- package/dist/llm/providers/base.js +57 -0
- package/dist/llm/providers/base.js.map +1 -0
- package/dist/llm/providers/cli.d.ts +23 -0
- package/dist/llm/providers/cli.d.ts.map +1 -0
- package/dist/llm/providers/cli.js +158 -0
- package/dist/llm/providers/cli.js.map +1 -0
- package/dist/llm/providers/gemini.d.ts +30 -0
- package/dist/llm/providers/gemini.d.ts.map +1 -0
- package/dist/llm/providers/gemini.js +168 -0
- package/dist/llm/providers/gemini.js.map +1 -0
- package/dist/llm/sanitization.d.ts +50 -0
- package/dist/llm/sanitization.d.ts.map +1 -0
- package/dist/llm/sanitization.js +149 -0
- package/dist/llm/sanitization.js.map +1 -0
- package/dist/{server.d.ts.map → mcp/server.d.ts.map} +1 -1
- package/dist/mcp/server.js +108 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/planning/planning-engine.d.ts +6 -0
- package/dist/planning/planning-engine.d.ts.map +1 -0
- package/dist/planning/planning-engine.js +17 -0
- package/dist/planning/planning-engine.js.map +1 -0
- package/dist/reasoning/reasoning-engine.d.ts +6 -0
- package/dist/reasoning/reasoning-engine.d.ts.map +1 -0
- package/dist/reasoning/reasoning-engine.js +17 -0
- package/dist/reasoning/reasoning-engine.js.map +1 -0
- package/dist/search/search-engine.d.ts +99 -0
- package/dist/search/search-engine.d.ts.map +1 -0
- package/dist/search/search-engine.js +271 -0
- package/dist/search/search-engine.js.map +1 -0
- package/dist/synthesis/synthesis-engine.d.ts +6 -0
- package/dist/synthesis/synthesis-engine.d.ts.map +1 -0
- package/dist/synthesis/synthesis-engine.js +17 -0
- package/dist/synthesis/synthesis-engine.js.map +1 -0
- package/dist/types/analysis.d.ts +1534 -49
- package/dist/types/analysis.d.ts.map +1 -1
- package/dist/types/analysis.js +250 -0
- package/dist/types/analysis.js.map +1 -1
- package/dist/types/core.d.ts +257 -30
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +148 -18
- package/dist/types/core.js.map +1 -1
- package/dist/types/creativity.d.ts +2871 -56
- package/dist/types/creativity.d.ts.map +1 -1
- package/dist/types/creativity.js +195 -0
- package/dist/types/creativity.js.map +1 -1
- package/dist/types/index.d.ts +6 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +17 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/learning.d.ts +851 -61
- package/dist/types/learning.d.ts.map +1 -1
- package/dist/types/learning.js +155 -0
- package/dist/types/learning.js.map +1 -1
- package/dist/types/planning.d.ts +2223 -71
- package/dist/types/planning.d.ts.map +1 -1
- package/dist/types/planning.js +190 -0
- package/dist/types/planning.js.map +1 -1
- package/dist/types/reasoning.d.ts +2209 -72
- package/dist/types/reasoning.d.ts.map +1 -1
- package/dist/types/reasoning.js +200 -1
- package/dist/types/reasoning.js.map +1 -1
- package/dist/types/search.d.ts +981 -53
- package/dist/types/search.d.ts.map +1 -1
- package/dist/types/search.js +137 -0
- package/dist/types/search.js.map +1 -1
- package/dist/types/synthesis.d.ts +583 -38
- package/dist/types/synthesis.d.ts.map +1 -1
- package/dist/types/synthesis.js +138 -0
- package/dist/types/synthesis.js.map +1 -1
- package/dist/utils/cache.d.ts +144 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +288 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/id-generator.d.ts +89 -0
- package/dist/utils/id-generator.d.ts.map +1 -0
- package/dist/utils/id-generator.js +132 -0
- package/dist/utils/id-generator.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +33 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +142 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +248 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/metrics.d.ts +149 -0
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +296 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/timer.d.ts +7 -0
- package/dist/utils/timer.d.ts.map +1 -0
- package/dist/utils/timer.js +17 -0
- package/dist/utils/timer.js.map +1 -0
- package/dist/utils/validation.d.ts +147 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +275 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs/API.md +411 -0
- package/docs/ARCHITECTURE.md +271 -0
- package/docs/CHANGELOG.md +283 -0
- package/jest.config.js +28 -0
- package/package.json +43 -30
- package/src/analysis/analysis-engine.ts +383 -0
- package/src/core/config.ts +406 -0
- package/src/core/engine.ts +785 -0
- package/src/core/errors.ts +349 -0
- package/src/core/index.ts +12 -0
- package/src/core/pipeline.ts +424 -0
- package/src/core/rate-limiter.ts +155 -0
- package/src/core/session-manager.ts +269 -0
- package/src/creativity/creativity-engine.ts +14 -0
- package/src/index.ts +178 -0
- package/src/learning/learning-engine.ts +14 -0
- package/src/llm/index.ts +10 -0
- package/src/llm/llm-service.ts +285 -0
- package/src/llm/providers/base.ts +146 -0
- package/src/llm/providers/cli.ts +186 -0
- package/src/llm/providers/gemini.ts +201 -0
- package/src/llm/sanitization.ts +178 -0
- package/src/mcp/server.ts +117 -0
- package/src/planning/planning-engine.ts +14 -0
- package/src/reasoning/reasoning-engine.ts +14 -0
- package/src/search/search-engine.ts +333 -0
- package/src/synthesis/synthesis-engine.ts +14 -0
- package/src/types/analysis.ts +337 -0
- package/src/types/core.ts +342 -0
- package/src/types/creativity.ts +268 -0
- package/src/types/index.ts +31 -0
- package/src/types/learning.ts +215 -0
- package/src/types/planning.ts +251 -0
- package/src/types/reasoning.ts +288 -0
- package/src/types/search.ts +192 -0
- package/src/types/synthesis.ts +187 -0
- package/src/utils/cache.ts +363 -0
- package/src/utils/id-generator.ts +135 -0
- package/src/utils/index.ts +22 -0
- package/src/utils/logger.ts +290 -0
- package/src/utils/metrics.ts +380 -0
- package/src/utils/timer.ts +15 -0
- package/src/utils/validation.ts +297 -0
- package/tests/setup.ts +22 -0
- package/tests/unit/cache.test.ts +189 -0
- package/tests/unit/engine.test.ts +179 -0
- package/tests/unit/validation.test.ts +218 -0
- package/tsconfig.json +17 -12
- package/GEMINI.md +0 -68
- package/analysis.ts +0 -1063
- package/creativity.ts +0 -1055
- package/dist/analysis.d.ts +0 -54
- package/dist/analysis.d.ts.map +0 -1
- package/dist/analysis.js +0 -866
- package/dist/analysis.js.map +0 -1
- package/dist/creativity.d.ts +0 -81
- package/dist/creativity.d.ts.map +0 -1
- package/dist/creativity.js +0 -828
- package/dist/creativity.js.map +0 -1
- package/dist/engine.d.ts +0 -90
- package/dist/engine.d.ts.map +0 -1
- package/dist/engine.js +0 -720
- package/dist/engine.js.map +0 -1
- package/dist/examples.d.ts +0 -7
- package/dist/examples.d.ts.map +0 -1
- package/dist/examples.js +0 -506
- package/dist/examples.js.map +0 -1
- package/dist/learning.d.ts +0 -72
- package/dist/learning.d.ts.map +0 -1
- package/dist/learning.js +0 -615
- package/dist/learning.js.map +0 -1
- package/dist/llm-service.d.ts +0 -21
- package/dist/llm-service.d.ts.map +0 -1
- package/dist/llm-service.js +0 -100
- package/dist/llm-service.js.map +0 -1
- package/dist/planning.d.ts +0 -62
- package/dist/planning.d.ts.map +0 -1
- package/dist/planning.js +0 -886
- package/dist/planning.js.map +0 -1
- package/dist/reasoning.d.ts +0 -73
- package/dist/reasoning.d.ts.map +0 -1
- package/dist/reasoning.js +0 -845
- package/dist/reasoning.js.map +0 -1
- package/dist/search-discovery.d.ts +0 -73
- package/dist/search-discovery.d.ts.map +0 -1
- package/dist/search-discovery.js +0 -548
- package/dist/search-discovery.js.map +0 -1
- package/dist/server.js +0 -113
- package/dist/server.js.map +0 -1
- package/dist/types/engine.d.ts +0 -55
- package/dist/types/engine.d.ts.map +0 -1
- package/dist/types/engine.js +0 -3
- package/dist/types/engine.js.map +0 -1
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/engine.ts +0 -1009
- package/examples.ts +0 -717
- package/index.ts +0 -106
- package/learning.ts +0 -779
- package/llm-service.ts +0 -120
- package/planning.ts +0 -1101
- package/reasoning.ts +0 -1079
- package/search-discovery.ts +0 -700
- package/server.ts +0 -115
- package/types/analysis.ts +0 -69
- package/types/core.ts +0 -90
- package/types/creativity.ts +0 -72
- package/types/engine.ts +0 -60
- package/types/index.ts +0 -9
- package/types/learning.ts +0 -69
- package/types/planning.ts +0 -85
- package/types/reasoning.ts +0 -92
- package/types/search.ts +0 -58
- package/types/synthesis.ts +0 -43
- package/types.ts +0 -6
- /package/dist/{server.d.ts → mcp/server.d.ts} +0 -0
|
@@ -0,0 +1,604 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Sequential Thinking Engine - Core Engine for gthinking v2.0.0
|
|
4
|
+
* Main orchestrator that coordinates all thinking stages
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.thinkingEngine = exports.SequentialThinkingEngine = void 0;
|
|
8
|
+
exports.createEngine = createEngine;
|
|
9
|
+
const events_1 = require("events");
|
|
10
|
+
const types_1 = require("../types");
|
|
11
|
+
const errors_1 = require("./errors");
|
|
12
|
+
const config_1 = require("./config");
|
|
13
|
+
const logger_1 = require("../utils/logger");
|
|
14
|
+
const cache_1 = require("../utils/cache");
|
|
15
|
+
const metrics_1 = require("../utils/metrics");
|
|
16
|
+
const id_generator_1 = require("../utils/id-generator");
|
|
17
|
+
const validation_1 = require("../utils/validation");
|
|
18
|
+
const zod_1 = require("zod");
|
|
19
|
+
// Import engines
|
|
20
|
+
const llm_service_1 = require("../llm/llm-service");
|
|
21
|
+
const analysis_engine_1 = require("../analysis/analysis-engine");
|
|
22
|
+
// import { SearchDiscoveryEngine } from '../search/search-engine';
|
|
23
|
+
// import { ReasoningEngine } from '../reasoning/reasoning-engine';
|
|
24
|
+
// import { LearningEngine } from '../learning/learning-engine';
|
|
25
|
+
// import { PlanningEngine } from '../planning/planning-engine';
|
|
26
|
+
// import { CreativityEngine } from '../creativity/creativity-engine';
|
|
27
|
+
// import { SynthesisEngine } from '../synthesis/synthesis-engine';
|
|
28
|
+
const logger = new logger_1.Logger('SequentialThinkingEngine');
|
|
29
|
+
const perfLogger = new logger_1.PerformanceLogger();
|
|
30
|
+
/**
|
|
31
|
+
* Thinking Request Schema
|
|
32
|
+
*/
|
|
33
|
+
const ThinkingRequestSchema = zod_1.z.object({
|
|
34
|
+
id: zod_1.z.string().uuid().optional(),
|
|
35
|
+
query: zod_1.z.string().min(1).max(10000),
|
|
36
|
+
context: zod_1.z.array(zod_1.z.string()).default([]),
|
|
37
|
+
preferredStages: zod_1.z.array(zod_1.z.nativeEnum(types_1.ThinkingStage)).optional(),
|
|
38
|
+
options: zod_1.z.object({
|
|
39
|
+
depth: zod_1.z.enum(['shallow', 'medium', 'deep']).default('medium'),
|
|
40
|
+
complexity: zod_1.z.enum(['simple', 'moderate', 'complex']).default('moderate'),
|
|
41
|
+
timeout: zod_1.z.number().positive().optional(),
|
|
42
|
+
maxStages: zod_1.z.number().positive().optional(),
|
|
43
|
+
stream: zod_1.z.boolean().default(false),
|
|
44
|
+
}).default({}),
|
|
45
|
+
});
|
|
46
|
+
/**
|
|
47
|
+
* Sequential Thinking Engine - Main orchestrator
|
|
48
|
+
*/
|
|
49
|
+
class SequentialThinkingEngine extends events_1.EventEmitter {
|
|
50
|
+
config;
|
|
51
|
+
configManager;
|
|
52
|
+
cache;
|
|
53
|
+
sessions = new Map();
|
|
54
|
+
stageExecutors = new Map();
|
|
55
|
+
initialized = false;
|
|
56
|
+
// Engines
|
|
57
|
+
llmService;
|
|
58
|
+
analysisEngine;
|
|
59
|
+
/**
|
|
60
|
+
* Create a new SequentialThinkingEngine
|
|
61
|
+
* @param config - Optional configuration
|
|
62
|
+
*/
|
|
63
|
+
constructor(config) {
|
|
64
|
+
super();
|
|
65
|
+
this.configManager = new config_1.ConfigManager(config);
|
|
66
|
+
this.config = this.configManager.getConfig();
|
|
67
|
+
this.cache = new cache_1.Cache({
|
|
68
|
+
maxSize: this.config.cache.maxSize,
|
|
69
|
+
defaultTTL: this.config.cache.defaultTTL,
|
|
70
|
+
checkInterval: this.config.cache.checkInterval,
|
|
71
|
+
});
|
|
72
|
+
this.initializeEngines();
|
|
73
|
+
this.startSessionCleanup();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Initialize all stage engines
|
|
77
|
+
*/
|
|
78
|
+
initializeEngines() {
|
|
79
|
+
logger.info('Initializing Sequential Thinking Engine v2.0.0');
|
|
80
|
+
try {
|
|
81
|
+
// Map configuration to EngineConfig
|
|
82
|
+
const engineConfig = {
|
|
83
|
+
llmProvider: this.config.llm.provider,
|
|
84
|
+
llmApiKey: this.config.llm.apiKey,
|
|
85
|
+
llmModel: this.config.llm.model,
|
|
86
|
+
llmCliCommand: this.config.llm.cliCommand,
|
|
87
|
+
llmCliArgs: this.config.llm.cliArgs,
|
|
88
|
+
llmCliPromptPassingMethod: this.config.llm.cliPromptPassingMethod,
|
|
89
|
+
llmCliPromptFlag: this.config.llm.cliPromptFlag,
|
|
90
|
+
llmTimeoutMs: this.config.llm.timeout,
|
|
91
|
+
llmMaxRetries: this.config.llm.maxRetries,
|
|
92
|
+
};
|
|
93
|
+
// Initialize LLM Service
|
|
94
|
+
this.llmService = (0, llm_service_1.createLLMService)(engineConfig);
|
|
95
|
+
// Initialize Analysis Engine
|
|
96
|
+
this.analysisEngine = (0, analysis_engine_1.createAnalysisEngine)(this.llmService);
|
|
97
|
+
// Register Analysis Executor
|
|
98
|
+
this.stageExecutors.set(types_1.ThinkingStage.ANALYSIS, {
|
|
99
|
+
execute: async (request, context) => {
|
|
100
|
+
if (!this.analysisEngine)
|
|
101
|
+
throw new Error('Analysis Engine not initialized');
|
|
102
|
+
// Map ThinkingRequest to AnalysisRequest
|
|
103
|
+
const analysisRequest = {
|
|
104
|
+
content: request.query, // Using query as content for now
|
|
105
|
+
types: [
|
|
106
|
+
types_1.AnalysisType.SENTIMENT,
|
|
107
|
+
types_1.AnalysisType.TOPIC,
|
|
108
|
+
types_1.AnalysisType.KEYWORD,
|
|
109
|
+
types_1.AnalysisType.SUMMARY
|
|
110
|
+
],
|
|
111
|
+
options: {
|
|
112
|
+
depth: request.options?.depth || 'medium',
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const result = await this.analysisEngine.analyze(analysisRequest);
|
|
116
|
+
return {
|
|
117
|
+
stage: types_1.ThinkingStage.ANALYSIS,
|
|
118
|
+
status: 'completed',
|
|
119
|
+
success: result.success,
|
|
120
|
+
confidence: result.confidence,
|
|
121
|
+
data: result,
|
|
122
|
+
timestamp: result.timestamp,
|
|
123
|
+
duration: result.duration,
|
|
124
|
+
errors: result.errors,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
// Register placeholders for other stages
|
|
129
|
+
const placeholderExecutor = {
|
|
130
|
+
execute: async (request, context) => ({
|
|
131
|
+
stage: types_1.ThinkingStage.SYNTHESIS, // Will be overwritten
|
|
132
|
+
status: 'completed',
|
|
133
|
+
success: true,
|
|
134
|
+
confidence: 0.8,
|
|
135
|
+
timestamp: new Date(),
|
|
136
|
+
duration: 100,
|
|
137
|
+
data: { placeholder: true },
|
|
138
|
+
errors: []
|
|
139
|
+
})
|
|
140
|
+
};
|
|
141
|
+
// Register other stages
|
|
142
|
+
Object.values(types_1.ThinkingStage).forEach(stage => {
|
|
143
|
+
if (stage !== types_1.ThinkingStage.ANALYSIS && !this.stageExecutors.has(stage)) {
|
|
144
|
+
this.stageExecutors.set(stage, {
|
|
145
|
+
execute: async (req, ctx) => {
|
|
146
|
+
const result = await placeholderExecutor.execute(req, ctx);
|
|
147
|
+
return { ...result, stage };
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
this.initialized = true;
|
|
153
|
+
logger.info('Sequential Thinking Engine initialized successfully');
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
logger.error('Failed to initialize engines', { error });
|
|
157
|
+
// Don't throw here to allow partial initialization, but log error
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Execute the full thinking pipeline
|
|
162
|
+
* @param request - The thinking request
|
|
163
|
+
* @returns The synthesis result
|
|
164
|
+
*/
|
|
165
|
+
async think(request) {
|
|
166
|
+
const startTime = Date.now();
|
|
167
|
+
const sessionId = (0, id_generator_1.generateUUID)();
|
|
168
|
+
let session;
|
|
169
|
+
try {
|
|
170
|
+
// Validate request
|
|
171
|
+
const validatedRequest = (0, validation_1.validateSchema)(ThinkingRequestSchema, request);
|
|
172
|
+
const thinkingRequest = {
|
|
173
|
+
...validatedRequest,
|
|
174
|
+
id: validatedRequest.id || sessionId,
|
|
175
|
+
};
|
|
176
|
+
logger.info(`Starting thinking session: ${sessionId}`, {
|
|
177
|
+
query: thinkingRequest.query,
|
|
178
|
+
stages: thinkingRequest.preferredStages,
|
|
179
|
+
});
|
|
180
|
+
this.emit('thinking:start', { sessionId, request: thinkingRequest });
|
|
181
|
+
// Check cache
|
|
182
|
+
const cacheKey = this.generateCacheKey(thinkingRequest);
|
|
183
|
+
if (this.config.cache.enabled) {
|
|
184
|
+
const cached = this.cache.get(cacheKey);
|
|
185
|
+
if (cached) {
|
|
186
|
+
logger.info(`Cache hit for session: ${sessionId}`);
|
|
187
|
+
metrics_1.metricsCollector.counter('cache_hit', 1, { type: 'think' });
|
|
188
|
+
return cached;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Create session
|
|
192
|
+
session = {
|
|
193
|
+
id: sessionId,
|
|
194
|
+
request: thinkingRequest,
|
|
195
|
+
stageResults: new Map(),
|
|
196
|
+
startTime,
|
|
197
|
+
status: 'running',
|
|
198
|
+
metadata: {}
|
|
199
|
+
};
|
|
200
|
+
this.sessions.set(sessionId, session);
|
|
201
|
+
// Determine stages to execute
|
|
202
|
+
const stages = this.determineStages(thinkingRequest);
|
|
203
|
+
logger.info(`Executing stages: ${stages.join(', ')}`);
|
|
204
|
+
// Execute stages
|
|
205
|
+
const stageResults = await this.executeStages(stages, thinkingRequest, session);
|
|
206
|
+
// Synthesize results
|
|
207
|
+
const synthesisResult = await this.synthesizeResults(thinkingRequest, stageResults, sessionId);
|
|
208
|
+
// Cache result
|
|
209
|
+
if (this.config.cache.enabled) {
|
|
210
|
+
this.cache.set(cacheKey, synthesisResult);
|
|
211
|
+
}
|
|
212
|
+
// Update session
|
|
213
|
+
session.status = 'completed';
|
|
214
|
+
session.endTime = Date.now();
|
|
215
|
+
session.result = synthesisResult;
|
|
216
|
+
this.emit('thinking:complete', { sessionId, result: synthesisResult });
|
|
217
|
+
logger.info(`Thinking session completed: ${sessionId}`, {
|
|
218
|
+
duration: Date.now() - startTime,
|
|
219
|
+
confidence: synthesisResult.confidence,
|
|
220
|
+
});
|
|
221
|
+
return synthesisResult;
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
if (session) {
|
|
225
|
+
session.status = 'failed';
|
|
226
|
+
session.error = error;
|
|
227
|
+
}
|
|
228
|
+
logger.error(`Thinking session failed: ${sessionId}`, {
|
|
229
|
+
error: error.message,
|
|
230
|
+
});
|
|
231
|
+
this.emit('thinking:error', { sessionId, error });
|
|
232
|
+
if (error instanceof errors_1.GThinkingError) {
|
|
233
|
+
throw error;
|
|
234
|
+
}
|
|
235
|
+
throw new errors_1.GThinkingError(`Thinking process failed: ${error.message}`, 'THINKING_ERROR', { originalError: error });
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Quick search with minimal stages
|
|
240
|
+
* @param query - The search query
|
|
241
|
+
* @returns Synthesis result
|
|
242
|
+
*/
|
|
243
|
+
async quickSearch(query) {
|
|
244
|
+
return this.think({
|
|
245
|
+
query,
|
|
246
|
+
preferredStages: [types_1.ThinkingStage.SEARCH, types_1.ThinkingStage.ANALYSIS, types_1.ThinkingStage.SYNTHESIS],
|
|
247
|
+
options: { depth: 'shallow', complexity: 'simple' },
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Deep analysis with all stages
|
|
252
|
+
* @param query - The analysis query
|
|
253
|
+
* @returns Synthesis result
|
|
254
|
+
*/
|
|
255
|
+
async deepAnalysis(query) {
|
|
256
|
+
return this.think({
|
|
257
|
+
query,
|
|
258
|
+
preferredStages: [
|
|
259
|
+
types_1.ThinkingStage.SEARCH,
|
|
260
|
+
types_1.ThinkingStage.ANALYSIS,
|
|
261
|
+
types_1.ThinkingStage.REASONING,
|
|
262
|
+
types_1.ThinkingStage.LEARNING,
|
|
263
|
+
types_1.ThinkingStage.PLANNING,
|
|
264
|
+
types_1.ThinkingStage.CREATIVITY,
|
|
265
|
+
types_1.ThinkingStage.SYNTHESIS,
|
|
266
|
+
types_1.ThinkingStage.EVALUATION,
|
|
267
|
+
],
|
|
268
|
+
options: { depth: 'deep', complexity: 'complex' },
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Creative problem solving
|
|
273
|
+
* @param challenge - The creative challenge
|
|
274
|
+
* @returns Creative result
|
|
275
|
+
*/
|
|
276
|
+
async creativeSolve(challenge) {
|
|
277
|
+
// This will be implemented when CreativityEngine is ready
|
|
278
|
+
throw new errors_1.GThinkingError('Creative solve not yet implemented in v2.0.0', 'NOT_IMPLEMENTED');
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Create an execution plan
|
|
282
|
+
* @param goal - The planning goal
|
|
283
|
+
* @returns Execution plan
|
|
284
|
+
*/
|
|
285
|
+
async createPlan(goal) {
|
|
286
|
+
// This will be implemented when PlanningEngine is ready
|
|
287
|
+
throw new errors_1.GThinkingError('Create plan not yet implemented in v2.0.0', 'NOT_IMPLEMENTED');
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Determine which stages to execute based on the request
|
|
291
|
+
* @param request - The thinking request
|
|
292
|
+
* @returns Array of stages to execute
|
|
293
|
+
*/
|
|
294
|
+
determineStages(request) {
|
|
295
|
+
// If preferred stages are specified, use them
|
|
296
|
+
if (request.preferredStages && request.preferredStages.length > 0) {
|
|
297
|
+
return request.preferredStages.filter(stage => this.config.pipeline.stages[stage]?.enabled);
|
|
298
|
+
}
|
|
299
|
+
// Dynamic stage selection based on query analysis
|
|
300
|
+
if (this.config.pipeline.enableDynamicPipeline) {
|
|
301
|
+
return this.analyzeQueryAndSelectStages(request.query);
|
|
302
|
+
}
|
|
303
|
+
// Default stages
|
|
304
|
+
return [
|
|
305
|
+
types_1.ThinkingStage.SEARCH,
|
|
306
|
+
types_1.ThinkingStage.ANALYSIS,
|
|
307
|
+
types_1.ThinkingStage.REASONING,
|
|
308
|
+
types_1.ThinkingStage.SYNTHESIS,
|
|
309
|
+
];
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Analyze query and select appropriate stages
|
|
313
|
+
* @param query - The query to analyze
|
|
314
|
+
* @returns Array of selected stages
|
|
315
|
+
*/
|
|
316
|
+
analyzeQueryAndSelectStages(query) {
|
|
317
|
+
const lowerQuery = query.toLowerCase();
|
|
318
|
+
const stages = [];
|
|
319
|
+
// Always include search for information gathering
|
|
320
|
+
stages.push(types_1.ThinkingStage.SEARCH);
|
|
321
|
+
// Check for planning keywords
|
|
322
|
+
if (/\b(plan|schedule|timeline|project|roadmap|strategy)\b/.test(lowerQuery)) {
|
|
323
|
+
stages.push(types_1.ThinkingStage.PLANNING);
|
|
324
|
+
}
|
|
325
|
+
// Check for creative keywords
|
|
326
|
+
if (/\b(idea|creative|brainstorm|innovation|design|solution)\b/.test(lowerQuery)) {
|
|
327
|
+
stages.push(types_1.ThinkingStage.CREATIVITY);
|
|
328
|
+
}
|
|
329
|
+
// Check for reasoning keywords
|
|
330
|
+
if (/\b(why|how|because|reason|analyze|compare|evaluate)\b/.test(lowerQuery)) {
|
|
331
|
+
stages.push(types_1.ThinkingStage.ANALYSIS);
|
|
332
|
+
stages.push(types_1.ThinkingStage.REASONING);
|
|
333
|
+
}
|
|
334
|
+
// Always include synthesis
|
|
335
|
+
stages.push(types_1.ThinkingStage.SYNTHESIS);
|
|
336
|
+
// Include evaluation for complex queries
|
|
337
|
+
if (lowerQuery.length > 100 || stages.length > 4) {
|
|
338
|
+
stages.push(types_1.ThinkingStage.EVALUATION);
|
|
339
|
+
}
|
|
340
|
+
return stages.filter(stage => this.config.pipeline.stages[stage]?.enabled);
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Execute thinking stages
|
|
344
|
+
* @param stages - Stages to execute
|
|
345
|
+
* @param request - The thinking request
|
|
346
|
+
* @param session - The session
|
|
347
|
+
* @returns Map of stage results
|
|
348
|
+
*/
|
|
349
|
+
async executeStages(stages, request, session) {
|
|
350
|
+
const stageResults = new Map();
|
|
351
|
+
const context = {
|
|
352
|
+
sessionId: session.id,
|
|
353
|
+
stageResults,
|
|
354
|
+
config: this.config,
|
|
355
|
+
cache: this.cache,
|
|
356
|
+
};
|
|
357
|
+
// Execute stages sequentially or in parallel based on configuration
|
|
358
|
+
const parallelStages = stages.filter(stage => this.config.pipeline.stages[stage]?.parallel);
|
|
359
|
+
const sequentialStages = stages.filter(stage => !this.config.pipeline.stages[stage]?.parallel);
|
|
360
|
+
// Execute parallel stages
|
|
361
|
+
if (parallelStages.length > 0) {
|
|
362
|
+
const parallelResults = await Promise.all(parallelStages.map(stage => this.executeStage(stage, request, context)));
|
|
363
|
+
parallelStages.forEach((stage, index) => {
|
|
364
|
+
stageResults.set(stage, parallelResults[index]);
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
// Execute sequential stages
|
|
368
|
+
for (const stage of sequentialStages) {
|
|
369
|
+
const result = await this.executeStage(stage, request, context);
|
|
370
|
+
stageResults.set(stage, result);
|
|
371
|
+
}
|
|
372
|
+
return stageResults;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Execute a single stage
|
|
376
|
+
* @param stage - The stage to execute
|
|
377
|
+
* @param request - The thinking request
|
|
378
|
+
* @param context - The stage context
|
|
379
|
+
* @returns Stage result
|
|
380
|
+
*/
|
|
381
|
+
async executeStage(stage, request, context) {
|
|
382
|
+
const stageStartTime = Date.now();
|
|
383
|
+
const stageConfig = this.config.pipeline.stages[stage];
|
|
384
|
+
logger.info(`Executing stage: ${stage}`, { sessionId: context.sessionId });
|
|
385
|
+
this.emit('thinking:stage:start', { sessionId: context.sessionId, stage });
|
|
386
|
+
try {
|
|
387
|
+
const timeout = request.options?.timeout || stageConfig?.timeout || 60000;
|
|
388
|
+
const result = await (0, errors_1.withRetry)(async () => this.executeStageWithTimeout(stage, request, context, timeout), { maxRetries: stageConfig?.maxRetries || 2 });
|
|
389
|
+
const duration = Date.now() - stageStartTime;
|
|
390
|
+
logger.info(`Stage completed: ${stage}`, {
|
|
391
|
+
sessionId: context.sessionId,
|
|
392
|
+
duration,
|
|
393
|
+
confidence: result.confidence,
|
|
394
|
+
});
|
|
395
|
+
this.emit('thinking:stage:complete', {
|
|
396
|
+
sessionId: context.sessionId,
|
|
397
|
+
stage,
|
|
398
|
+
result,
|
|
399
|
+
});
|
|
400
|
+
metrics_1.metricsCollector.counter('stage_completed', 1, { stage });
|
|
401
|
+
metrics_1.metricsCollector.histogram('stage_duration', duration, { stage });
|
|
402
|
+
return result;
|
|
403
|
+
}
|
|
404
|
+
catch (error) {
|
|
405
|
+
logger.error(`Stage failed: ${stage}`, {
|
|
406
|
+
sessionId: context.sessionId,
|
|
407
|
+
error: error.message,
|
|
408
|
+
});
|
|
409
|
+
this.emit('thinking:stage:error', {
|
|
410
|
+
sessionId: context.sessionId,
|
|
411
|
+
stage,
|
|
412
|
+
error,
|
|
413
|
+
});
|
|
414
|
+
metrics_1.metricsCollector.counter('stage_error', 1, { stage });
|
|
415
|
+
// If stage is required, throw error
|
|
416
|
+
if (stageConfig?.required) {
|
|
417
|
+
throw new errors_1.StageError(`Required stage ${stage} failed: ${error.message}`, stage, false);
|
|
418
|
+
}
|
|
419
|
+
// Return error result for non-required stages
|
|
420
|
+
return {
|
|
421
|
+
stage,
|
|
422
|
+
success: false,
|
|
423
|
+
status: 'failed',
|
|
424
|
+
data: null,
|
|
425
|
+
confidence: 0,
|
|
426
|
+
timestamp: new Date(),
|
|
427
|
+
duration: Date.now() - stageStartTime,
|
|
428
|
+
errors: [error.message],
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Execute stage with timeout
|
|
434
|
+
* @param stage - The stage to execute
|
|
435
|
+
* @param request - The thinking request
|
|
436
|
+
* @param context - The stage context
|
|
437
|
+
* @param timeout - Timeout in milliseconds
|
|
438
|
+
* @returns Stage result
|
|
439
|
+
*/
|
|
440
|
+
async executeStageWithTimeout(stage, request, context, timeout) {
|
|
441
|
+
return Promise.race([
|
|
442
|
+
this.executeStageLogic(stage, request, context),
|
|
443
|
+
new Promise((_, reject) => setTimeout(() => reject(new errors_1.TimeoutError(`Stage ${stage} timed out`, stage)), timeout)),
|
|
444
|
+
]);
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Execute stage logic
|
|
448
|
+
* @param stage - The stage to execute
|
|
449
|
+
* @param request - The thinking request
|
|
450
|
+
* @param context - The stage context
|
|
451
|
+
* @returns Stage result
|
|
452
|
+
*/
|
|
453
|
+
async executeStageLogic(stage, request, context) {
|
|
454
|
+
const executor = this.stageExecutors.get(stage);
|
|
455
|
+
if (executor) {
|
|
456
|
+
return executor.execute(request, context);
|
|
457
|
+
}
|
|
458
|
+
// Fallback if no executor found (should not happen if initialized)
|
|
459
|
+
logger.warn(`No executor found for stage: ${stage}, using fallback`);
|
|
460
|
+
return {
|
|
461
|
+
stage,
|
|
462
|
+
success: true,
|
|
463
|
+
status: 'completed',
|
|
464
|
+
confidence: 0.8,
|
|
465
|
+
timestamp: new Date(),
|
|
466
|
+
duration: 1000,
|
|
467
|
+
data: { placeholder: true },
|
|
468
|
+
errors: [],
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Synthesize stage results into final output
|
|
473
|
+
* @param request - The thinking request
|
|
474
|
+
* @param stageResults - Map of stage results
|
|
475
|
+
* @param sessionId - The session ID
|
|
476
|
+
* @returns Synthesis result
|
|
477
|
+
*/
|
|
478
|
+
async synthesizeResults(request, stageResults, sessionId) {
|
|
479
|
+
// This will be implemented when SynthesisEngine is ready
|
|
480
|
+
// For now, return a placeholder result
|
|
481
|
+
const results = Array.from(stageResults.entries()).map(([stage, result]) => ({
|
|
482
|
+
stage,
|
|
483
|
+
result: result.data || {},
|
|
484
|
+
confidence: result.confidence,
|
|
485
|
+
}));
|
|
486
|
+
return {
|
|
487
|
+
success: true,
|
|
488
|
+
confidence: 0.8,
|
|
489
|
+
timestamp: new Date(),
|
|
490
|
+
duration: 1000,
|
|
491
|
+
errors: [],
|
|
492
|
+
query: request.query,
|
|
493
|
+
summary: `Analysis of: ${request.query}`,
|
|
494
|
+
keyFindings: results.map(r => `${r.stage}: ${r.confidence}`),
|
|
495
|
+
recommendations: [],
|
|
496
|
+
evaluation: [],
|
|
497
|
+
devilsAdvocate: [],
|
|
498
|
+
confidenceBreakdown: {
|
|
499
|
+
overall: 0.8,
|
|
500
|
+
byStage: Object.fromEntries(Array.from(stageResults.entries()).map(([stage, result]) => [stage, result.confidence])),
|
|
501
|
+
bySource: {},
|
|
502
|
+
factors: [],
|
|
503
|
+
},
|
|
504
|
+
nextSteps: [],
|
|
505
|
+
additionalConsiderations: [],
|
|
506
|
+
sources: [],
|
|
507
|
+
metadata: { sessionId },
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Generate cache key for a request
|
|
512
|
+
* @param request - The thinking request
|
|
513
|
+
* @returns Cache key
|
|
514
|
+
*/
|
|
515
|
+
generateCacheKey(request) {
|
|
516
|
+
const keyData = {
|
|
517
|
+
query: request.query,
|
|
518
|
+
stages: request.preferredStages,
|
|
519
|
+
depth: request.options?.depth,
|
|
520
|
+
complexity: request.options?.complexity,
|
|
521
|
+
};
|
|
522
|
+
return `think:${JSON.stringify(keyData)}`;
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Start session cleanup interval
|
|
526
|
+
*/
|
|
527
|
+
startSessionCleanup() {
|
|
528
|
+
setInterval(() => {
|
|
529
|
+
const now = Date.now();
|
|
530
|
+
const ttl = this.config.session.sessionTTL;
|
|
531
|
+
for (const [sessionId, session] of this.sessions.entries()) {
|
|
532
|
+
if (session.status === 'completed' || session.status === 'failed') {
|
|
533
|
+
const endTime = session.endTime || now;
|
|
534
|
+
if (now - endTime > ttl) {
|
|
535
|
+
this.sessions.delete(sessionId);
|
|
536
|
+
logger.debug(`Cleaned up session: ${sessionId}`);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}, 60000); // Clean up every minute
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Get session by ID
|
|
544
|
+
* @param sessionId - The session ID
|
|
545
|
+
* @returns The session or undefined
|
|
546
|
+
*/
|
|
547
|
+
getSession(sessionId) {
|
|
548
|
+
return this.sessions.get(sessionId);
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Get all active sessions
|
|
552
|
+
* @returns Array of active sessions
|
|
553
|
+
*/
|
|
554
|
+
getActiveSessions() {
|
|
555
|
+
return Array.from(this.sessions.values()).filter(s => s.status === 'running');
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Cancel a running session
|
|
559
|
+
* @param sessionId - The session ID
|
|
560
|
+
* @returns True if cancelled
|
|
561
|
+
*/
|
|
562
|
+
cancelSession(sessionId) {
|
|
563
|
+
const session = this.sessions.get(sessionId);
|
|
564
|
+
if (session && session.status === 'running') {
|
|
565
|
+
session.status = 'cancelled';
|
|
566
|
+
session.endTime = Date.now();
|
|
567
|
+
this.emit('thinking:cancelled', { sessionId });
|
|
568
|
+
return true;
|
|
569
|
+
}
|
|
570
|
+
return false;
|
|
571
|
+
}
|
|
572
|
+
/**
|
|
573
|
+
* Get engine statistics
|
|
574
|
+
* @returns Engine statistics
|
|
575
|
+
*/
|
|
576
|
+
getStats() {
|
|
577
|
+
return {
|
|
578
|
+
sessions: this.sessions.size,
|
|
579
|
+
activeSessions: this.getActiveSessions().length,
|
|
580
|
+
cacheStats: this.cache.getStats(),
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Dispose of the engine
|
|
585
|
+
*/
|
|
586
|
+
dispose() {
|
|
587
|
+
this.cache.dispose();
|
|
588
|
+
this.sessions.clear();
|
|
589
|
+
this.removeAllListeners();
|
|
590
|
+
logger.info('Sequential Thinking Engine disposed');
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
exports.SequentialThinkingEngine = SequentialThinkingEngine;
|
|
594
|
+
/**
|
|
595
|
+
* Create a new SequentialThinkingEngine instance
|
|
596
|
+
* @param config - Optional configuration
|
|
597
|
+
* @returns New engine instance
|
|
598
|
+
*/
|
|
599
|
+
function createEngine(config) {
|
|
600
|
+
return new SequentialThinkingEngine(config);
|
|
601
|
+
}
|
|
602
|
+
// Export singleton instance
|
|
603
|
+
exports.thinkingEngine = new SequentialThinkingEngine();
|
|
604
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
|