capman 0.5.5 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/bin/lib/cmd-generate.js +156 -12
- package/bin/lib/cmd-help.js +3 -0
- package/dist/cjs/cache.d.ts +9 -0
- package/dist/cjs/cache.d.ts.map +1 -1
- package/dist/cjs/cache.js +37 -7
- package/dist/cjs/cache.js.map +1 -1
- package/dist/cjs/engine.d.ts +68 -1
- package/dist/cjs/engine.d.ts.map +1 -1
- package/dist/cjs/engine.js +313 -13
- package/dist/cjs/engine.js.map +1 -1
- package/dist/cjs/generator.d.ts.map +1 -1
- package/dist/cjs/generator.js +28 -6
- package/dist/cjs/generator.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/learning.d.ts +7 -0
- package/dist/cjs/learning.d.ts.map +1 -1
- package/dist/cjs/learning.js +44 -23
- package/dist/cjs/learning.js.map +1 -1
- package/dist/cjs/matcher.d.ts +92 -0
- package/dist/cjs/matcher.d.ts.map +1 -1
- package/dist/cjs/matcher.js +354 -35
- package/dist/cjs/matcher.js.map +1 -1
- package/dist/cjs/parser.js +27 -9
- package/dist/cjs/parser.js.map +1 -1
- package/dist/cjs/resolver.d.ts +2 -2
- package/dist/cjs/resolver.d.ts.map +1 -1
- package/dist/cjs/resolver.js +66 -26
- package/dist/cjs/resolver.js.map +1 -1
- package/dist/cjs/schema.d.ts +865 -94
- package/dist/cjs/schema.d.ts.map +1 -1
- package/dist/cjs/schema.js +62 -12
- package/dist/cjs/schema.js.map +1 -1
- package/dist/cjs/types.d.ts +153 -9
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/cache.d.ts +9 -0
- package/dist/esm/cache.js +37 -7
- package/dist/esm/engine.d.ts +68 -1
- package/dist/esm/engine.js +314 -14
- package/dist/esm/generator.js +28 -6
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/learning.d.ts +7 -0
- package/dist/esm/learning.js +45 -24
- package/dist/esm/matcher.d.ts +92 -0
- package/dist/esm/matcher.js +346 -35
- package/dist/esm/parser.js +27 -9
- package/dist/esm/resolver.d.ts +2 -2
- package/dist/esm/resolver.js +66 -26
- package/dist/esm/schema.d.ts +865 -94
- package/dist/esm/schema.js +62 -12
- package/dist/esm/types.d.ts +153 -9
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
package/dist/cjs/matcher.js
CHANGED
|
@@ -3,9 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.STOPWORDS = exports.LLMParseError = void 0;
|
|
6
|
+
exports.TYPE_PATTERNS = exports.STOPWORDS = exports.LLMParseError = void 0;
|
|
7
|
+
exports.stem = stem;
|
|
8
|
+
exports.tokenize = tokenize;
|
|
9
|
+
exports.buildBM25Index = buildBM25Index;
|
|
10
|
+
exports.scoreCapability = scoreCapability;
|
|
11
|
+
exports.extractBigrams = extractBigrams;
|
|
12
|
+
exports.filterByTags = filterByTags;
|
|
7
13
|
exports.resolverToIntent = resolverToIntent;
|
|
14
|
+
exports.sanitizeForPrompt = sanitizeForPrompt;
|
|
8
15
|
exports.extractParams = extractParams;
|
|
16
|
+
exports.calibrateCeiling = calibrateCeiling;
|
|
9
17
|
exports.match = match;
|
|
10
18
|
exports.matchWithLLM = matchWithLLM;
|
|
11
19
|
const logger_1 = require("./logger");
|
|
@@ -29,40 +37,265 @@ exports.STOPWORDS = new Set([
|
|
|
29
37
|
'it', 'its', 'how', 'when', 'where', 'who', 'which', 'all',
|
|
30
38
|
'just', 'some', 'any', 'there', 'their', 'them', 'they',
|
|
31
39
|
]);
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
// ─── Type Patterns ────────────────────────────────────────────────────────────
|
|
41
|
+
/**
|
|
42
|
+
* Regex patterns for common param types.
|
|
43
|
+
* Used when a CapabilityParam has `pattern` set to a named type.
|
|
44
|
+
*/
|
|
45
|
+
exports.TYPE_PATTERNS = {
|
|
46
|
+
email: /\b[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}\b/,
|
|
47
|
+
date: /\b\d{4}-\d{2}-\d{2}\b|\b(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\w*\s+\d{1,2}\b/i,
|
|
48
|
+
orderId: /\b[A-Z]{2,}-?\d{4,}\b|\b\d{6,}\b/,
|
|
49
|
+
url: /https?:\/\/[^\s]+/,
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Extracts a value from a query using an example template pattern.
|
|
53
|
+
* e.g. template "order {orderId}", query "track order 12345" → "12345"
|
|
54
|
+
* e.g. template "booking {ref}", query "cancel booking ABC-001" → "ABC-001"
|
|
55
|
+
*/
|
|
56
|
+
function extractFromTemplate(query, template, paramName) {
|
|
57
|
+
// Split template on {paramName} to get prefix and suffix
|
|
58
|
+
const placeholder = `{${paramName}}`;
|
|
59
|
+
const idx = template.indexOf(placeholder);
|
|
60
|
+
if (idx === -1)
|
|
61
|
+
return null;
|
|
62
|
+
const prefix = template.slice(0, idx).trim().toLowerCase();
|
|
63
|
+
const suffix = template.slice(idx + placeholder.length).trim().toLowerCase();
|
|
64
|
+
const q = query.toLowerCase();
|
|
65
|
+
if (prefix) {
|
|
66
|
+
const prefixIdx = q.indexOf(prefix);
|
|
67
|
+
if (prefixIdx === -1)
|
|
68
|
+
return null;
|
|
69
|
+
const after = query.slice(prefixIdx + prefix.length).trim();
|
|
70
|
+
const tokens = after.split(/\s+/).filter(t => t.length > 0);
|
|
71
|
+
if (!tokens.length)
|
|
72
|
+
return null;
|
|
73
|
+
// If there's a suffix, find it and take what's between
|
|
74
|
+
if (suffix) {
|
|
75
|
+
const suffixIdx = after.toLowerCase().indexOf(suffix);
|
|
76
|
+
if (suffixIdx > 0) {
|
|
77
|
+
return after.slice(0, suffixIdx).trim().split(/\s+/)[0] ?? null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return tokens[0].replace(/[^a-zA-Z0-9\-_.@]/g, '') || null;
|
|
81
|
+
}
|
|
82
|
+
// Prefix is empty — placeholder is at start of template e.g. "{email} unsubscribe"
|
|
83
|
+
if (!prefix) {
|
|
84
|
+
if (suffix) {
|
|
85
|
+
// Find suffix in query — take what comes before it
|
|
86
|
+
const suffixIdx = query.toLowerCase().indexOf(suffix);
|
|
87
|
+
if (suffixIdx > 0) {
|
|
88
|
+
return query.slice(0, suffixIdx).trim().split(/\s+/).pop()
|
|
89
|
+
?.replace(/[^a-zA-Z0-9\-_.@]/g, '') || null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// No prefix, no suffix — template is just "{paramName}"; take last meaningful word
|
|
93
|
+
const words = query.trim().split(/\s+/);
|
|
94
|
+
return words[words.length - 1]?.replace(/[^a-zA-Z0-9\-_.@]/g, '') || null;
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
// ─── Stem cache ───────────────────────────────────────────────────────────────
|
|
99
|
+
// Each word stemmed exactly once per process — O(1) on repeat lookups.
|
|
100
|
+
// Module-level — persists for the process lifetime. Vocabulary in production
|
|
101
|
+
// is finite (capability names + user query vocabulary) so growth is bounded
|
|
102
|
+
// in practice. In test environments with synthetic random strings, this may
|
|
103
|
+
// grow larger but remains functionally harmless.
|
|
104
|
+
const stemCache = new Map();
|
|
105
|
+
/**
|
|
106
|
+
* Simplified suffix-stripping stemmer — 10 most common English morphological
|
|
107
|
+
* patterns covering ~80% of benefit at ~25% the complexity of Porter stemmer.
|
|
108
|
+
* Applied symmetrically to both query words and capability index words.
|
|
109
|
+
*/
|
|
110
|
+
function stem(word) {
|
|
111
|
+
const cached = stemCache.get(word);
|
|
112
|
+
if (cached !== undefined)
|
|
113
|
+
return cached;
|
|
114
|
+
let s = word;
|
|
115
|
+
if (s.length > 7 && s.endsWith('ation'))
|
|
116
|
+
s = s.slice(0, -5); // cancellation → cancell
|
|
117
|
+
else if (s.length > 6 && s.endsWith('tion'))
|
|
118
|
+
s = s.slice(0, -4); // completion → comple
|
|
119
|
+
else if (s.length > 6 && s.endsWith('ing'))
|
|
120
|
+
s = s.slice(0, -3); // tracking → track
|
|
121
|
+
else if (s.length > 6 && s.endsWith('ity'))
|
|
122
|
+
s = s.slice(0, -3); // availability → availabil
|
|
123
|
+
else if (s.length > 5 && s.endsWith('ion'))
|
|
124
|
+
s = s.slice(0, -3); // version → vers
|
|
125
|
+
else if (s.length > 6 && s.endsWith('est'))
|
|
126
|
+
s = s.slice(0, -3); // fastest → fast
|
|
127
|
+
else if (s.length > 4 && s.endsWith('er'))
|
|
128
|
+
s = s.slice(0, -2); // tracker → track
|
|
129
|
+
else if (s.length > 4 && s.endsWith('ed'))
|
|
130
|
+
s = s.slice(0, -2); // ordered → order
|
|
131
|
+
else if (s.length > 4 && s.endsWith('ly'))
|
|
132
|
+
s = s.slice(0, -2); // quickly → quick
|
|
133
|
+
else if (s.length > 4 && s.endsWith('es'))
|
|
134
|
+
s = s.slice(0, -2); // fetches → fetch
|
|
135
|
+
else if (s.length > 3 && s.endsWith('s') &&
|
|
136
|
+
!s.endsWith('ss'))
|
|
137
|
+
s = s.slice(0, -1); // orders → order
|
|
138
|
+
stemCache.set(word, s);
|
|
139
|
+
return s;
|
|
34
140
|
}
|
|
35
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Shared tokenizer — used by scorer, learning index, and boost system.
|
|
143
|
+
* Applies stopword filtering AND stemming symmetrically.
|
|
144
|
+
* Any site that tokenizes text for matching MUST use this function
|
|
145
|
+
* to avoid silent mismatches between query and index tokens.
|
|
146
|
+
*/
|
|
147
|
+
function tokenize(text) {
|
|
148
|
+
return text
|
|
149
|
+
.toLowerCase()
|
|
150
|
+
.split(/\W+/)
|
|
151
|
+
.filter(w => w.length > 2 && !exports.STOPWORDS.has(w))
|
|
152
|
+
.map(stem);
|
|
153
|
+
}
|
|
154
|
+
/** Build a BM25 index over all capabilities. Call once at manifest load. */
|
|
155
|
+
function buildBM25Index(capabilities) {
|
|
156
|
+
const N = capabilities.length;
|
|
157
|
+
if (N === 0)
|
|
158
|
+
return { df: {}, avgdl: { examples: 0, description: 0, name: 0 }, N: 0, bigrams: {}, capTokens: {}, };
|
|
159
|
+
const df = {};
|
|
160
|
+
let totalExLen = 0;
|
|
161
|
+
let totalDescLen = 0;
|
|
162
|
+
let totalNameLen = 0;
|
|
163
|
+
// Pre-compute token arrays for every capability in a single pass.
|
|
164
|
+
// scoreCapability() reads from capTokens instead of re-tokenizing on every call.
|
|
165
|
+
const capTokens = {};
|
|
166
|
+
for (const cap of capabilities) {
|
|
167
|
+
const exTokens = tokenize((cap.examples ?? []).join(' '));
|
|
168
|
+
const descTokens = tokenize(cap.description);
|
|
169
|
+
const nameTokens = tokenize(cap.name);
|
|
170
|
+
capTokens[cap.id] = { examples: exTokens, description: descTokens, name: nameTokens };
|
|
171
|
+
totalExLen += exTokens.length;
|
|
172
|
+
totalDescLen += descTokens.length;
|
|
173
|
+
totalNameLen += nameTokens.length;
|
|
174
|
+
// Count document frequency — each term counted once per capability
|
|
175
|
+
const seen = new Set();
|
|
176
|
+
for (const t of [...exTokens, ...descTokens, ...nameTokens]) {
|
|
177
|
+
if (!seen.has(t)) {
|
|
178
|
+
df[t] = (df[t] ?? 0) + 1;
|
|
179
|
+
seen.add(t);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Build bigram sets per capability — examples field only
|
|
184
|
+
// Clean bigrams only: post-stopword, post-stem tokens
|
|
185
|
+
const bigrams = {};
|
|
186
|
+
for (const cap of capabilities) {
|
|
187
|
+
const set = new Set();
|
|
188
|
+
for (const example of cap.examples ?? []) {
|
|
189
|
+
for (const bg of extractBigrams(tokenize(example)))
|
|
190
|
+
set.add(bg);
|
|
191
|
+
}
|
|
192
|
+
bigrams[cap.id] = set;
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
df,
|
|
196
|
+
avgdl: {
|
|
197
|
+
examples: totalExLen / N,
|
|
198
|
+
description: totalDescLen / N,
|
|
199
|
+
name: totalNameLen / N,
|
|
200
|
+
},
|
|
201
|
+
N,
|
|
202
|
+
bigrams,
|
|
203
|
+
capTokens,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* BM25 scoring with field weights.
|
|
208
|
+
* k1 = 1.5 (TF saturation), b = 0.75 (length normalization)
|
|
209
|
+
* Field weights: examples 0.6, description 0.3, name 0.1
|
|
210
|
+
*/
|
|
211
|
+
function scoreCapability(qWordSet, cap, index, k1 = 1.5, b = 0.75) {
|
|
212
|
+
if (index.N === 0)
|
|
213
|
+
return 0;
|
|
214
|
+
// Use pre-computed token arrays from the index — avoids re-tokenizing
|
|
215
|
+
// capability text on every call. Falls back to live tokenization only when
|
|
216
|
+
// scoreCapability() is called outside CapmanEngine (e.g. unit tests that
|
|
217
|
+
// build a BM25Index manually without capTokens populated).
|
|
218
|
+
const tokens = index.capTokens[cap.id];
|
|
219
|
+
const exTokens = tokens?.examples ?? tokenize((cap.examples ?? []).join(' '));
|
|
220
|
+
const descTokens = tokens?.description ?? tokenize(cap.description);
|
|
221
|
+
const nameTokens = tokens?.name ?? tokenize(cap.name);
|
|
222
|
+
const score = bm25Field(qWordSet, exTokens, index, 'examples', k1, b) * 0.6
|
|
223
|
+
+ bm25Field(qWordSet, descTokens, index, 'description', k1, b) * 0.3
|
|
224
|
+
+ bm25Field(qWordSet, nameTokens, index, 'name', k1, b) * 0.1;
|
|
225
|
+
return score;
|
|
226
|
+
}
|
|
227
|
+
function bm25Field(queryTerms, fieldTokens, index, field, k1, b) {
|
|
228
|
+
if (fieldTokens.length === 0)
|
|
229
|
+
return 0;
|
|
230
|
+
const avgdl = index.avgdl[field] || 1;
|
|
231
|
+
const dl = fieldTokens.length;
|
|
232
|
+
const tf = new Map();
|
|
233
|
+
for (const t of fieldTokens) {
|
|
234
|
+
tf.set(t, (tf.get(t) ?? 0) + 1);
|
|
235
|
+
}
|
|
36
236
|
let score = 0;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// Taking Math.max means quality of examples matters, not quantity.
|
|
41
|
-
let bestExampleScore = 0;
|
|
42
|
-
for (const example of cap.examples ?? []) {
|
|
43
|
-
const exWords = filterStopwords(example.toLowerCase().split(/\s+/));
|
|
44
|
-
if (exWords.length === 0)
|
|
237
|
+
for (const term of queryTerms) {
|
|
238
|
+
const termTf = tf.get(term) ?? 0;
|
|
239
|
+
if (termTf === 0)
|
|
45
240
|
continue;
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
|
|
241
|
+
const df = index.df[term] ?? 0;
|
|
242
|
+
const idf = Math.log((index.N - df + 0.5) / (df + 0.5) + 1);
|
|
243
|
+
const tfNorm = (termTf * (k1 + 1)) / (termTf + k1 * (1 - b + b * (dl / avgdl)));
|
|
244
|
+
score += idf * tfNorm;
|
|
49
245
|
}
|
|
50
|
-
score
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
246
|
+
return score;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Extracts bigrams from a token array as "token1__token2" strings.
|
|
250
|
+
* Input must already be post-stopword and post-stem (use tokenize() first).
|
|
251
|
+
*/
|
|
252
|
+
function extractBigrams(tokens) {
|
|
253
|
+
const bigrams = new Set();
|
|
254
|
+
for (let i = 0; i < tokens.length - 1; i++) {
|
|
255
|
+
bigrams.add(`${tokens[i]}__${tokens[i + 1]}`);
|
|
58
256
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
257
|
+
return bigrams;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Returns a sub-manifest containing only capabilities that match ALL provided tags.
|
|
261
|
+
* Capabilities without tags are excluded when tags filter is active.
|
|
262
|
+
* Enables token-efficient LLM prompts for large manifests:
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* // Only send order-related capabilities to LLM
|
|
266
|
+
* const orderManifest = filterByTags(manifest, ['orders'])
|
|
267
|
+
* const result = await matchWithLLM(query, orderManifest, { llm })
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* // Match by any of multiple tags (union) — call filterByTags per tag and merge
|
|
271
|
+
* const ordersOrPayments = [
|
|
272
|
+
* ...filterByTags(manifest, ['orders']).capabilities,
|
|
273
|
+
* ...filterByTags(manifest, ['payments']).capabilities,
|
|
274
|
+
* ]
|
|
275
|
+
*/
|
|
276
|
+
function filterByTags(manifest, tags) {
|
|
277
|
+
if (tags.length === 0)
|
|
278
|
+
return manifest;
|
|
279
|
+
const tagSet = new Set(tags);
|
|
280
|
+
return {
|
|
281
|
+
...manifest,
|
|
282
|
+
capabilities: manifest.capabilities.filter(cap => cap.tags?.length && tags.every(t => cap.tags.includes(t))),
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Returns a fixed bonus in normalized points (0–15), applied after BM25 normalization.
|
|
287
|
+
* 5 points per matching bigram, saturates at 3 bigrams (15 points).
|
|
288
|
+
* Fixed point value regardless of manifest size — ceiling-independent.
|
|
289
|
+
*/
|
|
290
|
+
function bigramBonus(queryBigrams, capBigrams) {
|
|
291
|
+
if (queryBigrams.size === 0 || capBigrams.size === 0)
|
|
292
|
+
return 0;
|
|
293
|
+
let overlap = 0;
|
|
294
|
+
for (const bigram of queryBigrams) {
|
|
295
|
+
if (capBigrams.has(bigram))
|
|
296
|
+
overlap++;
|
|
64
297
|
}
|
|
65
|
-
return Math.min(
|
|
298
|
+
return Math.min(overlap * 5, 15); // normalized points — 3 bigrams saturate at 15
|
|
66
299
|
}
|
|
67
300
|
function resolverToIntent(cap) {
|
|
68
301
|
const t = cap.resolver.type;
|
|
@@ -77,13 +310,18 @@ function resolverToIntent(cap) {
|
|
|
77
310
|
/**
|
|
78
311
|
* Strips characters that could break LLM prompt structure from
|
|
79
312
|
* capability field values before injection into the system prompt.
|
|
80
|
-
* Removes control characters, newlines,
|
|
313
|
+
* Removes control characters, newlines, delimiter sequences, and braces
|
|
314
|
+
* anywhere in the string (not just at line starts) to resist prompt injection
|
|
315
|
+
* from third-party OpenAPI spec content ingested via parseOpenAPI().
|
|
81
316
|
*/
|
|
82
317
|
function sanitizeForPrompt(value, maxLen) {
|
|
83
318
|
return value
|
|
84
|
-
.replace(/[\r\n\t]/g, ' ') // newlines → space
|
|
319
|
+
.replace(/[\r\n\t]/g, ' ') // newlines/tabs → space
|
|
85
320
|
.replace(/---+/g, '—') // horizontal rules → em dash
|
|
86
|
-
.replace(
|
|
321
|
+
.replace(/[{}\[\]]/g, ' ') // all braces/brackets anywhere → space (was: leading only)
|
|
322
|
+
.split(' ') // per-word cap — limits injection payload per token
|
|
323
|
+
.map(w => w.slice(0, 200)) // no single token longer than 200 chars
|
|
324
|
+
.join(' ')
|
|
87
325
|
.replace(/\s+/g, ' ') // collapse whitespace
|
|
88
326
|
.trim()
|
|
89
327
|
.slice(0, maxLen);
|
|
@@ -115,6 +353,42 @@ function extractParams(query, cap) {
|
|
|
115
353
|
result[param.name] = null;
|
|
116
354
|
continue;
|
|
117
355
|
}
|
|
356
|
+
// ── Type-implied pattern extraction ───────────────────────────────────
|
|
357
|
+
// param.type implies a TYPE_PATTERNS match — no need to set pattern explicitly
|
|
358
|
+
if (param.type && !param.pattern) {
|
|
359
|
+
// Map param types that have direct regex equivalents
|
|
360
|
+
const typeToPattern = {
|
|
361
|
+
email: exports.TYPE_PATTERNS.email,
|
|
362
|
+
date: exports.TYPE_PATTERNS.date,
|
|
363
|
+
url: exports.TYPE_PATTERNS.url,
|
|
364
|
+
};
|
|
365
|
+
const impliedPattern = typeToPattern[param.type];
|
|
366
|
+
if (impliedPattern) {
|
|
367
|
+
const match = query.match(impliedPattern);
|
|
368
|
+
if (match) {
|
|
369
|
+
result[param.name] = match[0];
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
// ── Explicit pattern extraction (highest priority when set) ───────────
|
|
375
|
+
if (param.pattern) {
|
|
376
|
+
const namedPattern = exports.TYPE_PATTERNS[param.pattern];
|
|
377
|
+
if (namedPattern) {
|
|
378
|
+
const match = query.match(namedPattern);
|
|
379
|
+
if (match) {
|
|
380
|
+
result[param.name] = match[0];
|
|
381
|
+
continue;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
else if (param.pattern.includes(`{${param.name}}`)) {
|
|
385
|
+
const extracted = extractFromTemplate(query, param.pattern, param.name);
|
|
386
|
+
if (extracted) {
|
|
387
|
+
result[param.name] = extracted;
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
118
392
|
// Try to extract value after known keywords
|
|
119
393
|
// e.g. "profile for johndoe" → johndoe
|
|
120
394
|
// "articles by jane" → jane
|
|
@@ -168,10 +442,36 @@ function extractParams(query, cap) {
|
|
|
168
442
|
extracted = candidate;
|
|
169
443
|
}
|
|
170
444
|
}
|
|
445
|
+
// ── Enum validation ───────────────────────────────────────────────────
|
|
446
|
+
if (extracted !== null && param.type === 'enum' && param.enum?.length) {
|
|
447
|
+
if (!param.enum.includes(extracted)) {
|
|
448
|
+
// Extracted value not in allowed list — treat as not found
|
|
449
|
+
extracted = null;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
171
452
|
result[param.name] = extracted;
|
|
172
453
|
}
|
|
173
454
|
return result;
|
|
174
455
|
}
|
|
456
|
+
/**
|
|
457
|
+
* Calibrates a BM25 normalization ceiling from the manifest.
|
|
458
|
+
* Scores each capability against all of its own examples and returns the maximum.
|
|
459
|
+
* Call once at manifest load time — O(capabilities × examples).
|
|
460
|
+
*/
|
|
461
|
+
function calibrateCeiling(capabilities, bm25Index, k1, b) {
|
|
462
|
+
let max = 0;
|
|
463
|
+
for (const cap of capabilities) {
|
|
464
|
+
if (!cap.examples?.length)
|
|
465
|
+
continue;
|
|
466
|
+
for (const example of cap.examples) {
|
|
467
|
+
const selfWords = new Set(tokenize(example));
|
|
468
|
+
const raw = scoreCapability(selfWords, cap, bm25Index, k1, b);
|
|
469
|
+
if (raw > max)
|
|
470
|
+
max = raw;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
return max > 0 ? max : 100;
|
|
474
|
+
}
|
|
175
475
|
function match(query, manifest, options = {}) {
|
|
176
476
|
if (!query?.trim()) {
|
|
177
477
|
logger_1.logger.warn('Empty query received');
|
|
@@ -236,10 +536,23 @@ function match(query, manifest, options = {}) {
|
|
|
236
536
|
}
|
|
237
537
|
// ── Score all capabilities ────────────────────────────────────────────────
|
|
238
538
|
// Build qWordSet once — O(1) lookups instead of O(n) Array.includes per word
|
|
239
|
-
const
|
|
539
|
+
const qTokens = tokenize(query);
|
|
540
|
+
const qWordSet = new Set(qTokens);
|
|
541
|
+
// Build query bigrams for phrase bonus
|
|
542
|
+
const qBigrams = extractBigrams(qTokens);
|
|
543
|
+
// Build BM25 index for this manifest — O(capabilities × tokens)
|
|
544
|
+
// In CapmanEngine this is pre-built; for direct match() calls it's built per-call
|
|
545
|
+
const bm25Index = options.bm25Index ?? buildBM25Index(manifest.capabilities);
|
|
546
|
+
const k1 = options.bm25K1 ?? 1.5;
|
|
547
|
+
const b = options.bm25B ?? 0.75;
|
|
548
|
+
// Calibrate ceiling — max self-score for normalization
|
|
549
|
+
const ceiling = options.bm25Ceiling ?? calibrateCeiling(manifest.capabilities, bm25Index, k1, b);
|
|
240
550
|
const allScores = [];
|
|
241
551
|
for (const cap of manifest.capabilities) {
|
|
242
|
-
const
|
|
552
|
+
const rawBM25 = scoreCapability(qWordSet, cap, bm25Index, k1, b);
|
|
553
|
+
const bm25Score = Math.min(100, Math.round((rawBM25 / ceiling) * 100));
|
|
554
|
+
const bonusPoints = bigramBonus(qBigrams, bm25Index.bigrams[cap.id] ?? new Set());
|
|
555
|
+
const keywordScore = Math.min(100, bm25Score + bonusPoints);
|
|
243
556
|
const fuzzyScore = fuzzyScoreMap.get(cap.id) ?? 0;
|
|
244
557
|
const via = fuzzyScore > keywordScore ? 'fuzzy' : 'keyword';
|
|
245
558
|
const score = Math.min(100, Math.round(Math.max(keywordScore, fuzzyScore)));
|
|
@@ -356,7 +669,13 @@ ${JSON.stringify({ user_query: query })}
|
|
|
356
669
|
// Build full candidate list — all capabilities scored, LLM winner marked as matched.
|
|
357
670
|
// This aligns the shape with keyword match results and allows the learning boost
|
|
358
671
|
// to surface alternatives if the LLM made a wrong call.
|
|
359
|
-
|
|
672
|
+
// Clamp and round confidence — LLM may return values outside 0–100 with
|
|
673
|
+
// misconfigured models or prompt drift. Unclamped values corrupt learning
|
|
674
|
+
// weights (weight = confidence/100 can exceed 1.0) and verdict margins.
|
|
675
|
+
// disambiguateLLM() already does this; apply the same treatment here.
|
|
676
|
+
const llmConfidence = effectivelyOOS
|
|
677
|
+
? 0
|
|
678
|
+
: Math.min(100, Math.max(0, Math.round(parsed.confidence)));
|
|
360
679
|
const allCandidates = manifest.capabilities.map(c => ({
|
|
361
680
|
capabilityId: c.id,
|
|
362
681
|
score: c.id === capability?.id ? llmConfidence : 0,
|
package/dist/cjs/matcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/matcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/matcher.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/parser.js
CHANGED
|
@@ -67,7 +67,16 @@ async function loadSpec(source) {
|
|
|
67
67
|
return parseSpecText(text, source);
|
|
68
68
|
}
|
|
69
69
|
// Local file
|
|
70
|
-
const
|
|
70
|
+
const cwd = process.cwd();
|
|
71
|
+
const resolved = path.resolve(cwd, source);
|
|
72
|
+
// Guard against path traversal — same check used by FileCache and FileLearningStore.
|
|
73
|
+
// Prevents parseOpenAPI('../../etc/passwd') from reading arbitrary files when
|
|
74
|
+
// the source argument comes from user input (CLI args, UI, CI scripts).
|
|
75
|
+
const allowedPrefix = cwd === '/' ? '/' : cwd + path.sep;
|
|
76
|
+
if (!resolved.startsWith(allowedPrefix)) {
|
|
77
|
+
throw new Error(`Spec path "${source}" resolves outside the working directory.\n` +
|
|
78
|
+
`Resolved: ${resolved}\nAllowed: ${cwd}`);
|
|
79
|
+
}
|
|
71
80
|
if (!fs.existsSync(resolved)) {
|
|
72
81
|
throw new Error(`Spec file not found: ${resolved}`);
|
|
73
82
|
}
|
|
@@ -137,11 +146,20 @@ function convertSpec(spec) {
|
|
|
137
146
|
warnings.push(`Skipped ${method} ${urlPath} — no useful info to generate capability`);
|
|
138
147
|
continue;
|
|
139
148
|
}
|
|
140
|
-
//
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
149
|
+
// De-conflict duplicate IDs — loop until the candidate ID is unique.
|
|
150
|
+
// A single find() check is insufficient: if two operations both produce
|
|
151
|
+
// `get_user`, the second becomes `get_user_get`. A third `get_user` would
|
|
152
|
+
// then collide with `get_user_get` only when it also uses GET — the general
|
|
153
|
+
// multi-collision case is only caught by looping.
|
|
154
|
+
let candidateId = result.id;
|
|
155
|
+
let dedupeCount = 0;
|
|
156
|
+
while (capabilities.find(c => c.id === candidateId)) {
|
|
157
|
+
dedupeCount++;
|
|
158
|
+
candidateId = `${result.id}_${method.toLowerCase()}${dedupeCount > 1 ? `_${dedupeCount}` : ''}`;
|
|
159
|
+
}
|
|
160
|
+
if (candidateId !== result.id) {
|
|
161
|
+
warnings.push(`Duplicate ID resolved: ${result.id} → ${candidateId}`);
|
|
162
|
+
result.id = candidateId;
|
|
145
163
|
}
|
|
146
164
|
capabilities.push(result);
|
|
147
165
|
}
|
|
@@ -295,9 +313,9 @@ function extractBaseUrl(spec) {
|
|
|
295
313
|
const base = spec.basePath ?? '';
|
|
296
314
|
return `${scheme}://${spec.host}${base}`.replace(/\/$/, '');
|
|
297
315
|
}
|
|
298
|
-
|
|
299
|
-
`
|
|
300
|
-
|
|
316
|
+
throw new Error(`No server URL found in OpenAPI spec — cannot determine base URL.\n` +
|
|
317
|
+
`Add a "servers" entry (OpenAPI 3.x) or "host" + "basePath" (Swagger 2.x), ` +
|
|
318
|
+
`or set baseUrl manually in capman.config.js after generating.`);
|
|
301
319
|
}
|
|
302
320
|
function sanitizeAppName(title) {
|
|
303
321
|
return title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
|