capman 0.5.4 → 0.6.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 (59) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/CODEBASE.md +111 -66
  3. package/README.md +45 -4
  4. package/bin/lib/cmd-generate.js +200 -40
  5. package/bin/lib/cmd-help.js +3 -0
  6. package/dist/cjs/cache.d.ts.map +1 -1
  7. package/dist/cjs/cache.js +22 -5
  8. package/dist/cjs/cache.js.map +1 -1
  9. package/dist/cjs/engine.d.ts +53 -1
  10. package/dist/cjs/engine.d.ts.map +1 -1
  11. package/dist/cjs/engine.js +252 -17
  12. package/dist/cjs/engine.js.map +1 -1
  13. package/dist/cjs/generator.d.ts.map +1 -1
  14. package/dist/cjs/generator.js +7 -1
  15. package/dist/cjs/generator.js.map +1 -1
  16. package/dist/cjs/index.d.ts +1 -0
  17. package/dist/cjs/index.d.ts.map +1 -1
  18. package/dist/cjs/index.js +3 -1
  19. package/dist/cjs/index.js.map +1 -1
  20. package/dist/cjs/learning.d.ts.map +1 -1
  21. package/dist/cjs/learning.js +51 -30
  22. package/dist/cjs/learning.js.map +1 -1
  23. package/dist/cjs/matcher.d.ts +69 -9
  24. package/dist/cjs/matcher.d.ts.map +1 -1
  25. package/dist/cjs/matcher.js +328 -43
  26. package/dist/cjs/matcher.js.map +1 -1
  27. package/dist/cjs/parser.d.ts.map +1 -1
  28. package/dist/cjs/parser.js +15 -8
  29. package/dist/cjs/parser.js.map +1 -1
  30. package/dist/cjs/resolver.d.ts +1 -0
  31. package/dist/cjs/resolver.d.ts.map +1 -1
  32. package/dist/cjs/resolver.js +16 -5
  33. package/dist/cjs/resolver.js.map +1 -1
  34. package/dist/cjs/schema.d.ts +64 -46
  35. package/dist/cjs/schema.d.ts.map +1 -1
  36. package/dist/cjs/schema.js +2 -1
  37. package/dist/cjs/schema.js.map +1 -1
  38. package/dist/cjs/types.d.ts +8 -2
  39. package/dist/cjs/types.d.ts.map +1 -1
  40. package/dist/cjs/version.d.ts +1 -1
  41. package/dist/cjs/version.js +1 -1
  42. package/dist/esm/cache.js +22 -5
  43. package/dist/esm/engine.d.ts +53 -1
  44. package/dist/esm/engine.js +255 -20
  45. package/dist/esm/generator.js +7 -1
  46. package/dist/esm/index.d.ts +1 -0
  47. package/dist/esm/index.js +1 -0
  48. package/dist/esm/learning.js +52 -31
  49. package/dist/esm/matcher.d.ts +69 -9
  50. package/dist/esm/matcher.js +321 -42
  51. package/dist/esm/parser.js +15 -8
  52. package/dist/esm/resolver.d.ts +1 -0
  53. package/dist/esm/resolver.js +16 -6
  54. package/dist/esm/schema.d.ts +64 -46
  55. package/dist/esm/schema.js +2 -1
  56. package/dist/esm/types.d.ts +8 -2
  57. package/dist/esm/version.d.ts +1 -1
  58. package/dist/esm/version.js +1 -1
  59. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAkGA,kBAoBC;AAtHD,mCAAsC;AAA7B,qGAAA,WAAW,OAAA;AA0BpB,yCAOoB;AANlB,qGAAA,QAAQ,OAAA;AACR,uGAAA,UAAU,OAAA;AACV,0GAAA,aAAa,OAAA;AACb,yGAAA,YAAY,OAAA;AACZ,qGAAA,QAAQ,OAAA;AACR,kHAAA,qBAAqB,OAAA;AAGvB,qCAIkB;AAHhB,gGAAA,KAAK,OAAA;AACL,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AAEf,qCAAyC;AAAhC,wGAAA,aAAa,OAAA;AAGtB,uCAAoC;AAA3B,mGAAA,OAAO,OAAA;AAGhB,iFAAiF;AACjF,mCAAuC;AAA9B,sGAAA,YAAY,OAAA;AAGrB,iFAAiF;AACjF,iCAA2F;AAAlF,oGAAA,WAAW,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,sGAAA,aAAa,OAAA;AAAE,uGAAA,cAAc,OAAA;AAG1E,iFAAiF;AACjF,uCAAmE;AAA1D,6GAAA,iBAAiB,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAG/C,mCAAuC;AAA9B,sGAAA,YAAY,OAAA;AAGrB,iFAAiF;AAEjF,qCAAuC;AAwBvC;;;;;;;;;;GAUG;AACI,KAAK,UAAU,GAAG,CACvB,KAAa,EACb,QAAkB,EAClB,UAAsB,EAAE;IAExB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAA;IAEhD,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC;QAC9B,QAAQ;QACR,GAAG;QACH,IAAI;QACJ,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,OAAO,EAAE,cAAc,CAAC,OAAO;KAChC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IACtD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAA;AAC/D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAmGA,kBAoBC;AAvHD,mCAAsC;AAA7B,qGAAA,WAAW,OAAA;AA0BpB,yCAOoB;AANlB,qGAAA,QAAQ,OAAA;AACR,uGAAA,UAAU,OAAA;AACV,0GAAA,aAAa,OAAA;AACb,yGAAA,YAAY,OAAA;AACZ,qGAAA,QAAQ,OAAA;AACR,kHAAA,qBAAqB,OAAA;AAGvB,qCAIkB;AAHhB,gGAAA,KAAK,OAAA;AACL,uGAAA,YAAY,OAAA;AACZ,wGAAA,aAAa,OAAA;AAEf,qCAAyC;AAAhC,wGAAA,aAAa,OAAA;AAEtB,qCAAyC;AAAhC,wGAAA,aAAa,OAAA;AAEtB,uCAAoC;AAA3B,mGAAA,OAAO,OAAA;AAGhB,iFAAiF;AACjF,mCAAuC;AAA9B,sGAAA,YAAY,OAAA;AAGrB,iFAAiF;AACjF,iCAA2F;AAAlF,oGAAA,WAAW,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,sGAAA,aAAa,OAAA;AAAE,uGAAA,cAAc,OAAA;AAG1E,iFAAiF;AACjF,uCAAmE;AAA1D,6GAAA,iBAAiB,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAG/C,mCAAuC;AAA9B,sGAAA,YAAY,OAAA;AAGrB,iFAAiF;AAEjF,qCAAuC;AAwBvC;;;;;;;;;;GAUG;AACI,KAAK,UAAU,GAAG,CACvB,KAAa,EACb,QAAkB,EAClB,UAAsB,EAAE;IAExB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAA;IAEhD,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC;QAC9B,QAAQ;QACR,GAAG;QACH,IAAI;QACJ,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,OAAO,EAAE,cAAc,CAAC,OAAO;KAChC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IACtD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAA;AAC/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../src/learning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../src/learning.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;IAC9C,WAAW,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;CAClB;AAID,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC7C,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAA;CACnB;AAID,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,CAAA;IACjC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAChF,+DAA+D;IAC/D,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IAC3D;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAwGD,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,SAAS,CAA8C;gBAGnD,QAAQ,SAA0B;IAkB9C,SAAS,IAAI,IAAI;IAuBjB;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,OAAO,CAAC,IAAI;YAUE,OAAO;IAoBrB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,IAAI;YAKE,OAAO;IAkBf,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3C,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAKjC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAK3D,kBAAkB,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAK3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAY7B;AAID,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,aAAa,CAAsB;IAErC,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3C,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAIjC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAI3D,kBAAkB,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAI3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -42,12 +42,38 @@ const matcher_1 = require("./matcher");
42
42
  // Module-level registry — tracks all active FileLearningStore instances
43
43
  // for process exit flushing. Handlers registered once to avoid accumulation.
44
44
  const activeStores = new Set();
45
- let exitHandlersRegistered = false;
45
+ // Module-level handler references — stored so they can be removed
46
+ // when all stores are destroyed. Never call process.exit() in a library.
47
+ let exitHandler = null;
48
+ let sigTermHandler = null;
49
+ let sigIntHandler = null;
46
50
  function flushAllStores() {
47
51
  for (const store of activeStores) {
48
52
  store.flushSync();
49
53
  }
50
54
  }
55
+ function registerExitHandlers() {
56
+ if (exitHandler)
57
+ return; // already registered
58
+ exitHandler = flushAllStores;
59
+ sigTermHandler = flushAllStores;
60
+ sigIntHandler = flushAllStores;
61
+ process.on('exit', exitHandler);
62
+ process.on('SIGTERM', sigTermHandler);
63
+ process.on('SIGINT', sigIntHandler);
64
+ }
65
+ function unregisterExitHandlers() {
66
+ if (!exitHandler)
67
+ return; // nothing registered
68
+ if (activeStores.size > 0)
69
+ return; // other stores still active
70
+ process.off('exit', exitHandler);
71
+ process.off('SIGTERM', sigTermHandler);
72
+ process.off('SIGINT', sigIntHandler);
73
+ exitHandler = null;
74
+ sigTermHandler = null;
75
+ sigIntHandler = null;
76
+ }
51
77
  // ─── Shared computation helpers ───────────────────────────────────────────────
52
78
  function computeTopCapabilities(entries, limit) {
53
79
  const counts = {};
@@ -81,13 +107,15 @@ class LearningIndex {
81
107
  if (!entry.capabilityId)
82
108
  this.statsCounter.outOfScope++;
83
109
  if (entry.capabilityId) {
84
- const words = entry.query.toLowerCase()
85
- .split(/\W+/)
86
- .filter(w => w.length > 2 && !matcher_1.STOPWORDS.has(w));
110
+ // Confidence-weighted contribution — a 95% match contributes 9.
111
+ // more signal than a 51% borderline match. Floor of 0.1 ensures
112
+ // borderline matches still contribute, just proportionally less.
113
+ const weight = Math.max(0.1, entry.confidence / 100);
114
+ const words = (0, matcher_1.tokenize)(entry.query);
87
115
  for (const word of words) {
88
116
  this.index[word] ??= {};
89
117
  this.index[word][entry.capabilityId] =
90
- (this.index[word][entry.capabilityId] ?? 0) + 1;
118
+ (this.index[word][entry.capabilityId] ?? 0) + weight;
91
119
  }
92
120
  }
93
121
  }
@@ -103,14 +131,14 @@ class LearningIndex {
103
131
  return;
104
132
  }
105
133
  // Keyword index cleanup
106
- const words = entry.query.toLowerCase()
107
- .split(/\W+/)
108
- .filter(w => w.length > 2 && !matcher_1.STOPWORDS.has(w));
134
+ const words = (0, matcher_1.tokenize)(entry.query);
109
135
  for (const word of words) {
110
136
  if (!this.index[word])
111
137
  continue;
138
+ // Subtract estimated weight (0.5 average) — exact weight not stored.
139
+ // Minor drift on prune is acceptable; index is rebuilt when drift matters.
112
140
  this.index[word][entry.capabilityId] =
113
- (this.index[word][entry.capabilityId] ?? 1) - 1;
141
+ (this.index[word][entry.capabilityId] ?? 0.5) - 0.5;
114
142
  if (this.index[word][entry.capabilityId] <= 0) {
115
143
  delete this.index[word][entry.capabilityId];
116
144
  }
@@ -156,12 +184,7 @@ class FileLearningStore {
156
184
  this.filePath = resolved;
157
185
  logger_1.logger.info(`FileLearningStore initialized — writing to: ${this.filePath}`);
158
186
  activeStores.add(this);
159
- if (!exitHandlersRegistered) {
160
- exitHandlersRegistered = true;
161
- process.on('exit', flushAllStores);
162
- process.on('SIGTERM', () => { flushAllStores(); process.exit(0); });
163
- process.on('SIGINT', () => { flushAllStores(); process.exit(0); });
164
- }
187
+ registerExitHandlers();
165
188
  }
166
189
  flushSync() {
167
190
  // Cancel pending timer — prevents scheduleSave firing after sync write
@@ -196,15 +219,17 @@ class FileLearningStore {
196
219
  }
197
220
  if (this.dirty) {
198
221
  this.dirty = false;
199
- // Await final flush before removing from registry —
200
- // ensures data is written before the store becomes unreachable
201
222
  await this.save();
202
223
  }
203
224
  activeStores.delete(this);
225
+ unregisterExitHandlers(); // remove handlers if no stores remain
204
226
  }
205
227
  load() {
206
228
  if (!this.loadPromise) {
207
- this.loadPromise = this._doLoad();
229
+ this.loadPromise = this._doLoad().catch(err => {
230
+ this.loadPromise = null; // allow retry on next call
231
+ throw err;
232
+ });
208
233
  }
209
234
  return this.loadPromise;
210
235
  }
@@ -221,8 +246,12 @@ class FileLearningStore {
221
246
  logger_1.logger.warn(`Learning store at ${this.filePath} contained unexpected format — starting fresh`);
222
247
  }
223
248
  }
224
- catch {
225
- // File doesn't exist yet — start fresh
249
+ catch (err) {
250
+ const code = err.code;
251
+ if (code !== 'ENOENT') {
252
+ logger_1.logger.warn(`Failed to load learning store from ${this.filePath} (${code ?? 'unknown error'}) — starting fresh`);
253
+ }
254
+ // ENOENT = file doesn't exist yet — expected on first run, no warning needed
226
255
  }
227
256
  }
228
257
  scheduleSave(urgencyMs = 5_000) {
@@ -264,11 +293,7 @@ class FileLearningStore {
264
293
  // not be persisted to disk under GDPR/CCPA data retention requirements.
265
294
  const sanitized = {
266
295
  ...entry,
267
- query: entry.query
268
- .toLowerCase()
269
- .split(/\W+/)
270
- .filter(w => w.length > 2 && !matcher_1.STOPWORDS.has(w))
271
- .join(' '),
296
+ query: (0, matcher_1.tokenize)(entry.query).join(' '),
272
297
  };
273
298
  this.entries.push(sanitized);
274
299
  this.learningIndex.update(sanitized);
@@ -318,11 +343,7 @@ class MemoryLearningStore {
318
343
  async record(entry) {
319
344
  const sanitized = {
320
345
  ...entry,
321
- query: entry.query
322
- .toLowerCase()
323
- .split(/\W+/)
324
- .filter(w => w.length > 2 && !matcher_1.STOPWORDS.has(w))
325
- .join(' '),
346
+ query: (0, matcher_1.tokenize)(entry.query).join(' '),
326
347
  };
327
348
  this.entries.push(sanitized);
328
349
  this.learningIndex.update(sanitized);
@@ -1 +1 @@
1
- {"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/learning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/learning.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,80 @@ export declare class LLMParseError extends Error {
3
3
  constructor(message: string);
4
4
  }
5
5
  export declare const STOPWORDS: Set<string>;
6
+ /**
7
+ * Regex patterns for common param types.
8
+ * Used when a CapabilityParam has `pattern` set to a named type.
9
+ */
10
+ export declare const TYPE_PATTERNS: Record<string, RegExp>;
11
+ /**
12
+ * Simplified suffix-stripping stemmer — 10 most common English morphological
13
+ * patterns covering ~80% of benefit at ~25% the complexity of Porter stemmer.
14
+ * Applied symmetrically to both query words and capability index words.
15
+ */
16
+ export declare function stem(word: string): string;
17
+ /**
18
+ * Shared tokenizer — used by scorer, learning index, and boost system.
19
+ * Applies stopword filtering AND stemming symmetrically.
20
+ * Any site that tokenizes text for matching MUST use this function
21
+ * to avoid silent mismatches between query and index tokens.
22
+ */
23
+ export declare function tokenize(text: string): string[];
24
+ export interface BM25Index {
25
+ /** Document frequency — how many capabilities contain each term */
26
+ df: Record<string, number>;
27
+ /** Average field length per field type */
28
+ avgdl: {
29
+ examples: number;
30
+ description: number;
31
+ name: number;
32
+ };
33
+ /** Total number of capabilities */
34
+ N: number;
35
+ /** Bigram sets per capability — post-stopword, post-stem, examples only */
36
+ bigrams: Record<string, Set<string>>;
37
+ }
38
+ /** Build a BM25 index over all capabilities. Call once at manifest load. */
39
+ export declare function buildBM25Index(capabilities: Capability[]): BM25Index;
40
+ /**
41
+ * BM25 scoring with field weights.
42
+ * k1 = 1.5 (TF saturation), b = 0.75 (length normalization)
43
+ * Field weights: examples 0.6, description 0.3, name 0.1
44
+ */
45
+ export declare function scoreCapability(qWordSet: Set<string>, cap: Capability, index: BM25Index, k1?: number, b?: number): number;
46
+ /**
47
+ * Extracts bigrams from a token array as "token1__token2" strings.
48
+ * Input must already be post-stopword and post-stem (use tokenize() first).
49
+ */
50
+ export declare function extractBigrams(tokens: string[]): Set<string>;
6
51
  export declare function resolverToIntent(cap: Capability): MatchResult['intent'];
52
+ /**
53
+ * Strips characters that could break LLM prompt structure from
54
+ * capability field values before injection into the system prompt.
55
+ * Removes control characters, newlines, and delimiter-like sequences.
56
+ */
57
+ export declare function sanitizeForPrompt(value: string, maxLen: number): string;
7
58
  /**
8
59
  * Extracts parameter values from a user query using keyword heuristics.
60
+ *
9
61
  * Known limits:
10
62
  * - Extracts single tokens only — "jane smith" would extract "jane"
11
63
  * - Keyword matching is positional — "articles from authors I follow"
12
64
  * may extract "authors" instead of nothing, since "from" is a keyword
13
- * - For complex or ambiguous queries, use matchWithLLM() which handles
14
- * param extraction more accurately via the LLM prompt
65
+ * - Required param fallback grabs the last meaningful word — "list all
66
+ * recent orders" may extract "orders" even with the denylist extended.
67
+ * For precise extraction of complex queries, use matchWithLLM() which
68
+ * handles param extraction via structured LLM prompt.
69
+ * - To support richer extraction patterns, add a `pattern` field to
70
+ * CapabilityParam in a future version.
15
71
  */
16
72
  export declare function extractParams(query: string, cap: Capability): Record<string, string | null>;
17
73
  export interface MatchOptions {
18
74
  fuzzyMatch?: boolean;
19
75
  fuzzyThreshold?: number;
76
+ bm25Index?: BM25Index;
77
+ bm25K1?: number;
78
+ bm25B?: number;
79
+ bm25Ceiling?: number;
20
80
  }
21
81
  export declare function match(query: string, manifest: Manifest, options?: MatchOptions): MatchResult;
22
82
  export interface LLMMatcherOptions {
@@ -25,13 +85,13 @@ export interface LLMMatcherOptions {
25
85
  /**
26
86
  * Matches a query to a capability using an LLM.
27
87
  *
28
- * ⚠️ SECURITY NOTE: Capability `description` and `examples` fields from the
29
- * manifest are injected verbatim into the LLM prompt (system portion).
30
- * In a solo deployment with a developer-controlled manifest this is safe.
31
- * If your manifest is generated from third-party OpenAPI specs, user-controlled
32
- * sources, or any external input, sanitize `description` and `examples` fields
33
- * before passing the manifest to this function adversarial content in those
34
- * fields can influence LLM routing decisions.
88
+ * ⚠️ SECURITY NOTE: Capability fields are sanitized before injection into
89
+ * the LLM prompt (newlines stripped, delimiters neutralized, length capped).
90
+ * However, the current interface passes a single prompt string it cannot
91
+ * provide true system/user message separation that some LLM APIs support.
92
+ * For maximum injection resistance in high-security deployments, use an LLM
93
+ * wrapper that maps the prompt to a proper system message, keeping user query
94
+ * data in the user turn only.
35
95
  */
36
96
  export declare function matchWithLLM(query: string, manifest: Manifest, options: LLMMatcherOptions): Promise<MatchResult>;
37
97
  //# sourceMappingURL=matcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAA;AAMhF,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,eAAO,MAAM,SAAS,aAUpB,CAAA;AA+CF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAMvE;AAGD;;;;;;;;GAQG;AAEH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAmF3F;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAM,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,YAAiB,GACzB,WAAW,CAqHb;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAqFpB"}
1
+ {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAA;AAMhF,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,eAAO,MAAM,SAAS,aAUpB,CAAA;AAIF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKhD,CAAA;AA4DD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqBzC;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM/C;AAID,MAAM,WAAW,SAAS;IACxB,mEAAmE;IACnE,EAAE,EAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,0CAA0C;IAC1C,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,mCAAmC;IACnC,CAAC,EAAM,MAAM,CAAA;IACb,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CACrC;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,SAAS,CA8CpE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,GAAG,EAAO,UAAU,EACpB,KAAK,EAAK,SAAS,EACnB,EAAE,SAAM,EACR,CAAC,SAAQ,GACR,MAAM,CAQR;AAmCD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAM5D;AAgBD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAMvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAuG3F;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAM,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAO,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAU,MAAM,CAAA;IACvB,KAAK,CAAC,EAAW,MAAM,CAAA;IACvB,WAAW,CAAC,EAAK,MAAM,CAAA;CACxB;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,YAAiB,GACzB,WAAW,CAiJb;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CA+GpB"}