@happyvertical/smrt-core 0.55.24 → 0.56.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/collection-reads.md +6 -3
- package/agents/generators.md +53 -0
- package/agents/object-runtime.md +3 -0
- package/agents/recipes.md +7 -4
- package/dist/browser.d.ts +2 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +3 -1
- package/dist/collection.d.ts +4 -0
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +19 -9
- package/dist/collection.js.map +1 -1
- package/dist/consumer-plugin/hosted-sti-collections.d.ts.map +1 -1
- package/dist/consumer-plugin/hosted-sti-collections.js +4 -2
- package/dist/consumer-plugin/hosted-sti-collections.js.map +1 -1
- package/dist/cookbook/engine/commands.d.ts.map +1 -1
- package/dist/cookbook/engine/commands.js +12 -0
- package/dist/cookbook/engine/commands.js.map +1 -1
- package/dist/cookbook/engine/defaults.d.ts.map +1 -1
- package/dist/cookbook/engine/defaults.js +8 -0
- package/dist/cookbook/engine/defaults.js.map +1 -1
- package/dist/cookbook/engine/document.d.ts +4 -0
- package/dist/cookbook/engine/document.d.ts.map +1 -1
- package/dist/cookbook/engine/document.js +11 -3
- package/dist/cookbook/engine/document.js.map +1 -1
- package/dist/cookbook/engine/engine.d.ts.map +1 -1
- package/dist/cookbook/engine/engine.js +3 -1
- package/dist/cookbook/engine/engine.js.map +1 -1
- package/dist/cookbook/engine/schemas.d.ts.map +1 -1
- package/dist/cookbook/engine/schemas.js +8 -0
- package/dist/cookbook/engine/schemas.js.map +1 -1
- package/dist/cookbook/engine/types.d.ts +5 -1
- package/dist/cookbook/engine/types.d.ts.map +1 -1
- package/dist/cookbook/engine/types.js.map +1 -1
- package/dist/decorators/index.d.ts +2 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js.map +1 -1
- package/dist/generators/index.d.ts +1 -0
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +2 -1
- package/dist/generators/mcp-runtime-template.d.ts +3 -0
- package/dist/generators/mcp-runtime-template.d.ts.map +1 -1
- package/dist/generators/mcp-runtime-template.js +30 -4
- package/dist/generators/mcp-runtime-template.js.map +1 -1
- package/dist/generators/mcp.d.ts +5 -0
- package/dist/generators/mcp.d.ts.map +1 -1
- package/dist/generators/mcp.js +82 -9
- package/dist/generators/mcp.js.map +1 -1
- package/dist/generators/preflight-route.d.ts.map +1 -1
- package/dist/generators/preflight-route.js +3 -1
- package/dist/generators/preflight-route.js.map +1 -1
- package/dist/generators/rest.d.ts.map +1 -1
- package/dist/generators/rest.js +5 -0
- package/dist/generators/rest.js.map +1 -1
- package/dist/generators/swagger.d.ts.map +1 -1
- package/dist/generators/swagger.js +3 -1
- package/dist/generators/swagger.js.map +1 -1
- package/dist/generators.js +2 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/manifest/browser-capability.generated.js +34 -5
- package/dist/manifest/browser-capability.generated.js.map +1 -1
- package/dist/manifest/index.js +1 -1
- package/dist/manifest/static-manifest.d.ts.map +1 -1
- package/dist/manifest/static-manifest.js +9 -1
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest/store.js.map +1 -1
- package/dist/manifest.json +9 -1
- package/dist/mcp-serializer.d.ts +38 -0
- package/dist/mcp-serializer.d.ts.map +1 -0
- package/dist/mcp-serializer.js +60 -0
- package/dist/mcp-serializer.js.map +1 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/index.js +34 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/index.js.map +1 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/errors.js +343 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/errors.js.map +1 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/get-format.js +109 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/get-format.js.map +1 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/package-json-reader.js +102 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/package-json-reader.js.map +1 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/resolve.js +673 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/resolve.js.map +1 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/utils.js +32 -0
- package/dist/node_modules/.pnpm/import-meta-resolve@4.2.0/node_modules/import-meta-resolve/lib/utils.js.map +1 -0
- package/dist/object.d.ts +2 -0
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +51 -0
- package/dist/object.js.map +1 -1
- package/dist/operation-permission.d.ts +10 -0
- package/dist/operation-permission.d.ts.map +1 -0
- package/dist/operation-permission.js +36 -0
- package/dist/operation-permission.js.map +1 -0
- package/dist/registry/class-registration.d.ts.map +1 -1
- package/dist/registry/class-registration.js +12 -0
- package/dist/registry/class-registration.js.map +1 -1
- package/dist/registry/types.d.ts +18 -3
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +47 -0
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/scanner/types.d.ts +5 -0
- package/dist/scanner/types.d.ts.map +1 -1
- package/dist/scanner/types.js.map +1 -1
- package/dist/smrt-knowledge.json +18 -11
- package/dist/utils/import-project-vite.js +1 -1
- package/dist/utils/import-workspace-module.js +1 -1
- package/dist/vite-plugin/api-client-entries.d.ts.map +1 -1
- package/dist/vite-plugin/api-client-entries.js +1 -0
- package/dist/vite-plugin/api-client-entries.js.map +1 -1
- package/dist/vite-plugin/dev-plane-route.js +1 -1
- package/dist/vite-plugin/import-build-aware.js +1 -1
- package/dist/vite-plugin/index.js +1 -1
- package/dist/vite-plugin/resources-route.js +1 -1
- package/dist/vite-plugin/sveltekit-generator.d.ts +0 -4
- package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -1
- package/dist/vite-plugin/sveltekit-generator.js +37 -25
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
- package/package.json +16 -10
package/dist/generators/mcp.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { type CustomActionMetadata, type ToolEffect } from './custom-action.js';
|
|
7
7
|
import { type ToolJsonSchema } from './tool-schema.js';
|
|
8
|
+
export { type McpGetSerializer, type McpGetSerializerReference, resolveMcpGetSerializer, } from '../mcp-serializer.js';
|
|
8
9
|
export type { ToolEffect } from './custom-action.js';
|
|
9
10
|
export { assertMcpJsonSchemaSafety, type ToolJsonSchema, } from './tool-schema.js';
|
|
10
11
|
/**
|
|
@@ -206,6 +207,7 @@ export declare class MCPGenerator {
|
|
|
206
207
|
private config;
|
|
207
208
|
private context;
|
|
208
209
|
private collections;
|
|
210
|
+
private getSerializers;
|
|
209
211
|
constructor(config?: MCPConfig, context?: MCPContext);
|
|
210
212
|
/**
|
|
211
213
|
* Get server name
|
|
@@ -341,6 +343,9 @@ export declare class MCPGenerator {
|
|
|
341
343
|
* invoked inside the tenant gate established by {@link executeAction}.
|
|
342
344
|
*/
|
|
343
345
|
private runAction;
|
|
346
|
+
private getSerializerReference;
|
|
347
|
+
private serializeGetResult;
|
|
348
|
+
private runtimeGetSerializers;
|
|
344
349
|
/**
|
|
345
350
|
* Execute a custom action on a collection/object
|
|
346
351
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/generators/mcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/generators/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/generators/mcp.js
CHANGED
|
@@ -5,6 +5,7 @@ import { SmrtCollection } from "../collection.js";
|
|
|
5
5
|
import { readFieldEnum } from "../registry/manifest-field-merge.js";
|
|
6
6
|
import { ObjectRegistry } from "../registry.js";
|
|
7
7
|
import { SMRT_CUSTOM_ACTION_ERROR_METADATA_KEY, buildCustomActionInvocationArgs, customActionParameterInputName, isCrudOperation, isCrudToolAction, isFrameworkLifecycleMethod, normalizeCustomActionFailure, resolveCustomActionMetadata } from "./custom-action.js";
|
|
8
|
+
import { resolveMcpGetSerializer } from "../mcp-serializer.js";
|
|
8
9
|
import { resolveDisplayLabelField } from "../ui-metadata.js";
|
|
9
10
|
import { generatedSiblingExtension, renderGeneratedSource, resolveGeneratedSourceLanguage } from "./mcp-emit.js";
|
|
10
11
|
import { generateClaudeConfig, generateMCPDocumentation, generateMCPScript, generateRuntimeBootstrap } from "./mcp-runtime-template.js";
|
|
@@ -32,6 +33,15 @@ import { dirname, resolve } from "node:path";
|
|
|
32
33
|
async function writeGeneratedFile(targetPath, source, language) {
|
|
33
34
|
await writeFile(targetPath, await renderGeneratedSource(source, language, targetPath), "utf-8");
|
|
34
35
|
}
|
|
36
|
+
function normalizePublicToolError(error) {
|
|
37
|
+
if (!error || typeof error !== "object") return void 0;
|
|
38
|
+
const candidate = error;
|
|
39
|
+
if (typeof candidate.code !== "string" || !/^[A-Za-z][A-Za-z0-9_.:-]{0,127}$/.test(candidate.code) || typeof candidate.publicMessage !== "string" || candidate.publicMessage.length === 0) return void 0;
|
|
40
|
+
return {
|
|
41
|
+
code: candidate.code,
|
|
42
|
+
message: candidate.publicMessage
|
|
43
|
+
};
|
|
44
|
+
}
|
|
35
45
|
var MCP_STABLE_CATALOG_TTL_MS = 864e5;
|
|
36
46
|
/**
|
|
37
47
|
* Resolve the generated tools/list cache policy at generation time.
|
|
@@ -145,6 +155,7 @@ var MCPGenerator = class {
|
|
|
145
155
|
config;
|
|
146
156
|
context;
|
|
147
157
|
collections = /* @__PURE__ */ new Map();
|
|
158
|
+
getSerializers = /* @__PURE__ */ new Map();
|
|
148
159
|
constructor(config = {}, context = {}) {
|
|
149
160
|
this.config = {
|
|
150
161
|
name: "smrt-mcp-server",
|
|
@@ -184,11 +195,13 @@ var MCPGenerator = class {
|
|
|
184
195
|
generated.add(classInfo);
|
|
185
196
|
if (scope && !scope.has(classInfo)) continue;
|
|
186
197
|
if (isFrameworkBaseClass(simpleName, classInfo.packageName)) continue;
|
|
187
|
-
const
|
|
198
|
+
const config = ObjectRegistry.getConfig(key);
|
|
199
|
+
const mcpConfig = config.mcp;
|
|
188
200
|
if (mcpConfig === false) continue;
|
|
189
201
|
const excluded = typeof mcpConfig === "object" && mcpConfig?.exclude ? mcpConfig.exclude : [];
|
|
190
202
|
const included = typeof mcpConfig === "object" ? mcpConfig?.include : void 0;
|
|
191
203
|
const shouldInclude = (endpoint) => {
|
|
204
|
+
if (config.abstract && endpoint !== "list" && endpoint !== "get") return false;
|
|
192
205
|
if (included && !included.includes(endpoint)) return false;
|
|
193
206
|
if (excluded.includes(endpoint)) return false;
|
|
194
207
|
return true;
|
|
@@ -282,7 +295,7 @@ var MCPGenerator = class {
|
|
|
282
295
|
outputSchema: this.buildOutputSchema(objectName, "delete", fields),
|
|
283
296
|
annotations: mcpToolAnnotations("delete")
|
|
284
297
|
});
|
|
285
|
-
if (classInfo) {
|
|
298
|
+
if (classInfo && !ObjectRegistry.getConfig(objectName).abstract) {
|
|
286
299
|
const mcpConfig = ObjectRegistry.getConfig(objectName).mcp;
|
|
287
300
|
const included = typeof mcpConfig === "object" ? mcpConfig?.include : void 0;
|
|
288
301
|
const excluded = typeof mcpConfig === "object" && mcpConfig?.exclude ? mcpConfig.exclude : [];
|
|
@@ -593,14 +606,15 @@ var MCPGenerator = class {
|
|
|
593
606
|
_meta: { [SMRT_CUSTOM_ACTION_ERROR_METADATA_KEY]: error.failure }
|
|
594
607
|
};
|
|
595
608
|
}
|
|
596
|
-
const
|
|
609
|
+
const publicError = normalizePublicToolError(error);
|
|
610
|
+
const message = publicError?.message ?? (error instanceof Error ? error.message : "Unknown error");
|
|
597
611
|
return {
|
|
598
612
|
content: [{
|
|
599
613
|
type: "text",
|
|
600
614
|
text: `Error: ${message}`
|
|
601
615
|
}],
|
|
602
616
|
isError: true,
|
|
603
|
-
structuredContent: { error: { message } }
|
|
617
|
+
structuredContent: { error: publicError ?? { message } }
|
|
604
618
|
};
|
|
605
619
|
}
|
|
606
620
|
}
|
|
@@ -876,7 +890,7 @@ var MCPGenerator = class {
|
|
|
876
890
|
const filter = args.id ? args.id : args.slug;
|
|
877
891
|
const item = await collection.get(filter);
|
|
878
892
|
if (!item) throw new Error("Object not found");
|
|
879
|
-
return this.
|
|
893
|
+
return this.serializeGetResult(objectName, item);
|
|
880
894
|
}
|
|
881
895
|
case "create": {
|
|
882
896
|
const createData = this.applyWritablePolicy(objectName, args);
|
|
@@ -914,6 +928,37 @@ var MCPGenerator = class {
|
|
|
914
928
|
}
|
|
915
929
|
}
|
|
916
930
|
}
|
|
931
|
+
getSerializerReference(objectName) {
|
|
932
|
+
if (!objectName) return void 0;
|
|
933
|
+
const mcp = ObjectRegistry.getConfig(objectName)?.mcp;
|
|
934
|
+
return mcp && typeof mcp === "object" ? mcp.serializers?.get : void 0;
|
|
935
|
+
}
|
|
936
|
+
async serializeGetResult(objectName, item) {
|
|
937
|
+
const reference = this.getSerializerReference(objectName);
|
|
938
|
+
if (!reference) return this.toPublicData(item);
|
|
939
|
+
const cacheKey = `${objectName ?? ""}\u0000${reference.importPath}\u0000${reference.exportName}`;
|
|
940
|
+
let serializerPromise = this.getSerializers.get(cacheKey);
|
|
941
|
+
if (!serializerPromise) {
|
|
942
|
+
serializerPromise = resolveMcpGetSerializer(reference, {
|
|
943
|
+
parentUrl: import.meta.url,
|
|
944
|
+
ownerRegistryKey: objectName
|
|
945
|
+
});
|
|
946
|
+
this.getSerializers.set(cacheKey, serializerPromise);
|
|
947
|
+
}
|
|
948
|
+
const serializer = await serializerPromise;
|
|
949
|
+
const options = this.getPublicJsonOptions();
|
|
950
|
+
return this.toPublicData(await serializer(item, options), /* @__PURE__ */ new WeakSet(), options);
|
|
951
|
+
}
|
|
952
|
+
runtimeGetSerializers(tools) {
|
|
953
|
+
const serializers = {};
|
|
954
|
+
for (const tool of tools) {
|
|
955
|
+
if (this.toolTarget(tool).action !== "get") continue;
|
|
956
|
+
const owner = this.toolClass(tool);
|
|
957
|
+
const reference = this.getSerializerReference(owner?.key);
|
|
958
|
+
if (reference) serializers[tool.name] = reference;
|
|
959
|
+
}
|
|
960
|
+
return serializers;
|
|
961
|
+
}
|
|
917
962
|
/**
|
|
918
963
|
* Execute a custom action on a collection/object
|
|
919
964
|
*/
|
|
@@ -1014,6 +1059,7 @@ var MCPGenerator = class {
|
|
|
1014
1059
|
debug,
|
|
1015
1060
|
tools,
|
|
1016
1061
|
toolTargets: this.runtimeToolTargets(tools),
|
|
1062
|
+
getSerializers: this.runtimeGetSerializers(tools),
|
|
1017
1063
|
customActions: await this.runtimeCustomActions(tools),
|
|
1018
1064
|
taskActions: await this.runtimeTaskActions(tools),
|
|
1019
1065
|
tenantScopedObjects,
|
|
@@ -1259,7 +1305,7 @@ ${indent} if (!item) {
|
|
|
1259
1305
|
${indent} throw new Error('Object not found');
|
|
1260
1306
|
${indent} }
|
|
1261
1307
|
|
|
1262
|
-
${indent} return successResult(
|
|
1308
|
+
${indent} return successResult(await serializeGetResult(${JSON.stringify(tool.name)}, item));
|
|
1263
1309
|
${indent}}`;
|
|
1264
1310
|
case "create": return `${indent}case '${tool.name}': {
|
|
1265
1311
|
${indent} const { collection, objectName: targetObjectName } = await resolveCreateTarget(${JSON.stringify(objectName)}, ${JSON.stringify(lookup)}, args, aiConfig);
|
|
@@ -1372,6 +1418,7 @@ ${indent}}`;
|
|
|
1372
1418
|
const switchCases = await this.generateToolSwitchCases(" ", tools);
|
|
1373
1419
|
const stiTargets = this.runtimeStiTargets(tools);
|
|
1374
1420
|
const toolTargets = this.runtimeToolTargets(tools);
|
|
1421
|
+
const getSerializers = this.runtimeGetSerializers(tools);
|
|
1375
1422
|
const tenantScopedSet = Array.from(new Set(tenantScopedObjects.map((n) => n.toLowerCase())));
|
|
1376
1423
|
const hasTenantScoped = tenantScopedSet.length > 0;
|
|
1377
1424
|
return `/**
|
|
@@ -1406,8 +1453,22 @@ const PUBLIC_JSON_OPTIONS = {
|
|
|
1406
1453
|
.map((permission) => permission.trim())
|
|
1407
1454
|
.filter(Boolean),
|
|
1408
1455
|
};
|
|
1456
|
+
const GET_SERIALIZERS: Record<string, { importPath: string; exportName: string }> = ${JSON.stringify(getSerializers)};
|
|
1409
1457
|
const STI_TARGETS: Record<string, Record<string, string>> = ${JSON.stringify(stiTargets)};
|
|
1410
1458
|
|
|
1459
|
+
async function serializeGetResult(toolName: string, item: any): Promise<any> {
|
|
1460
|
+
const reference = GET_SERIALIZERS[toolName];
|
|
1461
|
+
if (!reference) return item.toPublicJSON(PUBLIC_JSON_OPTIONS);
|
|
1462
|
+
const serializerModule = await import(reference.importPath);
|
|
1463
|
+
const serializer = serializerModule[reference.exportName];
|
|
1464
|
+
if (typeof serializer !== 'function') {
|
|
1465
|
+
throw new Error(
|
|
1466
|
+
\`MCP get serializer '\${reference.exportName}' was not exported by '\${reference.importPath}'\`,
|
|
1467
|
+
);
|
|
1468
|
+
}
|
|
1469
|
+
return toPublicResult(await serializer(item, PUBLIC_JSON_OPTIONS));
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1411
1472
|
/**
|
|
1412
1473
|
* Mass-assignment guard (#1540): strip framework/server-managed and
|
|
1413
1474
|
* \`@field({ readonly: true })\` fields from create/update bodies, intersecting
|
|
@@ -1498,6 +1559,17 @@ function errorResult(structuredContent: any, text: string, _meta?: Record<string
|
|
|
1498
1559
|
};
|
|
1499
1560
|
}
|
|
1500
1561
|
|
|
1562
|
+
function normalizePublicToolError(error: any): { code: string; message: string } | undefined {
|
|
1563
|
+
if (!error || typeof error !== 'object') return undefined;
|
|
1564
|
+
if (
|
|
1565
|
+
typeof error.code !== 'string' ||
|
|
1566
|
+
!/^[A-Za-z][A-Za-z0-9_.:-]{0,127}$/.test(error.code) ||
|
|
1567
|
+
typeof error.publicMessage !== 'string' ||
|
|
1568
|
+
error.publicMessage.length === 0
|
|
1569
|
+
) return undefined;
|
|
1570
|
+
return { code: error.code, message: error.publicMessage };
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1501
1573
|
/**
|
|
1502
1574
|
* Handle tool call request
|
|
1503
1575
|
*/
|
|
@@ -1531,10 +1603,11 @@ ${hasTenantScoped ? `
|
|
|
1531
1603
|
|
|
1532
1604
|
return result;
|
|
1533
1605
|
} catch (error) {
|
|
1534
|
-
const
|
|
1606
|
+
const publicError = normalizePublicToolError(error);
|
|
1607
|
+
const errorMessage = publicError?.message ?? (error instanceof Error ? error.message : 'Unknown error');
|
|
1535
1608
|
|
|
1536
1609
|
return errorResult(
|
|
1537
|
-
{ error: { message: errorMessage } },
|
|
1610
|
+
{ error: publicError ?? { message: errorMessage } },
|
|
1538
1611
|
\`Error executing tool \${name}: \${errorMessage}\`,
|
|
1539
1612
|
);
|
|
1540
1613
|
}
|
|
@@ -1664,6 +1737,6 @@ if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href)
|
|
|
1664
1737
|
}
|
|
1665
1738
|
};
|
|
1666
1739
|
//#endregion
|
|
1667
|
-
export { MCPGenerator, MCP_STABLE_CATALOG_TTL_MS, assertMcpJsonSchemaSafety, mcpToolAnnotations, mcpToolAnnotationsFor, resolveMCPToolListCacheHint, sortMCPTools };
|
|
1740
|
+
export { MCPGenerator, MCP_STABLE_CATALOG_TTL_MS, assertMcpJsonSchemaSafety, mcpToolAnnotations, mcpToolAnnotationsFor, resolveMCPToolListCacheHint, resolveMcpGetSerializer, sortMCPTools };
|
|
1668
1741
|
|
|
1669
1742
|
//# sourceMappingURL=mcp.js.map
|