@convertcom/mcp-server 0.0.1-beta.15 → 0.0.1-beta.17
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/build/api-config.js +21 -3
- package/build/api-config.js.map +1 -1
- package/build/auth-context.d.ts +3 -0
- package/build/auth-context.js.map +1 -1
- package/build/catalog-change.d.ts +6 -2
- package/build/catalog-change.js +5 -1
- package/build/catalog-change.js.map +1 -1
- package/build/executor.d.ts +6 -0
- package/build/executor.js +73 -22
- package/build/executor.js.map +1 -1
- package/build/generated-tool-validators.js +141 -158
- package/build/generated-tool-validators.js.map +1 -1
- package/build/index.js +19 -12
- package/build/index.js.map +1 -1
- package/build/kb-hybrid.d.ts +13 -5
- package/build/kb-hybrid.js +16 -10
- package/build/kb-hybrid.js.map +1 -1
- package/build/kb-search.d.ts +9 -3
- package/build/kb-search.js +95 -4
- package/build/kb-search.js.map +1 -1
- package/build/kb-semantic.d.ts +2 -2
- package/build/kb-semantic.js +11 -2
- package/build/kb-semantic.js.map +1 -1
- package/build/local-docs.d.ts +12 -0
- package/build/local-docs.js +9 -0
- package/build/local-docs.js.map +1 -0
- package/build/local-execution-context.d.ts +7 -0
- package/build/local-execution-context.js +18 -0
- package/build/local-execution-context.js.map +1 -0
- package/build/mcp-server-compat.d.ts +8 -0
- package/build/mcp-server-compat.js +28 -0
- package/build/mcp-server-compat.js.map +1 -0
- package/build/modern-runtime.d.ts +13 -0
- package/build/modern-runtime.js +148 -0
- package/build/modern-runtime.js.map +1 -0
- package/build/namespaced.js +31 -4
- package/build/namespaced.js.map +1 -1
- package/build/operator.js +60 -4
- package/build/operator.js.map +1 -1
- package/build/runtime.d.ts +226 -5
- package/build/runtime.js +185 -73
- package/build/runtime.js.map +1 -1
- package/package.json +6 -6
- package/server.json +2 -2
package/build/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import dotenv from 'dotenv';
|
|
3
3
|
dotenv.config({ quiet: true });
|
|
4
|
-
import {
|
|
4
|
+
import { serveStdio } from '@modelcontextprotocol/server/stdio';
|
|
5
5
|
import { dirname, resolve } from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
7
|
import { readFileSync, realpathSync } from 'node:fs';
|
|
@@ -10,7 +10,10 @@ import { DebugLogger } from './debug-log.js';
|
|
|
10
10
|
import { HybridKbSearchService } from './kb-hybrid.js';
|
|
11
11
|
import { SemanticKbSearchService } from './kb-semantic.js';
|
|
12
12
|
import { createKbSearchServiceFromFile } from './kb-search-node.js';
|
|
13
|
+
import { createLocalDocsSearchProvider } from './local-docs.js';
|
|
13
14
|
import { createHttpFeedbackSink, withLocalFeedbackExecutionContext } from './feedback-http.js';
|
|
15
|
+
import { createLocalExecutionContextResolver } from './local-execution-context.js';
|
|
16
|
+
import { createModernConvertMcpServer } from './modern-runtime.js';
|
|
14
17
|
import { createConvertMcpServer as createRuntimeConvertMcpServer, SERVER_NAME, SERVER_VERSION_FALLBACK, } from './runtime.js';
|
|
15
18
|
if (process.env.NODE_ENV === 'development') {
|
|
16
19
|
// mcps-logger is a development-only aid and is intentionally absent from the
|
|
@@ -26,6 +29,7 @@ const keywordSearch = createKbSearchServiceFromFile(knowledgeBasePath, legacyKno
|
|
|
26
29
|
const semanticSearch = new SemanticKbSearchService(knowledgeBasePath, vectorsDir);
|
|
27
30
|
const hybridSearch = new HybridKbSearchService(keywordSearch, semanticSearch);
|
|
28
31
|
const debugLogger = new DebugLogger(process.env.CONVERT_DEBUG_LOG === '1' || process.env.CONVERT_DEBUG_LOG?.toLowerCase() === 'true');
|
|
32
|
+
let stdioHandle;
|
|
29
33
|
export { SERVER_NAME };
|
|
30
34
|
function isMainEntrypoint(importMetaUrl, argvEntry = process.argv[1]) {
|
|
31
35
|
if (!argvEntry)
|
|
@@ -59,17 +63,17 @@ function readServerVersion() {
|
|
|
59
63
|
}
|
|
60
64
|
export const SERVER_VERSION = readServerVersion();
|
|
61
65
|
export function createConvertMcpServer(options = {}) {
|
|
66
|
+
return createRuntimeConvertMcpServer(localRuntimeOptions(options));
|
|
67
|
+
}
|
|
68
|
+
function localRuntimeOptions(options = {}) {
|
|
62
69
|
const feedbackSink = (process.env.TOOLS_FOR_CLIENT ?? 'reporting') === 'all'
|
|
63
70
|
? createHttpFeedbackSink()
|
|
64
71
|
: undefined;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
getById: (id) => keywordSearch.getById(id),
|
|
69
|
-
getDocumentById: (id) => keywordSearch.getDocumentById(id),
|
|
70
|
-
},
|
|
72
|
+
const resolveExecutionContext = createLocalExecutionContextResolver(options.executionContextResolver);
|
|
73
|
+
return {
|
|
74
|
+
docs: createLocalDocsSearchProvider(keywordSearch, hybridSearch),
|
|
71
75
|
executionContextResolver: async (extra, request) => {
|
|
72
|
-
const context = await
|
|
76
|
+
const context = await resolveExecutionContext(extra, request);
|
|
73
77
|
if (!feedbackSink)
|
|
74
78
|
return context;
|
|
75
79
|
return withLocalFeedbackExecutionContext(context, feedbackSink, {
|
|
@@ -83,13 +87,11 @@ export function createConvertMcpServer(options = {}) {
|
|
|
83
87
|
toolsForClient: () => process.env.TOOLS_FOR_CLIENT ?? 'reporting',
|
|
84
88
|
feedbackEnabled: Boolean(feedbackSink),
|
|
85
89
|
notificationsEnabled: () => process.env.CONVERT_ENABLE_NOTIFICATIONS === '1',
|
|
86
|
-
}
|
|
90
|
+
};
|
|
87
91
|
}
|
|
88
92
|
async function main() {
|
|
89
93
|
try {
|
|
90
|
-
|
|
91
|
-
const transport = new StdioServerTransport();
|
|
92
|
-
await server.connect(transport);
|
|
94
|
+
stdioHandle = serveStdio(() => createModernConvertMcpServer(localRuntimeOptions()));
|
|
93
95
|
console.error(`${SERVER_NAME} MCP Server (v${SERVER_VERSION}) running on stdio${API_BASE_URL ? `, proxying API at ${API_BASE_URL}` : ''}`);
|
|
94
96
|
}
|
|
95
97
|
catch (error) {
|
|
@@ -107,6 +109,11 @@ function delay(ms) {
|
|
|
107
109
|
}
|
|
108
110
|
async function cleanup() {
|
|
109
111
|
console.error('Shutting down MCP server...');
|
|
112
|
+
const handle = stdioHandle;
|
|
113
|
+
stdioHandle = undefined;
|
|
114
|
+
await handle?.close().catch((error) => {
|
|
115
|
+
console.error('Error while closing the MCP transport:', error instanceof Error ? error.message : 'UnknownError');
|
|
116
|
+
});
|
|
110
117
|
await Promise.race([semanticSearch.waitReady().catch(() => { }), delay(SHUTDOWN_WAIT_TIMEOUT_MS)]);
|
|
111
118
|
const loadedNativeRuntime = semanticSearch.hasNativeRuntimeLoaded();
|
|
112
119
|
hybridSearch.close();
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/kb-hybrid.d.ts
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SearchResult } from './kb-search.js';
|
|
2
2
|
export type SemanticSearchProvider = {
|
|
3
3
|
isReady(): boolean;
|
|
4
|
-
search(query: string, limit?: number): Promise<SearchResult[]>;
|
|
4
|
+
search(query: string, limit?: number, signal?: AbortSignal): Promise<SearchResult[]>;
|
|
5
5
|
close?(): void;
|
|
6
6
|
};
|
|
7
|
+
export type LexicalSearchProvider = {
|
|
8
|
+
search(query: string, limit?: number, applySourcePriority?: boolean, signal?: AbortSignal): SearchResult[] | Promise<SearchResult[]>;
|
|
9
|
+
};
|
|
10
|
+
export type HybridSearchWeights = {
|
|
11
|
+
lexical?: number;
|
|
12
|
+
semantic?: number;
|
|
13
|
+
};
|
|
7
14
|
export declare class HybridKbSearchService {
|
|
8
15
|
private readonly keyword;
|
|
9
16
|
private readonly semantic;
|
|
10
|
-
|
|
11
|
-
|
|
17
|
+
private readonly weights;
|
|
18
|
+
constructor(keyword: LexicalSearchProvider, semantic: SemanticSearchProvider, weights?: HybridSearchWeights);
|
|
19
|
+
search(query: string, limit?: number, signal?: AbortSignal): Promise<SearchResult[]>;
|
|
12
20
|
close(): void;
|
|
13
21
|
/**
|
|
14
22
|
* Reciprocal Rank Fusion (RRF) — merges two ranked result lists.
|
|
@@ -29,5 +37,5 @@ export declare class HybridKbSearchService {
|
|
|
29
37
|
* the keyword SearchResult is kept (it has query-highlighted snippets).
|
|
30
38
|
* Normalizes final scores to 0–1 range.
|
|
31
39
|
*/
|
|
32
|
-
static fuseRRF(keyword: SearchResult[], semantic: SearchResult[], limit: number, query?: string): SearchResult[];
|
|
40
|
+
static fuseRRF(keyword: SearchResult[], semantic: SearchResult[], limit: number, query?: string, weights?: HybridSearchWeights): SearchResult[];
|
|
33
41
|
}
|
package/build/kb-hybrid.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { inferKbSource, kbArticleIdentity, searchIntentWeight, semanticSearchQuery, sourceAuthorityWeight } from './kb-search.js';
|
|
1
|
+
import { inferKbSource, kbArticleIdentity, searchIntentWeight, semanticSearchQuery, sourceAuthorityWeight, throwIfSearchAborted, } from './kb-search.js';
|
|
2
2
|
const RRF_K = 60;
|
|
3
3
|
const MIN_FUSION_CANDIDATES = 50;
|
|
4
4
|
const MAX_FUSION_CANDIDATES = 100;
|
|
@@ -6,23 +6,27 @@ const OVERFETCH_FACTOR = 8;
|
|
|
6
6
|
export class HybridKbSearchService {
|
|
7
7
|
keyword;
|
|
8
8
|
semantic;
|
|
9
|
-
|
|
9
|
+
weights;
|
|
10
|
+
constructor(keyword, semantic, weights = {}) {
|
|
10
11
|
this.keyword = keyword;
|
|
11
12
|
this.semantic = semantic;
|
|
13
|
+
this.weights = weights;
|
|
12
14
|
}
|
|
13
|
-
async search(query, limit = 5) {
|
|
15
|
+
async search(query, limit = 5, signal) {
|
|
16
|
+
throwIfSearchAborted(signal);
|
|
14
17
|
if (!this.semantic.isReady()) {
|
|
15
|
-
return this.keyword.search(query, limit);
|
|
18
|
+
return await this.keyword.search(query, limit, true, signal);
|
|
16
19
|
}
|
|
17
20
|
const fetchLimit = Math.min(MAX_FUSION_CANDIDATES, Math.max(MIN_FUSION_CANDIDATES, limit * OVERFETCH_FACTOR));
|
|
18
21
|
const [keywordResults, semanticResults] = await Promise.all([
|
|
19
|
-
Promise.resolve(this.keyword.search(query, fetchLimit)),
|
|
20
|
-
this.semantic.search(semanticSearchQuery(query), fetchLimit),
|
|
22
|
+
Promise.resolve(this.keyword.search(query, fetchLimit, true, signal)),
|
|
23
|
+
this.semantic.search(semanticSearchQuery(query), fetchLimit, signal),
|
|
21
24
|
]);
|
|
25
|
+
throwIfSearchAborted(signal);
|
|
22
26
|
if (semanticResults.length === 0) {
|
|
23
27
|
return keywordResults.slice(0, limit);
|
|
24
28
|
}
|
|
25
|
-
return HybridKbSearchService.fuseRRF(keywordResults, semanticResults, limit, query);
|
|
29
|
+
return HybridKbSearchService.fuseRRF(keywordResults, semanticResults, limit, query, this.weights);
|
|
26
30
|
}
|
|
27
31
|
close() {
|
|
28
32
|
this.semantic.close?.();
|
|
@@ -46,20 +50,22 @@ export class HybridKbSearchService {
|
|
|
46
50
|
* the keyword SearchResult is kept (it has query-highlighted snippets).
|
|
47
51
|
* Normalizes final scores to 0–1 range.
|
|
48
52
|
*/
|
|
49
|
-
static fuseRRF(keyword, semantic, limit, query = '') {
|
|
53
|
+
static fuseRRF(keyword, semantic, limit, query = '', weights = {}) {
|
|
54
|
+
const lexicalWeight = weights.lexical ?? 1;
|
|
55
|
+
const semanticWeight = weights.semantic ?? 1;
|
|
50
56
|
const scores = new Map();
|
|
51
57
|
const results = new Map();
|
|
52
58
|
// Accumulate keyword scores (preferred source for snippets)
|
|
53
59
|
for (let r = 0; r < keyword.length; r++) {
|
|
54
60
|
const key = keyword[r].id;
|
|
55
|
-
const rrfScore =
|
|
61
|
+
const rrfScore = lexicalWeight / (RRF_K + r + 1);
|
|
56
62
|
scores.set(key, (scores.get(key) ?? 0) + rrfScore);
|
|
57
63
|
results.set(key, keyword[r]);
|
|
58
64
|
}
|
|
59
65
|
// Accumulate semantic scores (don't overwrite keyword results for the same id)
|
|
60
66
|
for (let r = 0; r < semantic.length; r++) {
|
|
61
67
|
const key = semantic[r].id;
|
|
62
|
-
const rrfScore =
|
|
68
|
+
const rrfScore = semanticWeight / (RRF_K + r + 1);
|
|
63
69
|
scores.set(key, (scores.get(key) ?? 0) + rrfScore);
|
|
64
70
|
if (!results.has(key)) {
|
|
65
71
|
results.set(key, semantic[r]);
|
package/build/kb-hybrid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kb-hybrid.js","sourceRoot":"","sources":["../src/kb-hybrid.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"kb-hybrid.js","sourceRoot":"","sources":["../src/kb-hybrid.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAsBxB,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,MAAM,OAAO,qBAAqB;IAEb;IACA;IACA;IAHnB,YACmB,OAA8B,EAC9B,QAAgC,EAChC,UAA+B,EAAE;QAFjC,YAAO,GAAP,OAAO,CAAuB;QAC9B,aAAQ,GAAR,QAAQ,CAAwB;QAChC,YAAO,GAAP,OAAO,CAA0B;IACjD,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,KAAK,GAAG,CAAC,EAAE,MAAoB;QACzD,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,qBAAqB,EACrB,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,GAAG,gBAAgB,CAAC,CAC1D,CAAC;QACF,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC;SACrE,CAAC,CAAC;QACH,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,qBAAqB,CAAC,OAAO,CAAC,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpG,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,OAAO,CACZ,OAAuB,EACvB,QAAwB,EACxB,KAAa,EACb,KAAK,GAAG,EAAE,EACV,UAA+B,EAAE;QAEjC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;QAEhD,4DAA4D;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,aAAa,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,+EAA+E;QAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,cAAc,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YACxE,EAAE;YACF,KAAK;kBACD,qBAAqB,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;kBACnE,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,KAAK,EAAE,KAAK,CAAC;SACtD,CAAC,CAAC,CAAC;QAEJ,mFAAmF;QACnF,+FAA+F;QAC/F,sEAAsE;QACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC5C,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;aACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACf,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,KAAK,CAAC;YACrC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YACrF,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,KAAK;gBAAE,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACL,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;YAChC,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACnD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/build/kb-search.d.ts
CHANGED
|
@@ -36,10 +36,16 @@ export declare class KbSearchService {
|
|
|
36
36
|
private readonly usesStableIds;
|
|
37
37
|
constructor(chunks: KbChunk[], legacyAliases?: Record<string, string>, staleLegacyDocuments?: Record<string, StaleKbDocument>);
|
|
38
38
|
private ensureIndex;
|
|
39
|
-
getById(id: string): KbChunk | null;
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
getById(id: string, signal?: AbortSignal): KbChunk | null;
|
|
40
|
+
private staleOrLegacyFallback;
|
|
41
|
+
getDocumentById(id: string, signal?: AbortSignal): KbDocument | null;
|
|
42
|
+
search(query: string, limit?: number, applySourcePriority?: boolean, signal?: AbortSignal): SearchResult[];
|
|
42
43
|
}
|
|
44
|
+
export declare function throwIfSearchAborted(signal?: AbortSignal): void;
|
|
45
|
+
/** Await a platform operation without retaining an aborted request as a waiter. */
|
|
46
|
+
export declare function abortableSearch<T>(operation: PromiseLike<T>, signal?: AbortSignal): Promise<T>;
|
|
47
|
+
export declare function memoryBoundedTermWeight(token: string): number;
|
|
48
|
+
export declare function memoryBoundedWordMatch(word: string, token: string, allowFuzzy: boolean): number;
|
|
43
49
|
/** Removes conversational glue while preserving product, API, and symptom terms. */
|
|
44
50
|
export declare function normalizeSearchQuery(query: string): string;
|
|
45
51
|
/** Adds explicit product vocabulary where compact embedding models lose negation. */
|
package/build/kb-search.js
CHANGED
|
@@ -55,11 +55,15 @@ export class KbSearchService {
|
|
|
55
55
|
this.index = index;
|
|
56
56
|
return index;
|
|
57
57
|
}
|
|
58
|
-
getById(id) {
|
|
58
|
+
getById(id, signal) {
|
|
59
|
+
throwIfSearchAborted(signal);
|
|
59
60
|
const stableId = this.legacyAliases[id] ?? id;
|
|
60
61
|
const direct = this.chunksById.get(stableId);
|
|
61
62
|
if (direct)
|
|
62
63
|
return direct;
|
|
64
|
+
return this.staleOrLegacyFallback(id);
|
|
65
|
+
}
|
|
66
|
+
staleOrLegacyFallback(id) {
|
|
63
67
|
const stale = this.staleLegacyDocuments[id];
|
|
64
68
|
if (stale) {
|
|
65
69
|
return {
|
|
@@ -78,8 +82,9 @@ export class KbSearchService {
|
|
|
78
82
|
const index = Number(id);
|
|
79
83
|
return Number.isSafeInteger(index) ? this.chunks[index] ?? null : null;
|
|
80
84
|
}
|
|
81
|
-
getDocumentById(id) {
|
|
82
|
-
|
|
85
|
+
getDocumentById(id, signal) {
|
|
86
|
+
throwIfSearchAborted(signal);
|
|
87
|
+
const requested = this.getById(id, signal);
|
|
83
88
|
if (!requested)
|
|
84
89
|
return null;
|
|
85
90
|
if (requested.stale_id === true)
|
|
@@ -89,12 +94,14 @@ export class KbSearchService {
|
|
|
89
94
|
chunks: this.chunksByDocument.get(documentKey(requested)) ?? [requested],
|
|
90
95
|
};
|
|
91
96
|
}
|
|
92
|
-
search(query, limit = 5, applySourcePriority = true) {
|
|
97
|
+
search(query, limit = 5, applySourcePriority = true, signal) {
|
|
98
|
+
throwIfSearchAborted(signal);
|
|
93
99
|
if (!query || !query.trim()) {
|
|
94
100
|
return [];
|
|
95
101
|
}
|
|
96
102
|
const originalQuery = query.trim();
|
|
97
103
|
const cleanedQuery = normalizeSearchQuery(originalQuery);
|
|
104
|
+
throwIfSearchAborted(signal);
|
|
98
105
|
const rankedResults = this.ensureIndex().search(cleanedQuery, DEFAULT_SEARCH_OPTIONS)
|
|
99
106
|
.map((result) => {
|
|
100
107
|
const authorityChunk = this.chunksById.get(result.id) ?? {
|
|
@@ -143,6 +150,90 @@ export class KbSearchService {
|
|
|
143
150
|
});
|
|
144
151
|
}
|
|
145
152
|
}
|
|
153
|
+
export function throwIfSearchAborted(signal) {
|
|
154
|
+
if (!signal?.aborted)
|
|
155
|
+
return;
|
|
156
|
+
if (signal.reason instanceof Error)
|
|
157
|
+
throw signal.reason;
|
|
158
|
+
const error = new Error(typeof signal.reason === 'string' && signal.reason.trim()
|
|
159
|
+
? signal.reason
|
|
160
|
+
: 'Knowledge search was aborted.');
|
|
161
|
+
error.name = 'AbortError';
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
/** Await a platform operation without retaining an aborted request as a waiter. */
|
|
165
|
+
export async function abortableSearch(operation, signal) {
|
|
166
|
+
if (!signal)
|
|
167
|
+
return await operation;
|
|
168
|
+
throwIfSearchAborted(signal);
|
|
169
|
+
let rejectAborted;
|
|
170
|
+
const aborted = new Promise((_resolve, reject) => {
|
|
171
|
+
rejectAborted = reject;
|
|
172
|
+
});
|
|
173
|
+
const onAbort = () => {
|
|
174
|
+
try {
|
|
175
|
+
throwIfSearchAborted(signal);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
rejectAborted?.(error instanceof Error ? error : new Error('Knowledge search was aborted.'));
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
182
|
+
try {
|
|
183
|
+
return await Promise.race([Promise.resolve(operation), aborted]);
|
|
184
|
+
}
|
|
185
|
+
finally {
|
|
186
|
+
signal.removeEventListener('abort', onAbort);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
export function memoryBoundedTermWeight(token) {
|
|
190
|
+
return 1 + Math.min(1.5, Math.max(0, token.length - 3) / 8);
|
|
191
|
+
}
|
|
192
|
+
export function memoryBoundedWordMatch(word, token, allowFuzzy) {
|
|
193
|
+
if (word === token)
|
|
194
|
+
return 1;
|
|
195
|
+
const shortest = Math.min(word.length, token.length);
|
|
196
|
+
if (shortest >= 3 && (word.startsWith(token) || token.startsWith(word)))
|
|
197
|
+
return 0.82;
|
|
198
|
+
if (shortest >= 6 && memoryBoundedStem(word) === memoryBoundedStem(token))
|
|
199
|
+
return 0.9;
|
|
200
|
+
if (!allowFuzzy || shortest < 5 || Math.abs(word.length - token.length) > 2)
|
|
201
|
+
return 0;
|
|
202
|
+
const maxDistance = Math.max(1, Math.ceil(Math.max(word.length, token.length) * 0.2));
|
|
203
|
+
return boundedLevenshtein(word, token, maxDistance) <= maxDistance ? 0.65 : 0;
|
|
204
|
+
}
|
|
205
|
+
function memoryBoundedStem(value) {
|
|
206
|
+
if (value.endsWith('ations'))
|
|
207
|
+
return `${value.slice(0, -6)}ate`;
|
|
208
|
+
if (value.endsWith('ation'))
|
|
209
|
+
return `${value.slice(0, -5)}ate`;
|
|
210
|
+
if (value.endsWith('ated'))
|
|
211
|
+
return value.slice(0, -1);
|
|
212
|
+
if (value.endsWith('ies'))
|
|
213
|
+
return `${value.slice(0, -3)}y`;
|
|
214
|
+
if (value.endsWith('s') && !value.endsWith('ss'))
|
|
215
|
+
return value.slice(0, -1);
|
|
216
|
+
return value;
|
|
217
|
+
}
|
|
218
|
+
function boundedLevenshtein(left, right, maximum) {
|
|
219
|
+
if (Math.abs(left.length - right.length) > maximum)
|
|
220
|
+
return maximum + 1;
|
|
221
|
+
let previous = Array.from({ length: right.length + 1 }, (_, index) => index);
|
|
222
|
+
for (let leftIndex = 1; leftIndex <= left.length; leftIndex += 1) {
|
|
223
|
+
const current = [leftIndex];
|
|
224
|
+
let rowMinimum = current[0];
|
|
225
|
+
for (let rightIndex = 1; rightIndex <= right.length; rightIndex += 1) {
|
|
226
|
+
const substitution = previous[rightIndex - 1] + (left[leftIndex - 1] === right[rightIndex - 1] ? 0 : 1);
|
|
227
|
+
const value = Math.min(previous[rightIndex] + 1, current[rightIndex - 1] + 1, substitution);
|
|
228
|
+
current.push(value);
|
|
229
|
+
rowMinimum = Math.min(rowMinimum, value);
|
|
230
|
+
}
|
|
231
|
+
if (rowMinimum > maximum)
|
|
232
|
+
return maximum + 1;
|
|
233
|
+
previous = current;
|
|
234
|
+
}
|
|
235
|
+
return previous[right.length];
|
|
236
|
+
}
|
|
146
237
|
/** Removes conversational glue while preserving product, API, and symptom terms. */
|
|
147
238
|
export function normalizeSearchQuery(query) {
|
|
148
239
|
const tokens = query.match(/[\p{L}\p{N}_./:+-]+/gu) ?? [];
|
package/build/kb-search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kb-search.js","sourceRoot":"","sources":["../src/kb-search.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAyCpC,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE;CAC5E,CAAC;AAEX,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI;IACvE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IACxE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI;IACvE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IACzE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IACnE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;CAC9D,CAAC,CAAC;AAEH,MAAM,OAAO,eAAe;IAOP;IACA;IACA;IARX,KAAK,GAAoC,IAAI,CAAC;IACrC,UAAU,CAAuB;IACjC,gBAAgB,CAAyB;IACzC,aAAa,CAAU;IAExC,YACmB,MAAiB,EACjB,gBAAwC,EAAE,EAC1C,uBAAwD,EAAE;QAF1D,WAAM,GAAN,MAAM,CAAW;QACjB,kBAAa,GAAb,aAAa,CAA6B;QAC1C,yBAAoB,GAApB,oBAAoB,CAAsC;QAE3E,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC5D,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACjD,CAAC;QACD,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5D,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAe;YACzC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,CAAC;YAC5E,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;YAClD,aAAa,EAAE,sBAAsB;SACtC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5C,GAAG,KAAK;YACR,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC;YAC3B,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACnD,gBAAgB,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACpD,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvE,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,EAAU;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,EAAE;gBACF,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;gBACjC,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,KAAK,CAAC,MAAM,IAAI,yBAAyB;gBACvD,OAAO,EAAE,yMAAyM;aACnN,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,CAAC;IAED,eAAe,CAAC,EAAU;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3E,OAAO;YACL,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,KAAK,GAAG,CAAC,EAAE,mBAAmB,GAAG,IAAI;QACzD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC;aAClF,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI;gBACvD,GAAG,EAAE,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;aACtD,CAAC;YACF,OAAO;gBACL,MAAM;gBACN,aAAa,EAAE,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;sBAChE,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;sBAC/F,kBAAkB,CAAC,cAAc,EAAE,aAAa,CAAC;aACtD,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YAClD,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,IAAI,YAAY,IAAI,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC;gBAAE,OAAO,KAAK,CAAC;YACtE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,YAAY;gBAAE,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI;gBACvC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC1D,MAAM,eAAe,GAAG,QAAQ,GAAG,CAAC;gBAClC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC,CAAC;YACN,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,KAAK;gBACL,KAAK,EAAE,eAAe;gBACtB,OAAO;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjE,IACE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;WACvB,kFAAkF,CAAC,IAAI,CAAC,KAAK,CAAC,EACjG,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,8CAA8C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzF,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9G,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,8CAA8C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7F,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpH,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,IACE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;WACvB,kFAAkF,CAAC,IAAI,CAAC,KAAK,CAAC,EACjG,CAAC;QACD,OAAO,GAAG,KAAK,0HAA0H,CAAC;IAC5I,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,gBAAgB,GAAG,wJAAwJ,CAAC;AAClL,MAAM,iBAAiB,GAAG,gIAAgI,CAAC;AAE3J,MAAM,UAAU,aAAa,CAAC,KAAsC;IAClE,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IACtC,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC/E,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/D,8EAA8E;IAC9E,iFAAiF;IACjF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,qBAAqB,CAAC,MAAgB,EAAE,KAAa;IACnE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,gBAAgB;QAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1H,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAA+D,EAAE,KAAa;IAC/G,MAAM,aAAa,GAAG,+DAA+D,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClG,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,KAAK,WAAW,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtF,IAAI,WAAW,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3E,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3F,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAqC;IACrE,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,KAAa,EAAE,MAAM,GAAG,GAAG;IAChE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC;YAC1D,UAAU,GAAG,GAAG,CAAC;QACnB,CAAC;IACH,CAAC;IACD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IACtF,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;QACtE,CAAC,CAAC,KAAK,CAAC,WAAW;QACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;QAChF,CAAC,CAAC,KAAK,CAAC,WAAW;QACnB,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACvF,CAAC"}
|
|
1
|
+
{"version":3,"file":"kb-search.js","sourceRoot":"","sources":["../src/kb-search.ts"],"names":[],"mappings":"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"}
|
package/build/kb-semantic.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type SearchResult } from './kb-search.js';
|
|
2
2
|
export declare class SemanticKbSearchService {
|
|
3
3
|
private _isReady;
|
|
4
4
|
private _initPromise;
|
|
@@ -11,7 +11,7 @@ export declare class SemanticKbSearchService {
|
|
|
11
11
|
isReady(): boolean;
|
|
12
12
|
waitReady(): Promise<boolean>;
|
|
13
13
|
hasNativeRuntimeLoaded(): boolean;
|
|
14
|
-
search(query: string, limit?: number): Promise<SearchResult[]>;
|
|
14
|
+
search(query: string, limit?: number, signal?: AbortSignal): Promise<SearchResult[]>;
|
|
15
15
|
close(): void;
|
|
16
16
|
private _init;
|
|
17
17
|
private _openCollectionWithLockFallback;
|
package/build/kb-semantic.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cpSync, existsSync, mkdtempSync, readFileSync, rmSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
|
+
import { abortableSearch, throwIfSearchAborted, } from './kb-search.js';
|
|
4
5
|
const MODEL_ID = 'Xenova/bge-small-en-v1.5';
|
|
5
6
|
const EMBEDDING_DIM = 384;
|
|
6
7
|
export class SemanticKbSearchService {
|
|
@@ -23,17 +24,24 @@ export class SemanticKbSearchService {
|
|
|
23
24
|
hasNativeRuntimeLoaded() {
|
|
24
25
|
return this._hasLoadedNativeRuntime;
|
|
25
26
|
}
|
|
26
|
-
async search(query, limit = 5) {
|
|
27
|
+
async search(query, limit = 5, signal) {
|
|
28
|
+
throwIfSearchAborted(signal);
|
|
27
29
|
if (!this._isReady || !this._collection || !this._extractor) {
|
|
28
30
|
return [];
|
|
29
31
|
}
|
|
30
32
|
try {
|
|
31
|
-
|
|
33
|
+
// Transformers.js does not expose an ONNX cancellation primitive. Stop
|
|
34
|
+
// retaining the MCP request as a waiter immediately; an already-entered
|
|
35
|
+
// native inference may finish in the background, but its result is
|
|
36
|
+
// discarded and Vector search is never started for the cancelled call.
|
|
37
|
+
const output = await abortableSearch(this._extractor(`Represent this sentence for searching relevant passages: ${query}`, { pooling: 'cls', normalize: true }), signal);
|
|
38
|
+
throwIfSearchAborted(signal);
|
|
32
39
|
const queryVec = new Float32Array(output.data);
|
|
33
40
|
if (queryVec.length !== EMBEDDING_DIM) {
|
|
34
41
|
console.error(`[SemanticKbSearch] Unexpected embedding dimension: ${queryVec.length}, expected ${EMBEDDING_DIM}`);
|
|
35
42
|
return [];
|
|
36
43
|
}
|
|
44
|
+
throwIfSearchAborted(signal);
|
|
37
45
|
const docs = this._collection.querySync({
|
|
38
46
|
fieldName: 'embedding',
|
|
39
47
|
vector: queryVec,
|
|
@@ -57,6 +65,7 @@ export class SemanticKbSearchService {
|
|
|
57
65
|
}).filter((r) => r !== null);
|
|
58
66
|
}
|
|
59
67
|
catch (err) {
|
|
68
|
+
throwIfSearchAborted(signal);
|
|
60
69
|
console.error('[SemanticKbSearch] Query error:', err instanceof Error ? err.message : err);
|
|
61
70
|
return [];
|
|
62
71
|
}
|
package/build/kb-semantic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kb-semantic.js","sourceRoot":"","sources":["../src/kb-semantic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"kb-semantic.js","sourceRoot":"","sources":["../src/kb-semantic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DocsSearchProvider } from './runtime.js';
|
|
2
|
+
import type { KbChunk, KbDocument, SearchResult } from './kb-search.js';
|
|
3
|
+
type LocalKeywordKnowledge = {
|
|
4
|
+
getById(id: string, signal?: AbortSignal): KbChunk | null;
|
|
5
|
+
getDocumentById(id: string, signal?: AbortSignal): KbDocument | null;
|
|
6
|
+
};
|
|
7
|
+
type LocalHybridKnowledge = {
|
|
8
|
+
search(query: string, limit?: number, signal?: AbortSignal): Promise<SearchResult[]>;
|
|
9
|
+
};
|
|
10
|
+
/** Production stdio adapter; keep the MCP request lifetime intact at every seam. */
|
|
11
|
+
export declare function createLocalDocsSearchProvider(keyword: LocalKeywordKnowledge, hybrid: LocalHybridKnowledge): DocsSearchProvider;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Production stdio adapter; keep the MCP request lifetime intact at every seam. */
|
|
2
|
+
export function createLocalDocsSearchProvider(keyword, hybrid) {
|
|
3
|
+
return {
|
|
4
|
+
search: (query, limit, signal) => hybrid.search(query, limit, signal),
|
|
5
|
+
getById: (id, signal) => keyword.getById(id, signal),
|
|
6
|
+
getDocumentById: (id, signal) => keyword.getDocumentById(id, signal),
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=local-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-docs.js","sourceRoot":"","sources":["../src/local-docs.ts"],"names":[],"mappings":"AAYA,oFAAoF;AACpF,MAAM,UAAU,6BAA6B,CAC3C,OAA8B,EAC9B,MAA4B;IAE5B,OAAO;QACL,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;QACrE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC;QACpD,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC;KACrE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ExecutionContextResolver } from './runtime.js';
|
|
2
|
+
/**
|
|
3
|
+
* Local stdio requests use process credentials, but still need a concrete execution
|
|
4
|
+
* context so the MCP request lifetime reaches Axios. Hosted resolvers remain
|
|
5
|
+
* authoritative and never fall back to local environment credentials.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createLocalExecutionContextResolver(resolver?: ExecutionContextResolver, env?: NodeJS.ProcessEnv): ExecutionContextResolver;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getEnvAuthContext } from './api-config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Local stdio requests use process credentials, but still need a concrete execution
|
|
4
|
+
* context so the MCP request lifetime reaches Axios. Hosted resolvers remain
|
|
5
|
+
* authoritative and never fall back to local environment credentials.
|
|
6
|
+
*/
|
|
7
|
+
export function createLocalExecutionContextResolver(resolver, env = process.env) {
|
|
8
|
+
return async (extra, request) => {
|
|
9
|
+
const resolved = await resolver?.(extra, request);
|
|
10
|
+
const localAuthContext = resolved ? undefined : getEnvAuthContext(env);
|
|
11
|
+
return {
|
|
12
|
+
...resolved,
|
|
13
|
+
...(localAuthContext ? { authContext: localAuthContext } : {}),
|
|
14
|
+
signal: extra.signal,
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=local-execution-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-execution-context.js","sourceRoot":"","sources":["../src/local-execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIpD;;;;GAIG;AACH,MAAM,UAAU,mCAAmC,CACjD,QAAmC,EACnC,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAiC,EAAE;QAC7D,MAAM,QAAQ,GAAG,MAAM,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvE,OAAO;YACL,GAAG,QAAQ;YACX,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @modelcontextprotocol/server 2.0.0 ignores cancellation for the valid
|
|
3
|
+
* falsy JSON-RPC IDs 0 and "".
|
|
4
|
+
* Keep the workaround on each Convert-owned server instance so the published
|
|
5
|
+
* npm package and Worker bundle have identical behavior without package-manager
|
|
6
|
+
* patch protocols. Remove this shim once the pinned SDK contains the fix.
|
|
7
|
+
*/
|
|
8
|
+
export declare function applyFalsyRequestIdCancellationCompat(server: object): void;
|