gthinking 1.2.1 → 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.
Files changed (271) hide show
  1. package/.eslintrc.js +34 -0
  2. package/ANALYSIS_SUMMARY.md +363 -0
  3. package/README.md +230 -245
  4. package/dist/analysis/analysis-engine.d.ts +63 -0
  5. package/dist/analysis/analysis-engine.d.ts.map +1 -0
  6. package/dist/analysis/analysis-engine.js +322 -0
  7. package/dist/analysis/analysis-engine.js.map +1 -0
  8. package/dist/core/config.d.ts +1419 -0
  9. package/dist/core/config.d.ts.map +1 -0
  10. package/dist/core/config.js +361 -0
  11. package/dist/core/config.js.map +1 -0
  12. package/dist/core/engine.d.ts +176 -0
  13. package/dist/core/engine.d.ts.map +1 -0
  14. package/dist/core/engine.js +604 -0
  15. package/dist/core/engine.js.map +1 -0
  16. package/dist/core/errors.d.ts +153 -0
  17. package/dist/core/errors.d.ts.map +1 -0
  18. package/dist/core/errors.js +287 -0
  19. package/dist/core/errors.js.map +1 -0
  20. package/dist/core/index.d.ts +7 -0
  21. package/dist/core/index.d.ts.map +1 -0
  22. package/dist/{types.js → core/index.js} +8 -4
  23. package/dist/core/index.js.map +1 -0
  24. package/dist/core/pipeline.d.ts +121 -0
  25. package/dist/core/pipeline.d.ts.map +1 -0
  26. package/dist/core/pipeline.js +289 -0
  27. package/dist/core/pipeline.js.map +1 -0
  28. package/dist/core/rate-limiter.d.ts +58 -0
  29. package/dist/core/rate-limiter.d.ts.map +1 -0
  30. package/dist/core/rate-limiter.js +133 -0
  31. package/dist/core/rate-limiter.js.map +1 -0
  32. package/dist/core/session-manager.d.ts +96 -0
  33. package/dist/core/session-manager.d.ts.map +1 -0
  34. package/dist/core/session-manager.js +223 -0
  35. package/dist/core/session-manager.js.map +1 -0
  36. package/dist/creativity/creativity-engine.d.ts +6 -0
  37. package/dist/creativity/creativity-engine.d.ts.map +1 -0
  38. package/dist/creativity/creativity-engine.js +17 -0
  39. package/dist/creativity/creativity-engine.js.map +1 -0
  40. package/dist/index.d.ts +24 -32
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +130 -104
  43. package/dist/index.js.map +1 -1
  44. package/dist/learning/learning-engine.d.ts +6 -0
  45. package/dist/learning/learning-engine.d.ts.map +1 -0
  46. package/dist/learning/learning-engine.js +17 -0
  47. package/dist/learning/learning-engine.js.map +1 -0
  48. package/dist/llm/index.d.ts +10 -0
  49. package/dist/llm/index.d.ts.map +1 -0
  50. package/dist/llm/index.js +26 -0
  51. package/dist/llm/index.js.map +1 -0
  52. package/dist/llm/llm-service.d.ts +109 -0
  53. package/dist/llm/llm-service.d.ts.map +1 -0
  54. package/dist/llm/llm-service.js +224 -0
  55. package/dist/llm/llm-service.js.map +1 -0
  56. package/dist/llm/providers/base.d.ts +85 -0
  57. package/dist/llm/providers/base.d.ts.map +1 -0
  58. package/dist/llm/providers/base.js +57 -0
  59. package/dist/llm/providers/base.js.map +1 -0
  60. package/dist/llm/providers/cli.d.ts +23 -0
  61. package/dist/llm/providers/cli.d.ts.map +1 -0
  62. package/dist/llm/providers/cli.js +158 -0
  63. package/dist/llm/providers/cli.js.map +1 -0
  64. package/dist/llm/providers/gemini.d.ts +30 -0
  65. package/dist/llm/providers/gemini.d.ts.map +1 -0
  66. package/dist/llm/providers/gemini.js +168 -0
  67. package/dist/llm/providers/gemini.js.map +1 -0
  68. package/dist/llm/sanitization.d.ts +50 -0
  69. package/dist/llm/sanitization.d.ts.map +1 -0
  70. package/dist/llm/sanitization.js +149 -0
  71. package/dist/llm/sanitization.js.map +1 -0
  72. package/dist/{server.d.ts.map → mcp/server.d.ts.map} +1 -1
  73. package/dist/mcp/server.js +108 -0
  74. package/dist/mcp/server.js.map +1 -0
  75. package/dist/planning/planning-engine.d.ts +6 -0
  76. package/dist/planning/planning-engine.d.ts.map +1 -0
  77. package/dist/planning/planning-engine.js +17 -0
  78. package/dist/planning/planning-engine.js.map +1 -0
  79. package/dist/reasoning/reasoning-engine.d.ts +6 -0
  80. package/dist/reasoning/reasoning-engine.d.ts.map +1 -0
  81. package/dist/reasoning/reasoning-engine.js +17 -0
  82. package/dist/reasoning/reasoning-engine.js.map +1 -0
  83. package/dist/search/search-engine.d.ts +99 -0
  84. package/dist/search/search-engine.d.ts.map +1 -0
  85. package/dist/search/search-engine.js +271 -0
  86. package/dist/search/search-engine.js.map +1 -0
  87. package/dist/synthesis/synthesis-engine.d.ts +6 -0
  88. package/dist/synthesis/synthesis-engine.d.ts.map +1 -0
  89. package/dist/synthesis/synthesis-engine.js +17 -0
  90. package/dist/synthesis/synthesis-engine.js.map +1 -0
  91. package/dist/types/analysis.d.ts +1534 -49
  92. package/dist/types/analysis.d.ts.map +1 -1
  93. package/dist/types/analysis.js +250 -0
  94. package/dist/types/analysis.js.map +1 -1
  95. package/dist/types/core.d.ts +257 -30
  96. package/dist/types/core.d.ts.map +1 -1
  97. package/dist/types/core.js +148 -18
  98. package/dist/types/core.js.map +1 -1
  99. package/dist/types/creativity.d.ts +2871 -56
  100. package/dist/types/creativity.d.ts.map +1 -1
  101. package/dist/types/creativity.js +195 -0
  102. package/dist/types/creativity.js.map +1 -1
  103. package/dist/types/index.d.ts +6 -2
  104. package/dist/types/index.d.ts.map +1 -1
  105. package/dist/types/index.js +17 -2
  106. package/dist/types/index.js.map +1 -1
  107. package/dist/types/learning.d.ts +851 -61
  108. package/dist/types/learning.d.ts.map +1 -1
  109. package/dist/types/learning.js +155 -0
  110. package/dist/types/learning.js.map +1 -1
  111. package/dist/types/planning.d.ts +2223 -71
  112. package/dist/types/planning.d.ts.map +1 -1
  113. package/dist/types/planning.js +190 -0
  114. package/dist/types/planning.js.map +1 -1
  115. package/dist/types/reasoning.d.ts +2209 -72
  116. package/dist/types/reasoning.d.ts.map +1 -1
  117. package/dist/types/reasoning.js +200 -1
  118. package/dist/types/reasoning.js.map +1 -1
  119. package/dist/types/search.d.ts +981 -53
  120. package/dist/types/search.d.ts.map +1 -1
  121. package/dist/types/search.js +137 -0
  122. package/dist/types/search.js.map +1 -1
  123. package/dist/types/synthesis.d.ts +583 -37
  124. package/dist/types/synthesis.d.ts.map +1 -1
  125. package/dist/types/synthesis.js +138 -0
  126. package/dist/types/synthesis.js.map +1 -1
  127. package/dist/utils/cache.d.ts +144 -0
  128. package/dist/utils/cache.d.ts.map +1 -0
  129. package/dist/utils/cache.js +288 -0
  130. package/dist/utils/cache.js.map +1 -0
  131. package/dist/utils/id-generator.d.ts +89 -0
  132. package/dist/utils/id-generator.d.ts.map +1 -0
  133. package/dist/utils/id-generator.js +132 -0
  134. package/dist/utils/id-generator.js.map +1 -0
  135. package/dist/utils/index.d.ts +11 -0
  136. package/dist/utils/index.d.ts.map +1 -0
  137. package/dist/utils/index.js +33 -0
  138. package/dist/utils/index.js.map +1 -0
  139. package/dist/utils/logger.d.ts +142 -0
  140. package/dist/utils/logger.d.ts.map +1 -0
  141. package/dist/utils/logger.js +248 -0
  142. package/dist/utils/logger.js.map +1 -0
  143. package/dist/utils/metrics.d.ts +149 -0
  144. package/dist/utils/metrics.d.ts.map +1 -0
  145. package/dist/utils/metrics.js +296 -0
  146. package/dist/utils/metrics.js.map +1 -0
  147. package/dist/utils/timer.d.ts +7 -0
  148. package/dist/utils/timer.d.ts.map +1 -0
  149. package/dist/utils/timer.js +17 -0
  150. package/dist/utils/timer.js.map +1 -0
  151. package/dist/utils/validation.d.ts +147 -0
  152. package/dist/utils/validation.d.ts.map +1 -0
  153. package/dist/utils/validation.js +275 -0
  154. package/dist/utils/validation.js.map +1 -0
  155. package/docs/API.md +411 -0
  156. package/docs/ARCHITECTURE.md +271 -0
  157. package/docs/CHANGELOG.md +283 -0
  158. package/jest.config.js +28 -0
  159. package/package.json +43 -30
  160. package/src/analysis/analysis-engine.ts +383 -0
  161. package/src/core/config.ts +406 -0
  162. package/src/core/engine.ts +785 -0
  163. package/src/core/errors.ts +349 -0
  164. package/src/core/index.ts +12 -0
  165. package/src/core/pipeline.ts +424 -0
  166. package/src/core/rate-limiter.ts +155 -0
  167. package/src/core/session-manager.ts +269 -0
  168. package/src/creativity/creativity-engine.ts +14 -0
  169. package/src/index.ts +178 -0
  170. package/src/learning/learning-engine.ts +14 -0
  171. package/src/llm/index.ts +10 -0
  172. package/src/llm/llm-service.ts +285 -0
  173. package/src/llm/providers/base.ts +146 -0
  174. package/src/llm/providers/cli.ts +186 -0
  175. package/src/llm/providers/gemini.ts +201 -0
  176. package/src/llm/sanitization.ts +178 -0
  177. package/src/mcp/server.ts +117 -0
  178. package/src/planning/planning-engine.ts +14 -0
  179. package/src/reasoning/reasoning-engine.ts +14 -0
  180. package/src/search/search-engine.ts +333 -0
  181. package/src/synthesis/synthesis-engine.ts +14 -0
  182. package/src/types/analysis.ts +337 -0
  183. package/src/types/core.ts +342 -0
  184. package/src/types/creativity.ts +268 -0
  185. package/src/types/index.ts +31 -0
  186. package/src/types/learning.ts +215 -0
  187. package/src/types/planning.ts +251 -0
  188. package/src/types/reasoning.ts +288 -0
  189. package/src/types/search.ts +192 -0
  190. package/src/types/synthesis.ts +187 -0
  191. package/src/utils/cache.ts +363 -0
  192. package/src/utils/id-generator.ts +135 -0
  193. package/src/utils/index.ts +22 -0
  194. package/src/utils/logger.ts +290 -0
  195. package/src/utils/metrics.ts +380 -0
  196. package/src/utils/timer.ts +15 -0
  197. package/src/utils/validation.ts +297 -0
  198. package/tests/setup.ts +22 -0
  199. package/tests/unit/cache.test.ts +189 -0
  200. package/tests/unit/engine.test.ts +179 -0
  201. package/tests/unit/validation.test.ts +218 -0
  202. package/tsconfig.json +17 -12
  203. package/GEMINI.md +0 -68
  204. package/analysis.ts +0 -1063
  205. package/creativity.ts +0 -1055
  206. package/dist/analysis.d.ts +0 -54
  207. package/dist/analysis.d.ts.map +0 -1
  208. package/dist/analysis.js +0 -866
  209. package/dist/analysis.js.map +0 -1
  210. package/dist/creativity.d.ts +0 -81
  211. package/dist/creativity.d.ts.map +0 -1
  212. package/dist/creativity.js +0 -828
  213. package/dist/creativity.js.map +0 -1
  214. package/dist/engine.d.ts +0 -90
  215. package/dist/engine.d.ts.map +0 -1
  216. package/dist/engine.js +0 -677
  217. package/dist/engine.js.map +0 -1
  218. package/dist/examples.d.ts +0 -7
  219. package/dist/examples.d.ts.map +0 -1
  220. package/dist/examples.js +0 -506
  221. package/dist/examples.js.map +0 -1
  222. package/dist/learning.d.ts +0 -72
  223. package/dist/learning.d.ts.map +0 -1
  224. package/dist/learning.js +0 -615
  225. package/dist/learning.js.map +0 -1
  226. package/dist/llm-service.d.ts +0 -21
  227. package/dist/llm-service.d.ts.map +0 -1
  228. package/dist/llm-service.js +0 -100
  229. package/dist/llm-service.js.map +0 -1
  230. package/dist/planning.d.ts +0 -58
  231. package/dist/planning.d.ts.map +0 -1
  232. package/dist/planning.js +0 -824
  233. package/dist/planning.js.map +0 -1
  234. package/dist/reasoning.d.ts +0 -73
  235. package/dist/reasoning.d.ts.map +0 -1
  236. package/dist/reasoning.js +0 -845
  237. package/dist/reasoning.js.map +0 -1
  238. package/dist/search-discovery.d.ts +0 -73
  239. package/dist/search-discovery.d.ts.map +0 -1
  240. package/dist/search-discovery.js +0 -548
  241. package/dist/search-discovery.js.map +0 -1
  242. package/dist/server.js +0 -113
  243. package/dist/server.js.map +0 -1
  244. package/dist/types/engine.d.ts +0 -55
  245. package/dist/types/engine.d.ts.map +0 -1
  246. package/dist/types/engine.js +0 -3
  247. package/dist/types/engine.js.map +0 -1
  248. package/dist/types.d.ts +0 -6
  249. package/dist/types.d.ts.map +0 -1
  250. package/dist/types.js.map +0 -1
  251. package/engine.ts +0 -947
  252. package/examples.ts +0 -717
  253. package/index.ts +0 -106
  254. package/learning.ts +0 -779
  255. package/llm-service.ts +0 -120
  256. package/planning.ts +0 -1028
  257. package/reasoning.ts +0 -1079
  258. package/search-discovery.ts +0 -700
  259. package/server.ts +0 -115
  260. package/types/analysis.ts +0 -69
  261. package/types/core.ts +0 -90
  262. package/types/creativity.ts +0 -72
  263. package/types/engine.ts +0 -60
  264. package/types/index.ts +0 -9
  265. package/types/learning.ts +0 -69
  266. package/types/planning.ts +0 -85
  267. package/types/reasoning.ts +0 -92
  268. package/types/search.ts +0 -58
  269. package/types/synthesis.ts +0 -42
  270. package/types.ts +0 -6
  271. /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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"}