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
@@ -1,3 +1,141 @@
1
1
  "use strict";
2
+ /**
3
+ * Synthesis Types for gthinking v2.0.0
4
+ * Types for synthesis and final output generation
5
+ */
2
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FormattedOutputSchema = exports.FormatOptionsSchema = exports.OutputFormatSchema = exports.OutputFormat = exports.SynthesisResultSchema = exports.ConfidenceBreakdownSchema = exports.DevilsAdvocatePointSchema = exports.EvaluationResultSchema = exports.RecommendationSchema = exports.SynthesisRequestSchema = void 0;
8
+ const zod_1 = require("zod");
9
+ const core_1 = require("./core");
10
+ /**
11
+ * Synthesis Request Schema
12
+ */
13
+ exports.SynthesisRequestSchema = zod_1.z.object({
14
+ query: zod_1.z.string().min(1),
15
+ stageResults: zod_1.z.array(zod_1.z.object({
16
+ stage: zod_1.z.string(),
17
+ result: zod_1.z.unknown(),
18
+ confidence: zod_1.z.number().min(0).max(1),
19
+ })).min(1),
20
+ options: zod_1.z.object({
21
+ includeDevilsAdvocate: zod_1.z.boolean().default(true),
22
+ includeConfidenceBreakdown: zod_1.z.boolean().default(true),
23
+ maxRecommendations: zod_1.z.number().positive().default(5),
24
+ format: zod_1.z.enum(['detailed', 'summary', 'structured', 'narrative']).default('detailed'),
25
+ language: zod_1.z.string().default('en'),
26
+ }).default({}),
27
+ });
28
+ /**
29
+ * Recommendation Schema
30
+ */
31
+ exports.RecommendationSchema = zod_1.z.object({
32
+ id: zod_1.z.string().uuid(),
33
+ priority: zod_1.z.number().min(1).max(5),
34
+ title: zod_1.z.string(),
35
+ description: zod_1.z.string(),
36
+ rationale: zod_1.z.string(),
37
+ confidence: zod_1.z.number().min(0).max(1),
38
+ actions: zod_1.z.array(zod_1.z.string()),
39
+ expectedOutcome: zod_1.z.string(),
40
+ risks: zod_1.z.array(zod_1.z.string()).default([]),
41
+ resources: zod_1.z.array(zod_1.z.string()).default([]),
42
+ timeline: zod_1.z.string().optional(),
43
+ });
44
+ /**
45
+ * Evaluation Result Schema
46
+ */
47
+ exports.EvaluationResultSchema = zod_1.z.object({
48
+ criterion: zod_1.z.string(),
49
+ score: zod_1.z.number().min(0).max(1),
50
+ weight: zod_1.z.number().min(0).max(1),
51
+ explanation: zod_1.z.string(),
52
+ confidence: zod_1.z.number().min(0).max(1),
53
+ });
54
+ /**
55
+ * Devil's Advocate Point Schema
56
+ */
57
+ exports.DevilsAdvocatePointSchema = zod_1.z.object({
58
+ id: zod_1.z.string().uuid(),
59
+ target: zod_1.z.string(), // What is being challenged
60
+ challenge: zod_1.z.string(),
61
+ reasoning: zod_1.z.string(),
62
+ severity: zod_1.z.enum(['low', 'medium', 'high', 'critical']),
63
+ suggestedAlternative: zod_1.z.string().optional(),
64
+ confidence: zod_1.z.number().min(0).max(1),
65
+ });
66
+ /**
67
+ * Confidence Breakdown Schema
68
+ */
69
+ exports.ConfidenceBreakdownSchema = zod_1.z.object({
70
+ overall: zod_1.z.number().min(0).max(1),
71
+ byStage: zod_1.z.record(zod_1.z.number().min(0).max(1)),
72
+ bySource: zod_1.z.record(zod_1.z.number().min(0).max(1)),
73
+ factors: zod_1.z.array(zod_1.z.object({
74
+ factor: zod_1.z.string(),
75
+ impact: zod_1.z.number().min(-1).max(1),
76
+ description: zod_1.z.string(),
77
+ })),
78
+ });
79
+ /**
80
+ * Synthesis Result Schema
81
+ */
82
+ exports.SynthesisResultSchema = core_1.BaseResultSchema.extend({
83
+ query: zod_1.z.string(),
84
+ summary: zod_1.z.string(),
85
+ keyFindings: zod_1.z.array(zod_1.z.string()),
86
+ recommendations: zod_1.z.array(exports.RecommendationSchema),
87
+ evaluation: zod_1.z.array(exports.EvaluationResultSchema),
88
+ devilsAdvocate: zod_1.z.array(exports.DevilsAdvocatePointSchema).default([]),
89
+ confidenceBreakdown: exports.ConfidenceBreakdownSchema,
90
+ nextSteps: zod_1.z.array(zod_1.z.string()).default([]),
91
+ additionalConsiderations: zod_1.z.array(zod_1.z.string()).default([]),
92
+ sources: zod_1.z.array(zod_1.z.object({
93
+ id: zod_1.z.string(),
94
+ name: zod_1.z.string(),
95
+ type: zod_1.z.string(),
96
+ credibility: zod_1.z.number().min(0).max(1),
97
+ })).default([]),
98
+ metadata: zod_1.z.record(zod_1.z.unknown()).default({}),
99
+ });
100
+ /**
101
+ * Output Format Enum
102
+ */
103
+ var OutputFormat;
104
+ (function (OutputFormat) {
105
+ OutputFormat["JSON"] = "json";
106
+ OutputFormat["MARKDOWN"] = "markdown";
107
+ OutputFormat["HTML"] = "html";
108
+ OutputFormat["PLAIN"] = "plain";
109
+ OutputFormat["STRUCTURED"] = "structured";
110
+ })(OutputFormat || (exports.OutputFormat = OutputFormat = {}));
111
+ /**
112
+ * Output Format Schema
113
+ */
114
+ exports.OutputFormatSchema = zod_1.z.nativeEnum(OutputFormat);
115
+ /**
116
+ * Format Options Schema
117
+ */
118
+ exports.FormatOptionsSchema = zod_1.z.object({
119
+ format: exports.OutputFormatSchema.default(OutputFormat.MARKDOWN),
120
+ includeMetadata: zod_1.z.boolean().default(false),
121
+ includeTimestamps: zod_1.z.boolean().default(true),
122
+ includeConfidence: zod_1.z.boolean().default(true),
123
+ maxLength: zod_1.z.number().positive().optional(),
124
+ language: zod_1.z.string().default('en'),
125
+ template: zod_1.z.string().optional(),
126
+ });
127
+ /**
128
+ * Formatted Output Schema
129
+ */
130
+ exports.FormattedOutputSchema = zod_1.z.object({
131
+ content: zod_1.z.string(),
132
+ format: exports.OutputFormatSchema,
133
+ metadata: zod_1.z.object({
134
+ generatedAt: zod_1.z.date(),
135
+ version: zod_1.z.string(),
136
+ confidence: zod_1.z.number().min(0).max(1),
137
+ wordCount: zod_1.z.number().nonnegative(),
138
+ charCount: zod_1.z.number().nonnegative(),
139
+ }),
140
+ });
3
141
  //# sourceMappingURL=synthesis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../types/synthesis.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../src/types/synthesis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Cache Utility for gthinking v2.0.0
3
+ * In-memory caching with TTL support
4
+ */
5
+ /**
6
+ * Cache statistics interface
7
+ */
8
+ export interface CacheStats {
9
+ size: number;
10
+ hits: number;
11
+ misses: number;
12
+ hitRate: number;
13
+ evictions: number;
14
+ totalAccesses: number;
15
+ }
16
+ /**
17
+ * Cache configuration interface
18
+ */
19
+ export interface CacheConfig {
20
+ maxSize: number;
21
+ defaultTTL: number;
22
+ checkInterval: number;
23
+ }
24
+ /**
25
+ * In-memory cache with TTL support
26
+ */
27
+ export declare class Cache<T> {
28
+ private cache;
29
+ private config;
30
+ private stats;
31
+ private cleanupInterval;
32
+ constructor(config?: Partial<CacheConfig>);
33
+ /**
34
+ * Get a value from the cache
35
+ * @param key - The cache key
36
+ * @returns The cached value or undefined
37
+ */
38
+ get(key: string): T | undefined;
39
+ /**
40
+ * Set a value in the cache
41
+ * @param key - The cache key
42
+ * @param value - The value to cache
43
+ * @param ttl - Time to live in milliseconds (optional)
44
+ */
45
+ set(key: string, value: T, ttl?: number): void;
46
+ /**
47
+ * Check if a key exists in the cache
48
+ * @param key - The cache key
49
+ * @returns True if the key exists and hasn't expired
50
+ */
51
+ has(key: string): boolean;
52
+ /**
53
+ * Delete a key from the cache
54
+ * @param key - The cache key
55
+ * @returns True if the key was deleted
56
+ */
57
+ delete(key: string): boolean;
58
+ /**
59
+ * Clear all entries from the cache
60
+ */
61
+ clear(): void;
62
+ /**
63
+ * Get cache statistics
64
+ * @returns Cache statistics
65
+ */
66
+ getStats(): CacheStats;
67
+ /**
68
+ * Reset cache statistics
69
+ */
70
+ resetStats(): void;
71
+ /**
72
+ * Get all keys in the cache
73
+ * @returns Array of cache keys
74
+ */
75
+ keys(): string[];
76
+ /**
77
+ * Get the number of entries in the cache
78
+ * @returns Number of entries
79
+ */
80
+ size(): number;
81
+ /**
82
+ * Dispose of the cache and stop cleanup interval
83
+ */
84
+ dispose(): void;
85
+ /**
86
+ * Check if an entry has expired
87
+ * @param entry - The cache entry
88
+ * @returns True if the entry has expired
89
+ */
90
+ private isExpired;
91
+ /**
92
+ * Evict the least recently used entry
93
+ */
94
+ private evictLRU;
95
+ /**
96
+ * Clean up expired entries
97
+ */
98
+ private cleanup;
99
+ /**
100
+ * Start the cleanup interval
101
+ */
102
+ private startCleanupInterval;
103
+ }
104
+ /**
105
+ * Cache manager for managing multiple cache instances
106
+ */
107
+ export declare class CacheManager {
108
+ private caches;
109
+ /**
110
+ * Get or create a cache instance
111
+ * @param name - The cache name
112
+ * @param config - Cache configuration
113
+ * @returns Cache instance
114
+ */
115
+ getCache<T>(name: string, config?: Partial<CacheConfig>): Cache<T>;
116
+ /**
117
+ * Delete a cache instance
118
+ * @param name - The cache name
119
+ */
120
+ deleteCache(name: string): void;
121
+ /**
122
+ * Clear all caches
123
+ */
124
+ clearAll(): void;
125
+ /**
126
+ * Dispose of all caches
127
+ */
128
+ dispose(): void;
129
+ /**
130
+ * Get all cache names
131
+ * @returns Array of cache names
132
+ */
133
+ getCacheNames(): string[];
134
+ }
135
+ export declare const cacheManager: CacheManager;
136
+ /**
137
+ * Memoize decorator for caching function results
138
+ * @param fn - The function to memoize
139
+ * @param keyGenerator - Function to generate cache key from arguments
140
+ * @param ttl - Time to live in milliseconds
141
+ * @returns Memoized function
142
+ */
143
+ export declare function memoize<T extends (...args: unknown[]) => unknown>(fn: T, keyGenerator?: (...args: Parameters<T>) => string, ttl?: number): T;
144
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAWD;;GAEG;AACH,qBAAa,KAAK,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAKX;IACF,OAAO,CAAC,eAAe,CAA+B;gBAE1C,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAK7C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAwBtC;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrD;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAehC;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB;;;OAGG;IACI,QAAQ,IAAI,UAAU;IAc7B;;OAEG;IACI,UAAU,IAAI,IAAI;IASzB;;;OAGG;IACI,IAAI,IAAI,MAAM,EAAE;IAIvB;;;OAGG;IACI,IAAI,IAAI,MAAM;IAIrB;;OAEG;IACI,OAAO,IAAI,IAAI;IAQtB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkBhB;;OAEG;IACH,OAAO,CAAC,OAAO;IAgBf;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAK7B;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA0C;IAExD;;;;;OAKG;IACI,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAOzE;;;OAGG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQtC;;OAEG;IACI,QAAQ,IAAI,IAAI;IAMvB;;OAEG;IACI,OAAO,IAAI,IAAI;IAOtB;;;OAGG;IACI,aAAa,IAAI,MAAM,EAAE;CAGjC;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAC/D,EAAE,EAAE,CAAC,EACL,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EACjD,GAAG,CAAC,EAAE,MAAM,GACX,CAAC,CAgBH"}
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ /**
3
+ * Cache Utility for gthinking v2.0.0
4
+ * In-memory caching with TTL support
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.cacheManager = exports.CacheManager = exports.Cache = void 0;
8
+ exports.memoize = memoize;
9
+ const logger_1 = require("./logger");
10
+ const logger = new logger_1.Logger('Cache');
11
+ /**
12
+ * Default cache configuration
13
+ */
14
+ const defaultConfig = {
15
+ maxSize: 1000,
16
+ defaultTTL: 3600000, // 1 hour
17
+ checkInterval: 60000, // 1 minute
18
+ };
19
+ /**
20
+ * In-memory cache with TTL support
21
+ */
22
+ class Cache {
23
+ cache = new Map();
24
+ config;
25
+ stats = {
26
+ hits: 0,
27
+ misses: 0,
28
+ evictions: 0,
29
+ totalAccesses: 0,
30
+ };
31
+ cleanupInterval = null;
32
+ constructor(config = {}) {
33
+ this.config = { ...defaultConfig, ...config };
34
+ this.startCleanupInterval();
35
+ }
36
+ /**
37
+ * Get a value from the cache
38
+ * @param key - The cache key
39
+ * @returns The cached value or undefined
40
+ */
41
+ get(key) {
42
+ this.stats.totalAccesses++;
43
+ const entry = this.cache.get(key);
44
+ if (!entry) {
45
+ this.stats.misses++;
46
+ return undefined;
47
+ }
48
+ // Check if entry has expired
49
+ if (this.isExpired(entry)) {
50
+ this.cache.delete(key);
51
+ this.stats.misses++;
52
+ return undefined;
53
+ }
54
+ // Update access count
55
+ entry.accessCount++;
56
+ this.stats.hits++;
57
+ return entry.value;
58
+ }
59
+ /**
60
+ * Set a value in the cache
61
+ * @param key - The cache key
62
+ * @param value - The value to cache
63
+ * @param ttl - Time to live in milliseconds (optional)
64
+ */
65
+ set(key, value, ttl) {
66
+ // Evict entries if cache is full
67
+ if (this.cache.size >= this.config.maxSize && !this.cache.has(key)) {
68
+ this.evictLRU();
69
+ }
70
+ const entry = {
71
+ value,
72
+ timestamp: Date.now(),
73
+ ttl: ttl ?? this.config.defaultTTL,
74
+ accessCount: 0,
75
+ };
76
+ this.cache.set(key, entry);
77
+ }
78
+ /**
79
+ * Check if a key exists in the cache
80
+ * @param key - The cache key
81
+ * @returns True if the key exists and hasn't expired
82
+ */
83
+ has(key) {
84
+ const entry = this.cache.get(key);
85
+ if (!entry) {
86
+ return false;
87
+ }
88
+ if (this.isExpired(entry)) {
89
+ this.cache.delete(key);
90
+ return false;
91
+ }
92
+ return true;
93
+ }
94
+ /**
95
+ * Delete a key from the cache
96
+ * @param key - The cache key
97
+ * @returns True if the key was deleted
98
+ */
99
+ delete(key) {
100
+ return this.cache.delete(key);
101
+ }
102
+ /**
103
+ * Clear all entries from the cache
104
+ */
105
+ clear() {
106
+ this.cache.clear();
107
+ logger.info('Cache cleared');
108
+ }
109
+ /**
110
+ * Get cache statistics
111
+ * @returns Cache statistics
112
+ */
113
+ getStats() {
114
+ const totalAccesses = this.stats.totalAccesses;
115
+ const hitRate = totalAccesses > 0 ? this.stats.hits / totalAccesses : 0;
116
+ return {
117
+ size: this.cache.size,
118
+ hits: this.stats.hits,
119
+ misses: this.stats.misses,
120
+ hitRate,
121
+ evictions: this.stats.evictions,
122
+ totalAccesses,
123
+ };
124
+ }
125
+ /**
126
+ * Reset cache statistics
127
+ */
128
+ resetStats() {
129
+ this.stats = {
130
+ hits: 0,
131
+ misses: 0,
132
+ evictions: 0,
133
+ totalAccesses: 0,
134
+ };
135
+ }
136
+ /**
137
+ * Get all keys in the cache
138
+ * @returns Array of cache keys
139
+ */
140
+ keys() {
141
+ return Array.from(this.cache.keys());
142
+ }
143
+ /**
144
+ * Get the number of entries in the cache
145
+ * @returns Number of entries
146
+ */
147
+ size() {
148
+ return this.cache.size;
149
+ }
150
+ /**
151
+ * Dispose of the cache and stop cleanup interval
152
+ */
153
+ dispose() {
154
+ if (this.cleanupInterval) {
155
+ clearInterval(this.cleanupInterval);
156
+ this.cleanupInterval = null;
157
+ }
158
+ this.clear();
159
+ }
160
+ /**
161
+ * Check if an entry has expired
162
+ * @param entry - The cache entry
163
+ * @returns True if the entry has expired
164
+ */
165
+ isExpired(entry) {
166
+ return Date.now() - entry.timestamp > entry.ttl;
167
+ }
168
+ /**
169
+ * Evict the least recently used entry
170
+ */
171
+ evictLRU() {
172
+ let oldestKey = null;
173
+ let oldestTimestamp = Infinity;
174
+ for (const [key, entry] of this.cache.entries()) {
175
+ if (entry.timestamp < oldestTimestamp) {
176
+ oldestTimestamp = entry.timestamp;
177
+ oldestKey = key;
178
+ }
179
+ }
180
+ if (oldestKey) {
181
+ this.cache.delete(oldestKey);
182
+ this.stats.evictions++;
183
+ logger.debug(`Evicted LRU entry: ${oldestKey}`);
184
+ }
185
+ }
186
+ /**
187
+ * Clean up expired entries
188
+ */
189
+ cleanup() {
190
+ const now = Date.now();
191
+ let expiredCount = 0;
192
+ for (const [key, entry] of this.cache.entries()) {
193
+ if (now - entry.timestamp > entry.ttl) {
194
+ this.cache.delete(key);
195
+ expiredCount++;
196
+ }
197
+ }
198
+ if (expiredCount > 0) {
199
+ logger.debug(`Cleaned up ${expiredCount} expired entries`);
200
+ }
201
+ }
202
+ /**
203
+ * Start the cleanup interval
204
+ */
205
+ startCleanupInterval() {
206
+ this.cleanupInterval = setInterval(() => {
207
+ this.cleanup();
208
+ }, this.config.checkInterval);
209
+ }
210
+ }
211
+ exports.Cache = Cache;
212
+ /**
213
+ * Cache manager for managing multiple cache instances
214
+ */
215
+ class CacheManager {
216
+ caches = new Map();
217
+ /**
218
+ * Get or create a cache instance
219
+ * @param name - The cache name
220
+ * @param config - Cache configuration
221
+ * @returns Cache instance
222
+ */
223
+ getCache(name, config) {
224
+ if (!this.caches.has(name)) {
225
+ this.caches.set(name, new Cache(config));
226
+ }
227
+ return this.caches.get(name);
228
+ }
229
+ /**
230
+ * Delete a cache instance
231
+ * @param name - The cache name
232
+ */
233
+ deleteCache(name) {
234
+ const cache = this.caches.get(name);
235
+ if (cache) {
236
+ cache.dispose();
237
+ this.caches.delete(name);
238
+ }
239
+ }
240
+ /**
241
+ * Clear all caches
242
+ */
243
+ clearAll() {
244
+ for (const cache of this.caches.values()) {
245
+ cache.clear();
246
+ }
247
+ }
248
+ /**
249
+ * Dispose of all caches
250
+ */
251
+ dispose() {
252
+ for (const [name, cache] of this.caches.entries()) {
253
+ cache.dispose();
254
+ }
255
+ this.caches.clear();
256
+ }
257
+ /**
258
+ * Get all cache names
259
+ * @returns Array of cache names
260
+ */
261
+ getCacheNames() {
262
+ return Array.from(this.caches.keys());
263
+ }
264
+ }
265
+ exports.CacheManager = CacheManager;
266
+ // Export a singleton cache manager
267
+ exports.cacheManager = new CacheManager();
268
+ /**
269
+ * Memoize decorator for caching function results
270
+ * @param fn - The function to memoize
271
+ * @param keyGenerator - Function to generate cache key from arguments
272
+ * @param ttl - Time to live in milliseconds
273
+ * @returns Memoized function
274
+ */
275
+ function memoize(fn, keyGenerator, ttl) {
276
+ const cache = new Cache();
277
+ return function (...args) {
278
+ const key = keyGenerator ? keyGenerator(...args) : JSON.stringify(args);
279
+ const cached = cache.get(key);
280
+ if (cached !== undefined) {
281
+ return cached;
282
+ }
283
+ const result = fn(...args);
284
+ cache.set(key, result, ttl);
285
+ return result;
286
+ };
287
+ }
288
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * ID Generator Utility for gthinking v2.0.0
3
+ * Secure and collision-resistant ID generation
4
+ */
5
+ /**
6
+ * Generate a random UUID v4
7
+ * @returns A random UUID string
8
+ */
9
+ export declare function generateUUID(): string;
10
+ /**
11
+ * Generate a deterministic UUID v5 based on a namespace and name
12
+ * @param namespace - The namespace UUID
13
+ * @param name - The name to hash
14
+ * @returns A deterministic UUID string
15
+ */
16
+ export declare function generateDeterministicUUID(namespace: string, name: string): string;
17
+ /**
18
+ * Generate a short ID (8 characters) for internal use
19
+ * Note: This is not cryptographically secure, use only for non-sensitive IDs
20
+ * @returns A short random string
21
+ */
22
+ export declare function generateShortId(): string;
23
+ /**
24
+ * Generate a timestamp-based ID with random suffix
25
+ * @param prefix - Optional prefix for the ID
26
+ * @returns A timestamp-based ID string
27
+ */
28
+ export declare function generateTimestampId(prefix?: string): string;
29
+ /**
30
+ * Generate a sequential ID with padding
31
+ * @param sequence - The sequence number
32
+ * @param padding - The number of digits to pad to
33
+ * @returns A padded sequential ID string
34
+ */
35
+ export declare function generateSequentialId(sequence: number, padding?: number): string;
36
+ /**
37
+ * Generate a compound ID from multiple parts
38
+ * @param parts - The parts to combine
39
+ * @param separator - The separator to use (default: '_')
40
+ * @returns A compound ID string
41
+ */
42
+ export declare function generateCompoundId(parts: string[], separator?: string): string;
43
+ /**
44
+ * Validate if a string is a valid UUID
45
+ * @param id - The string to validate
46
+ * @returns True if the string is a valid UUID
47
+ */
48
+ export declare function isValidUUID(id: string): boolean;
49
+ /**
50
+ * Namespace UUIDs for deterministic ID generation
51
+ */
52
+ export declare const Namespaces: {
53
+ readonly DNS: "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
54
+ readonly URL: "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
55
+ readonly OID: "6ba7b812-9dad-11d1-80b4-00c04fd430c8";
56
+ readonly X500: "6ba7b814-9dad-11d1-80b4-00c04fd430c8";
57
+ readonly SESSION: "a7b8c9d0-e1f2-4a3b-8c4d-5e6f7a8b9c0d";
58
+ readonly TASK: "b8c9d0e1-f2a3-5b4c-9d5e-6f7a8b9c0d1e";
59
+ readonly IDEA: "c9d0e1f2-a3b4-6c5d-0e6f-7a8b9c0d1e2f";
60
+ };
61
+ /**
62
+ * ID Generator class for managing ID generation with prefixes
63
+ */
64
+ export declare class IdGenerator {
65
+ private counters;
66
+ /**
67
+ * Generate a prefixed ID with an auto-incrementing counter
68
+ * @param prefix - The prefix for the ID
69
+ * @returns A prefixed ID string
70
+ */
71
+ generatePrefixedId(prefix: string): string;
72
+ /**
73
+ * Reset the counter for a specific prefix
74
+ * @param prefix - The prefix to reset
75
+ */
76
+ resetCounter(prefix: string): void;
77
+ /**
78
+ * Reset all counters
79
+ */
80
+ resetAllCounters(): void;
81
+ /**
82
+ * Get the current counter value for a prefix
83
+ * @param prefix - The prefix to check
84
+ * @returns The current counter value
85
+ */
86
+ getCounter(prefix: string): number;
87
+ }
88
+ export declare const idGenerator: IdGenerator;
89
+ //# sourceMappingURL=id-generator.d.ts.map