@houtini/lm 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/CHANGELOG.md +273 -0
  2. package/LICENSE +21 -0
  3. package/README.md +203 -0
  4. package/dist/cache/analysis-cache.d.ts +33 -0
  5. package/dist/cache/analysis-cache.d.ts.map +1 -0
  6. package/dist/cache/analysis-cache.js +56 -0
  7. package/dist/cache/analysis-cache.js.map +1 -0
  8. package/dist/cache/cache-manager.d.ts +29 -0
  9. package/dist/cache/cache-manager.d.ts.map +1 -0
  10. package/dist/cache/cache-manager.js +85 -0
  11. package/dist/cache/cache-manager.js.map +1 -0
  12. package/dist/cache/index.d.ts +16 -0
  13. package/dist/cache/index.d.ts.map +1 -0
  14. package/dist/cache/index.js +17 -0
  15. package/dist/cache/index.js.map +1 -0
  16. package/dist/cache/prompt-cache.d.ts +33 -0
  17. package/dist/cache/prompt-cache.d.ts.map +1 -0
  18. package/dist/cache/prompt-cache.js +61 -0
  19. package/dist/cache/prompt-cache.js.map +1 -0
  20. package/dist/config.d.ts +43 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +70 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/core/ThreeStagePromptManager.d.ts +39 -0
  25. package/dist/core/ThreeStagePromptManager.d.ts.map +1 -0
  26. package/dist/core/ThreeStagePromptManager.js +176 -0
  27. package/dist/core/ThreeStagePromptManager.js.map +1 -0
  28. package/dist/index.d.ts +6 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +230 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/plugins/base-plugin.d.ts +47 -0
  33. package/dist/plugins/base-plugin.d.ts.map +1 -0
  34. package/dist/plugins/base-plugin.js +90 -0
  35. package/dist/plugins/base-plugin.js.map +1 -0
  36. package/dist/plugins/index.d.ts +58 -0
  37. package/dist/plugins/index.d.ts.map +1 -0
  38. package/dist/plugins/index.js +161 -0
  39. package/dist/plugins/index.js.map +1 -0
  40. package/dist/plugins/types.d.ts +5 -0
  41. package/dist/plugins/types.d.ts.map +1 -0
  42. package/dist/plugins/types.js +5 -0
  43. package/dist/plugins/types.js.map +1 -0
  44. package/dist/prompts/analyze/code-quality.d.ts +116 -0
  45. package/dist/prompts/analyze/code-quality.d.ts.map +1 -0
  46. package/dist/prompts/analyze/code-quality.js +433 -0
  47. package/dist/prompts/analyze/code-quality.js.map +1 -0
  48. package/dist/prompts/analyze/compare-integration.d.ts +130 -0
  49. package/dist/prompts/analyze/compare-integration.d.ts.map +1 -0
  50. package/dist/prompts/analyze/compare-integration.js +543 -0
  51. package/dist/prompts/analyze/compare-integration.js.map +1 -0
  52. package/dist/prompts/analyze/count-files.d.ts +109 -0
  53. package/dist/prompts/analyze/count-files.d.ts.map +1 -0
  54. package/dist/prompts/analyze/count-files.js +399 -0
  55. package/dist/prompts/analyze/count-files.js.map +1 -0
  56. package/dist/prompts/analyze/database-queries.d.ts +156 -0
  57. package/dist/prompts/analyze/database-queries.d.ts.map +1 -0
  58. package/dist/prompts/analyze/database-queries.js +759 -0
  59. package/dist/prompts/analyze/database-queries.js.map +1 -0
  60. package/dist/prompts/analyze/dependencies.d.ts +97 -0
  61. package/dist/prompts/analyze/dependencies.d.ts.map +1 -0
  62. package/dist/prompts/analyze/dependencies.js +333 -0
  63. package/dist/prompts/analyze/dependencies.js.map +1 -0
  64. package/dist/prompts/analyze/diff-signatures.d.ts +139 -0
  65. package/dist/prompts/analyze/diff-signatures.d.ts.map +1 -0
  66. package/dist/prompts/analyze/diff-signatures.js +702 -0
  67. package/dist/prompts/analyze/diff-signatures.js.map +1 -0
  68. package/dist/prompts/analyze/find-patterns.d.ts +128 -0
  69. package/dist/prompts/analyze/find-patterns.d.ts.map +1 -0
  70. package/dist/prompts/analyze/find-patterns.js +520 -0
  71. package/dist/prompts/analyze/find-patterns.js.map +1 -0
  72. package/dist/prompts/analyze/find-unused-css.d.ts +151 -0
  73. package/dist/prompts/analyze/find-unused-css.d.ts.map +1 -0
  74. package/dist/prompts/analyze/find-unused-css.js +754 -0
  75. package/dist/prompts/analyze/find-unused-css.js.map +1 -0
  76. package/dist/prompts/analyze/n8n-workflow.d.ts +137 -0
  77. package/dist/prompts/analyze/n8n-workflow.d.ts.map +1 -0
  78. package/dist/prompts/analyze/n8n-workflow.js +529 -0
  79. package/dist/prompts/analyze/n8n-workflow.js.map +1 -0
  80. package/dist/prompts/analyze/project-structure.d.ts +126 -0
  81. package/dist/prompts/analyze/project-structure.d.ts.map +1 -0
  82. package/dist/prompts/analyze/project-structure.js +569 -0
  83. package/dist/prompts/analyze/project-structure.js.map +1 -0
  84. package/dist/prompts/analyze/security-audit.d.ts +142 -0
  85. package/dist/prompts/analyze/security-audit.d.ts.map +1 -0
  86. package/dist/prompts/analyze/security-audit.js +637 -0
  87. package/dist/prompts/analyze/security-audit.js.map +1 -0
  88. package/dist/prompts/analyze/single-file.d.ts +162 -0
  89. package/dist/prompts/analyze/single-file.d.ts.map +1 -0
  90. package/dist/prompts/analyze/single-file.js +665 -0
  91. package/dist/prompts/analyze/single-file.js.map +1 -0
  92. package/dist/prompts/analyze/trace-execution.d.ts +126 -0
  93. package/dist/prompts/analyze/trace-execution.d.ts.map +1 -0
  94. package/dist/prompts/analyze/trace-execution.js +609 -0
  95. package/dist/prompts/analyze/trace-execution.js.map +1 -0
  96. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts +116 -0
  97. package/dist/prompts/analyze/wordpress-plugin-audit.d.ts.map +1 -0
  98. package/dist/prompts/analyze/wordpress-plugin-audit.js +454 -0
  99. package/dist/prompts/analyze/wordpress-plugin-audit.js.map +1 -0
  100. package/dist/prompts/analyze/wordpress-security.d.ts +146 -0
  101. package/dist/prompts/analyze/wordpress-security.d.ts.map +1 -0
  102. package/dist/prompts/analyze/wordpress-security.js +698 -0
  103. package/dist/prompts/analyze/wordpress-security.js.map +1 -0
  104. package/dist/prompts/analyze/wordpress-theme-audit.d.ts +114 -0
  105. package/dist/prompts/analyze/wordpress-theme-audit.d.ts.map +1 -0
  106. package/dist/prompts/analyze/wordpress-theme-audit.js +538 -0
  107. package/dist/prompts/analyze/wordpress-theme-audit.js.map +1 -0
  108. package/dist/prompts/custom/custom-prompt.d.ts +135 -0
  109. package/dist/prompts/custom/custom-prompt.d.ts.map +1 -0
  110. package/dist/prompts/custom/custom-prompt.js +419 -0
  111. package/dist/prompts/custom/custom-prompt.js.map +1 -0
  112. package/dist/prompts/fun/arcade-game.d.ts +152 -0
  113. package/dist/prompts/fun/arcade-game.d.ts.map +1 -0
  114. package/dist/prompts/fun/arcade-game.js +653 -0
  115. package/dist/prompts/fun/arcade-game.js.map +1 -0
  116. package/dist/prompts/fun/create_text_adventure.d.ts +100 -0
  117. package/dist/prompts/fun/create_text_adventure.d.ts.map +1 -0
  118. package/dist/prompts/fun/create_text_adventure.js +397 -0
  119. package/dist/prompts/fun/create_text_adventure.js.map +1 -0
  120. package/dist/prompts/fun/css-art-generator.d.ts +168 -0
  121. package/dist/prompts/fun/css-art-generator.d.ts.map +1 -0
  122. package/dist/prompts/fun/css-art-generator.js +827 -0
  123. package/dist/prompts/fun/css-art-generator.js.map +1 -0
  124. package/dist/prompts/generate/project-documentation.d.ts +137 -0
  125. package/dist/prompts/generate/project-documentation.d.ts.map +1 -0
  126. package/dist/prompts/generate/project-documentation.js +666 -0
  127. package/dist/prompts/generate/project-documentation.js.map +1 -0
  128. package/dist/prompts/generate/refactoring.d.ts +164 -0
  129. package/dist/prompts/generate/refactoring.d.ts.map +1 -0
  130. package/dist/prompts/generate/refactoring.js +621 -0
  131. package/dist/prompts/generate/refactoring.js.map +1 -0
  132. package/dist/prompts/generate/responsive-component.d.ts +147 -0
  133. package/dist/prompts/generate/responsive-component.d.ts.map +1 -0
  134. package/dist/prompts/generate/responsive-component.js +955 -0
  135. package/dist/prompts/generate/responsive-component.js.map +1 -0
  136. package/dist/prompts/generate/typescript-conversion.d.ts +144 -0
  137. package/dist/prompts/generate/typescript-conversion.d.ts.map +1 -0
  138. package/dist/prompts/generate/typescript-conversion.js +527 -0
  139. package/dist/prompts/generate/typescript-conversion.js.map +1 -0
  140. package/dist/prompts/generate/unit-tests.d.ts +139 -0
  141. package/dist/prompts/generate/unit-tests.d.ts.map +1 -0
  142. package/dist/prompts/generate/unit-tests.js +578 -0
  143. package/dist/prompts/generate/unit-tests.js.map +1 -0
  144. package/dist/prompts/generate/wordpress-plugin.d.ts +179 -0
  145. package/dist/prompts/generate/wordpress-plugin.d.ts.map +1 -0
  146. package/dist/prompts/generate/wordpress-plugin.js +763 -0
  147. package/dist/prompts/generate/wordpress-plugin.js.map +1 -0
  148. package/dist/prompts/generate/wordpress-theme-from-static.d.ts +177 -0
  149. package/dist/prompts/generate/wordpress-theme-from-static.d.ts.map +1 -0
  150. package/dist/prompts/generate/wordpress-theme-from-static.js +695 -0
  151. package/dist/prompts/generate/wordpress-theme-from-static.js.map +1 -0
  152. package/dist/prompts/shared/cache-manager.d.ts +45 -0
  153. package/dist/prompts/shared/cache-manager.d.ts.map +1 -0
  154. package/dist/prompts/shared/cache-manager.js +129 -0
  155. package/dist/prompts/shared/cache-manager.js.map +1 -0
  156. package/dist/prompts/shared/helpers.d.ts +39 -0
  157. package/dist/prompts/shared/helpers.d.ts.map +1 -0
  158. package/dist/prompts/shared/helpers.js +151 -0
  159. package/dist/prompts/shared/helpers.js.map +1 -0
  160. package/dist/prompts/shared/templates.d.ts +35 -0
  161. package/dist/prompts/shared/templates.d.ts.map +1 -0
  162. package/dist/prompts/shared/templates.js +77 -0
  163. package/dist/prompts/shared/templates.js.map +1 -0
  164. package/dist/prompts/shared/types.d.ts +112 -0
  165. package/dist/prompts/shared/types.d.ts.map +1 -0
  166. package/dist/prompts/shared/types.js +5 -0
  167. package/dist/prompts/shared/types.js.map +1 -0
  168. package/dist/prompts/system/find-unused-files.d.ts +106 -0
  169. package/dist/prompts/system/find-unused-files.d.ts.map +1 -0
  170. package/dist/prompts/system/find-unused-files.js +353 -0
  171. package/dist/prompts/system/find-unused-files.js.map +1 -0
  172. package/dist/security/index.d.ts +39 -0
  173. package/dist/security/index.d.ts.map +1 -0
  174. package/dist/security/index.js +46 -0
  175. package/dist/security/index.js.map +1 -0
  176. package/dist/security/integration-helpers.d.ts +121 -0
  177. package/dist/security/integration-helpers.d.ts.map +1 -0
  178. package/dist/security/integration-helpers.js +190 -0
  179. package/dist/security/integration-helpers.js.map +1 -0
  180. package/dist/security/output-encoder.d.ts +94 -0
  181. package/dist/security/output-encoder.d.ts.map +1 -0
  182. package/dist/security/output-encoder.js +295 -0
  183. package/dist/security/output-encoder.js.map +1 -0
  184. package/dist/security/prompt-injection-guard.d.ts +59 -0
  185. package/dist/security/prompt-injection-guard.d.ts.map +1 -0
  186. package/dist/security/prompt-injection-guard.js +249 -0
  187. package/dist/security/prompt-injection-guard.js.map +1 -0
  188. package/dist/security/sanitisation.d.ts +67 -0
  189. package/dist/security/sanitisation.d.ts.map +1 -0
  190. package/dist/security/sanitisation.js +398 -0
  191. package/dist/security/sanitisation.js.map +1 -0
  192. package/dist/security/security-service.d.ts +103 -0
  193. package/dist/security/security-service.d.ts.map +1 -0
  194. package/dist/security/security-service.js +303 -0
  195. package/dist/security/security-service.js.map +1 -0
  196. package/dist/security-config.d.ts +45 -0
  197. package/dist/security-config.d.ts.map +1 -0
  198. package/dist/security-config.js +63 -0
  199. package/dist/security-config.js.map +1 -0
  200. package/dist/system/function-list.d.ts +61 -0
  201. package/dist/system/function-list.d.ts.map +1 -0
  202. package/dist/system/function-list.js +111 -0
  203. package/dist/system/function-list.js.map +1 -0
  204. package/dist/system/function-registry.d.ts +23 -0
  205. package/dist/system/function-registry.d.ts.map +1 -0
  206. package/dist/system/function-registry.js +136 -0
  207. package/dist/system/function-registry.js.map +1 -0
  208. package/dist/system/health-check.d.ts +33 -0
  209. package/dist/system/health-check.d.ts.map +1 -0
  210. package/dist/system/health-check.js +98 -0
  211. package/dist/system/health-check.js.map +1 -0
  212. package/dist/system/path-resolver.d.ts +55 -0
  213. package/dist/system/path-resolver.d.ts.map +1 -0
  214. package/dist/system/path-resolver.js +90 -0
  215. package/dist/system/path-resolver.js.map +1 -0
  216. package/dist/templates/plugin-template.d.ts +121 -0
  217. package/dist/templates/plugin-template.d.ts.map +1 -0
  218. package/dist/templates/plugin-template.js +450 -0
  219. package/dist/templates/plugin-template.js.map +1 -0
  220. package/dist/types/chunking-types.d.ts +88 -0
  221. package/dist/types/chunking-types.d.ts.map +1 -0
  222. package/dist/types/chunking-types.js +18 -0
  223. package/dist/types/chunking-types.js.map +1 -0
  224. package/dist/types/prompt-stages.d.ts +42 -0
  225. package/dist/types/prompt-stages.d.ts.map +1 -0
  226. package/dist/types/prompt-stages.js +6 -0
  227. package/dist/types/prompt-stages.js.map +1 -0
  228. package/dist/types.d.ts +46 -0
  229. package/dist/types.d.ts.map +1 -0
  230. package/dist/types.js +6 -0
  231. package/dist/types.js.map +1 -0
  232. package/dist/utils/css-parser.d.ts +26 -0
  233. package/dist/utils/css-parser.d.ts.map +1 -0
  234. package/dist/utils/css-parser.js +117 -0
  235. package/dist/utils/css-parser.js.map +1 -0
  236. package/dist/utils/path-resolver.d.ts +13 -0
  237. package/dist/utils/path-resolver.d.ts.map +1 -0
  238. package/dist/utils/path-resolver.js +78 -0
  239. package/dist/utils/path-resolver.js.map +1 -0
  240. package/dist/utils/plugin-utilities.d.ts +171 -0
  241. package/dist/utils/plugin-utilities.d.ts.map +1 -0
  242. package/dist/utils/plugin-utilities.js +221 -0
  243. package/dist/utils/plugin-utilities.js.map +1 -0
  244. package/dist/utils/streamHandler.d.ts +3 -0
  245. package/dist/utils/streamHandler.d.ts.map +1 -0
  246. package/dist/utils/streamHandler.js +137 -0
  247. package/dist/utils/streamHandler.js.map +1 -0
  248. package/dist/validation/output-validator.d.ts +136 -0
  249. package/dist/validation/output-validator.d.ts.map +1 -0
  250. package/dist/validation/output-validator.js +262 -0
  251. package/dist/validation/output-validator.js.map +1 -0
  252. package/dist/validation/response-factory.d.ts +44 -0
  253. package/dist/validation/response-factory.d.ts.map +1 -0
  254. package/dist/validation/response-factory.js +202 -0
  255. package/dist/validation/response-factory.js.map +1 -0
  256. package/dist/validation/schemas.d.ts +519 -0
  257. package/dist/validation/schemas.d.ts.map +1 -0
  258. package/dist/validation/schemas.js +6 -0
  259. package/dist/validation/schemas.js.map +1 -0
  260. package/package.json +72 -0
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Core Cache Manager
3
+ * Foundation for all caching functionality - analysis, prompts, memory, etc.
4
+ */
5
+ export class BaseCacheManager {
6
+ constructor(config = {}) {
7
+ this.cache = new Map();
8
+ this.config = {
9
+ maxEntries: 100,
10
+ ttlMs: undefined, // No TTL by default
11
+ enableStats: true,
12
+ ...config
13
+ };
14
+ }
15
+ isExpired(entry) {
16
+ if (!this.config.ttlMs)
17
+ return false;
18
+ return (Date.now() - entry.timestamp) > this.config.ttlMs;
19
+ }
20
+ evictIfNeeded() {
21
+ if (this.cache.size <= this.config.maxEntries)
22
+ return;
23
+ // Simple FIFO eviction - remove oldest entry
24
+ const firstKey = this.cache.keys().next().value;
25
+ if (firstKey) {
26
+ this.cache.delete(firstKey);
27
+ }
28
+ }
29
+ createEntry(value) {
30
+ return {
31
+ value,
32
+ timestamp: Date.now(),
33
+ hits: 0,
34
+ size: this.estimateSize(value)
35
+ };
36
+ }
37
+ estimateSize(value) {
38
+ try {
39
+ return JSON.stringify(value).length;
40
+ }
41
+ catch {
42
+ return 0;
43
+ }
44
+ }
45
+ async get(key) {
46
+ const entry = this.cache.get(key);
47
+ if (!entry)
48
+ return null;
49
+ if (this.isExpired(entry)) {
50
+ this.cache.delete(key);
51
+ return null;
52
+ }
53
+ // Update hit count for stats
54
+ entry.hits++;
55
+ return entry.value;
56
+ }
57
+ async set(key, value) {
58
+ this.evictIfNeeded();
59
+ const entry = this.createEntry(value);
60
+ this.cache.set(key, entry);
61
+ }
62
+ clear(key) {
63
+ if (key) {
64
+ this.cache.delete(key);
65
+ }
66
+ else {
67
+ this.cache.clear();
68
+ }
69
+ }
70
+ getStatistics() {
71
+ const entries = Array.from(this.cache.values());
72
+ const totalSize = entries.reduce((sum, entry) => sum + (entry.size || 0), 0);
73
+ const totalHits = entries.reduce((sum, entry) => sum + entry.hits, 0);
74
+ return {
75
+ totalEntries: this.cache.size,
76
+ maxEntries: this.config.maxEntries,
77
+ memoryUsage: `${(totalSize / 1024).toFixed(2)} KB`,
78
+ totalHits,
79
+ avgHitsPerEntry: entries.length > 0 ? (totalHits / entries.length).toFixed(1) : 0,
80
+ oldestEntry: entries.length > 0 ? new Date(Math.min(...entries.map(e => e.timestamp))) : null,
81
+ config: this.config
82
+ };
83
+ }
84
+ }
85
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/cache/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Cache System Exports
3
+ * Centralized exports for all caching functionality
4
+ */
5
+ export { BaseCacheManager } from './cache-manager.js';
6
+ export type { CacheEntry, CacheConfig } from './cache-manager.js';
7
+ export { AnalysisCache } from './analysis-cache.js';
8
+ export type { AnalysisResult } from './analysis-cache.js';
9
+ export { PromptCache, MemoryCache } from './prompt-cache.js';
10
+ export type { PromptCacheEntry, MemoryEntry } from './prompt-cache.js';
11
+ import { AnalysisCache } from './analysis-cache.js';
12
+ import { PromptCache, MemoryCache } from './prompt-cache.js';
13
+ export declare const getAnalysisCache: () => AnalysisCache;
14
+ export declare const getPromptCache: () => PromptCache;
15
+ export declare const getMemoryCache: () => MemoryCache;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG7D,eAAO,MAAM,gBAAgB,qBAAoC,CAAC;AAClE,eAAO,MAAM,cAAc,mBAAkC,CAAC;AAC9D,eAAO,MAAM,cAAc,mBAAkC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Cache System Exports
3
+ * Centralized exports for all caching functionality
4
+ */
5
+ // Core cache infrastructure
6
+ export { BaseCacheManager } from './cache-manager.js';
7
+ // Specialized cache implementations
8
+ export { AnalysisCache } from './analysis-cache.js';
9
+ export { PromptCache, MemoryCache } from './prompt-cache.js';
10
+ // Import the classes for the convenience functions
11
+ import { AnalysisCache } from './analysis-cache.js';
12
+ import { PromptCache, MemoryCache } from './prompt-cache.js';
13
+ // Convenience exports for common usage patterns
14
+ export const getAnalysisCache = () => AnalysisCache.getInstance();
15
+ export const getPromptCache = () => PromptCache.getInstance();
16
+ export const getMemoryCache = () => MemoryCache.getInstance();
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,sCAAsC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG7D,mDAAmD;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7D,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Prompt/Memory Cache - Placeholder for your planned feature
3
+ *
4
+ * This is where prompt caching and memory functionality will live
5
+ */
6
+ import { BaseCacheManager, CacheConfig } from './cache-manager.js';
7
+ export interface PromptCacheEntry {
8
+ prompt: string;
9
+ response: string;
10
+ modelUsed: string;
11
+ timestamp: string;
12
+ contextHash: string;
13
+ }
14
+ export interface MemoryEntry {
15
+ content: string;
16
+ context: any;
17
+ importance: number;
18
+ associations: string[];
19
+ timestamp: string;
20
+ }
21
+ export declare class PromptCache extends BaseCacheManager<PromptCacheEntry> {
22
+ private static instance;
23
+ constructor(config?: Partial<CacheConfig>);
24
+ static getInstance(config?: Partial<CacheConfig>): PromptCache;
25
+ cachePromptResponse(promptHash: string, prompt: string, response: string, modelUsed: string): Promise<void>;
26
+ }
27
+ export declare class MemoryCache extends BaseCacheManager<MemoryEntry> {
28
+ private static instance;
29
+ constructor(config?: Partial<CacheConfig>);
30
+ static getInstance(config?: Partial<CacheConfig>): MemoryCache;
31
+ storeMemory(key: string, content: string, context: any, importance?: number): Promise<void>;
32
+ }
33
+ //# sourceMappingURL=prompt-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-cache.d.ts","sourceRoot":"","sources":["../../src/cache/prompt-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAY,SAAQ,gBAAgB,CAAC,gBAAgB,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;gBAEzB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IASzC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;IAQxD,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAWjB;AAED,qBAAa,WAAY,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;gBAEzB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IASzC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW;IAQxD,WAAW,CACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,EACZ,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC,IAAI,CAAC;CAWjB"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Prompt/Memory Cache - Placeholder for your planned feature
3
+ *
4
+ * This is where prompt caching and memory functionality will live
5
+ */
6
+ import { BaseCacheManager } from './cache-manager.js';
7
+ export class PromptCache extends BaseCacheManager {
8
+ constructor(config) {
9
+ super({
10
+ maxEntries: 200, // Larger cache for prompts
11
+ ttlMs: 60 * 60 * 1000, // 1 hour TTL
12
+ enableStats: true,
13
+ ...config
14
+ });
15
+ }
16
+ static getInstance(config) {
17
+ if (!this.instance) {
18
+ this.instance = new PromptCache(config);
19
+ }
20
+ return this.instance;
21
+ }
22
+ // TODO: Implement your prompt caching logic here
23
+ async cachePromptResponse(promptHash, prompt, response, modelUsed) {
24
+ const entry = {
25
+ prompt,
26
+ response,
27
+ modelUsed,
28
+ timestamp: new Date().toISOString(),
29
+ contextHash: promptHash
30
+ };
31
+ await this.set(promptHash, entry);
32
+ }
33
+ }
34
+ export class MemoryCache extends BaseCacheManager {
35
+ constructor(config) {
36
+ super({
37
+ maxEntries: 1000, // Large cache for memory
38
+ ttlMs: undefined, // No expiration for memory
39
+ enableStats: true,
40
+ ...config
41
+ });
42
+ }
43
+ static getInstance(config) {
44
+ if (!this.instance) {
45
+ this.instance = new MemoryCache(config);
46
+ }
47
+ return this.instance;
48
+ }
49
+ // TODO: Implement your memory functionality here
50
+ async storeMemory(key, content, context, importance = 0.5) {
51
+ const entry = {
52
+ content,
53
+ context,
54
+ importance,
55
+ associations: [], // TODO: Implement association logic
56
+ timestamp: new Date().toISOString()
57
+ };
58
+ await this.set(key, entry);
59
+ }
60
+ }
61
+ //# sourceMappingURL=prompt-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-cache.js","sourceRoot":"","sources":["../../src/cache/prompt-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAe,MAAM,oBAAoB,CAAC;AAkBnE,MAAM,OAAO,WAAY,SAAQ,gBAAkC;IAGjE,YAAY,MAA6B;QACvC,KAAK,CAAC;YACJ,UAAU,EAAE,GAAG,EAAG,2BAA2B;YAC7C,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAG,aAAa;YACrC,WAAW,EAAE,IAAI;YACjB,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAA6B;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,mBAAmB,CACvB,UAAkB,EAClB,MAAc,EACd,QAAgB,EAChB,SAAiB;QAEjB,MAAM,KAAK,GAAqB;YAC9B,MAAM;YACN,QAAQ;YACR,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,UAAU;SACxB,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,gBAA6B;IAG5D,YAAY,MAA6B;QACvC,KAAK,CAAC;YACJ,UAAU,EAAE,IAAI,EAAG,yBAAyB;YAC5C,KAAK,EAAE,SAAS,EAAI,2BAA2B;YAC/C,WAAW,EAAE,IAAI;YACjB,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAA6B;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,WAAW,CACf,GAAW,EACX,OAAe,EACf,OAAY,EACZ,aAAqB,GAAG;QAExB,MAAM,KAAK,GAAgB;YACzB,OAAO;YACP,OAAO;YACP,UAAU;YACV,YAAY,EAAE,EAAE,EAAE,oCAAoC;YACtD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Configuration for Houtini LM MCP Server v1.0
3
+ * Modern plugin architecture - prompts are handled by individual plugins
4
+ */
5
+ import { Config } from './types.js';
6
+ export declare const config: Config;
7
+ /**
8
+ * Default LM Studio configuration
9
+ */
10
+ export declare const lmStudioConfig: {
11
+ baseUrl: string;
12
+ timeout: number;
13
+ };
14
+ /**
15
+ * File processing limits
16
+ */
17
+ export declare const fileProcessingLimits: {
18
+ maxFileSize: number;
19
+ supportedTypes: string[];
20
+ chunkSize: number;
21
+ parallelProcessingThreshold: number;
22
+ };
23
+ /**
24
+ * Model parameters for different operation types
25
+ */
26
+ export declare const modelParameters: {
27
+ analysis: {
28
+ temperature: number;
29
+ maxTokens: number;
30
+ topP: number;
31
+ };
32
+ generation: {
33
+ temperature: number;
34
+ maxTokens: number;
35
+ topP: number;
36
+ };
37
+ creative: {
38
+ temperature: number;
39
+ maxTokens: number;
40
+ topP: number;
41
+ };
42
+ };
43
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,eAAO,MAAM,MAAM,EAAE,MA6BpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc;;;CAG1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;CAKhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;CAgB3B,CAAC"}
package/dist/config.js ADDED
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Configuration for Houtini LM MCP Server v1.0
3
+ * Modern plugin architecture - prompts are handled by individual plugins
4
+ */
5
+ export const config = {
6
+ lmStudioUrl: process.env.LM_STUDIO_URL || 'ws://localhost:1234',
7
+ modelName: process.env.LM_STUDIO_MODEL || 'auto',
8
+ temperature: 0.1,
9
+ maxTokens: 2000,
10
+ topP: 0.95,
11
+ timeout: 30000,
12
+ maxFileSize: 200 * 1024 * 1024, // 200MB limit
13
+ supportedFileTypes: [
14
+ '.csv', '.json', '.txt', '.js', '.ts', '.py', '.md', '.log',
15
+ '.jsx', '.tsx', '.java', '.c', '.cpp', '.rs', '.go', '.php',
16
+ '.rb', '.swift', '.html', '.css', '.scss', '.less', '.xml',
17
+ '.yml', '.yaml', '.toml', '.ini', '.conf', '.sh', '.bat'
18
+ ],
19
+ // Security configuration
20
+ security: {
21
+ enableSanitisation: true,
22
+ enableInjectionDetection: true,
23
+ enableOutputEncoding: false, // FIXED: Prevents double JSON escaping
24
+ injectionThreshold: 0.5, // 0-1 scale for detection sensitivity
25
+ allowedDirectories: process.env.LLM_MCP_ALLOWED_DIRS?.split(',') || ['C:\\MCP', 'C:\\DEV'],
26
+ maxInputSize: {
27
+ 'file-path': 1000,
28
+ 'code': 100000,
29
+ 'general': 50000,
30
+ 'prompt': 20000
31
+ }
32
+ }
33
+ };
34
+ /**
35
+ * Default LM Studio configuration
36
+ */
37
+ export const lmStudioConfig = {
38
+ baseUrl: config.lmStudioUrl,
39
+ timeout: config.timeout
40
+ };
41
+ /**
42
+ * File processing limits
43
+ */
44
+ export const fileProcessingLimits = {
45
+ maxFileSize: config.maxFileSize,
46
+ supportedTypes: config.supportedFileTypes,
47
+ chunkSize: 50 * 1024 * 1024, // 50MB chunks for large files
48
+ parallelProcessingThreshold: 10 * 1024 * 1024 // 10MB threshold for parallel processing
49
+ };
50
+ /**
51
+ * Model parameters for different operation types
52
+ */
53
+ export const modelParameters = {
54
+ analysis: {
55
+ temperature: 0.1,
56
+ maxTokens: 2000,
57
+ topP: 0.95
58
+ },
59
+ generation: {
60
+ temperature: 0.3,
61
+ maxTokens: 4000,
62
+ topP: 0.9
63
+ },
64
+ creative: {
65
+ temperature: 0.7,
66
+ maxTokens: 4000,
67
+ topP: 0.9
68
+ }
69
+ };
70
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,qBAAqB;IAC/D,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM;IAChD,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAG,cAAc;IAC/C,kBAAkB,EAAE;QAClB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;QAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;QAC3D,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;QAC1D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;KACzD;IAED,yBAAyB;IACzB,QAAQ,EAAE;QACR,kBAAkB,EAAE,IAAI;QACxB,wBAAwB,EAAE,IAAI;QAC9B,oBAAoB,EAAE,KAAK,EAAE,uCAAuC;QACpE,kBAAkB,EAAE,GAAG,EAAE,sCAAsC;QAC/D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC1F,YAAY,EAAE;YACZ,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC,WAAW;IAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,cAAc,EAAE,MAAM,CAAC,kBAAkB;IACzC,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,8BAA8B;IAC3D,2BAA2B,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,yCAAyC;CACxF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE;QACR,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,IAAI;KACX;IACD,UAAU,EAAE;QACV,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,GAAG;KACV;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,GAAG;KACV;CACF,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 3-Stage Prompt Manager
3
+ * Handles the breakdown of prompts into managed stages for optimal context usage
4
+ */
5
+ import { PromptStages, StageMetrics, ChunkedConversation } from '../types/prompt-stages.js';
6
+ export declare class ThreeStagePromptManager {
7
+ private contextLimit;
8
+ private safetyMargin;
9
+ constructor(contextLimit: number, safetyMargin?: number);
10
+ /**
11
+ * Estimate token count (rough approximation: 4 chars ≈ 1 token)
12
+ */
13
+ private estimateTokens;
14
+ /**
15
+ * Calculate stage metrics to determine available space for data
16
+ */
17
+ calculateStageMetrics(stages: PromptStages): StageMetrics;
18
+ /**
19
+ * Check if data payload needs chunking
20
+ */
21
+ needsChunking(stages: PromptStages): boolean;
22
+ /**
23
+ * Split data payload into appropriately sized chunks
24
+ */
25
+ chunkDataPayload(dataPayload: string, availableTokens: number): string[];
26
+ /**
27
+ * Split a large section that doesn't fit in one chunk
28
+ */
29
+ private splitLargeSection;
30
+ /**
31
+ * Create a chunked conversation from prompt stages
32
+ */
33
+ createChunkedConversation(stages: PromptStages): ChunkedConversation;
34
+ /**
35
+ * Get metrics for debugging/logging
36
+ */
37
+ getDebugInfo(stages: PromptStages): any;
38
+ }
39
+ //# sourceMappingURL=ThreeStagePromptManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeStagePromptManager.d.ts","sourceRoot":"","sources":["../../src/core/ThreeStagePromptManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,qBAAa,uBAAuB;IAClC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAe;gBAEvB,YAAY,EAAE,MAAM,EAAE,YAAY,GAAE,MAAY;IAK5D;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY;IAkBzD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAK5C;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE;IAuDxE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8BzB;;OAEG;IACH,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,mBAAmB;IAwCpE;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,GAAG;CAcxC"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * 3-Stage Prompt Manager
3
+ * Handles the breakdown of prompts into managed stages for optimal context usage
4
+ */
5
+ export class ThreeStagePromptManager {
6
+ constructor(contextLimit, safetyMargin = 0.8) {
7
+ this.safetyMargin = 0.8;
8
+ this.contextLimit = contextLimit;
9
+ this.safetyMargin = safetyMargin;
10
+ }
11
+ /**
12
+ * Estimate token count (rough approximation: 4 chars ≈ 1 token)
13
+ */
14
+ estimateTokens(text) {
15
+ return Math.ceil(text.length / 4);
16
+ }
17
+ /**
18
+ * Calculate stage metrics to determine available space for data
19
+ */
20
+ calculateStageMetrics(stages) {
21
+ const systemTokens = this.estimateTokens(stages.systemAndContext);
22
+ const dataTokens = this.estimateTokens(stages.dataPayload);
23
+ const outputTokens = this.estimateTokens(stages.outputInstructions);
24
+ const fixedOverhead = systemTokens + outputTokens;
25
+ const effectiveLimit = this.contextLimit * this.safetyMargin;
26
+ const availableForData = Math.max(0, effectiveLimit - fixedOverhead);
27
+ return {
28
+ systemTokens,
29
+ dataTokens,
30
+ outputTokens,
31
+ fixedOverhead,
32
+ availableForData
33
+ };
34
+ }
35
+ /**
36
+ * Check if data payload needs chunking
37
+ */
38
+ needsChunking(stages) {
39
+ const metrics = this.calculateStageMetrics(stages);
40
+ return metrics.dataTokens > metrics.availableForData;
41
+ }
42
+ /**
43
+ * Split data payload into appropriately sized chunks
44
+ */
45
+ chunkDataPayload(dataPayload, availableTokens) {
46
+ const dataTokens = this.estimateTokens(dataPayload);
47
+ if (dataTokens <= availableTokens) {
48
+ return [dataPayload];
49
+ }
50
+ // Calculate number of chunks needed
51
+ const chunksNeeded = Math.ceil(dataTokens / availableTokens);
52
+ const charsPerChunk = Math.floor(dataPayload.length / chunksNeeded);
53
+ const chunks = [];
54
+ // Try to break at natural boundaries (lines, sections)
55
+ const sections = dataPayload.split('\n' + '='.repeat(80) + '\n');
56
+ if (sections.length > 1) {
57
+ // Break by file sections if available
58
+ let currentChunk = '';
59
+ for (const section of sections) {
60
+ const sectionWithSeparator = section + '\n' + '='.repeat(80) + '\n';
61
+ const combinedSize = this.estimateTokens(currentChunk + sectionWithSeparator);
62
+ if (combinedSize <= availableTokens && currentChunk.length > 0) {
63
+ currentChunk += sectionWithSeparator;
64
+ }
65
+ else {
66
+ if (currentChunk.length > 0) {
67
+ chunks.push(currentChunk.trim());
68
+ currentChunk = '';
69
+ }
70
+ // If single section is too large, split it
71
+ if (this.estimateTokens(section) > availableTokens) {
72
+ const subChunks = this.splitLargeSection(section, availableTokens);
73
+ chunks.push(...subChunks);
74
+ }
75
+ else {
76
+ currentChunk = sectionWithSeparator;
77
+ }
78
+ }
79
+ }
80
+ if (currentChunk.length > 0) {
81
+ chunks.push(currentChunk.trim());
82
+ }
83
+ }
84
+ else {
85
+ // Simple character-based splitting as fallback
86
+ for (let i = 0; i < dataPayload.length; i += charsPerChunk) {
87
+ chunks.push(dataPayload.slice(i, i + charsPerChunk));
88
+ }
89
+ }
90
+ return chunks.filter(chunk => chunk.trim().length > 0);
91
+ }
92
+ /**
93
+ * Split a large section that doesn't fit in one chunk
94
+ */
95
+ splitLargeSection(section, availableTokens) {
96
+ const targetChars = availableTokens * 4; // Rough char estimate
97
+ const chunks = [];
98
+ // Try to split by lines first
99
+ const lines = section.split('\n');
100
+ let currentChunk = '';
101
+ for (const line of lines) {
102
+ if (currentChunk.length + line.length + 1 <= targetChars) {
103
+ currentChunk += (currentChunk ? '\n' : '') + line;
104
+ }
105
+ else {
106
+ if (currentChunk) {
107
+ chunks.push(currentChunk);
108
+ currentChunk = line;
109
+ }
110
+ else {
111
+ // Line itself is too long, force split
112
+ chunks.push(line.slice(0, targetChars));
113
+ currentChunk = line.slice(targetChars);
114
+ }
115
+ }
116
+ }
117
+ if (currentChunk) {
118
+ chunks.push(currentChunk);
119
+ }
120
+ return chunks;
121
+ }
122
+ /**
123
+ * Create a chunked conversation from prompt stages
124
+ */
125
+ createChunkedConversation(stages) {
126
+ const metrics = this.calculateStageMetrics(stages);
127
+ // System message (Stage 1)
128
+ const systemMessage = {
129
+ role: 'system',
130
+ content: stages.systemAndContext
131
+ };
132
+ // Data messages (Stage 2 - chunked if needed)
133
+ let dataChunks;
134
+ if (this.needsChunking(stages)) {
135
+ dataChunks = this.chunkDataPayload(stages.dataPayload, metrics.availableForData);
136
+ }
137
+ else {
138
+ dataChunks = [stages.dataPayload];
139
+ }
140
+ const dataMessages = dataChunks.map((chunk, index) => ({
141
+ role: 'user',
142
+ content: dataChunks.length > 1
143
+ ? `Data chunk ${index + 1}/${dataChunks.length}:\n\n${chunk}`
144
+ : `Data to analyze:\n\n${chunk}`
145
+ }));
146
+ // Analysis message (Stage 3)
147
+ const analysisMessage = {
148
+ role: 'user',
149
+ content: dataChunks.length > 1
150
+ ? `${stages.outputInstructions}\n\nAnalyze all ${dataChunks.length} data chunks provided above.`
151
+ : stages.outputInstructions
152
+ };
153
+ return {
154
+ systemMessage,
155
+ dataMessages,
156
+ analysisMessage
157
+ };
158
+ }
159
+ /**
160
+ * Get metrics for debugging/logging
161
+ */
162
+ getDebugInfo(stages) {
163
+ const metrics = this.calculateStageMetrics(stages);
164
+ const needsChunking = this.needsChunking(stages);
165
+ return {
166
+ contextLimit: this.contextLimit,
167
+ effectiveLimit: this.contextLimit * this.safetyMargin,
168
+ metrics,
169
+ needsChunking,
170
+ chunksNeeded: needsChunking
171
+ ? Math.ceil(metrics.dataTokens / metrics.availableForData)
172
+ : 1
173
+ };
174
+ }
175
+ }
176
+ //# sourceMappingURL=ThreeStagePromptManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeStagePromptManager.js","sourceRoot":"","sources":["../../src/core/ThreeStagePromptManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Houtini LM MCP Server - Plugin Architecture v1.0
3
+ * Complete plugin-based replacement of legacy switch-case system
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG"}