@ama-mcp/core 13.3.0-prerelease.14 → 13.3.0-prerelease.22
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/README.md +3 -0
- package/package.json +7 -7
- package/src/cache/index.d.ts +95 -0
- package/src/cache/index.d.ts.map +1 -0
- package/src/cache/index.js +161 -0
- package/src/cache/index.js.map +1 -0
- package/src/logger/index.d.ts +23 -0
- package/src/logger/index.d.ts.map +1 -1
- package/src/logger/index.js +4 -0
- package/src/logger/index.js.map +1 -1
- package/src/public_api.d.ts +1 -0
- package/src/public_api.d.ts.map +1 -1
- package/src/public_api.js +1 -0
- package/src/public_api.js.map +1 -1
- package/src/resource/index.d.ts +6 -0
- package/src/resource/index.d.ts.map +1 -1
- package/src/testing/index.d.ts +1 -0
- package/src/testing/index.d.ts.map +1 -1
- package/src/testing/index.js +1 -0
- package/src/testing/index.js.map +1 -1
- package/src/tool/index.d.ts +3 -10
- package/src/tool/index.d.ts.map +1 -1
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ama-mcp/core",
|
|
3
|
-
"version": "13.3.0-prerelease.
|
|
3
|
+
"version": "13.3.0-prerelease.22",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"description": "This module provides utilities to interact inside an MCP server",
|
|
7
|
+
"description": "Experimental package — This module provides utilities to interact inside an MCP server",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"mcp",
|
|
10
10
|
"otter",
|
|
@@ -42,15 +42,15 @@
|
|
|
42
42
|
"@angular/platform-browser": "~20.3.0",
|
|
43
43
|
"@angular/platform-browser-dynamic": "~20.3.0",
|
|
44
44
|
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.0",
|
|
45
|
-
"@modelcontextprotocol/sdk": "~1.
|
|
45
|
+
"@modelcontextprotocol/sdk": "~1.20.0",
|
|
46
46
|
"@nx/eslint": "~21.6.0",
|
|
47
47
|
"@nx/eslint-plugin": "~21.6.0",
|
|
48
48
|
"@nx/jest": "~21.6.0",
|
|
49
49
|
"@nx/js": "~21.6.0",
|
|
50
|
-
"@o3r/build-helpers": "^13.3.0-prerelease.
|
|
51
|
-
"@o3r/eslint-config": "^13.3.0-prerelease.
|
|
52
|
-
"@o3r/eslint-plugin": "^13.3.0-prerelease.
|
|
53
|
-
"@o3r/test-helpers": "^13.3.0-prerelease.
|
|
50
|
+
"@o3r/build-helpers": "^13.3.0-prerelease.22",
|
|
51
|
+
"@o3r/eslint-config": "^13.3.0-prerelease.22",
|
|
52
|
+
"@o3r/eslint-plugin": "^13.3.0-prerelease.22",
|
|
53
|
+
"@o3r/test-helpers": "^13.3.0-prerelease.22",
|
|
54
54
|
"@stylistic/eslint-plugin": "~5.4.0",
|
|
55
55
|
"@types/jest": "~29.5.2",
|
|
56
56
|
"@types/node": "~22.18.0",
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { type LoggerToolOptions } from '../logger';
|
|
2
|
+
/**
|
|
3
|
+
* Default maximum age for cache entries before they are considered expired.
|
|
4
|
+
* @experimental
|
|
5
|
+
*/
|
|
6
|
+
export declare const DEFAULT_AMA_MCP_CACHE_MAX_AGE_DAYS = 90;
|
|
7
|
+
/**
|
|
8
|
+
* Options for a tool using the cache manager.
|
|
9
|
+
* @experimental
|
|
10
|
+
*/
|
|
11
|
+
export interface CacheToolOptions extends LoggerToolOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Path to the cache file.
|
|
14
|
+
*/
|
|
15
|
+
cacheFilePath?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Maximum age for cache entries before they are considered expired.
|
|
18
|
+
*/
|
|
19
|
+
cacheEntryExpireAfterDays?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Whether to prettify the cache file when writing to disk.
|
|
22
|
+
*/
|
|
23
|
+
prettifyCacheFile?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Whether to disable the cache.
|
|
26
|
+
*/
|
|
27
|
+
disableCache?: boolean;
|
|
28
|
+
}
|
|
29
|
+
interface GetOptions {
|
|
30
|
+
/**
|
|
31
|
+
* Whether to exclude expired entries.
|
|
32
|
+
*/
|
|
33
|
+
excludeExpiredEntries?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A simple cache manager that stores cache entries in a JSON file.
|
|
37
|
+
* @experimental
|
|
38
|
+
*/
|
|
39
|
+
export declare class CacheManager<T> {
|
|
40
|
+
private cache;
|
|
41
|
+
private readonly options;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new CacheManager.
|
|
44
|
+
* @param options CacheManager options.
|
|
45
|
+
*/
|
|
46
|
+
constructor(options: CacheToolOptions);
|
|
47
|
+
private writeCache;
|
|
48
|
+
/**
|
|
49
|
+
* Retrieves a cache entry by key.
|
|
50
|
+
* @param key
|
|
51
|
+
* @param options
|
|
52
|
+
*/
|
|
53
|
+
get(key: string, options?: GetOptions): T | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Sets a cache entry.
|
|
56
|
+
* @param key
|
|
57
|
+
* @param value
|
|
58
|
+
*/
|
|
59
|
+
set(key: string, value: T): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Clears the entire cache.
|
|
62
|
+
*/
|
|
63
|
+
clear(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Loads the cache from the cache file.
|
|
66
|
+
* @param options
|
|
67
|
+
* @param options.throwOnError Whether to throw an error if the cache file cannot be read.
|
|
68
|
+
*/
|
|
69
|
+
initialize(options?: GetOptions & {
|
|
70
|
+
throwOnError?: boolean;
|
|
71
|
+
}): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Iterates over all cache entries.
|
|
74
|
+
* @param callback
|
|
75
|
+
* @param options
|
|
76
|
+
*/
|
|
77
|
+
forEach(callback: (key: string, entry: T | undefined) => void, options?: GetOptions): void;
|
|
78
|
+
/**
|
|
79
|
+
* Checks if a cache entry is expired.
|
|
80
|
+
* @param key
|
|
81
|
+
*/
|
|
82
|
+
isExpired(key: string): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Returns the available keys
|
|
85
|
+
* @param options
|
|
86
|
+
*/
|
|
87
|
+
getKeys(options?: GetOptions): string[];
|
|
88
|
+
/**
|
|
89
|
+
* Returns the available entries
|
|
90
|
+
* @param options
|
|
91
|
+
*/
|
|
92
|
+
getEntries(options?: GetOptions): [string, T][];
|
|
93
|
+
}
|
|
94
|
+
export {};
|
|
95
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,WAAW,CAAC;AAWnB;;;GAGG;AACH,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,UAAU;IAClB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;GAGG;AACH,qBAAa,YAAY,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqF;IAE7G;;;OAGG;gBAED,OAAO,EAAE,gBAAgB;YAYb,UAAU;IAcxB;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,CAAC,GAAG,SAAS;IAQhE;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAQhC;;OAEG;IACI,KAAK;IAKZ;;;;OAIG;IACU,UAAU,CAAC,OAAO,GAAE,UAAU,GAAG;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAO;IA4B7E;;;;OAIG;IACI,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,EAAE,OAAO,GAAE,UAAe;IAM9F;;;OAGG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAYtC;;;OAGG;IACI,OAAO,CAAC,OAAO,GAAE,UAAe,GAAG,MAAM,EAAE;IAQlD;;;OAGG;IACI,UAAU,CAAC,OAAO,GAAE,UAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;CAS3D"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CacheManager = exports.DEFAULT_AMA_MCP_CACHE_MAX_AGE_DAYS = void 0;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const promises_1 = require("node:fs/promises");
|
|
6
|
+
const node_os_1 = require("node:os");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const logger_1 = require("../logger");
|
|
9
|
+
const MS_IN_A_DAY = 1000 * 60 * 60 * 24;
|
|
10
|
+
/**
|
|
11
|
+
* Default maximum age for cache entries before they are considered expired.
|
|
12
|
+
* @experimental
|
|
13
|
+
*/
|
|
14
|
+
exports.DEFAULT_AMA_MCP_CACHE_MAX_AGE_DAYS = 90;
|
|
15
|
+
/**
|
|
16
|
+
* A simple cache manager that stores cache entries in a JSON file.
|
|
17
|
+
* @experimental
|
|
18
|
+
*/
|
|
19
|
+
class CacheManager {
|
|
20
|
+
/**
|
|
21
|
+
* Creates a new CacheManager.
|
|
22
|
+
* @param options CacheManager options.
|
|
23
|
+
*/
|
|
24
|
+
constructor(options) {
|
|
25
|
+
this.cache = {};
|
|
26
|
+
this.options = {
|
|
27
|
+
cacheFilePath: (0, node_path_1.resolve)((0, node_os_1.tmpdir)(), 'ama-mcp-cache.json'),
|
|
28
|
+
cacheEntryExpireAfterDays: exports.DEFAULT_AMA_MCP_CACHE_MAX_AGE_DAYS,
|
|
29
|
+
prettifyCacheFile: false,
|
|
30
|
+
disableCache: false,
|
|
31
|
+
logger: new logger_1.MCPLogger('CacheManager', options.logLevel),
|
|
32
|
+
...options
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async writeCache() {
|
|
36
|
+
if (this.options.disableCache) {
|
|
37
|
+
this.options.logger.debug?.('Cache is disabled; skipping write.');
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const directory = (0, node_path_1.dirname)(this.options.cacheFilePath);
|
|
41
|
+
if (!(0, node_fs_1.existsSync)(directory)) {
|
|
42
|
+
this.options.logger.debug?.(`Creating cache directory at ${directory}`);
|
|
43
|
+
await (0, promises_1.mkdir)(directory, { recursive: true });
|
|
44
|
+
}
|
|
45
|
+
this.options.logger.debug?.(`Writing cache to ${this.options.cacheFilePath}`, this.cache);
|
|
46
|
+
return (0, promises_1.writeFile)(this.options.cacheFilePath, JSON.stringify(this.cache, null, this.options.prettifyCacheFile ? 2 : 0));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Retrieves a cache entry by key.
|
|
50
|
+
* @param key
|
|
51
|
+
* @param options
|
|
52
|
+
*/
|
|
53
|
+
get(key, options = {}) {
|
|
54
|
+
const { excludeExpiredEntries = true } = options;
|
|
55
|
+
if (excludeExpiredEntries && this.isExpired(key)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
return this.cache[key]?.data;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Sets a cache entry.
|
|
62
|
+
* @param key
|
|
63
|
+
* @param value
|
|
64
|
+
*/
|
|
65
|
+
set(key, value) {
|
|
66
|
+
this.cache[key] = {
|
|
67
|
+
updatedAt: new Date().toISOString(),
|
|
68
|
+
data: value
|
|
69
|
+
};
|
|
70
|
+
return this.writeCache();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Clears the entire cache.
|
|
74
|
+
*/
|
|
75
|
+
clear() {
|
|
76
|
+
this.cache = {};
|
|
77
|
+
return this.writeCache();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Loads the cache from the cache file.
|
|
81
|
+
* @param options
|
|
82
|
+
* @param options.throwOnError Whether to throw an error if the cache file cannot be read.
|
|
83
|
+
*/
|
|
84
|
+
async initialize(options = {}) {
|
|
85
|
+
const { excludeExpiredEntries = true, throwOnError = false } = options;
|
|
86
|
+
if (this.options.disableCache) {
|
|
87
|
+
this.options.logger.debug?.('Cache is disabled; skipping initialization.');
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
this.cache = JSON.parse(await (0, promises_1.readFile)(this.options.cacheFilePath, { encoding: 'utf8' }));
|
|
92
|
+
if (excludeExpiredEntries) {
|
|
93
|
+
let cacheUpdated = false;
|
|
94
|
+
Object.keys(this.cache).forEach((key) => {
|
|
95
|
+
if (this.isExpired(key)) {
|
|
96
|
+
delete this.cache[key];
|
|
97
|
+
cacheUpdated = true;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
if (cacheUpdated) {
|
|
101
|
+
await this.writeCache();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
this.options.logger.warn?.(`Could not read cache file at ${this.options.cacheFilePath}, starting with empty cache.`);
|
|
107
|
+
if (throwOnError) {
|
|
108
|
+
throw e;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Iterates over all cache entries.
|
|
114
|
+
* @param callback
|
|
115
|
+
* @param options
|
|
116
|
+
*/
|
|
117
|
+
forEach(callback, options = {}) {
|
|
118
|
+
Object.keys(this.cache).forEach((key) => callback(key, this.get(key, options)));
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Checks if a cache entry is expired.
|
|
122
|
+
* @param key
|
|
123
|
+
*/
|
|
124
|
+
isExpired(key) {
|
|
125
|
+
const entry = this.cache[key];
|
|
126
|
+
if (!entry) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
if (this.options.cacheEntryExpireAfterDays) {
|
|
130
|
+
const ageMs = Date.now() - new Date(entry.updatedAt).getTime();
|
|
131
|
+
return ageMs > (this.options.cacheEntryExpireAfterDays * MS_IN_A_DAY);
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Returns the available keys
|
|
137
|
+
* @param options
|
|
138
|
+
*/
|
|
139
|
+
getKeys(options = {}) {
|
|
140
|
+
const { excludeExpiredEntries = true } = options;
|
|
141
|
+
if (!excludeExpiredEntries) {
|
|
142
|
+
return Object.keys(this.cache);
|
|
143
|
+
}
|
|
144
|
+
return Object.keys(this.cache).filter((key) => !this.isExpired(key));
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Returns the available entries
|
|
148
|
+
* @param options
|
|
149
|
+
*/
|
|
150
|
+
getEntries(options = {}) {
|
|
151
|
+
const { excludeExpiredEntries = true } = options;
|
|
152
|
+
if (!excludeExpiredEntries) {
|
|
153
|
+
return Object.entries(this.cache).map(([key, entry]) => [key, entry.data]);
|
|
154
|
+
}
|
|
155
|
+
return Object.entries(this.cache)
|
|
156
|
+
.filter(([key]) => !this.isExpired(key))
|
|
157
|
+
.map(([key, entry]) => [key, entry.data]);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.CacheManager = CacheManager;
|
|
161
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"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"}
|
package/src/logger/index.d.ts
CHANGED
|
@@ -1,10 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log levels for MCP server logging
|
|
3
|
+
* @experimental
|
|
4
|
+
*/
|
|
1
5
|
export type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'debug';
|
|
2
6
|
/**
|
|
3
7
|
* Logger type for MCP server
|
|
8
|
+
* @experimental
|
|
4
9
|
*/
|
|
5
10
|
export type Logger = {
|
|
6
11
|
[K in LogLevel]?: (message: string, meta?: any) => any;
|
|
7
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* Options for a tool using a logger
|
|
15
|
+
* @experimental
|
|
16
|
+
*/
|
|
17
|
+
export interface LoggerToolOptions {
|
|
18
|
+
/**
|
|
19
|
+
* Logger instance to use for the tool
|
|
20
|
+
*/
|
|
21
|
+
logger?: Logger;
|
|
22
|
+
/**
|
|
23
|
+
* Log level for the tool logger
|
|
24
|
+
*/
|
|
25
|
+
logLevel?: LogLevel;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* MCP Logger implementation
|
|
29
|
+
* @experimental
|
|
30
|
+
*/
|
|
8
31
|
export declare class MCPLogger implements Logger {
|
|
9
32
|
private readonly name;
|
|
10
33
|
private level;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logger/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtE
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logger/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtE;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;KAMlB,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG;CACvD,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAoBD;;;GAGG;AACH,qBAAa,SAAU,YAAW,MAAM;IAEpC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,KAAK;gBADI,IAAI,EAAE,MAAM,EACrB,KAAK,GAAE,QAAiB;IAKlC,OAAO,CAAC,GAAG;IAMJ,QAAQ,CAAC,KAAK,EAAE,QAAQ;IAOxB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIjC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIhC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;CAGzC"}
|
package/src/logger/index.js
CHANGED
|
@@ -15,6 +15,10 @@ const logInStderr = (name, level, message, meta) => process.stderr.write(JSON.st
|
|
|
15
15
|
message,
|
|
16
16
|
meta
|
|
17
17
|
}) + '\n');
|
|
18
|
+
/**
|
|
19
|
+
* MCP Logger implementation
|
|
20
|
+
* @experimental
|
|
21
|
+
*/
|
|
18
22
|
class MCPLogger {
|
|
19
23
|
constructor(name, level = 'info') {
|
|
20
24
|
this.name = name;
|
package/src/logger/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/logger/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/logger/index.ts"],"names":[],"mappings":";;;AAkCA,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAA+B,CAAC;AAE/F;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,KAAe,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CACtG,IAAI,CAAC,SAAS,CAAC;IACb,IAAI;IACJ,KAAK;IACL,OAAO;IACP,IAAI;CACL,CAAC,GAAG,IAAI,CACV,CAAC;AAEF;;;GAGG;AACH,MAAa,SAAS;IACpB,YACmB,IAAY,EACrB,QAAkB,MAAM;QADf,SAAI,GAAJ,IAAI,CAAQ;QACrB,UAAK,GAAL,KAAK,CAAmB;QAEhC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAAU;QACtD,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEM,QAAQ,CAAC,KAAe;QAC7B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,IAAU;QACtC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,IAAU;QACtC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACF;AApCD,8BAoCC"}
|
package/src/public_api.d.ts
CHANGED
package/src/public_api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_api.d.ts","sourceRoot":"","sources":["../../src/public_api.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"public_api.d.ts","sourceRoot":"","sources":["../../src/public_api.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
package/src/public_api.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./cache/index"), exports);
|
|
4
5
|
tslib_1.__exportStar(require("./logger/index"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./resource/index"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./testing/index"), exports);
|
package/src/public_api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_api.js","sourceRoot":"","sources":["../../src/public_api.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,2DAAiC;AACjC,0DAAgC;AAChC,uDAA6B"}
|
|
1
|
+
{"version":3,"file":"public_api.js","sourceRoot":"","sources":["../../src/public_api.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,yDAA+B;AAC/B,2DAAiC;AACjC,0DAAgC;AAChC,uDAA6B"}
|
package/src/resource/index.d.ts
CHANGED
|
@@ -4,4 +4,10 @@
|
|
|
4
4
|
* value: resource content
|
|
5
5
|
*/
|
|
6
6
|
export declare const resourceRegistry: Map<string, string>;
|
|
7
|
+
export interface ResourceToolOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Prefix for resource URIs managed by the tool.
|
|
10
|
+
*/
|
|
11
|
+
uriPrefix: string;
|
|
12
|
+
}
|
|
7
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resource/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,qBAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resource/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,qBAA4B,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
package/src/testing/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
4
4
|
* Set up an MCP client and server for testing purposes.
|
|
5
5
|
* DO NOT USE OUTSIDE OF TESTS.
|
|
6
6
|
* @param mcpServer
|
|
7
|
+
* @experimental
|
|
7
8
|
*/
|
|
8
9
|
export declare const setUpClientAndServerForTesting: (mcpServer: McpServer) => Promise<{
|
|
9
10
|
mcpServer: McpServer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACP,MAAM,2CAA2C,CAAC;AAInD,OAAO,KAAK,EACV,SAAS,EACV,MAAM,yCAAyC,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACP,MAAM,2CAA2C,CAAC;AAInD,OAAO,KAAK,EACV,SAAS,EACV,MAAM,yCAAyC,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,GAAU,WAAW,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;EAWxE,CAAC"}
|
package/src/testing/index.js
CHANGED
|
@@ -7,6 +7,7 @@ const inMemory_js_1 = require("@modelcontextprotocol/sdk/inMemory.js");
|
|
|
7
7
|
* Set up an MCP client and server for testing purposes.
|
|
8
8
|
* DO NOT USE OUTSIDE OF TESTS.
|
|
9
9
|
* @param mcpServer
|
|
10
|
+
* @experimental
|
|
10
11
|
*/
|
|
11
12
|
const setUpClientAndServerForTesting = async (mcpServer) => {
|
|
12
13
|
const [clientTransport, serverTransport] = inMemory_js_1.InMemoryTransport.createLinkedPair();
|
package/src/testing/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":";;;AAAA,wEAEmD;AACnD,uEAE+C;AAK/C
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":";;;AAAA,wEAEmD;AACnD,uEAE+C;AAK/C;;;;;GAKG;AACI,MAAM,8BAA8B,GAAG,KAAK,EAAE,SAAoB,EAAE,EAAE;IAC3E,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,+BAAiB,CAAC,gBAAgB,EAAE,CAAC;IAChF,MAAM,MAAM,GAAG,IAAI,iBAAM,CAAC;QACxB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;QAC/B,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;KAC1C,CAAC,CAAC;IACH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC,CAAC;AAXW,QAAA,8BAA8B,kCAWzC"}
|
package/src/tool/index.d.ts
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LoggerToolOptions } from '../logger';
|
|
2
2
|
/**
|
|
3
3
|
* Possible override for tool definition
|
|
4
|
+
* @experimental
|
|
4
5
|
*/
|
|
5
|
-
export interface ToolDefinition {
|
|
6
|
-
/**
|
|
7
|
-
* Logger instance to use for the tool
|
|
8
|
-
*/
|
|
9
|
-
logger?: Logger;
|
|
10
|
-
/**
|
|
11
|
-
* Log level for the tool logger
|
|
12
|
-
*/
|
|
13
|
-
logLevel?: LogLevel;
|
|
6
|
+
export interface ToolDefinition extends LoggerToolOptions {
|
|
14
7
|
/**
|
|
15
8
|
* Tool name
|
|
16
9
|
*/
|
package/src/tool/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tool/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tool/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAEnB;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|