@nitrostack/core 1.0.16 → 1.1.0-beta.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.
- package/dist/core/app-decorator.d.ts +5 -0
- package/dist/core/app-decorator.d.ts.map +1 -1
- package/dist/core/app-decorator.js +2 -1
- package/dist/core/app-decorator.js.map +1 -1
- package/dist/core/builders.d.ts.map +1 -1
- package/dist/core/builders.js +2 -0
- package/dist/core/builders.js.map +1 -1
- package/dist/core/decorators.d.ts +11 -0
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/health/health-checks.resource.d.ts +4 -3
- package/dist/core/health/health-checks.resource.d.ts.map +1 -1
- package/dist/core/health/health-checks.resource.js +35 -8
- package/dist/core/health/health-checks.resource.js.map +1 -1
- package/dist/core/health/health.interface.d.ts +40 -0
- package/dist/core/health/health.interface.d.ts.map +1 -0
- package/dist/core/health/health.interface.js +2 -0
- package/dist/core/health/health.interface.js.map +1 -0
- package/dist/core/index.d.ts +11 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +9 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/interceptors/data-spillover.interceptor.d.ts +30 -0
- package/dist/core/interceptors/data-spillover.interceptor.d.ts.map +1 -0
- package/dist/core/interceptors/data-spillover.interceptor.js +174 -0
- package/dist/core/interceptors/data-spillover.interceptor.js.map +1 -0
- package/dist/core/interceptors/interceptor.decorator.d.ts +17 -8
- package/dist/core/interceptors/interceptor.decorator.d.ts.map +1 -1
- package/dist/core/interceptors/interceptor.decorator.js +36 -11
- package/dist/core/interceptors/interceptor.decorator.js.map +1 -1
- package/dist/core/interceptors/interceptor.interface.d.ts +4 -0
- package/dist/core/interceptors/interceptor.interface.d.ts.map +1 -1
- package/dist/core/interceptors/spillover/fs-spillover.store.d.ts +54 -0
- package/dist/core/interceptors/spillover/fs-spillover.store.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/fs-spillover.store.js +302 -0
- package/dist/core/interceptors/spillover/fs-spillover.store.js.map +1 -0
- package/dist/core/interceptors/spillover/index.d.ts +6 -0
- package/dist/core/interceptors/spillover/index.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/index.js +6 -0
- package/dist/core/interceptors/spillover/index.js.map +1 -0
- package/dist/core/interceptors/spillover/memory-spillover.store.d.ts +25 -0
- package/dist/core/interceptors/spillover/memory-spillover.store.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/memory-spillover.store.js +115 -0
- package/dist/core/interceptors/spillover/memory-spillover.store.js.map +1 -0
- package/dist/core/interceptors/spillover/preview-generator.d.ts +7 -0
- package/dist/core/interceptors/spillover/preview-generator.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/preview-generator.js +79 -0
- package/dist/core/interceptors/spillover/preview-generator.js.map +1 -0
- package/dist/core/interceptors/spillover/spillover-store.interface.d.ts +20 -0
- package/dist/core/interceptors/spillover/spillover-store.interface.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/spillover-store.interface.js +2 -0
- package/dist/core/interceptors/spillover/spillover-store.interface.js.map +1 -0
- package/dist/core/interceptors/spillover/types.d.ts +71 -0
- package/dist/core/interceptors/spillover/types.d.ts.map +1 -0
- package/dist/core/interceptors/spillover/types.js +12 -0
- package/dist/core/interceptors/spillover/types.js.map +1 -0
- package/dist/core/protocol/adapter.d.ts +7 -1
- package/dist/core/protocol/adapter.d.ts.map +1 -1
- package/dist/core/protocol/modern-v2.adapter.d.ts +95 -2
- package/dist/core/protocol/modern-v2.adapter.d.ts.map +1 -1
- package/dist/core/protocol/modern-v2.adapter.js +688 -157
- package/dist/core/protocol/modern-v2.adapter.js.map +1 -1
- package/dist/core/server.d.ts +104 -4
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +450 -44
- package/dist/core/server.js.map +1 -1
- package/dist/core/task.d.ts.map +1 -1
- package/dist/core/task.js +8 -7
- package/dist/core/task.js.map +1 -1
- package/dist/core/tool.d.ts +12 -3
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +21 -3
- package/dist/core/tool.js.map +1 -1
- package/dist/core/transforms/catalog.transform.d.ts +40 -0
- package/dist/core/transforms/catalog.transform.d.ts.map +1 -0
- package/dist/core/transforms/catalog.transform.js +52 -0
- package/dist/core/transforms/catalog.transform.js.map +1 -0
- package/dist/core/transforms/code-mode/code-mode.transform.d.ts +75 -0
- package/dist/core/transforms/code-mode/code-mode.transform.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/code-mode.transform.js +226 -0
- package/dist/core/transforms/code-mode/code-mode.transform.js.map +1 -0
- package/dist/core/transforms/code-mode/destructive-guard.d.ts +7 -0
- package/dist/core/transforms/code-mode/destructive-guard.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/destructive-guard.js +18 -0
- package/dist/core/transforms/code-mode/destructive-guard.js.map +1 -0
- package/dist/core/transforms/code-mode/guest-evaluator.d.ts +17 -0
- package/dist/core/transforms/code-mode/guest-evaluator.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/guest-evaluator.js +277 -0
- package/dist/core/transforms/code-mode/guest-evaluator.js.map +1 -0
- package/dist/core/transforms/code-mode/index.d.ts +11 -0
- package/dist/core/transforms/code-mode/index.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/index.js +11 -0
- package/dist/core/transforms/code-mode/index.js.map +1 -0
- package/dist/core/transforms/code-mode/ipc-messages.d.ts +31 -0
- package/dist/core/transforms/code-mode/ipc-messages.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/ipc-messages.js +2 -0
- package/dist/core/transforms/code-mode/ipc-messages.js.map +1 -0
- package/dist/core/transforms/code-mode/legible-error.d.ts +8 -0
- package/dist/core/transforms/code-mode/legible-error.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/legible-error.js +17 -0
- package/dist/core/transforms/code-mode/legible-error.js.map +1 -0
- package/dist/core/transforms/code-mode/quickjs-wasm.provider.d.ts +25 -0
- package/dist/core/transforms/code-mode/quickjs-wasm.provider.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/quickjs-wasm.provider.js +31 -0
- package/dist/core/transforms/code-mode/quickjs-wasm.provider.js.map +1 -0
- package/dist/core/transforms/code-mode/sandbox.interface.d.ts +10 -0
- package/dist/core/transforms/code-mode/sandbox.interface.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/sandbox.interface.js +2 -0
- package/dist/core/transforms/code-mode/sandbox.interface.js.map +1 -0
- package/dist/core/transforms/code-mode/sandbox.worker.d.ts +2 -0
- package/dist/core/transforms/code-mode/sandbox.worker.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/sandbox.worker.js +69 -0
- package/dist/core/transforms/code-mode/sandbox.worker.js.map +1 -0
- package/dist/core/transforms/code-mode/synthetic-tools.d.ts +23 -0
- package/dist/core/transforms/code-mode/synthetic-tools.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/synthetic-tools.js +112 -0
- package/dist/core/transforms/code-mode/synthetic-tools.js.map +1 -0
- package/dist/core/transforms/code-mode/types.d.ts +32 -0
- package/dist/core/transforms/code-mode/types.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/types.js +2 -0
- package/dist/core/transforms/code-mode/types.js.map +1 -0
- package/dist/core/transforms/code-mode/worker-pool.d.ts +71 -0
- package/dist/core/transforms/code-mode/worker-pool.d.ts.map +1 -0
- package/dist/core/transforms/code-mode/worker-pool.js +435 -0
- package/dist/core/transforms/code-mode/worker-pool.js.map +1 -0
- package/dist/core/transforms/index.d.ts +6 -0
- package/dist/core/transforms/index.d.ts.map +1 -0
- package/dist/core/transforms/index.js +6 -0
- package/dist/core/transforms/index.js.map +1 -0
- package/dist/core/transforms/search/base-search.transform.d.ts +59 -0
- package/dist/core/transforms/search/base-search.transform.d.ts.map +1 -0
- package/dist/core/transforms/search/base-search.transform.js +166 -0
- package/dist/core/transforms/search/base-search.transform.js.map +1 -0
- package/dist/core/transforms/search/bm25-search.transform.d.ts +27 -0
- package/dist/core/transforms/search/bm25-search.transform.d.ts.map +1 -0
- package/dist/core/transforms/search/bm25-search.transform.js +37 -0
- package/dist/core/transforms/search/bm25-search.transform.js.map +1 -0
- package/dist/core/transforms/search/bm25.engine.d.ts +46 -0
- package/dist/core/transforms/search/bm25.engine.d.ts.map +1 -0
- package/dist/core/transforms/search/bm25.engine.js +160 -0
- package/dist/core/transforms/search/bm25.engine.js.map +1 -0
- package/dist/core/transforms/search/index.d.ts +9 -0
- package/dist/core/transforms/search/index.d.ts.map +1 -0
- package/dist/core/transforms/search/index.js +9 -0
- package/dist/core/transforms/search/index.js.map +1 -0
- package/dist/core/transforms/search/regex-match.worker.d.ts +2 -0
- package/dist/core/transforms/search/regex-match.worker.d.ts.map +1 -0
- package/dist/core/transforms/search/regex-match.worker.js +19 -0
- package/dist/core/transforms/search/regex-match.worker.js.map +1 -0
- package/dist/core/transforms/search/regex-search.transform.d.ts +41 -0
- package/dist/core/transforms/search/regex-search.transform.d.ts.map +1 -0
- package/dist/core/transforms/search/regex-search.transform.js +237 -0
- package/dist/core/transforms/search/regex-search.transform.js.map +1 -0
- package/dist/core/transforms/search/synthetic-tools.d.ts +11 -0
- package/dist/core/transforms/search/synthetic-tools.d.ts.map +1 -0
- package/dist/core/transforms/search/synthetic-tools.js +76 -0
- package/dist/core/transforms/search/synthetic-tools.js.map +1 -0
- package/dist/core/transforms/search/tokenizer.d.ts +11 -0
- package/dist/core/transforms/search/tokenizer.d.ts.map +1 -0
- package/dist/core/transforms/search/tokenizer.js +38 -0
- package/dist/core/transforms/search/tokenizer.js.map +1 -0
- package/dist/core/transforms/search/tool-serializer.d.ts +6 -0
- package/dist/core/transforms/search/tool-serializer.d.ts.map +1 -0
- package/dist/core/transforms/search/tool-serializer.js +41 -0
- package/dist/core/transforms/search/tool-serializer.js.map +1 -0
- package/dist/core/transforms/search/types.d.ts +36 -0
- package/dist/core/transforms/search/types.d.ts.map +1 -0
- package/dist/core/transforms/search/types.js +2 -0
- package/dist/core/transforms/search/types.js.map +1 -0
- package/dist/core/transforms/tool-cache-key.d.ts +15 -0
- package/dist/core/transforms/tool-cache-key.d.ts.map +1 -0
- package/dist/core/transforms/tool-cache-key.js +61 -0
- package/dist/core/transforms/tool-cache-key.js.map +1 -0
- package/dist/core/transforms/transform.interface.d.ts +34 -0
- package/dist/core/transforms/transform.interface.d.ts.map +1 -0
- package/dist/core/transforms/transform.interface.js +2 -0
- package/dist/core/transforms/transform.interface.js.map +1 -0
- package/dist/core/transforms/validate-tool-arguments.d.ts +10 -0
- package/dist/core/transforms/validate-tool-arguments.d.ts.map +1 -0
- package/dist/core/transforms/validate-tool-arguments.js +62 -0
- package/dist/core/transforms/validate-tool-arguments.js.map +1 -0
- package/dist/core/transforms/visibility/index.d.ts +3 -0
- package/dist/core/transforms/visibility/index.d.ts.map +1 -0
- package/dist/core/transforms/visibility/index.js +3 -0
- package/dist/core/transforms/visibility/index.js.map +1 -0
- package/dist/core/transforms/visibility/session-store.d.ts +132 -0
- package/dist/core/transforms/visibility/session-store.d.ts.map +1 -0
- package/dist/core/transforms/visibility/session-store.js +330 -0
- package/dist/core/transforms/visibility/session-store.js.map +1 -0
- package/dist/core/transforms/visibility/visibility.transform.d.ts +42 -0
- package/dist/core/transforms/visibility/visibility.transform.d.ts.map +1 -0
- package/dist/core/transforms/visibility/visibility.transform.js +109 -0
- package/dist/core/transforms/visibility/visibility.transform.js.map +1 -0
- package/dist/core/types.d.ts +60 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -0
- package/dist/testing/index.js.map +1 -1
- package/package.json +9 -6
- package/dist/core/widget-bundle-paths.d.ts +0 -5
- package/dist/core/widget-bundle-paths.d.ts.map +0 -1
- package/dist/core/widget-bundle-paths.js +0 -25
- package/dist/core/widget-bundle-paths.js.map +0 -1
- package/dist/core/widget-html-mime.d.ts +0 -7
- package/dist/core/widget-html-mime.d.ts.map +0 -1
- package/dist/core/widget-html-mime.js +0 -7
- package/dist/core/widget-html-mime.js.map +0 -1
- package/dist/core/widget-mime.d.ts +0 -29
- package/dist/core/widget-mime.d.ts.map +0 -1
- package/dist/core/widget-mime.js +0 -41
- package/dist/core/widget-mime.js.map +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Schema and visibility material for catalog cache keys.
|
|
4
|
+
* Name and description alone reuse a stale index when a parameter list changes.
|
|
5
|
+
*/
|
|
6
|
+
export function toolCacheFields(tool) {
|
|
7
|
+
return {
|
|
8
|
+
schema: schemaKey(tool.inputSchema),
|
|
9
|
+
visibility: `${tool.visibility ?? ''}:${tool.annotations?.destructiveHint === true ? '1' : '0'}`,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function schemaKey(schema) {
|
|
13
|
+
if (!schema || typeof schema !== 'object')
|
|
14
|
+
return '';
|
|
15
|
+
const record = schema;
|
|
16
|
+
if (record.properties && typeof record.properties === 'object') {
|
|
17
|
+
const keys = Object.keys(record.properties)
|
|
18
|
+
.sort()
|
|
19
|
+
.map((key) => {
|
|
20
|
+
const type = record.properties[key]?.type;
|
|
21
|
+
return `${key}:${typeof type === 'string' ? type : ''}`;
|
|
22
|
+
})
|
|
23
|
+
.join(',');
|
|
24
|
+
const required = Array.isArray(record.required) ? [...record.required].sort().join(',') : '';
|
|
25
|
+
return `json:${keys}:req:${required}`;
|
|
26
|
+
}
|
|
27
|
+
const shape = typeof record._def?.shape === 'function'
|
|
28
|
+
? record._def.shape()
|
|
29
|
+
: record.shape || (record._def?.shape && typeof record._def.shape === 'object' ? record._def.shape : undefined);
|
|
30
|
+
if (shape && typeof shape === 'object') {
|
|
31
|
+
const keys = Object.keys(shape)
|
|
32
|
+
.sort()
|
|
33
|
+
.map((key) => {
|
|
34
|
+
const typeName = shape[key]?._def?.typeName ?? '';
|
|
35
|
+
return `${key}:${typeName}`;
|
|
36
|
+
})
|
|
37
|
+
.join(',');
|
|
38
|
+
return `zod:${keys}`;
|
|
39
|
+
}
|
|
40
|
+
return record._def?.typeName ?? '';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Length-prefixed catalog fingerprint. Without a delimiter, ('ab','c') and ('a','bc')
|
|
44
|
+
* hash to the same key and a transform can serve a stale tool list.
|
|
45
|
+
*/
|
|
46
|
+
export function catalogCacheKey(tools, visibleNames) {
|
|
47
|
+
const hash = createHash('sha256');
|
|
48
|
+
const feed = (value) => hash.update(`${value.length}:${value}`);
|
|
49
|
+
for (const tool of tools) {
|
|
50
|
+
feed(tool.name);
|
|
51
|
+
feed(tool.description || '');
|
|
52
|
+
const identity = toolCacheFields(tool);
|
|
53
|
+
feed(identity.schema);
|
|
54
|
+
feed(identity.visibility);
|
|
55
|
+
}
|
|
56
|
+
hash.update('|visible|');
|
|
57
|
+
for (const name of visibleNames)
|
|
58
|
+
feed(name);
|
|
59
|
+
return hash.digest('hex');
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=tool-cache-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-cache-key.js","sourceRoot":"","sources":["../../../src/core/transforms/tool-cache-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Tool } from '../tool.js';
|
|
2
|
+
import { ExecutionContext } from '../types.js';
|
|
3
|
+
export type NextToolHandler = (name: string, context?: ExecutionContext) => Promise<Tool | undefined>;
|
|
4
|
+
/**
|
|
5
|
+
* The slice of NitroStackServer a transform is allowed to reach back into.
|
|
6
|
+
* `resolveTool` walks the full transform chain, so transforms that dispatch
|
|
7
|
+
* tools themselves (e.g. Code Mode) route through it rather than holding a
|
|
8
|
+
* private catalog, which would bypass downstream authorization transforms.
|
|
9
|
+
*/
|
|
10
|
+
export interface TransformRegistry {
|
|
11
|
+
resolveTool(name: string, context?: ExecutionContext): Promise<Tool | undefined>;
|
|
12
|
+
getTools(): Map<string, Tool>;
|
|
13
|
+
}
|
|
14
|
+
export interface McpTransform {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
/**
|
|
17
|
+
* Called once when the transform is attached to a server.
|
|
18
|
+
*/
|
|
19
|
+
onRegister?(registry: TransformRegistry): void;
|
|
20
|
+
/**
|
|
21
|
+
* Releases resources held by the transform (worker threads, timers).
|
|
22
|
+
* Invoked by NitroStackServer.stop().
|
|
23
|
+
*/
|
|
24
|
+
dispose?(): Promise<void> | void;
|
|
25
|
+
/**
|
|
26
|
+
* Reshapes, filters, or augments the catalog during tools/list.
|
|
27
|
+
*/
|
|
28
|
+
transformTools?(tools: Tool[], context?: ExecutionContext): Promise<Tool[]> | Tool[];
|
|
29
|
+
/**
|
|
30
|
+
* Resolves synthetic or re-routed tools during tools/call.
|
|
31
|
+
*/
|
|
32
|
+
resolveTool?(name: string, next: NextToolHandler, context?: ExecutionContext): Promise<Tool | undefined>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=transform.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.interface.d.ts","sourceRoot":"","sources":["../../../src/core/transforms/transform.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,gBAAgB,KACvB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IACjF,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAE/C;;;OAGG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEjC;;OAEG;IACH,cAAc,CAAC,CACb,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;IAE5B;;OAEG;IACH,WAAW,CAAC,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.interface.js","sourceRoot":"","sources":["../../../src/core/transforms/transform.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Tool } from '../tool.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validates an argument object against a tool's declared input schema.
|
|
4
|
+
*
|
|
5
|
+
* Shared by every transform that dispatches tools on behalf of a model
|
|
6
|
+
* (`call_tool`, Code Mode `callTool`), where arguments are model-authored and
|
|
7
|
+
* benefit from a named, self-correcting failure ahead of execution.
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateToolArguments(tool: Tool, args: Record<string, unknown>): Record<string, unknown>;
|
|
10
|
+
//# sourceMappingURL=validate-tool-arguments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-tool-arguments.d.ts","sourceRoot":"","sources":["../../../src/core/transforms/validate-tool-arguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmCxG"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates an argument object against a tool's declared input schema.
|
|
3
|
+
*
|
|
4
|
+
* Shared by every transform that dispatches tools on behalf of a model
|
|
5
|
+
* (`call_tool`, Code Mode `callTool`), where arguments are model-authored and
|
|
6
|
+
* benefit from a named, self-correcting failure ahead of execution.
|
|
7
|
+
*/
|
|
8
|
+
export function validateToolArguments(tool, args) {
|
|
9
|
+
// 1. Zod Schema Validation
|
|
10
|
+
const schema = tool.inputSchema;
|
|
11
|
+
if (schema && typeof schema.safeParse === 'function') {
|
|
12
|
+
const result = schema.safeParse(args);
|
|
13
|
+
if (!result.success) {
|
|
14
|
+
const issues = result.error.issues
|
|
15
|
+
.map((i) => `Parameter '${i.path.join('.')}': ${i.message}`)
|
|
16
|
+
.join('; ');
|
|
17
|
+
throw new Error(`Argument validation failed for tool '${tool.name}': ${issues}`);
|
|
18
|
+
}
|
|
19
|
+
return result.data;
|
|
20
|
+
}
|
|
21
|
+
// 2. JSON Schema required properties and declared types on any present field.
|
|
22
|
+
if (schema && typeof schema === 'object' && (Array.isArray(schema.required) || schema.properties)) {
|
|
23
|
+
const properties = schema.properties;
|
|
24
|
+
if (Array.isArray(schema.required)) {
|
|
25
|
+
for (const req of schema.required) {
|
|
26
|
+
if (args[req] === undefined) {
|
|
27
|
+
throw new Error(`Missing required parameter '${req}' for tool '${tool.name}'`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (properties) {
|
|
32
|
+
for (const [key, prop] of Object.entries(properties)) {
|
|
33
|
+
if (args[key] === undefined)
|
|
34
|
+
continue;
|
|
35
|
+
const expected = prop?.type;
|
|
36
|
+
if (typeof expected === 'string' && !jsonTypeMatches(expected, args[key])) {
|
|
37
|
+
throw new Error(`Parameter '${key}' for tool '${tool.name}' must be ${expected}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return args;
|
|
43
|
+
}
|
|
44
|
+
function jsonTypeMatches(expected, value) {
|
|
45
|
+
switch (expected) {
|
|
46
|
+
case 'string':
|
|
47
|
+
return typeof value === 'string';
|
|
48
|
+
case 'integer':
|
|
49
|
+
return typeof value === 'number' && Number.isInteger(value);
|
|
50
|
+
case 'number':
|
|
51
|
+
return typeof value === 'number' && Number.isFinite(value);
|
|
52
|
+
case 'boolean':
|
|
53
|
+
return typeof value === 'boolean';
|
|
54
|
+
case 'object':
|
|
55
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
56
|
+
case 'array':
|
|
57
|
+
return Array.isArray(value);
|
|
58
|
+
default:
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=validate-tool-arguments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-tool-arguments.js","sourceRoot":"","sources":["../../../src/core/transforms/validate-tool-arguments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/transforms/visibility/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/transforms/visibility/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-session visibility state recording explicit tool reveals and hides.
|
|
3
|
+
*/
|
|
4
|
+
export interface SessionVisibilityState {
|
|
5
|
+
sessionId: string;
|
|
6
|
+
enabledTools: Set<string>;
|
|
7
|
+
disabledTools: Set<string>;
|
|
8
|
+
lastActive: number;
|
|
9
|
+
}
|
|
10
|
+
export interface SessionVisibilityStoreOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Time-to-live for inactive sessions in minutes (default: 60).
|
|
13
|
+
*/
|
|
14
|
+
ttlMinutes?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Maximum concurrent sessions held in memory before oldest inactive is evicted (default: 10,000).
|
|
17
|
+
*/
|
|
18
|
+
maxSessions?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Background sweep interval in seconds (default: 300).
|
|
21
|
+
*/
|
|
22
|
+
sweepIntervalSeconds?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Called when a new revocation is refused because the cap is full.
|
|
25
|
+
*/
|
|
26
|
+
logger?: {
|
|
27
|
+
warn(message: string, meta?: unknown): void;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Manages per-session dynamic visibility state for MCP tools with memory bounds,
|
|
32
|
+
* TTL expiry, and LRU pruning.
|
|
33
|
+
*/
|
|
34
|
+
export declare class SessionVisibilityStore {
|
|
35
|
+
private readonly sessions;
|
|
36
|
+
/**
|
|
37
|
+
* Explicit revokes survive LRU eviction of the session record so disableTools
|
|
38
|
+
* does not fail open while the entry is still inside its TTL. The same TTL
|
|
39
|
+
* sweeps them; they are also capped at maxSessions.
|
|
40
|
+
*/
|
|
41
|
+
private readonly revocations;
|
|
42
|
+
/**
|
|
43
|
+
* Denies that follow a verified subject across session ids.
|
|
44
|
+
* Anonymous callers have no entry here. A full map refuses a new subject
|
|
45
|
+
* rather than dropping a live deny.
|
|
46
|
+
*/
|
|
47
|
+
private readonly subjectDenies;
|
|
48
|
+
private readonly ttlMs;
|
|
49
|
+
private readonly maxSessions;
|
|
50
|
+
private readonly sweepTimer;
|
|
51
|
+
private logger?;
|
|
52
|
+
constructor(options?: SessionVisibilityStoreOptions);
|
|
53
|
+
setLogger(logger: {
|
|
54
|
+
warn(message: string, meta?: unknown): void;
|
|
55
|
+
}): void;
|
|
56
|
+
/**
|
|
57
|
+
* Retrieves active session state or initializes a new entry.
|
|
58
|
+
* Updates lastActive timestamp and maintains Map insertion order for LRU.
|
|
59
|
+
*/
|
|
60
|
+
getOrCreateSession(sessionId: string): SessionVisibilityState;
|
|
61
|
+
/**
|
|
62
|
+
* Retrieves active session state without creating one if absent.
|
|
63
|
+
* Updates lastActive timestamp and LRU order if found.
|
|
64
|
+
*/
|
|
65
|
+
getSession(sessionId: string): SessionVisibilityState | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Explicitly enables (reveals) tools for a given session.
|
|
68
|
+
*/
|
|
69
|
+
enableTools(sessionId: string, toolNames: string[]): void;
|
|
70
|
+
/**
|
|
71
|
+
* Explicitly disables (hides) tools for a given session.
|
|
72
|
+
* Throws when a new session cannot be recorded without dropping another live deny.
|
|
73
|
+
*/
|
|
74
|
+
disableTools(sessionId: string, toolNames: string[]): void;
|
|
75
|
+
/**
|
|
76
|
+
* Returns whether a tool is explicitly enabled for a session.
|
|
77
|
+
*/
|
|
78
|
+
hasEnabled(sessionId: string, toolName: string): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Returns whether a tool is explicitly disabled for a session.
|
|
81
|
+
*/
|
|
82
|
+
hasDisabled(sessionId: string, toolName: string): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Hides tools for a verified subject. The deny survives a new session id.
|
|
85
|
+
* Throws when a new subject cannot be recorded without dropping another live deny.
|
|
86
|
+
*/
|
|
87
|
+
disableSubject(subject: string, toolNames: string[]): void;
|
|
88
|
+
/**
|
|
89
|
+
* Lifts a subject-scoped deny and the same names on every session key for
|
|
90
|
+
* that subject, so a grant on a later session restores the earlier one.
|
|
91
|
+
*/
|
|
92
|
+
enableSubject(subject: string, toolNames: string[]): void;
|
|
93
|
+
hasSubjectDisabled(subject: string, toolName: string): boolean;
|
|
94
|
+
hasSubjectDenies(subject: string): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* True when this session still has at least one unexpired revocation.
|
|
97
|
+
* Used after the session record itself has been evicted.
|
|
98
|
+
*/
|
|
99
|
+
hasRevocations(sessionId: string): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Clears visibility state for a session.
|
|
102
|
+
*/
|
|
103
|
+
clearSession(sessionId: string): void;
|
|
104
|
+
/**
|
|
105
|
+
* Total number of tracked sessions currently in memory.
|
|
106
|
+
*/
|
|
107
|
+
get activeSessionCount(): number;
|
|
108
|
+
/**
|
|
109
|
+
* Sweeps and purges sessions and revocations that have exceeded the TTL limit.
|
|
110
|
+
*/
|
|
111
|
+
cleanupExpired(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Evicts the least-recently used session entry.
|
|
114
|
+
* Revocations are left in place until their own TTL.
|
|
115
|
+
*/
|
|
116
|
+
private evictOldest;
|
|
117
|
+
private liveRevocation;
|
|
118
|
+
private touchRevocation;
|
|
119
|
+
private liveSubjectDeny;
|
|
120
|
+
private touchSubjectDeny;
|
|
121
|
+
/**
|
|
122
|
+
* Sweeps expired subject denies. A new subject is refused when the map is still
|
|
123
|
+
* at the cap, so a live deny is never dropped to make room.
|
|
124
|
+
*/
|
|
125
|
+
private makeSubjectRoom;
|
|
126
|
+
private makeRevocationRoom;
|
|
127
|
+
/**
|
|
128
|
+
* Cleans up timers and drops all session records.
|
|
129
|
+
*/
|
|
130
|
+
destroy(): void;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../../src/core/transforms/visibility/session-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAYD,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;CAC1D;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IACtE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuC;IACrE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,MAAM,CAAC,CAAkD;gBAErD,OAAO,GAAE,6BAAkC;IAavD,SAAS,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAIxE;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB;IAuB7D;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAWjE;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAezD;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAiB1D;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIxD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKzD;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAW1D;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAmBzD,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAO9D,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAK1C;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAK1C;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKrC;;OAEG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;OAEG;IACH,cAAc,IAAI,IAAI;IA+BtB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,gBAAgB;IAMxB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
|