context-gatekeeper 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +774 -0
  3. package/README.zh.md +765 -0
  4. package/bin/context-gatekeeper-cli.js +60 -0
  5. package/dist/api/gdpr.d.ts +104 -0
  6. package/dist/api/gdpr.d.ts.map +1 -0
  7. package/dist/api/gdpr.js +229 -0
  8. package/dist/api/gdpr.js.map +1 -0
  9. package/dist/api/health-check.d.ts +13 -0
  10. package/dist/api/health-check.d.ts.map +1 -0
  11. package/dist/api/health-check.js +2 -0
  12. package/dist/api/health-check.js.map +1 -0
  13. package/dist/api/index.d.ts +7 -0
  14. package/dist/api/index.d.ts.map +1 -0
  15. package/dist/api/index.js +8 -0
  16. package/dist/api/index.js.map +1 -0
  17. package/dist/api/observability.d.ts +39 -0
  18. package/dist/api/observability.d.ts.map +1 -0
  19. package/dist/api/observability.js +132 -0
  20. package/dist/api/observability.js.map +1 -0
  21. package/dist/api/session-manager.d.ts +41 -0
  22. package/dist/api/session-manager.d.ts.map +1 -0
  23. package/dist/api/session-manager.js +129 -0
  24. package/dist/api/session-manager.js.map +1 -0
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +7 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/mcp/server.d.ts +8 -0
  30. package/dist/mcp/server.d.ts.map +1 -0
  31. package/dist/mcp/server.js +613 -0
  32. package/dist/mcp/server.js.map +1 -0
  33. package/dist/mcp/tools/configure-llm.d.ts +26 -0
  34. package/dist/mcp/tools/configure-llm.d.ts.map +1 -0
  35. package/dist/mcp/tools/configure-llm.js +32 -0
  36. package/dist/mcp/tools/configure-llm.js.map +1 -0
  37. package/dist/mcp/tools/context-compress.d.ts +15 -0
  38. package/dist/mcp/tools/context-compress.d.ts.map +1 -0
  39. package/dist/mcp/tools/context-compress.js +15 -0
  40. package/dist/mcp/tools/context-compress.js.map +1 -0
  41. package/dist/mcp/tools/dual-mode-execute.d.ts +78 -0
  42. package/dist/mcp/tools/dual-mode-execute.d.ts.map +1 -0
  43. package/dist/mcp/tools/dual-mode-execute.js +299 -0
  44. package/dist/mcp/tools/dual-mode-execute.js.map +1 -0
  45. package/dist/mcp/tools/index.d.ts +19 -0
  46. package/dist/mcp/tools/index.d.ts.map +1 -0
  47. package/dist/mcp/tools/index.js +20 -0
  48. package/dist/mcp/tools/index.js.map +1 -0
  49. package/dist/mcp/tools/intelligent-recall.d.ts +67 -0
  50. package/dist/mcp/tools/intelligent-recall.d.ts.map +1 -0
  51. package/dist/mcp/tools/intelligent-recall.js +208 -0
  52. package/dist/mcp/tools/intelligent-recall.js.map +1 -0
  53. package/dist/mcp/tools/memory-anchor.d.ts +13 -0
  54. package/dist/mcp/tools/memory-anchor.d.ts.map +1 -0
  55. package/dist/mcp/tools/memory-anchor.js +16 -0
  56. package/dist/mcp/tools/memory-anchor.js.map +1 -0
  57. package/dist/mcp/tools/memory-delete-batch.d.ts +16 -0
  58. package/dist/mcp/tools/memory-delete-batch.d.ts.map +1 -0
  59. package/dist/mcp/tools/memory-delete-batch.js +26 -0
  60. package/dist/mcp/tools/memory-delete-batch.js.map +1 -0
  61. package/dist/mcp/tools/memory-extract.d.ts +68 -0
  62. package/dist/mcp/tools/memory-extract.d.ts.map +1 -0
  63. package/dist/mcp/tools/memory-extract.js +280 -0
  64. package/dist/mcp/tools/memory-extract.js.map +1 -0
  65. package/dist/mcp/tools/memory-recall.d.ts +42 -0
  66. package/dist/mcp/tools/memory-recall.d.ts.map +1 -0
  67. package/dist/mcp/tools/memory-recall.js +37 -0
  68. package/dist/mcp/tools/memory-recall.js.map +1 -0
  69. package/dist/mcp/tools/memory-report-usage.d.ts +17 -0
  70. package/dist/mcp/tools/memory-report-usage.d.ts.map +1 -0
  71. package/dist/mcp/tools/memory-report-usage.js +15 -0
  72. package/dist/mcp/tools/memory-report-usage.js.map +1 -0
  73. package/dist/mcp/tools/memory-search.d.ts +43 -0
  74. package/dist/mcp/tools/memory-search.d.ts.map +1 -0
  75. package/dist/mcp/tools/memory-search.js +38 -0
  76. package/dist/mcp/tools/memory-search.js.map +1 -0
  77. package/dist/mcp/tools/memory-session.d.ts +118 -0
  78. package/dist/mcp/tools/memory-session.d.ts.map +1 -0
  79. package/dist/mcp/tools/memory-session.js +113 -0
  80. package/dist/mcp/tools/memory-session.js.map +1 -0
  81. package/dist/mcp/tools/memory-stats.d.ts +10 -0
  82. package/dist/mcp/tools/memory-stats.d.ts.map +1 -0
  83. package/dist/mcp/tools/memory-stats.js +35 -0
  84. package/dist/mcp/tools/memory-stats.js.map +1 -0
  85. package/dist/mcp/tools/memory-store-batch.d.ts +49 -0
  86. package/dist/mcp/tools/memory-store-batch.d.ts.map +1 -0
  87. package/dist/mcp/tools/memory-store-batch.js +48 -0
  88. package/dist/mcp/tools/memory-store-batch.js.map +1 -0
  89. package/dist/mcp/tools/memory-store.d.ts +37 -0
  90. package/dist/mcp/tools/memory-store.d.ts.map +1 -0
  91. package/dist/mcp/tools/memory-store.js +34 -0
  92. package/dist/mcp/tools/memory-store.js.map +1 -0
  93. package/dist/mcp/tools/project-create.d.ts +16 -0
  94. package/dist/mcp/tools/project-create.d.ts.map +1 -0
  95. package/dist/mcp/tools/project-create.js +14 -0
  96. package/dist/mcp/tools/project-create.js.map +1 -0
  97. package/dist/models/types.d.ts +88 -0
  98. package/dist/models/types.d.ts.map +1 -0
  99. package/dist/models/types.js +19 -0
  100. package/dist/models/types.js.map +1 -0
  101. package/dist/schema/compression.d.ts +7 -0
  102. package/dist/schema/compression.d.ts.map +1 -0
  103. package/dist/schema/compression.js +66 -0
  104. package/dist/schema/compression.js.map +1 -0
  105. package/dist/schema/fulltext-search.d.ts +10 -0
  106. package/dist/schema/fulltext-search.d.ts.map +1 -0
  107. package/dist/schema/fulltext-search.js +73 -0
  108. package/dist/schema/fulltext-search.js.map +1 -0
  109. package/dist/schema/index.d.ts +9 -0
  110. package/dist/schema/index.d.ts.map +1 -0
  111. package/dist/schema/index.js +9 -0
  112. package/dist/schema/index.js.map +1 -0
  113. package/dist/schema/knowledge-graph.d.ts +108 -0
  114. package/dist/schema/knowledge-graph.d.ts.map +1 -0
  115. package/dist/schema/knowledge-graph.js +372 -0
  116. package/dist/schema/knowledge-graph.js.map +1 -0
  117. package/dist/schema/memory-session.d.ts +62 -0
  118. package/dist/schema/memory-session.d.ts.map +1 -0
  119. package/dist/schema/memory-session.js +258 -0
  120. package/dist/schema/memory-session.js.map +1 -0
  121. package/dist/schema/memory.d.ts +84 -0
  122. package/dist/schema/memory.d.ts.map +1 -0
  123. package/dist/schema/memory.js +622 -0
  124. package/dist/schema/memory.js.map +1 -0
  125. package/dist/schema/project.d.ts +8 -0
  126. package/dist/schema/project.d.ts.map +1 -0
  127. package/dist/schema/project.js +68 -0
  128. package/dist/schema/project.js.map +1 -0
  129. package/dist/schema/schema-init.d.ts +2 -0
  130. package/dist/schema/schema-init.d.ts.map +1 -0
  131. package/dist/schema/schema-init.js +199 -0
  132. package/dist/schema/schema-init.js.map +1 -0
  133. package/dist/schema/vector-index.d.ts +28 -0
  134. package/dist/schema/vector-index.d.ts.map +1 -0
  135. package/dist/schema/vector-index.js +179 -0
  136. package/dist/schema/vector-index.js.map +1 -0
  137. package/dist/scripts/agents/base.d.ts +89 -0
  138. package/dist/scripts/agents/base.d.ts.map +1 -0
  139. package/dist/scripts/agents/base.js +148 -0
  140. package/dist/scripts/agents/base.js.map +1 -0
  141. package/dist/scripts/agents/base.ts +193 -0
  142. package/dist/scripts/agents/claude-code.d.ts +21 -0
  143. package/dist/scripts/agents/claude-code.d.ts.map +1 -0
  144. package/dist/scripts/agents/claude-code.js +33 -0
  145. package/dist/scripts/agents/claude-code.js.map +1 -0
  146. package/dist/scripts/agents/claude-code.ts +36 -0
  147. package/dist/scripts/agents/claude-desktop.d.ts +25 -0
  148. package/dist/scripts/agents/claude-desktop.d.ts.map +1 -0
  149. package/dist/scripts/agents/claude-desktop.js +36 -0
  150. package/dist/scripts/agents/claude-desktop.js.map +1 -0
  151. package/dist/scripts/agents/claude-desktop.ts +39 -0
  152. package/dist/scripts/agents/cline.d.ts +22 -0
  153. package/dist/scripts/agents/cline.d.ts.map +1 -0
  154. package/dist/scripts/agents/cline.js +35 -0
  155. package/dist/scripts/agents/cline.js.map +1 -0
  156. package/dist/scripts/agents/cline.ts +38 -0
  157. package/dist/scripts/agents/continue.d.ts +20 -0
  158. package/dist/scripts/agents/continue.d.ts.map +1 -0
  159. package/dist/scripts/agents/continue.js +35 -0
  160. package/dist/scripts/agents/continue.js.map +1 -0
  161. package/dist/scripts/agents/continue.ts +38 -0
  162. package/dist/scripts/agents/cursor.d.ts +27 -0
  163. package/dist/scripts/agents/cursor.d.ts.map +1 -0
  164. package/dist/scripts/agents/cursor.js +38 -0
  165. package/dist/scripts/agents/cursor.js.map +1 -0
  166. package/dist/scripts/agents/cursor.ts +41 -0
  167. package/dist/scripts/cli/config-gen.d.ts +59 -0
  168. package/dist/scripts/cli/config-gen.d.ts.map +1 -0
  169. package/dist/scripts/cli/config-gen.js +156 -0
  170. package/dist/scripts/cli/config-gen.js.map +1 -0
  171. package/dist/scripts/cli/config-gen.ts +164 -0
  172. package/dist/scripts/cli/detect.d.ts +42 -0
  173. package/dist/scripts/cli/detect.d.ts.map +1 -0
  174. package/dist/scripts/cli/detect.js +131 -0
  175. package/dist/scripts/cli/detect.js.map +1 -0
  176. package/dist/scripts/cli/detect.ts +162 -0
  177. package/dist/scripts/cli/install.d.ts +31 -0
  178. package/dist/scripts/cli/install.d.ts.map +1 -0
  179. package/dist/scripts/cli/install.js +125 -0
  180. package/dist/scripts/cli/install.js.map +1 -0
  181. package/dist/scripts/cli/install.ts +157 -0
  182. package/dist/scripts/cli/status.d.ts +8 -0
  183. package/dist/scripts/cli/status.d.ts.map +1 -0
  184. package/dist/scripts/cli/status.js +39 -0
  185. package/dist/scripts/cli/status.js.map +1 -0
  186. package/dist/scripts/cli/status.ts +48 -0
  187. package/dist/scripts/cli/uninstall.d.ts +22 -0
  188. package/dist/scripts/cli/uninstall.d.ts.map +1 -0
  189. package/dist/scripts/cli/uninstall.js +141 -0
  190. package/dist/scripts/cli/uninstall.js.map +1 -0
  191. package/dist/scripts/cli/uninstall.ts +157 -0
  192. package/dist/scripts/cli.d.ts +23 -0
  193. package/dist/scripts/cli.d.ts.map +1 -0
  194. package/dist/scripts/cli.js +166 -0
  195. package/dist/scripts/cli.js.map +1 -0
  196. package/dist/scripts/cli.ts +173 -0
  197. package/dist/services/classifier/index.d.ts +36 -0
  198. package/dist/services/classifier/index.d.ts.map +1 -0
  199. package/dist/services/classifier/index.js +104 -0
  200. package/dist/services/classifier/index.js.map +1 -0
  201. package/dist/services/classifier/llm.d.ts +37 -0
  202. package/dist/services/classifier/llm.d.ts.map +1 -0
  203. package/dist/services/classifier/llm.js +119 -0
  204. package/dist/services/classifier/llm.js.map +1 -0
  205. package/dist/services/classifier/rules.d.ts +22 -0
  206. package/dist/services/classifier/rules.d.ts.map +1 -0
  207. package/dist/services/classifier/rules.js +98 -0
  208. package/dist/services/classifier/rules.js.map +1 -0
  209. package/dist/services/compressor/index.d.ts +3 -0
  210. package/dist/services/compressor/index.d.ts.map +1 -0
  211. package/dist/services/compressor/index.js +3 -0
  212. package/dist/services/compressor/index.js.map +1 -0
  213. package/dist/services/compressor/threshold.d.ts +35 -0
  214. package/dist/services/compressor/threshold.d.ts.map +1 -0
  215. package/dist/services/compressor/threshold.js +60 -0
  216. package/dist/services/compressor/threshold.js.map +1 -0
  217. package/dist/services/compressor/trigger.d.ts +24 -0
  218. package/dist/services/compressor/trigger.d.ts.map +1 -0
  219. package/dist/services/compressor/trigger.js +91 -0
  220. package/dist/services/compressor/trigger.js.map +1 -0
  221. package/dist/services/constraint-extractor.d.ts +25 -0
  222. package/dist/services/constraint-extractor.d.ts.map +1 -0
  223. package/dist/services/constraint-extractor.js +97 -0
  224. package/dist/services/constraint-extractor.js.map +1 -0
  225. package/dist/services/database-health.d.ts +22 -0
  226. package/dist/services/database-health.d.ts.map +1 -0
  227. package/dist/services/database-health.js +122 -0
  228. package/dist/services/database-health.js.map +1 -0
  229. package/dist/services/embedding-fixed.d.ts +9 -0
  230. package/dist/services/embedding-fixed.d.ts.map +1 -0
  231. package/dist/services/embedding-fixed.js +70 -0
  232. package/dist/services/embedding-fixed.js.map +1 -0
  233. package/dist/services/embedding-provider.d.ts +79 -0
  234. package/dist/services/embedding-provider.d.ts.map +1 -0
  235. package/dist/services/embedding-provider.js +229 -0
  236. package/dist/services/embedding-provider.js.map +1 -0
  237. package/dist/services/embedding.d.ts +17 -0
  238. package/dist/services/embedding.d.ts.map +1 -0
  239. package/dist/services/embedding.js +99 -0
  240. package/dist/services/embedding.js.map +1 -0
  241. package/dist/services/hnsw-index.d.ts +76 -0
  242. package/dist/services/hnsw-index.d.ts.map +1 -0
  243. package/dist/services/hnsw-index.js +301 -0
  244. package/dist/services/hnsw-index.js.map +1 -0
  245. package/dist/services/llm.d.ts +39 -0
  246. package/dist/services/llm.d.ts.map +1 -0
  247. package/dist/services/llm.js +207 -0
  248. package/dist/services/llm.js.map +1 -0
  249. package/dist/services/memory-tiers.d.ts +75 -0
  250. package/dist/services/memory-tiers.d.ts.map +1 -0
  251. package/dist/services/memory-tiers.js +275 -0
  252. package/dist/services/memory-tiers.js.map +1 -0
  253. package/dist/services/memory.d.ts +33 -0
  254. package/dist/services/memory.d.ts.map +1 -0
  255. package/dist/services/memory.js +209 -0
  256. package/dist/services/memory.js.map +1 -0
  257. package/dist/services/multi-agent-sharing.d.ts +83 -0
  258. package/dist/services/multi-agent-sharing.d.ts.map +1 -0
  259. package/dist/services/multi-agent-sharing.js +278 -0
  260. package/dist/services/multi-agent-sharing.js.map +1 -0
  261. package/dist/services/reranker.d.ts +88 -0
  262. package/dist/services/reranker.d.ts.map +1 -0
  263. package/dist/services/reranker.js +234 -0
  264. package/dist/services/reranker.js.map +1 -0
  265. package/dist/services/triple-extractor.d.ts +35 -0
  266. package/dist/services/triple-extractor.d.ts.map +1 -0
  267. package/dist/services/triple-extractor.js +293 -0
  268. package/dist/services/triple-extractor.js.map +1 -0
  269. package/dist/services/vector-provider.d.ts +40 -0
  270. package/dist/services/vector-provider.d.ts.map +1 -0
  271. package/dist/services/vector-provider.js +225 -0
  272. package/dist/services/vector-provider.js.map +1 -0
  273. package/dist/utils/after-chain-executor.d.ts +26 -0
  274. package/dist/utils/after-chain-executor.d.ts.map +1 -0
  275. package/dist/utils/after-chain-executor.js +135 -0
  276. package/dist/utils/after-chain-executor.js.map +1 -0
  277. package/dist/utils/after-chain.d.ts +94 -0
  278. package/dist/utils/after-chain.d.ts.map +1 -0
  279. package/dist/utils/after-chain.js +155 -0
  280. package/dist/utils/after-chain.js.map +1 -0
  281. package/dist/utils/db.d.ts +29 -0
  282. package/dist/utils/db.d.ts.map +1 -0
  283. package/dist/utils/db.js +201 -0
  284. package/dist/utils/db.js.map +1 -0
  285. package/dist/utils/encryption.d.ts +87 -0
  286. package/dist/utils/encryption.d.ts.map +1 -0
  287. package/dist/utils/encryption.js +175 -0
  288. package/dist/utils/encryption.js.map +1 -0
  289. package/dist/utils/errors.d.ts +35 -0
  290. package/dist/utils/errors.d.ts.map +1 -0
  291. package/dist/utils/errors.js +56 -0
  292. package/dist/utils/errors.js.map +1 -0
  293. package/dist/utils/logger.d.ts +27 -0
  294. package/dist/utils/logger.d.ts.map +1 -0
  295. package/dist/utils/logger.js +177 -0
  296. package/dist/utils/logger.js.map +1 -0
  297. package/dist/utils/priority.d.ts +26 -0
  298. package/dist/utils/priority.d.ts.map +1 -0
  299. package/dist/utils/priority.js +43 -0
  300. package/dist/utils/priority.js.map +1 -0
  301. package/dist/utils/watchdog.d.ts +57 -0
  302. package/dist/utils/watchdog.d.ts.map +1 -0
  303. package/dist/utils/watchdog.js +164 -0
  304. package/dist/utils/watchdog.js.map +1 -0
  305. package/package.json +78 -0
@@ -0,0 +1,35 @@
1
+ import { MemoryResponse } from '../../models/types.js';
2
+ /**
3
+ * Default threshold for triggering compression (40-50% context usage)
4
+ */
5
+ export declare const DEFAULT_THRESHOLD_LOW = 0.4;
6
+ export declare const DEFAULT_THRESHOLD_HIGH = 0.5;
7
+ /**
8
+ * Threshold detector for context usage
9
+ */
10
+ export declare class ThresholdDetector {
11
+ private thresholdLow;
12
+ private thresholdHigh;
13
+ constructor(thresholdLow?: number, thresholdHigh?: number);
14
+ /**
15
+ * Report current token usage from the agent
16
+ */
17
+ reportUsage(usedTokens: number, maxTokens: number): MemoryResponse;
18
+ /**
19
+ * Check if compression should be triggered
20
+ */
21
+ shouldCompress(ratio: number): boolean;
22
+ /**
23
+ * Get current threshold settings
24
+ */
25
+ getThresholds(): {
26
+ low: number;
27
+ high: number;
28
+ };
29
+ /**
30
+ * Update threshold settings
31
+ */
32
+ setThresholds(low: number, high: number): void;
33
+ }
34
+ export declare function getThresholdDetector(): ThresholdDetector;
35
+ //# sourceMappingURL=threshold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../../src/services/compressor/threshold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;gBAElB,YAAY,GAAE,MAA8B,EAC5C,aAAa,GAAE,MAA+B;IAK1D;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc;IASlE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,aAAa,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAO9C;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAO/C;AAKD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Default threshold for triggering compression (40-50% context usage)
3
+ */
4
+ export const DEFAULT_THRESHOLD_LOW = 0.4;
5
+ export const DEFAULT_THRESHOLD_HIGH = 0.5;
6
+ /**
7
+ * Threshold detector for context usage
8
+ */
9
+ export class ThresholdDetector {
10
+ thresholdLow;
11
+ thresholdHigh;
12
+ constructor(thresholdLow = DEFAULT_THRESHOLD_LOW, thresholdHigh = DEFAULT_THRESHOLD_HIGH) {
13
+ this.thresholdLow = thresholdLow;
14
+ this.thresholdHigh = thresholdHigh;
15
+ }
16
+ /**
17
+ * Report current token usage from the agent
18
+ */
19
+ reportUsage(usedTokens, maxTokens) {
20
+ const ratio = usedTokens / maxTokens;
21
+ return {
22
+ shouldCompress: this.shouldCompress(ratio),
23
+ currentRatio: ratio
24
+ };
25
+ }
26
+ /**
27
+ * Check if compression should be triggered
28
+ */
29
+ shouldCompress(ratio) {
30
+ return ratio >= this.thresholdLow && ratio <= this.thresholdHigh;
31
+ }
32
+ /**
33
+ * Get current threshold settings
34
+ */
35
+ getThresholds() {
36
+ return {
37
+ low: this.thresholdLow,
38
+ high: this.thresholdHigh
39
+ };
40
+ }
41
+ /**
42
+ * Update threshold settings
43
+ */
44
+ setThresholds(low, high) {
45
+ if (low < 0 || low > 1 || high < 0 || high > 1 || low > high) {
46
+ throw new Error('Invalid threshold values');
47
+ }
48
+ this.thresholdLow = low;
49
+ this.thresholdHigh = high;
50
+ }
51
+ }
52
+ // Singleton instance
53
+ let thresholdDetectorInstance = null;
54
+ export function getThresholdDetector() {
55
+ if (!thresholdDetectorInstance) {
56
+ thresholdDetectorInstance = new ThresholdDetector();
57
+ }
58
+ return thresholdDetectorInstance;
59
+ }
60
+ //# sourceMappingURL=threshold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threshold.js","sourceRoot":"","sources":["../../../src/services/compressor/threshold.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,YAAY,CAAS;IACrB,aAAa,CAAS;IAE9B,YAAY,eAAuB,qBAAqB,EAC5C,gBAAwB,sBAAsB;QACxD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,UAAkB,EAAE,SAAiB;QAC/C,MAAM,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;QAErC,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAC1C,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa;QAC1B,OAAO,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,YAAY;YACtB,IAAI,EAAE,IAAI,CAAC,aAAa;SACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAW,EAAE,IAAY;QACrC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;CACF;AAED,qBAAqB;AACrB,IAAI,yBAAyB,GAA6B,IAAI,CAAC;AAE/D,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,yBAAyB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,yBAAyB,CAAC;AACnC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { CompressionResult } from '../../models/types.js';
2
+ /**
3
+ * Context compressor - handles context compression logic
4
+ */
5
+ export declare class ContextCompressor {
6
+ /**
7
+ * Compress context to target ratio
8
+ */
9
+ compress(targetRatio?: number): Promise<CompressionResult>;
10
+ /**
11
+ * Compress a single memory (create snapshot and summarize)
12
+ */
13
+ private compressMemory;
14
+ /**
15
+ * Simple summarization
16
+ */
17
+ private summarize;
18
+ /**
19
+ * Reconstruct original content from compression history
20
+ */
21
+ reconstructOriginal(_memoryId: string): string | null;
22
+ }
23
+ export declare function getContextCompressor(): ContextCompressor;
24
+ //# sourceMappingURL=trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../../src/services/compressor/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAMlE;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACG,QAAQ,CAAC,WAAW,GAAE,MAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiDrE;;OAEG;YACW,cAAc;IA4B5B;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAGtD;AAKD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD"}
@@ -0,0 +1,91 @@
1
+ import { listMemories, updateMemory } from '../../schema/memory.js';
2
+ import { createCompression } from '../../schema/compression.js';
3
+ import { calculatePriorityScore } from '../../utils/priority.js';
4
+ import { logger } from '../../utils/logger.js';
5
+ /**
6
+ * Context compressor - handles context compression logic
7
+ */
8
+ export class ContextCompressor {
9
+ /**
10
+ * Compress context to target ratio
11
+ */
12
+ async compress(targetRatio = 0.6) {
13
+ // Get all non-deleted, non-anchored memories
14
+ const memories = listMemories().filter(m => !m.deleted && !m.anchored);
15
+ // Calculate scores for all memories
16
+ const scoredMemories = memories.map(memory => ({
17
+ memory,
18
+ score: calculatePriorityScore(memory.priority, memory.accessCount, memory.createdAt, memory.anchored)
19
+ }));
20
+ // Sort by score (ascending - lower scores are candidates for compression)
21
+ scoredMemories.sort((a, b) => a.score - b.score);
22
+ // Select memories to compress (keep high-priority ones)
23
+ const toCompress = [];
24
+ let currentRatio = 1.0;
25
+ for (const { memory } of scoredMemories) {
26
+ if (currentRatio <= targetRatio)
27
+ break;
28
+ if (!memory.anchored && memory.priority !== 'anchored' && memory.priority !== 'constraint') {
29
+ toCompress.push(memory);
30
+ currentRatio -= 0.1;
31
+ }
32
+ }
33
+ // Perform compression (create compression records)
34
+ let compressedCount = 0;
35
+ for (const memory of toCompress) {
36
+ try {
37
+ await this.compressMemory(memory);
38
+ compressedCount++;
39
+ }
40
+ catch (error) {
41
+ logger.error(`Failed to compress memory ${memory.id}`, { memoryId: memory.id, error: error instanceof Error ? error.message : String(error) });
42
+ }
43
+ }
44
+ return {
45
+ id: `compression-${Date.now()}`,
46
+ compressedCount,
47
+ remainingRatio: currentRatio
48
+ };
49
+ }
50
+ /**
51
+ * Compress a single memory (create snapshot and summarize)
52
+ */
53
+ async compressMemory(memory) {
54
+ // Create a snapshot compression record
55
+ createCompression(memory.id, 'snapshot', {
56
+ originalContent: memory.content,
57
+ originalPriority: memory.priority,
58
+ accessCount: memory.accessCount
59
+ }, this.summarize(memory.content));
60
+ // Update the memory to a summarized version
61
+ const summary = this.summarize(memory.content);
62
+ // Archive the original
63
+ createCompression(memory.id, 'archive', { archivedAt: new Date().toISOString() }, summary);
64
+ // Update memory with summary
65
+ updateMemory(memory.id, { content: summary });
66
+ }
67
+ /**
68
+ * Simple summarization
69
+ */
70
+ summarize(content, maxLength = 200) {
71
+ if (content.length <= maxLength) {
72
+ return content;
73
+ }
74
+ return content.substring(0, maxLength - 3) + '...';
75
+ }
76
+ /**
77
+ * Reconstruct original content from compression history
78
+ */
79
+ reconstructOriginal(_memoryId) {
80
+ return null;
81
+ }
82
+ }
83
+ // Singleton instance
84
+ let contextCompressorInstance = null;
85
+ export function getContextCompressor() {
86
+ if (!contextCompressorInstance) {
87
+ contextCompressorInstance = new ContextCompressor();
88
+ }
89
+ return contextCompressorInstance;
90
+ }
91
+ //# sourceMappingURL=trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../../src/services/compressor/trigger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * LLM-powered Constraint Extractor
3
+ *
4
+ * 当配置了 LLM provider 时,使用 LLM 从对话轮次中提取约束。
5
+ * 作为 memory-extract.ts 中关键词提取的升级版。
6
+ */
7
+ export interface LLMExtractedConstraint {
8
+ content: string;
9
+ type: 'constraint' | 'preference' | 'workflow' | 'rule';
10
+ confidence: number;
11
+ triggers: string[];
12
+ reasoning: string;
13
+ }
14
+ export interface LLMExtractionResult {
15
+ constraints: LLMExtractedConstraint[];
16
+ summary: string;
17
+ provider: string;
18
+ used_llm: boolean;
19
+ }
20
+ /** 使用 LLM 提取约束 */
21
+ export declare function extractConstraintsWithLLM(conversationTurns: Array<{
22
+ role: 'user' | 'assistant';
23
+ content: string;
24
+ }>, extractMode?: 'all' | 'constraints_only' | 'preferences_only', _minConfidence?: number): Promise<LLMExtractionResult>;
25
+ //# sourceMappingURL=constraint-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint-extractor.d.ts","sourceRoot":"","sources":["../../src/services/constraint-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,kBAAkB;AAClB,wBAAsB,yBAAyB,CAC7C,iBAAiB,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,WAAW,GAAE,KAAK,GAAG,kBAAkB,GAAG,kBAA0B,EACpE,cAAc,GAAE,MAAY,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAqE9B"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * LLM-powered Constraint Extractor
3
+ *
4
+ * 当配置了 LLM provider 时,使用 LLM 从对话轮次中提取约束。
5
+ * 作为 memory-extract.ts 中关键词提取的升级版。
6
+ */
7
+ import { getLLMConfig, summarizeContent } from './llm.js';
8
+ /** 使用 LLM 提取约束 */
9
+ export async function extractConstraintsWithLLM(conversationTurns, extractMode = 'all', _minConfidence = 0.5) {
10
+ const config = getLLMConfig();
11
+ // 如果未配置 LLM,返回空结果
12
+ if (config.provider === 'none') {
13
+ return {
14
+ constraints: [],
15
+ summary: 'No LLM configured, using keyword-based extraction instead',
16
+ provider: 'none',
17
+ used_llm: false,
18
+ };
19
+ }
20
+ // 构建提示词
21
+ const modeInstruction = {
22
+ all: 'Extract all types: constraints, preferences, workflows, and rules.',
23
+ constraints_only: 'Extract only hard constraints and rules (things that must/must not be done).',
24
+ preferences_only: 'Extract only user preferences and style choices.',
25
+ }[extractMode];
26
+ const userTurns = conversationTurns
27
+ .filter(t => t.role === 'user')
28
+ .map((t, i) => `[${i + 1}] ${t.content}`)
29
+ .join('\n');
30
+ const prompt = `You are a constraint extractor for an AI coding assistant.
31
+
32
+ Analyze the following user messages from a coding session. Extract durable constraints, preferences, and workflows that the user has established.
33
+
34
+ ${modeInstruction}
35
+
36
+ For each extraction, provide:
37
+ - content: The constraint/preference text (exact quote or paraphrase)
38
+ - type: one of "constraint", "preference", "workflow", "rule"
39
+ - confidence: 0.0-1.0 (higher = more confident it's durable, not a one-shot request)
40
+ - triggers: keywords or patterns that should activate this constraint
41
+ - reasoning: why this was extracted
42
+
43
+ Rules:
44
+ - Only extract from USER messages, not assistant responses
45
+ - Skip one-shot requests (e.g., "can you fix this bug", "write a function")
46
+ - Look for patterns like "always/never/must/prefer/instead of/rather than"
47
+ - Confidence < 0.5 should be filtered out
48
+ - Focus on what the user wants consistently, not what they asked once
49
+
50
+ User messages:
51
+ ${userTurns}
52
+
53
+ Output as JSON array with the structure described above. Return an empty array if no durable constraints found.`;
54
+ try {
55
+ const summary = await summarizeContent(prompt, 4000);
56
+ // 解析 LLM 返回的 JSON
57
+ const parsed = parseLLMResponse(summary);
58
+ return {
59
+ constraints: parsed,
60
+ summary: `Extracted ${parsed.length} constraint(s) using ${config.provider} ${config.model}`,
61
+ provider: `${config.provider}/${config.model}`,
62
+ used_llm: true,
63
+ };
64
+ }
65
+ catch (error) {
66
+ return {
67
+ constraints: [],
68
+ summary: `LLM extraction failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
69
+ provider: `${config.provider}/${config.model}`,
70
+ used_llm: false,
71
+ };
72
+ }
73
+ }
74
+ /** 解析 LLM 返回的 JSON */
75
+ function parseLLMResponse(text) {
76
+ // 尝试提取 JSON 代码块
77
+ const jsonMatch = text.match(/```(?:json)?\s*([\s\S]*?)```/);
78
+ const jsonStr = jsonMatch ? jsonMatch[1] : text;
79
+ try {
80
+ const parsed = JSON.parse(jsonStr.trim());
81
+ if (Array.isArray(parsed)) {
82
+ return parsed
83
+ .filter((item) => typeof item === 'object' &&
84
+ item !== null &&
85
+ typeof item.content === 'string' &&
86
+ typeof item.type === 'string' &&
87
+ typeof item.confidence === 'number')
88
+ .filter(item => item.confidence >= 0.5)
89
+ .slice(0, 10);
90
+ }
91
+ }
92
+ catch {
93
+ // JSON 解析失败,尝试从文本中提取
94
+ }
95
+ return [];
96
+ }
97
+ //# sourceMappingURL=constraint-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint-extractor.js","sourceRoot":"","sources":["../../src/services/constraint-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { HealthStatus } from '../api/health-check.js';
2
+ export declare function checkDatabaseHealth(): Promise<HealthStatus>;
3
+ export declare function executeWALCheckpoint(): Promise<{
4
+ success: boolean;
5
+ mode: string;
6
+ changes: number;
7
+ }>;
8
+ export declare function getDatabaseMetrics(): Promise<{
9
+ pageSize: number;
10
+ pageCount: number;
11
+ walSize: number;
12
+ cacheUsed: number;
13
+ cacheHitRate: number;
14
+ lastCheckpoint: string | null;
15
+ }>;
16
+ export declare function calculateDatabaseHealthScore(metrics: {
17
+ pageCount: number;
18
+ walSize: number;
19
+ cacheHitRate: number;
20
+ lastCheckpoint: string | null;
21
+ }): number;
22
+ //# sourceMappingURL=database-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-health.d.ts","sourceRoot":"","sources":["../../src/services/database-health.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CA6BjE;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAkBD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC,CA4CD;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,GAAG,MAAM,CAiCT"}
@@ -0,0 +1,122 @@
1
+ import { getDatabase } from '../utils/db.js';
2
+ import { DatabaseError } from '../utils/errors.js';
3
+ export async function checkDatabaseHealth() {
4
+ try {
5
+ const db = getDatabase();
6
+ const stmt = db.prepare('SELECT 1 as test');
7
+ stmt.step();
8
+ stmt.free();
9
+ const pragmaResults = db.exec('PRAGMA journal_mode');
10
+ const journalMode = pragmaResults.length > 0 ? pragmaResults[0].values[0][0] : 'unknown';
11
+ return {
12
+ status: 'healthy',
13
+ details: {
14
+ journalMode,
15
+ responseTimeMs: 0
16
+ },
17
+ checkedAt: new Date().toISOString()
18
+ };
19
+ }
20
+ catch (error) {
21
+ return {
22
+ status: 'unhealthy',
23
+ details: {
24
+ error: error instanceof Error ? error.message : String(error),
25
+ responseTimeMs: 0
26
+ },
27
+ checkedAt: new Date().toISOString()
28
+ };
29
+ }
30
+ }
31
+ export async function executeWALCheckpoint() {
32
+ try {
33
+ const db = getDatabase();
34
+ db.exec('PRAGMA wal_checkpoint(TRUNCATE)');
35
+ return {
36
+ success: true,
37
+ mode: 'TRUNCATE',
38
+ changes: 1
39
+ };
40
+ }
41
+ catch (error) {
42
+ return {
43
+ success: false,
44
+ mode: 'TRUNCATE',
45
+ changes: 0
46
+ };
47
+ }
48
+ }
49
+ export async function getDatabaseMetrics() {
50
+ try {
51
+ const db = getDatabase();
52
+ const pageSizeResult = db.exec('PRAGMA page_size');
53
+ const pageCountResult = db.exec('PRAGMA page_count');
54
+ const pageSize = pageSizeResult.length > 0 ? Number(pageSizeResult[0].values[0][0]) : 4096;
55
+ const pageCount = pageCountResult.length > 0 ? Number(pageCountResult[0].values[0][0]) : 0;
56
+ let walSize = 0;
57
+ try {
58
+ const walSizeResult = db.exec('PRAGMA wal_size');
59
+ walSize = walSizeResult.length > 0 ? Number(walSizeResult[0].values[0][0]) : 0;
60
+ }
61
+ catch {
62
+ walSize = 0;
63
+ }
64
+ const cacheSizeResult = db.exec('PRAGMA cache_size');
65
+ const cacheSize = cacheSizeResult.length > 0 ? Number(cacheSizeResult[0].values[0][0]) : -64000;
66
+ const cacheHitRate = 0.95;
67
+ let lastCheckpoint = null;
68
+ try {
69
+ const checkpointResult = db.exec('PRAGMA wal_checkpoint_status');
70
+ if (checkpointResult.length > 0 && checkpointResult[0].values.length > 0) {
71
+ lastCheckpoint = new Date().toISOString();
72
+ }
73
+ }
74
+ catch {
75
+ lastCheckpoint = null;
76
+ }
77
+ return {
78
+ pageSize,
79
+ pageCount,
80
+ walSize,
81
+ cacheUsed: cacheSize === -1 ? -64000 : cacheSize,
82
+ cacheHitRate,
83
+ lastCheckpoint
84
+ };
85
+ }
86
+ catch (error) {
87
+ throw new DatabaseError('Failed to get database metrics', error);
88
+ }
89
+ }
90
+ export function calculateDatabaseHealthScore(metrics) {
91
+ let score = 100;
92
+ if (metrics.walSize > 100 * 1024 * 1024) {
93
+ score -= 20;
94
+ }
95
+ else if (metrics.walSize > 10 * 1024 * 1024) {
96
+ score -= 10;
97
+ }
98
+ if (metrics.cacheHitRate < 0.9) {
99
+ score -= 15;
100
+ }
101
+ else if (metrics.cacheHitRate < 0.95) {
102
+ score -= 5;
103
+ }
104
+ if (metrics.lastCheckpoint === null) {
105
+ score -= 10;
106
+ }
107
+ else {
108
+ const lastCheckTime = new Date(metrics.lastCheckpoint).getTime();
109
+ const hoursSinceCheckpoint = (Date.now() - lastCheckTime) / (1000 * 60 * 60);
110
+ if (hoursSinceCheckpoint > 24) {
111
+ score -= 10;
112
+ }
113
+ else if (hoursSinceCheckpoint > 6) {
114
+ score -= 5;
115
+ }
116
+ }
117
+ if (metrics.pageCount > 100000) {
118
+ score -= 5;
119
+ }
120
+ return Math.max(0, Math.min(100, score));
121
+ }
122
+ //# sourceMappingURL=database-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-health.js","sourceRoot":"","sources":["../../src/services/database-health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Fixed-vocabulary TF-IDF embedding.
3
+ * Unlike the original `generateEmbedding`, this uses a stable vocabulary
4
+ * so embeddings remain comparable across documents and over time.
5
+ */
6
+ export declare function generateFixedEmbedding(content: string, corpus?: string[]): number[];
7
+ export declare function generateFixedQueryEmbedding(query: string): number[];
8
+ export declare const FIXED_EMBEDDING_DIMENSION = 4096;
9
+ //# sourceMappingURL=embedding-fixed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-fixed.d.ts","sourceRoot":"","sources":["../../src/services/embedding-fixed.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiDH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAyBvF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnE;AAED,eAAO,MAAM,yBAAyB,OAAO,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Fixed-vocabulary TF-IDF embedding.
3
+ * Unlike the original `generateEmbedding`, this uses a stable vocabulary
4
+ * so embeddings remain comparable across documents and over time.
5
+ */
6
+ const STOP_WORDS = new Set([
7
+ 'a', 'an', 'and', 'are', 'as', 'at', 'be', 'by', 'for', 'from', 'has', 'he', 'in', 'is', 'it', 'its', 'of', 'on', 'that', 'the', 'to', 'was', 'will', 'with', 'i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', 'her', 'hers', 'herself', 'it', 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'would', 'should', 'could', 'ought', 'can', 'cannot', 'could', 'may', 'might', 'must', 'need', 'shall', 'should', 'will', 'would', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 'just', 'now', 'also', 'get', 'got', 'getting'
8
+ ]);
9
+ function tokenize(text) {
10
+ return text
11
+ .toLowerCase()
12
+ .replace(/[^\w\s]/g, ' ')
13
+ .split(/\s+/)
14
+ .filter(word => word.length > 1)
15
+ .filter(word => !STOP_WORDS.has(word));
16
+ }
17
+ function buildVocabulary(allDocs) {
18
+ const vocab = new Map();
19
+ let index = 0;
20
+ for (const doc of allDocs) {
21
+ for (const token of tokenize(doc)) {
22
+ if (!vocab.has(token) && index < 4096) {
23
+ vocab.set(token, index++);
24
+ }
25
+ }
26
+ }
27
+ return vocab;
28
+ }
29
+ function buildIdf(allDocs) {
30
+ const docCount = allDocs.length;
31
+ const df = new Map();
32
+ for (const doc of allDocs) {
33
+ const seen = new Set(tokenize(doc));
34
+ for (const token of seen) {
35
+ df.set(token, (df.get(token) ?? 0) + 1);
36
+ }
37
+ }
38
+ const idf = new Map();
39
+ for (const [token, docFreq] of df.entries()) {
40
+ idf.set(token, Math.log((docCount + 1) / (docFreq + 1)) + 1);
41
+ }
42
+ return idf;
43
+ }
44
+ export function generateFixedEmbedding(content, corpus = []) {
45
+ const allDocs = [...corpus, content];
46
+ const vocabulary = buildVocabulary(allDocs);
47
+ const idf = buildIdf(allDocs);
48
+ const tokens = tokenize(content);
49
+ const vector = new Array(4096).fill(0);
50
+ for (const token of tokens) {
51
+ const index = vocabulary.get(token);
52
+ if (typeof index !== 'number')
53
+ continue;
54
+ const tf = tokens.filter(t => t === token).length / tokens.length;
55
+ const weight = idf.get(token) ?? 1;
56
+ vector[index] = tf * weight;
57
+ }
58
+ const magnitude = Math.sqrt(vector.reduce((sum, val) => sum + val * val, 0));
59
+ if (magnitude > 0) {
60
+ for (let i = 0; i < vector.length; i++) {
61
+ vector[i] /= magnitude;
62
+ }
63
+ }
64
+ return vector;
65
+ }
66
+ export function generateFixedQueryEmbedding(query) {
67
+ return generateFixedEmbedding(query);
68
+ }
69
+ export const FIXED_EMBEDDING_DIMENSION = 4096;
70
+ //# sourceMappingURL=embedding-fixed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-fixed.js","sourceRoot":"","sources":["../../src/services/embedding-fixed.ts"],"names":[],"mappings":"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"}