@robthepcguy/rag-vault 1.1.1 → 1.2.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 (159) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/dist/bin/install-skills.d.ts +0 -0
  4. package/dist/bin/install-skills.d.ts.map +0 -0
  5. package/dist/bin/install-skills.js +0 -0
  6. package/dist/bin/install-skills.js.map +0 -0
  7. package/dist/chunker/index.d.ts +0 -0
  8. package/dist/chunker/index.d.ts.map +0 -0
  9. package/dist/chunker/index.js +0 -0
  10. package/dist/chunker/index.js.map +0 -0
  11. package/dist/chunker/semantic-chunker.d.ts +0 -0
  12. package/dist/chunker/semantic-chunker.d.ts.map +0 -0
  13. package/dist/chunker/semantic-chunker.js +0 -0
  14. package/dist/chunker/semantic-chunker.js.map +0 -0
  15. package/dist/chunker/sentence-splitter.d.ts +0 -0
  16. package/dist/chunker/sentence-splitter.d.ts.map +0 -0
  17. package/dist/chunker/sentence-splitter.js +0 -0
  18. package/dist/chunker/sentence-splitter.js.map +0 -0
  19. package/dist/embedder/index.d.ts +0 -0
  20. package/dist/embedder/index.d.ts.map +0 -0
  21. package/dist/embedder/index.js +0 -0
  22. package/dist/embedder/index.js.map +0 -0
  23. package/dist/errors/index.d.ts +0 -0
  24. package/dist/errors/index.d.ts.map +0 -0
  25. package/dist/errors/index.js +0 -0
  26. package/dist/errors/index.js.map +0 -0
  27. package/dist/explainability/index.d.ts +0 -0
  28. package/dist/explainability/index.d.ts.map +0 -0
  29. package/dist/explainability/index.js +0 -0
  30. package/dist/explainability/index.js.map +0 -0
  31. package/dist/explainability/keywords.d.ts +0 -0
  32. package/dist/explainability/keywords.d.ts.map +0 -0
  33. package/dist/explainability/keywords.js +0 -0
  34. package/dist/explainability/keywords.js.map +0 -0
  35. package/dist/flywheel/feedback.d.ts +12 -1
  36. package/dist/flywheel/feedback.d.ts.map +1 -1
  37. package/dist/flywheel/feedback.js +63 -8
  38. package/dist/flywheel/feedback.js.map +1 -1
  39. package/dist/flywheel/index.d.ts +1 -1
  40. package/dist/flywheel/index.d.ts.map +1 -1
  41. package/dist/flywheel/index.js +1 -2
  42. package/dist/flywheel/index.js.map +1 -1
  43. package/dist/index.d.ts +0 -0
  44. package/dist/index.d.ts.map +0 -0
  45. package/dist/index.js +11 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/parser/html-parser.d.ts +0 -0
  48. package/dist/parser/html-parser.d.ts.map +0 -0
  49. package/dist/parser/html-parser.js +0 -0
  50. package/dist/parser/html-parser.js.map +0 -0
  51. package/dist/parser/index.d.ts +0 -0
  52. package/dist/parser/index.d.ts.map +0 -0
  53. package/dist/parser/index.js +0 -0
  54. package/dist/parser/index.js.map +0 -0
  55. package/dist/parser/pdf-filter.d.ts +0 -0
  56. package/dist/parser/pdf-filter.d.ts.map +0 -0
  57. package/dist/parser/pdf-filter.js +0 -0
  58. package/dist/parser/pdf-filter.js.map +0 -0
  59. package/dist/query/index.d.ts +2 -0
  60. package/dist/query/index.d.ts.map +1 -0
  61. package/dist/query/index.js +10 -0
  62. package/dist/query/index.js.map +1 -0
  63. package/dist/query/parser.d.ts +57 -0
  64. package/dist/query/parser.d.ts.map +1 -0
  65. package/dist/query/parser.js +213 -0
  66. package/dist/query/parser.js.map +1 -0
  67. package/dist/server/index.d.ts +19 -0
  68. package/dist/server/index.d.ts.map +1 -1
  69. package/dist/server/index.js +209 -43
  70. package/dist/server/index.js.map +1 -1
  71. package/dist/server/raw-data-utils.d.ts +0 -0
  72. package/dist/server/raw-data-utils.d.ts.map +0 -0
  73. package/dist/server/raw-data-utils.js +0 -0
  74. package/dist/server/raw-data-utils.js.map +0 -0
  75. package/dist/server/schemas.d.ts +34 -0
  76. package/dist/server/schemas.d.ts.map +1 -1
  77. package/dist/server/schemas.js +15 -1
  78. package/dist/server/schemas.js.map +1 -1
  79. package/dist/utils/config-parsers.d.ts +0 -0
  80. package/dist/utils/config-parsers.d.ts.map +0 -0
  81. package/dist/utils/config-parsers.js +0 -0
  82. package/dist/utils/config-parsers.js.map +0 -0
  83. package/dist/utils/config.d.ts +0 -0
  84. package/dist/utils/config.d.ts.map +0 -0
  85. package/dist/utils/config.js +0 -0
  86. package/dist/utils/config.js.map +0 -0
  87. package/dist/utils/file-utils.d.ts +9 -0
  88. package/dist/utils/file-utils.d.ts.map +1 -0
  89. package/dist/utils/file-utils.js +41 -0
  90. package/dist/utils/file-utils.js.map +1 -0
  91. package/dist/utils/math.d.ts +0 -0
  92. package/dist/utils/math.d.ts.map +0 -0
  93. package/dist/utils/math.js +0 -0
  94. package/dist/utils/math.js.map +0 -0
  95. package/dist/utils/process-handlers.d.ts +6 -2
  96. package/dist/utils/process-handlers.d.ts.map +1 -1
  97. package/dist/utils/process-handlers.js +84 -17
  98. package/dist/utils/process-handlers.js.map +1 -1
  99. package/dist/vectordb/index.d.ts +16 -3
  100. package/dist/vectordb/index.d.ts.map +1 -1
  101. package/dist/vectordb/index.js +140 -33
  102. package/dist/vectordb/index.js.map +1 -1
  103. package/dist/web/api-routes.d.ts +0 -0
  104. package/dist/web/api-routes.d.ts.map +0 -0
  105. package/dist/web/api-routes.js +0 -0
  106. package/dist/web/api-routes.js.map +0 -0
  107. package/dist/web/config-routes.d.ts +0 -0
  108. package/dist/web/config-routes.d.ts.map +0 -0
  109. package/dist/web/config-routes.js +0 -0
  110. package/dist/web/config-routes.js.map +0 -0
  111. package/dist/web/database-manager.d.ts +2 -0
  112. package/dist/web/database-manager.d.ts.map +1 -1
  113. package/dist/web/database-manager.js +53 -19
  114. package/dist/web/database-manager.js.map +1 -1
  115. package/dist/web/http-server.d.ts +0 -0
  116. package/dist/web/http-server.d.ts.map +1 -1
  117. package/dist/web/http-server.js +6 -2
  118. package/dist/web/http-server.js.map +1 -1
  119. package/dist/web/index.d.ts +0 -0
  120. package/dist/web/index.d.ts.map +0 -0
  121. package/dist/web/index.js +5 -2
  122. package/dist/web/index.js.map +1 -1
  123. package/dist/web/middleware/async-handler.d.ts +0 -0
  124. package/dist/web/middleware/async-handler.d.ts.map +0 -0
  125. package/dist/web/middleware/async-handler.js +0 -0
  126. package/dist/web/middleware/async-handler.js.map +0 -0
  127. package/dist/web/middleware/auth.d.ts +0 -0
  128. package/dist/web/middleware/auth.d.ts.map +0 -0
  129. package/dist/web/middleware/auth.js +0 -0
  130. package/dist/web/middleware/auth.js.map +0 -0
  131. package/dist/web/middleware/error-handler.d.ts +0 -0
  132. package/dist/web/middleware/error-handler.d.ts.map +0 -0
  133. package/dist/web/middleware/error-handler.js +0 -0
  134. package/dist/web/middleware/error-handler.js.map +0 -0
  135. package/dist/web/middleware/index.d.ts +0 -0
  136. package/dist/web/middleware/index.d.ts.map +0 -0
  137. package/dist/web/middleware/index.js +0 -0
  138. package/dist/web/middleware/index.js.map +0 -0
  139. package/dist/web/middleware/rate-limit.d.ts +0 -0
  140. package/dist/web/middleware/rate-limit.d.ts.map +1 -1
  141. package/dist/web/middleware/rate-limit.js +16 -9
  142. package/dist/web/middleware/rate-limit.js.map +1 -1
  143. package/dist/web/middleware/request-logger.d.ts +0 -0
  144. package/dist/web/middleware/request-logger.d.ts.map +0 -0
  145. package/dist/web/middleware/request-logger.js +0 -0
  146. package/dist/web/middleware/request-logger.js.map +0 -0
  147. package/dist/web/types.d.ts +0 -0
  148. package/dist/web/types.d.ts.map +0 -0
  149. package/dist/web/types.js +0 -0
  150. package/dist/web/types.js.map +0 -0
  151. package/package.json +116 -129
  152. package/skills/rag-vault/SKILL.md +0 -0
  153. package/skills/rag-vault/references/html-ingestion.md +0 -0
  154. package/skills/rag-vault/references/query-optimization.md +0 -0
  155. package/skills/rag-vault/references/result-refinement.md +0 -0
  156. package/web-ui/dist/assets/index-BcRp9-z9.js +0 -0
  157. package/web-ui/dist/assets/index-ej8i4PGl.css +0 -0
  158. package/web-ui/dist/index.html +0 -0
  159. package/web-ui/dist/vite.svg +0 -0
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -86,6 +86,7 @@ export declare class FeedbackStore {
86
86
  exportEvents(): FeedbackEvent[];
87
87
  /**
88
88
  * Import events (e.g., from disk)
89
+ * Validates timestamps and skips invalid events
89
90
  */
90
91
  importEvents(events: FeedbackEvent[]): void;
91
92
  /**
@@ -96,9 +97,19 @@ export declare class FeedbackStore {
96
97
  pinnedPairs: number;
97
98
  dismissedPairs: number;
98
99
  };
100
+ /**
101
+ * Save feedback events to disk
102
+ * @param dbPath - Path to the database directory
103
+ */
104
+ saveToDisk(dbPath: string): Promise<void>;
105
+ /**
106
+ * Load feedback events from disk
107
+ * @param dbPath - Path to the database directory
108
+ */
109
+ loadFromDisk(dbPath: string): Promise<void>;
99
110
  }
100
111
  /**
101
- * Get or create the global feedback store
112
+ * Get the global feedback store
102
113
  */
103
114
  export declare function getFeedbackStore(): FeedbackStore;
104
115
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/flywheel/feedback.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,OAAO,GAAG,kBAAkB,GAAG,eAAe,CAAA;AAEtF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,QAAQ,CAAA;IAChB,MAAM,EAAE,QAAQ,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAA;CACpB;AAoBD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAgB;IAG9B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,YAAY,CAA8C;gBAEtD,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKvC;;OAEG;IACH,OAAO,CAAC,aAAa;IAiDrB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO;IAMrD;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO;IAMzD;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO;IAiBnE;;OAEG;IACH,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE;IAsC1E;;OAEG;IACH,cAAc,IAAI,MAAM;IAOxB;;OAEG;IACH,YAAY,IAAI,aAAa,EAAE;IAI/B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IAY3C;;OAEG;IACH,QAAQ,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;CAehF;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD"}
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/flywheel/feedback.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,OAAO,GAAG,kBAAkB,GAAG,eAAe,CAAA;AAEtF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,QAAQ,CAAA;IAChB,MAAM,EAAE,QAAQ,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAA;CACpB;AAoBD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAgB;IAG9B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,YAAY,CAA8C;gBAEtD,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKvC;;OAEG;IACH,OAAO,CAAC,aAAa;IAiDrB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO;IAMrD;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO;IAMzD;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO;IAiBnE;;OAEG;IACH,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE;IAsC1E;;OAEG;IACH,cAAc,IAAI,MAAM;IAOxB;;OAEG;IACH,YAAY,IAAI,aAAa,EAAE;IAI/B;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IAkB3C;;OAEG;IACH,QAAQ,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAgB/E;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA4BlD;AAOD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD"}
@@ -4,6 +4,9 @@
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.FeedbackStore = void 0;
6
6
  exports.getFeedbackStore = getFeedbackStore;
7
+ const promises_1 = require("node:fs/promises");
8
+ const node_path_1 = require("node:path");
9
+ const file_utils_js_1 = require("../utils/file-utils.js");
7
10
  const DEFAULT_CONFIG = {
8
11
  pinBoost: 1.3,
9
12
  coPinBoost: 1.15,
@@ -173,13 +176,19 @@ class FeedbackStore {
173
176
  }
174
177
  /**
175
178
  * Import events (e.g., from disk)
179
+ * Validates timestamps and skips invalid events
176
180
  */
177
181
  importEvents(events) {
178
182
  for (const event of events) {
179
- // Ensure timestamp is a Date object
183
+ // Ensure timestamp is a valid Date object
184
+ const timestamp = new Date(event.timestamp);
185
+ if (Number.isNaN(timestamp.getTime())) {
186
+ console.warn('FeedbackStore: Skipping event with invalid timestamp:', event);
187
+ continue;
188
+ }
180
189
  const e = {
181
190
  ...event,
182
- timestamp: new Date(event.timestamp),
191
+ timestamp,
183
192
  };
184
193
  this.events.push(e);
185
194
  this.updateIndices(e);
@@ -203,17 +212,63 @@ class FeedbackStore {
203
212
  dismissedPairs: dismissedCount,
204
213
  };
205
214
  }
215
+ /**
216
+ * Save feedback events to disk
217
+ * @param dbPath - Path to the database directory
218
+ */
219
+ async saveToDisk(dbPath) {
220
+ const filePath = (0, node_path_1.join)(dbPath, 'feedback.json');
221
+ const data = {
222
+ version: 1,
223
+ events: this.events.map((e) => ({
224
+ ...e,
225
+ timestamp: e.timestamp.toISOString(),
226
+ })),
227
+ };
228
+ await (0, file_utils_js_1.atomicWriteFile)(filePath, JSON.stringify(data, null, 2));
229
+ console.error(`FeedbackStore: Saved ${this.events.length} events to ${filePath}`);
230
+ }
231
+ /**
232
+ * Load feedback events from disk
233
+ * @param dbPath - Path to the database directory
234
+ */
235
+ async loadFromDisk(dbPath) {
236
+ const filePath = (0, node_path_1.join)(dbPath, 'feedback.json');
237
+ try {
238
+ const content = await (0, promises_1.readFile)(filePath, 'utf-8');
239
+ const data = JSON.parse(content);
240
+ // Validate JSON structure before importing
241
+ if (data.version !== 1) {
242
+ console.warn(`FeedbackStore: Unsupported version ${data.version} in ${filePath}, starting fresh`);
243
+ return;
244
+ }
245
+ if (!Array.isArray(data.events)) {
246
+ console.warn(`FeedbackStore: Invalid format (events not an array) in ${filePath}, starting fresh`);
247
+ return;
248
+ }
249
+ this.importEvents(data.events);
250
+ console.error(`FeedbackStore: Loaded ${data.events.length} events from ${filePath}`);
251
+ }
252
+ catch (error) {
253
+ const nodeError = error;
254
+ // File doesn't exist - this is normal for new databases
255
+ if (nodeError.code === 'ENOENT') {
256
+ return;
257
+ }
258
+ // JSON parse error or other issues - log warning and start fresh
259
+ console.warn(`FeedbackStore: Could not load from ${filePath}:`, error);
260
+ }
261
+ }
206
262
  }
207
263
  exports.FeedbackStore = FeedbackStore;
208
- // Global feedback store instance
209
- let globalFeedbackStore = null;
264
+ // Global feedback store instance (eager initialization to prevent race conditions)
265
+ // Using eager init instead of lazy init avoids the check-then-act race where
266
+ // concurrent requests could create separate instances and lose feedback events.
267
+ const globalFeedbackStore = new FeedbackStore();
210
268
  /**
211
- * Get or create the global feedback store
269
+ * Get the global feedback store
212
270
  */
213
271
  function getFeedbackStore() {
214
- if (!globalFeedbackStore) {
215
- globalFeedbackStore = new FeedbackStore();
216
- }
217
272
  return globalFeedbackStore;
218
273
  }
219
274
  //# sourceMappingURL=feedback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/flywheel/feedback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/flywheel/feedback.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,sEAAsE;;;AAyVtE,4CAEC;AAzVD,+CAA2C;AAC3C,yCAAgC;AAChC,0DAAwD;AAkDxD,MAAM,cAAc,GAAmB;IACrC,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU;CAClD,CAAA;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAa;IAC7B,4CAA4C;IAC5C,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,MAAM,GAAG,CAAC,WAAW,EAAE,CAAA;IAChC,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,UAAU,EAAE,CAAA;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAa,aAAa;IASxB,YAAY,SAAkC,EAAE;QARxC,WAAM,GAAoB,EAAE,CAAA;QAGpC,mCAAmC;QAC3B,gBAAW,GAA6B,IAAI,GAAG,EAAE,CAAA,CAAC,oBAAoB;QACtE,mBAAc,GAA6B,IAAI,GAAG,EAAE,CAAA,CAAC,oBAAoB;QACzE,iBAAY,GAAqC,IAAI,GAAG,EAAE,CAAA,CAAC,gCAAgC;QAGjG,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAoB;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAoB;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAExC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,qBAAqB;gBACrB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;gBAC5C,CAAC;gBACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAE/C,4BAA4B;gBAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAA;gBACrD,KAAK,MAAM,cAAc,IAAI,YAAY,EAAE,CAAC;oBAC1C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;wBACjC,yBAAyB;wBACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;4BAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;wBAClD,CAAC;wBACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAE,CAAA;wBACpD,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;wBAErD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;4BACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;wBAC7C,CAAC;wBACD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAE,CAAA;wBACtD,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC/E,CAAC;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,2BAA2B;gBAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;gBAClD,MAAK;YACP,CAAC;YACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,wBAAwB;gBACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;gBAC/C,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAClD,MAAK;YACP,CAAC;YACD,0DAA0D;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAgB,EAAE,MAAgB;QACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAA;IACjE,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAgB,EAAE,MAAgB;QAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAA;IACpE,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,MAAgB,EAAE,MAAgB;QACvD,qCAAqC;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAClD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAEtD,oEAAoE;QACpE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;QAClC,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YAClD,IAAI,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;OAEG;IACH,aAAa,CAAyB,OAAY,EAAE,MAAgB;QAClE,MAAM,SAAS,GAAa,MAAM,CAAA;QAElC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5C,MAAM,SAAS,GAAa;gBAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;aAC/D,CAAA;YAED,IAAI,KAAK,GAAG,GAAG,CAAA;YAEf,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;gBACxC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;YAC/B,CAAC;YAED,2BAA2B;YAC3B,IAAI,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;gBACtD,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA;YACjC,CAAC;YAED,iCAAiC;YACjC,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC5C,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;YACrC,CAAC;YAED,iDAAiD;YACjD,OAAO;gBACL,GAAG,MAAM;gBACT,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK;aAC5B,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,6CAA6C;QAC7C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IACzD,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAA;QACvE,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,MAAuB;QAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,0CAA0C;YAC1C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,KAAK,CAAC,CAAA;gBAC5E,SAAQ;YACV,CAAC;YAED,MAAM,CAAC,GAAG;gBACR,GAAG,KAAK;gBACR,SAAS;aACV,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAA;QAC7B,CAAC;QACD,IAAI,cAAc,GAAG,CAAC,CAAA;QACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAA;QAChC,CAAC;QACD,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC9B,WAAW,EAAE,WAAW;YACxB,cAAc,EAAE,cAAc;SAC/B,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,eAAe,CAAC,CAAA;QAC9C,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,GAAG,CAAC;gBACJ,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;aACrC,CAAC,CAAC;SACJ,CAAA;QACD,MAAM,IAAA,+BAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,OAAO,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,MAAM,cAAc,QAAQ,EAAE,CAAC,CAAA;IACnF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,eAAe,CAAC,CAAA;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEhC,2CAA2C;YAC3C,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,OAAO,OAAO,QAAQ,kBAAkB,CAAC,CAAA;gBACjG,OAAM;YACR,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,0DAA0D,QAAQ,kBAAkB,CAAC,CAAA;gBAClG,OAAM;YACR,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC9B,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,MAAM,gBAAgB,QAAQ,EAAE,CAAC,CAAA;QACtF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,KAA8B,CAAA;YAChD,wDAAwD;YACxD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,OAAM;YACR,CAAC;YACD,iEAAiE;YACjE,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;CACF;AAnQD,sCAmQC;AAED,mFAAmF;AACnF,6EAA6E;AAC7E,gFAAgF;AAChF,MAAM,mBAAmB,GAAG,IAAI,aAAa,EAAE,CAAA;AAE/C;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,mBAAmB,CAAA;AAC5B,CAAC"}
@@ -1,2 +1,2 @@
1
- export { FeedbackStore, getFeedbackStore, type FeedbackEventType, type ChunkRef, } from './feedback.js';
1
+ export { getFeedbackStore, type FeedbackEventType, type ChunkRef, } from './feedback.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flywheel/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,GACd,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flywheel/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,GACd,MAAM,eAAe,CAAA"}
@@ -2,8 +2,7 @@
2
2
  // Curatorial Flywheel module
3
3
  // Re-ranking based on user feedback (pins, dismissals)
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.getFeedbackStore = exports.FeedbackStore = void 0;
5
+ exports.getFeedbackStore = void 0;
6
6
  var feedback_js_1 = require("./feedback.js");
7
- Object.defineProperty(exports, "FeedbackStore", { enumerable: true, get: function () { return feedback_js_1.FeedbackStore; } });
8
7
  Object.defineProperty(exports, "getFeedbackStore", { enumerable: true, get: function () { return feedback_js_1.getFeedbackStore; } });
9
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flywheel/index.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,uDAAuD;;;AAEvD,6CAKsB;AAJpB,4GAAA,aAAa,OAAA;AACb,+GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flywheel/index.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,uDAAuD;;;AAEvD,6CAIsB;AAHpB,+GAAA,gBAAgB,OAAA"}
package/dist/index.d.ts CHANGED
File without changes
File without changes
package/dist/index.js CHANGED
@@ -67,7 +67,12 @@ else {
67
67
  // MCP Server (default behavior)
68
68
  // ============================================
69
69
  (0, process_handlers_js_1.setupProcessHandlers)();
70
- main();
70
+ (0, process_handlers_js_1.setupGracefulShutdown)(); // Listen for SIGTERM/SIGINT
71
+ // Add .catch() to handle initialization errors and prevent unhandled rejections
72
+ main().catch((error) => {
73
+ console.error('Fatal error during startup:', error);
74
+ process.exit(1);
75
+ });
71
76
  }
72
77
  /**
73
78
  * Entry point - Start RAG MCP Server
@@ -80,6 +85,11 @@ async function main() {
80
85
  console.error('Configuration:', config);
81
86
  // Start RAGServer
82
87
  const server = new index_js_1.RAGServer(config);
88
+ // Register cleanup callback for graceful shutdown
89
+ (0, process_handlers_js_1.onShutdown)(async () => {
90
+ console.error('Closing RAG server...');
91
+ await server.close();
92
+ });
83
93
  await server.initialize();
84
94
  await server.run();
85
95
  console.error('RAG MCP Server started successfully');
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjC,+DAAiE;AACjE,gDAA6C;AAC7C,iDAAqE;AACrE,qEAAkE;AAElE,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAE/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAElC,6BAA6B;AAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;IACzB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1B,yCAAyC;QACzC,IAAA,uBAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAA;QACzF,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAA;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;KAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;IAC7B,6DAA6D;IAC7D,kDAAO,gBAAgB,IAAE,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC;KAAM,CAAC;IACN,+CAA+C;IAC/C,gCAAgC;IAChC,+CAA+C;IAC/C,IAAA,0CAAoB,GAAE,CAAA;IACtB,IAAI,EAAE,CAAA;AACR,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,0BAAc,GAAE,CAAA;QAC/B,IAAA,6BAAiB,EAAC,MAAM,CAAC,CAAA;QAEzB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC3C,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;QAEvC,kBAAkB;QAClB,MAAM,MAAM,GAAG,IAAI,oBAAS,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;QACzB,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;QAElB,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjC,+DAAiE;AACjE,gDAA6C;AAC7C,iDAAqE;AACrE,qEAAqG;AAErG,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAE/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAElC,6BAA6B;AAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;IACzB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1B,yCAAyC;QACzC,IAAA,uBAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAA;QACzF,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAA;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;KAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;IAC7B,6DAA6D;IAC7D,kDAAO,gBAAgB,IAAE,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC;KAAM,CAAC;IACN,+CAA+C;IAC/C,gCAAgC;IAChC,+CAA+C;IAC/C,IAAA,0CAAoB,GAAE,CAAA;IACtB,IAAA,2CAAqB,GAAE,CAAA,CAAC,4BAA4B;IACpD,gFAAgF;IAChF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,0BAAc,GAAE,CAAA;QAC/B,IAAA,6BAAiB,EAAC,MAAM,CAAC,CAAA;QAEzB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC3C,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;QAEvC,kBAAkB;QAClB,MAAM,MAAM,GAAG,IAAI,oBAAS,CAAC,MAAM,CAAC,CAAA;QAEpC,kDAAkD;QAClD,IAAA,gCAAU,EAAC,KAAK,IAAI,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;YACtC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;QACzB,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;QAElB,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ export { parseQuery, toSemanticQuery, shouldExclude, matchesFilters, } from './parser.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAA"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ // Query parsing module exports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.matchesFilters = exports.shouldExclude = exports.toSemanticQuery = exports.parseQuery = void 0;
5
+ var parser_js_1 = require("./parser.js");
6
+ Object.defineProperty(exports, "parseQuery", { enumerable: true, get: function () { return parser_js_1.parseQuery; } });
7
+ Object.defineProperty(exports, "toSemanticQuery", { enumerable: true, get: function () { return parser_js_1.toSemanticQuery; } });
8
+ Object.defineProperty(exports, "shouldExclude", { enumerable: true, get: function () { return parser_js_1.shouldExclude; } });
9
+ Object.defineProperty(exports, "matchesFilters", { enumerable: true, get: function () { return parser_js_1.matchesFilters; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":";AAAA,+BAA+B;;;AAE/B,yCAKoB;AAJlB,uGAAA,UAAU,OAAA;AACV,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Parsed query structure
3
+ */
4
+ export interface ParsedQuery {
5
+ /** Terms for semantic search */
6
+ semanticTerms: string[];
7
+ /** Exact phrases for FTS matching (quoted strings) */
8
+ phrases: string[];
9
+ /** Metadata field filters (field:value) */
10
+ filters: {
11
+ field: string;
12
+ value: string;
13
+ }[];
14
+ /** Terms to exclude from results (-term) */
15
+ excludeTerms: string[];
16
+ /** Primary boolean operator (default: AND) */
17
+ booleanOp: 'AND' | 'OR';
18
+ /** Original query for reference */
19
+ originalQuery: string;
20
+ }
21
+ /**
22
+ * Parse a query string into structured query parts
23
+ *
24
+ * Syntax:
25
+ * - "exact phrase" → Match phrase exactly
26
+ * - field:value → Filter by metadata field
27
+ * - -term → Exclude term from results
28
+ * - term1 AND term2 → Both terms required (default)
29
+ * - term1 OR term2 → Either term matches
30
+ * - (group) → Group expressions (future: for complex boolean)
31
+ *
32
+ * @param query - Raw query string
33
+ * @returns Parsed query structure
34
+ */
35
+ export declare function parseQuery(query: string): ParsedQuery;
36
+ /**
37
+ * Convert parsed query to a semantic search query string
38
+ * Joins semantic terms and phrases for embedding
39
+ */
40
+ export declare function toSemanticQuery(parsed: ParsedQuery): string;
41
+ /**
42
+ * Convert parsed query to a full-text search query string
43
+ * Uses FTS-compatible syntax for phrase matching
44
+ */
45
+ export declare function toFtsQuery(parsed: ParsedQuery): string;
46
+ /**
47
+ * Check if a result should be excluded based on exclude terms
48
+ */
49
+ export declare function shouldExclude(text: string, excludeTerms: string[]): boolean;
50
+ /**
51
+ * Check if a result matches the metadata filters
52
+ */
53
+ export declare function matchesFilters(metadata: Record<string, string> | undefined, filters: {
54
+ field: string;
55
+ value: string;
56
+ }[]): boolean;
57
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/query/parser.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,2CAA2C;IAC3C,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3C,4CAA4C;IAC5C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,8CAA8C;IAC9C,SAAS,EAAE,KAAK,GAAG,IAAI,CAAA;IACvB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAA;CACtB;AAyGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CA+DrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAW3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAiBtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAG3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1C,OAAO,CAST"}