@frontmcp/sdk 1.9.0 → 1.9.1-rc.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/auth/flows/oauth.auth-ui.flow.d.ts +1 -1
- package/auth/flows/oauth.authorize.flow.d.ts +3 -3
- package/auth/flows/oauth.callback.flow.d.ts +2 -2
- package/auth/flows/oauth.connect.flow.d.ts +1 -1
- package/auth/flows/oauth.provider-callback.flow.d.ts +2 -2
- package/auth/flows/oauth.register.flow.d.ts +1 -1
- package/auth/flows/oauth.token.flow.d.ts +1 -1
- package/auth/flows/oauth.userinfo.flow.d.ts +1 -1
- package/auth/flows/well-known.jwks.flow.d.ts +3 -3
- package/auth/flows/well-known.oauth-authorization-server.flow.d.ts +2 -2
- package/auth/flows/well-known.prm.flow.d.ts +1 -1
- package/browser/index.cjs +77 -20
- package/browser/index.mjs +94 -38
- package/common/metadata/app.metadata.d.ts +2 -2
- package/common/metadata/front-mcp.metadata.d.ts +64 -64
- package/common/metadata/front-mcp.metadata.d.ts.map +1 -1
- package/common/metadata/output-policy.d.ts +1 -1
- package/common/metadata/tool.metadata.d.ts +1 -1
- package/common/schemas/http-output.schema.d.ts +24 -24
- package/common/types/options/skills-http/schema.d.ts +8 -8
- package/errors/index.d.ts +1 -1
- package/errors/index.d.ts.map +1 -1
- package/errors/registry.errors.d.ts +7 -0
- package/errors/registry.errors.d.ts.map +1 -1
- package/esm/index.mjs +94 -38
- package/front-mcp/static-startup.check.d.ts.map +1 -1
- package/index.d.ts +4 -4
- package/index.js +77 -20
- package/package.json +11 -11
- package/scope/scope.instance.d.ts.map +1 -1
- package/scope/server-entries.helper.d.ts +8 -0
- package/scope/server-entries.helper.d.ts.map +1 -0
- package/skill/cache/skill-http-cache.holder.d.ts.map +1 -1
- package/skill/flows/http/llm-full-txt.flow.d.ts +1 -1
- package/skill/flows/http/llm-txt.flow.d.ts +1 -1
- package/skill/flows/http/skills-api.flow.d.ts +1 -1
- package/tool/flows/call-tool.flow.d.ts.map +1 -1
- package/transport/flows/handle.streamable-http.flow.d.ts +1 -1
- package/utils/lineage.utils.d.ts +7 -0
- package/utils/lineage.utils.d.ts.map +1 -1
package/browser/index.mjs
CHANGED
|
@@ -5423,7 +5423,7 @@ var init_normalization_errors = __esm({
|
|
|
5423
5423
|
});
|
|
5424
5424
|
|
|
5425
5425
|
// libs/sdk/src/errors/registry.errors.ts
|
|
5426
|
-
var RegistryDefinitionNotFoundError, RegistryGraphEntryNotFoundError, RegistryDependencyNotRegisteredError, InvalidRegistryKindError, NameDisambiguationError, EntryValidationError, ToolNameConflictError, FlowNotRegisteredError, UnsupportedHookOwnerKindError;
|
|
5426
|
+
var RegistryDefinitionNotFoundError, RegistryGraphEntryNotFoundError, RegistryDependencyNotRegisteredError, InvalidRegistryKindError, NameDisambiguationError, EntryValidationError, ToolNameConflictError, ReservedAppIdError, FlowNotRegisteredError, UnsupportedHookOwnerKindError;
|
|
5427
5427
|
var init_registry_errors = __esm({
|
|
5428
5428
|
"libs/sdk/src/errors/registry.errors.ts"() {
|
|
5429
5429
|
"use strict";
|
|
@@ -5466,6 +5466,14 @@ var init_registry_errors = __esm({
|
|
|
5466
5466
|
super(`A tool named "${toolName}" is already registered`, "TOOL_NAME_CONFLICT");
|
|
5467
5467
|
}
|
|
5468
5468
|
};
|
|
5469
|
+
ReservedAppIdError = class extends InternalMcpError {
|
|
5470
|
+
constructor(appId) {
|
|
5471
|
+
super(
|
|
5472
|
+
`App id "${appId}" is reserved while @FrontMcp declares tools or resources: a server-level entry named like an app's is listed as "${appId}:<name>". Give the app another id.`,
|
|
5473
|
+
"RESERVED_APP_ID"
|
|
5474
|
+
);
|
|
5475
|
+
}
|
|
5476
|
+
};
|
|
5469
5477
|
FlowNotRegisteredError = class extends InternalMcpError {
|
|
5470
5478
|
constructor(flowName) {
|
|
5471
5479
|
super(`Flow "${flowName}" is not registered`, "FLOW_NOT_REGISTERED");
|
|
@@ -6115,6 +6123,7 @@ __export(errors_exports, {
|
|
|
6115
6123
|
RemoteUnsupportedTransportError: () => RemoteUnsupportedTransportError,
|
|
6116
6124
|
RequestContextNotAvailableError: () => RequestContextNotAvailableError,
|
|
6117
6125
|
RequiredConfigUndefinedError: () => RequiredConfigUndefinedError,
|
|
6126
|
+
ReservedAppIdError: () => ReservedAppIdError,
|
|
6118
6127
|
ResourceNotFoundError: () => ResourceNotFoundError,
|
|
6119
6128
|
ResourceReadError: () => ResourceReadError,
|
|
6120
6129
|
SamplingNotAvailableError: () => SamplingNotAvailableError,
|
|
@@ -13944,7 +13953,19 @@ var init_flow_context_providers = __esm({
|
|
|
13944
13953
|
}
|
|
13945
13954
|
});
|
|
13946
13955
|
|
|
13956
|
+
// libs/sdk/src/front-mcp/front-mcp.tokens.ts
|
|
13957
|
+
var FrontMcpConfig;
|
|
13958
|
+
var init_front_mcp_tokens2 = __esm({
|
|
13959
|
+
"libs/sdk/src/front-mcp/front-mcp.tokens.ts"() {
|
|
13960
|
+
"use strict";
|
|
13961
|
+
FrontMcpConfig = /* @__PURE__ */ Symbol("FrontMcpConfig");
|
|
13962
|
+
}
|
|
13963
|
+
});
|
|
13964
|
+
|
|
13947
13965
|
// libs/sdk/src/utils/lineage.utils.ts
|
|
13966
|
+
function isServerEntryOwner(owner) {
|
|
13967
|
+
return owner?.kind === serverEntryOwner.kind && owner.id === serverEntryOwner.id && owner.ref === serverEntryOwner.ref;
|
|
13968
|
+
}
|
|
13948
13969
|
function ownerKeyOf(lineage) {
|
|
13949
13970
|
return lineage.map((o) => `${o.kind}:${o.id}`).join("/");
|
|
13950
13971
|
}
|
|
@@ -13959,10 +13980,12 @@ function appOwnerIdOf(lineage, owner) {
|
|
|
13959
13980
|
const owners2 = owner ? [...lineage, owner] : lineage;
|
|
13960
13981
|
return owners2.find((candidate) => candidate.kind === "app")?.id;
|
|
13961
13982
|
}
|
|
13962
|
-
var EntryLineageIndex;
|
|
13983
|
+
var serverEntryOwner, EntryLineageIndex;
|
|
13963
13984
|
var init_lineage_utils = __esm({
|
|
13964
13985
|
"libs/sdk/src/utils/lineage.utils.ts"() {
|
|
13965
13986
|
"use strict";
|
|
13987
|
+
init_front_mcp_tokens2();
|
|
13988
|
+
serverEntryOwner = { kind: "scope", id: "server", ref: FrontMcpConfig };
|
|
13966
13989
|
EntryLineageIndex = class {
|
|
13967
13990
|
lineages = /* @__PURE__ */ new Map();
|
|
13968
13991
|
/** Replace the index with these rows; an entry held by several rows keeps the first row's lineage. */
|
|
@@ -14411,9 +14434,9 @@ var init_call_tool_flow = __esm({
|
|
|
14411
14434
|
"checkToolAuthorization: incrementalAuth enabled but the verified token carries no authorized_apps claim \u2014 failing closed"
|
|
14412
14435
|
);
|
|
14413
14436
|
}
|
|
14414
|
-
const appId = tool?.owner?.id;
|
|
14437
|
+
const appId = isServerEntryOwner(tool?.owner) ? void 0 : tool?.owner?.id;
|
|
14415
14438
|
if (!appId) {
|
|
14416
|
-
this.logger.verbose("checkToolAuthorization:skip (no owner)");
|
|
14439
|
+
this.logger.verbose("checkToolAuthorization:skip (no app owner)");
|
|
14417
14440
|
return;
|
|
14418
14441
|
}
|
|
14419
14442
|
const isAppAuthorized = (claimAuthorizedApps?.has(appId) ?? false) || (legacyAuthorization?.authorizedAppIds?.includes(appId) ?? false) || appId in (legacyAuthorization?.authorizedApps || {});
|
|
@@ -16523,15 +16546,6 @@ var init_instance_file_logger = __esm({
|
|
|
16523
16546
|
}
|
|
16524
16547
|
});
|
|
16525
16548
|
|
|
16526
|
-
// libs/sdk/src/front-mcp/front-mcp.tokens.ts
|
|
16527
|
-
var FrontMcpConfig;
|
|
16528
|
-
var init_front_mcp_tokens2 = __esm({
|
|
16529
|
-
"libs/sdk/src/front-mcp/front-mcp.tokens.ts"() {
|
|
16530
|
-
"use strict";
|
|
16531
|
-
FrontMcpConfig = /* @__PURE__ */ Symbol("FrontMcpConfig");
|
|
16532
|
-
}
|
|
16533
|
-
});
|
|
16534
|
-
|
|
16535
16549
|
// libs/sdk/src/regsitry/registry.base.ts
|
|
16536
16550
|
var RegistryAbstract;
|
|
16537
16551
|
var init_registry_base = __esm({
|
|
@@ -53967,7 +53981,7 @@ var init_skill_http_cache = __esm({
|
|
|
53967
53981
|
});
|
|
53968
53982
|
|
|
53969
53983
|
// libs/sdk/src/skill/cache/skill-http-cache.factory.ts
|
|
53970
|
-
import { attachRedisErrorListener as attachRedisErrorListener3 } from "@frontmcp/utils";
|
|
53984
|
+
import { attachRedisErrorListener as attachRedisErrorListener3, getEnv as getEnv11, StorageConfigError } from "@frontmcp/utils";
|
|
53971
53985
|
function hasRedisProvider(redis) {
|
|
53972
53986
|
if (!redis?.provider) return false;
|
|
53973
53987
|
const provider = redis.provider;
|
|
@@ -53995,9 +54009,15 @@ async function createSkillHttpCache(options = {}) {
|
|
|
53995
54009
|
async function createRedisCache(redis, keyPrefix, ttlMs, logger) {
|
|
53996
54010
|
const provider = redis.provider;
|
|
53997
54011
|
if (provider === "vercel-kv" || provider === "@vercel/kv") {
|
|
53998
|
-
const
|
|
54012
|
+
const url = getEnv11("KV_REST_API_URL");
|
|
54013
|
+
const token = getEnv11("KV_REST_API_TOKEN");
|
|
54014
|
+
if (!url || !token) {
|
|
54015
|
+
throw new StorageConfigError("vercel-kv", "KV_REST_API_URL and KV_REST_API_TOKEN must be set.");
|
|
54016
|
+
}
|
|
54017
|
+
const { createClient } = __require("@vercel/kv");
|
|
54018
|
+
const client2 = createClient({ url, token, automaticDeserialization: false });
|
|
53999
54019
|
return new RedisSkillHttpCache({
|
|
54000
|
-
getClient: async () =>
|
|
54020
|
+
getClient: async () => client2,
|
|
54001
54021
|
keyPrefix,
|
|
54002
54022
|
ttlMs
|
|
54003
54023
|
});
|
|
@@ -54043,7 +54063,7 @@ async function getSkillHttpCache(scope) {
|
|
|
54043
54063
|
if (pending) {
|
|
54044
54064
|
return pending;
|
|
54045
54065
|
}
|
|
54046
|
-
const creationPromise = createCacheForScope(scopeId, cacheConfig);
|
|
54066
|
+
const creationPromise = createCacheForScope(scopeId, cacheConfig, scope.logger);
|
|
54047
54067
|
pendingCreation.set(scopeId, creationPromise);
|
|
54048
54068
|
try {
|
|
54049
54069
|
const cache2 = await creationPromise;
|
|
@@ -54053,12 +54073,13 @@ async function getSkillHttpCache(scope) {
|
|
|
54053
54073
|
pendingCreation.delete(scopeId);
|
|
54054
54074
|
}
|
|
54055
54075
|
}
|
|
54056
|
-
async function createCacheForScope(scopeId, cacheConfig) {
|
|
54076
|
+
async function createCacheForScope(scopeId, cacheConfig, logger) {
|
|
54057
54077
|
try {
|
|
54058
54078
|
const { cache: cache2 } = await createSkillHttpCache({
|
|
54059
54079
|
redis: cacheConfig.redis,
|
|
54060
54080
|
ttlMs: cacheConfig.ttlMs,
|
|
54061
|
-
keyPrefix: cacheConfig.keyPrefix ?? `frontmcp:skills:${scopeId}:cache
|
|
54081
|
+
keyPrefix: cacheConfig.keyPrefix ?? `frontmcp:skills:${scopeId}:cache:`,
|
|
54082
|
+
logger
|
|
54062
54083
|
});
|
|
54063
54084
|
return cache2;
|
|
54064
54085
|
} catch (error) {
|
|
@@ -59712,7 +59733,7 @@ var init_handle_mcp_20260728_flow = __esm({
|
|
|
59712
59733
|
});
|
|
59713
59734
|
|
|
59714
59735
|
// libs/sdk/src/ha/ha-headers.ts
|
|
59715
|
-
import { buildSetCookie, getEnv as
|
|
59736
|
+
import { buildSetCookie, getEnv as getEnv12, getMachineId as getMachineId3, getRuntimeContext as getRuntimeContext13 } from "@frontmcp/utils";
|
|
59716
59737
|
function machineIdHeader() {
|
|
59717
59738
|
if (getRuntimeContext13().deployment !== "distributed") return void 0;
|
|
59718
59739
|
return [DEFAULT_FRONTMCP_MACHINE_ID_HEADER, getMachineId3()];
|
|
@@ -59724,9 +59745,9 @@ function applyMachineIdHeader(response) {
|
|
|
59724
59745
|
return true;
|
|
59725
59746
|
}
|
|
59726
59747
|
function affinityCookieOptions() {
|
|
59727
|
-
const name44 =
|
|
59728
|
-
const domain =
|
|
59729
|
-
const rawSameSite =
|
|
59748
|
+
const name44 = getEnv12("FRONTMCP_AFFINITY_COOKIE")?.trim() || DEFAULT_FRONTMCP_NODE_COOKIE;
|
|
59749
|
+
const domain = getEnv12("FRONTMCP_AFFINITY_COOKIE_DOMAIN")?.trim() || void 0;
|
|
59750
|
+
const rawSameSite = getEnv12("FRONTMCP_AFFINITY_COOKIE_SAMESITE")?.trim().toLowerCase();
|
|
59730
59751
|
const sameSite = rawSameSite === "strict" ? "Strict" : rawSameSite === "lax" ? "Lax" : rawSameSite === "none" ? "None" : void 0;
|
|
59731
59752
|
return { name: name44, ...domain ? { domain } : {}, ...sameSite ? { sameSite } : {} };
|
|
59732
59753
|
}
|
|
@@ -64247,6 +64268,29 @@ var init_http_request_flow = __esm({
|
|
|
64247
64268
|
}
|
|
64248
64269
|
});
|
|
64249
64270
|
|
|
64271
|
+
// libs/sdk/src/scope/server-entries.helper.ts
|
|
64272
|
+
async function registerServerEntries(providers, entries, appIds) {
|
|
64273
|
+
if (!entries.tools?.length && !entries.resources?.length) return;
|
|
64274
|
+
if (appIds.includes(serverEntryOwner.id)) throw new ReservedAppIdError(serverEntryOwner.id);
|
|
64275
|
+
const registries = [];
|
|
64276
|
+
if (entries.tools?.length) {
|
|
64277
|
+
registries.push(new ToolRegistry(providers, entries.tools, serverEntryOwner, { adopt: false }).ready);
|
|
64278
|
+
}
|
|
64279
|
+
if (entries.resources?.length) {
|
|
64280
|
+
registries.push(new ResourceRegistry(providers, entries.resources, serverEntryOwner, { adopt: false }).ready);
|
|
64281
|
+
}
|
|
64282
|
+
await Promise.all(registries);
|
|
64283
|
+
}
|
|
64284
|
+
var init_server_entries_helper = __esm({
|
|
64285
|
+
"libs/sdk/src/scope/server-entries.helper.ts"() {
|
|
64286
|
+
"use strict";
|
|
64287
|
+
init_errors();
|
|
64288
|
+
init_resource_registry();
|
|
64289
|
+
init_tool_registry();
|
|
64290
|
+
init_lineage_utils();
|
|
64291
|
+
}
|
|
64292
|
+
});
|
|
64293
|
+
|
|
64250
64294
|
// libs/sdk/src/scope/scope.instance.ts
|
|
64251
64295
|
import "reflect-metadata";
|
|
64252
64296
|
import {
|
|
@@ -64313,6 +64357,7 @@ var init_scope_instance = __esm({
|
|
|
64313
64357
|
init_http_ip_filter_flow();
|
|
64314
64358
|
init_http_request_flow();
|
|
64315
64359
|
init_optional_dependency_util();
|
|
64360
|
+
init_server_entries_helper();
|
|
64316
64361
|
SCOPE_NON_DISPATCHABLE_FLOWS = /* @__PURE__ */ new Set(["http:request"]);
|
|
64317
64362
|
Scope = class _Scope extends ScopeEntry {
|
|
64318
64363
|
id;
|
|
@@ -64744,6 +64789,11 @@ var init_scope_instance = __esm({
|
|
|
64744
64789
|
await scopeAdapters.ready;
|
|
64745
64790
|
this.onDispose(() => scopeAdapters.dispose());
|
|
64746
64791
|
}
|
|
64792
|
+
await registerServerEntries(
|
|
64793
|
+
this.scopeProviders,
|
|
64794
|
+
this.metadata,
|
|
64795
|
+
this.scopeApps.getApps().map((app) => app.id)
|
|
64796
|
+
);
|
|
64747
64797
|
this.initAuthoritiesFromConfig();
|
|
64748
64798
|
this.scopeTools = new ToolRegistry(this.scopeProviders, [], scopeRef);
|
|
64749
64799
|
this.scopeResources = new ResourceRegistry(this.scopeProviders, [], scopeRef);
|
|
@@ -66927,9 +66977,9 @@ var init_ipc_server_transport = __esm({
|
|
|
66927
66977
|
});
|
|
66928
66978
|
|
|
66929
66979
|
// libs/sdk/src/server/middleware/cors-env.ts
|
|
66930
|
-
import { getEnv as
|
|
66980
|
+
import { getEnv as getEnv13 } from "@frontmcp/utils";
|
|
66931
66981
|
function readCorsFromEnv() {
|
|
66932
|
-
const rawOrigins =
|
|
66982
|
+
const rawOrigins = getEnv13("FRONTMCP_CORS_ORIGINS");
|
|
66933
66983
|
if (!rawOrigins) return void 0;
|
|
66934
66984
|
let origins;
|
|
66935
66985
|
try {
|
|
@@ -66940,9 +66990,9 @@ function readCorsFromEnv() {
|
|
|
66940
66990
|
const list = (Array.isArray(origins) ? origins : [origins]).filter((origin) => typeof origin === "string").map((origin) => origin.trim()).filter((origin) => origin.length > 0);
|
|
66941
66991
|
if (list.length === 0) return void 0;
|
|
66942
66992
|
const cors = { origin: list.includes("*") ? true : list };
|
|
66943
|
-
const credentials =
|
|
66993
|
+
const credentials = getEnv13("FRONTMCP_CORS_CREDENTIALS");
|
|
66944
66994
|
if (credentials !== void 0) cors.credentials = credentials === "true" || credentials === "1";
|
|
66945
|
-
const maxAge = Number(
|
|
66995
|
+
const maxAge = Number(getEnv13("FRONTMCP_CORS_MAX_AGE"));
|
|
66946
66996
|
if (Number.isFinite(maxAge) && maxAge > 0) cors.maxAge = maxAge;
|
|
66947
66997
|
return cors;
|
|
66948
66998
|
}
|
|
@@ -66956,10 +67006,10 @@ var init_cors_env = __esm({
|
|
|
66956
67006
|
});
|
|
66957
67007
|
|
|
66958
67008
|
// libs/sdk/src/server/middleware/csp.middleware.ts
|
|
66959
|
-
import { getEnv as
|
|
67009
|
+
import { getEnv as getEnv14, getEnvFlag as getEnvFlag2 } from "@frontmcp/utils";
|
|
66960
67010
|
function readCspFromEnv() {
|
|
66961
67011
|
if (!getEnvFlag2("FRONTMCP_CSP_ENABLED")) return void 0;
|
|
66962
|
-
const rawDirectives =
|
|
67012
|
+
const rawDirectives = getEnv14("FRONTMCP_CSP_DIRECTIVES") ?? "";
|
|
66963
67013
|
const directives = {};
|
|
66964
67014
|
for (const part of rawDirectives.split(";")) {
|
|
66965
67015
|
const trimmed = part.trim();
|
|
@@ -66974,7 +67024,7 @@ function readCspFromEnv() {
|
|
|
66974
67024
|
return {
|
|
66975
67025
|
enabled: true,
|
|
66976
67026
|
directives,
|
|
66977
|
-
reportUri:
|
|
67027
|
+
reportUri: getEnv14("FRONTMCP_CSP_REPORT_URI"),
|
|
66978
67028
|
reportOnly: getEnvFlag2("FRONTMCP_CSP_REPORT_ONLY")
|
|
66979
67029
|
};
|
|
66980
67030
|
}
|
|
@@ -67000,12 +67050,12 @@ function readSecurityHeadersFromEnv() {
|
|
|
67000
67050
|
};
|
|
67001
67051
|
}
|
|
67002
67052
|
function readHeaderEnv(name44, fallback) {
|
|
67003
|
-
const value =
|
|
67053
|
+
const value = getEnv14(name44);
|
|
67004
67054
|
if (value === void 0 || value === "") return fallback;
|
|
67005
67055
|
return ["off", "false", "none"].includes(value.trim().toLowerCase()) ? void 0 : value;
|
|
67006
67056
|
}
|
|
67007
67057
|
function readCustomHeadersFromEnv() {
|
|
67008
|
-
const raw =
|
|
67058
|
+
const raw = getEnv14("FRONTMCP_HEADERS_CUSTOM");
|
|
67009
67059
|
if (!raw) return void 0;
|
|
67010
67060
|
try {
|
|
67011
67061
|
const parsed = JSON.parse(raw);
|
|
@@ -67948,7 +67998,7 @@ var init_server_instance = __esm({
|
|
|
67948
67998
|
|
|
67949
67999
|
// libs/sdk/src/front-mcp/front-mcp.providers.ts
|
|
67950
68000
|
import { ProviderScope as ProviderScope9 } from "@frontmcp/di";
|
|
67951
|
-
import { getEnv as
|
|
68001
|
+
import { getEnv as getEnv15 } from "@frontmcp/utils";
|
|
67952
68002
|
function createMcpGlobalProviders(metadata) {
|
|
67953
68003
|
const isCli = !!metadata["__cliMode"];
|
|
67954
68004
|
const isNoServe = metadata.serve === false;
|
|
@@ -67972,7 +68022,7 @@ var init_front_mcp_providers = __esm({
|
|
|
67972
68022
|
useValue: metadata
|
|
67973
68023
|
})
|
|
67974
68024
|
};
|
|
67975
|
-
defaultHttpOptions = () => ({ port: Number(
|
|
68025
|
+
defaultHttpOptions = () => ({ port: Number(getEnv15("PORT")) || 3e3, entryPath: "/mcp", bodyLimit: "4mb" });
|
|
67976
68026
|
frontMcpServer = AsyncProvider({
|
|
67977
68027
|
name: "frontmcp:server",
|
|
67978
68028
|
scope: ProviderScope9.GLOBAL,
|
|
@@ -68065,9 +68115,10 @@ function collectStaticEntries(config) {
|
|
|
68065
68115
|
};
|
|
68066
68116
|
const visitEntries = (owner, app) => {
|
|
68067
68117
|
const reach = app ? { app } : "every-plugin";
|
|
68118
|
+
const toolReach = app ? { app } : "every-app";
|
|
68068
68119
|
for (const item of owner.tools ?? []) {
|
|
68069
68120
|
const record = tryNormalize(() => normalizeTool(item));
|
|
68070
|
-
if (record) add(`Tool "${record.metadata.id || record.metadata.name}"`, record.metadata,
|
|
68121
|
+
if (record) add(`Tool "${record.metadata.id || record.metadata.name}"`, record.metadata, toolReach);
|
|
68071
68122
|
}
|
|
68072
68123
|
for (const item of owner.resources ?? []) {
|
|
68073
68124
|
if (tryNormalize(() => isResourceTemplate(item))) {
|
|
@@ -68100,7 +68151,10 @@ function collectStaticEntries(config) {
|
|
|
68100
68151
|
visitPlugins(owner.plugins, app);
|
|
68101
68152
|
};
|
|
68102
68153
|
const server = config;
|
|
68103
|
-
visitEntries(
|
|
68154
|
+
visitEntries(
|
|
68155
|
+
{ tools: server.tools, resources: server.resources, skills: server.skills, plugins: server.plugins },
|
|
68156
|
+
void 0
|
|
68157
|
+
);
|
|
68104
68158
|
for (const app of server.apps ?? []) {
|
|
68105
68159
|
const record = tryNormalize(() => normalizeApp(app));
|
|
68106
68160
|
if (record?.kind === "LOCAL_CLASS" /* LOCAL_CLASS */) visitEntries(record.metadata, record);
|
|
@@ -68108,6 +68162,7 @@ function collectStaticEntries(config) {
|
|
|
68108
68162
|
const everyPluginKeys = /* @__PURE__ */ new Set([...everyAppKeys, ...[...ownAppKeys.values()].flatMap((keys) => [...keys])]);
|
|
68109
68163
|
const keysReaching = (reach) => {
|
|
68110
68164
|
if (reach === "every-plugin") return everyPluginKeys;
|
|
68165
|
+
if (reach === "every-app") return everyAppKeys;
|
|
68111
68166
|
if ("agentKeys" in reach) return reach.agentKeys;
|
|
68112
68167
|
return /* @__PURE__ */ new Set([...everyAppKeys, ...ownAppKeys.get(reach.app) ?? []]);
|
|
68113
68168
|
};
|
|
@@ -68156,7 +68211,7 @@ var front_mcp_exports = {};
|
|
|
68156
68211
|
__export(front_mcp_exports, {
|
|
68157
68212
|
FrontMcpInstance: () => FrontMcpInstance
|
|
68158
68213
|
});
|
|
68159
|
-
import { fileExists as fileExists6, getEnv as
|
|
68214
|
+
import { fileExists as fileExists6, getEnv as getEnv16, isEdgeRuntime as isEdgeRuntime2, randomUUID as randomUUID28, unlink } from "@frontmcp/utils";
|
|
68160
68215
|
function resolveConfigInput(optionsOrClass) {
|
|
68161
68216
|
if (typeof optionsOrClass === "function") {
|
|
68162
68217
|
const stored = getDecoratorConfig(optionsOrClass);
|
|
@@ -68224,7 +68279,7 @@ var init_front_mcp = __esm({
|
|
|
68224
68279
|
for (const scope of this.getScopes()) {
|
|
68225
68280
|
await scope.emitServerStarted();
|
|
68226
68281
|
}
|
|
68227
|
-
if (
|
|
68282
|
+
if (getEnv16("FRONTMCP_DEV_BOOTSTRAP_SENTINEL") === "1") {
|
|
68228
68283
|
process.stderr.write(`__FRONTMCP_BOOTSTRAP_COMPLETE__ ${JSON.stringify(this.devListenerInfo(server))}
|
|
68229
68284
|
`);
|
|
68230
68285
|
}
|
|
@@ -71496,6 +71551,7 @@ export {
|
|
|
71496
71551
|
RemoveWorkflowTool,
|
|
71497
71552
|
RequestContextNotAvailableError,
|
|
71498
71553
|
RequiredConfigUndefinedError,
|
|
71554
|
+
ReservedAppIdError,
|
|
71499
71555
|
Resource,
|
|
71500
71556
|
ResourceContext,
|
|
71501
71557
|
ResourceEntry,
|
|
@@ -644,9 +644,9 @@ export declare const frontMcpLocalAppMetadataSchema: import("@frontmcp/lazy-zod"
|
|
|
644
644
|
allowNonFinite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
|
|
645
645
|
schemaMode: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
|
|
646
646
|
description: "description";
|
|
647
|
-
none: "none";
|
|
648
647
|
definition: "definition";
|
|
649
648
|
both: "both";
|
|
649
|
+
none: "none";
|
|
650
650
|
}>>;
|
|
651
651
|
schemaDescriptionFormat: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
|
|
652
652
|
summary: "summary";
|
|
@@ -899,8 +899,8 @@ export declare const frontMcpRemoteAppMetadataSchema: import("@frontmcp/lazy-zod
|
|
|
899
899
|
mode: import("@frontmcp/lazy-zod").ZodLiteral<"static">;
|
|
900
900
|
credentials: import("@frontmcp/lazy-zod").ZodObject<{
|
|
901
901
|
type: import("@frontmcp/lazy-zod").ZodEnum<{
|
|
902
|
-
basic: "basic";
|
|
903
902
|
bearer: "bearer";
|
|
903
|
+
basic: "basic";
|
|
904
904
|
apiKey: "apiKey";
|
|
905
905
|
}>;
|
|
906
906
|
value: import("@frontmcp/lazy-zod").ZodString;
|