@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.
Files changed (40) hide show
  1. package/auth/flows/oauth.auth-ui.flow.d.ts +1 -1
  2. package/auth/flows/oauth.authorize.flow.d.ts +3 -3
  3. package/auth/flows/oauth.callback.flow.d.ts +2 -2
  4. package/auth/flows/oauth.connect.flow.d.ts +1 -1
  5. package/auth/flows/oauth.provider-callback.flow.d.ts +2 -2
  6. package/auth/flows/oauth.register.flow.d.ts +1 -1
  7. package/auth/flows/oauth.token.flow.d.ts +1 -1
  8. package/auth/flows/oauth.userinfo.flow.d.ts +1 -1
  9. package/auth/flows/well-known.jwks.flow.d.ts +3 -3
  10. package/auth/flows/well-known.oauth-authorization-server.flow.d.ts +2 -2
  11. package/auth/flows/well-known.prm.flow.d.ts +1 -1
  12. package/browser/index.cjs +77 -20
  13. package/browser/index.mjs +94 -38
  14. package/common/metadata/app.metadata.d.ts +2 -2
  15. package/common/metadata/front-mcp.metadata.d.ts +64 -64
  16. package/common/metadata/front-mcp.metadata.d.ts.map +1 -1
  17. package/common/metadata/output-policy.d.ts +1 -1
  18. package/common/metadata/tool.metadata.d.ts +1 -1
  19. package/common/schemas/http-output.schema.d.ts +24 -24
  20. package/common/types/options/skills-http/schema.d.ts +8 -8
  21. package/errors/index.d.ts +1 -1
  22. package/errors/index.d.ts.map +1 -1
  23. package/errors/registry.errors.d.ts +7 -0
  24. package/errors/registry.errors.d.ts.map +1 -1
  25. package/esm/index.mjs +94 -38
  26. package/front-mcp/static-startup.check.d.ts.map +1 -1
  27. package/index.d.ts +4 -4
  28. package/index.js +77 -20
  29. package/package.json +11 -11
  30. package/scope/scope.instance.d.ts.map +1 -1
  31. package/scope/server-entries.helper.d.ts +8 -0
  32. package/scope/server-entries.helper.d.ts.map +1 -0
  33. package/skill/cache/skill-http-cache.holder.d.ts.map +1 -1
  34. package/skill/flows/http/llm-full-txt.flow.d.ts +1 -1
  35. package/skill/flows/http/llm-txt.flow.d.ts +1 -1
  36. package/skill/flows/http/skills-api.flow.d.ts +1 -1
  37. package/tool/flows/call-tool.flow.d.ts.map +1 -1
  38. package/transport/flows/handle.streamable-http.flow.d.ts +1 -1
  39. package/utils/lineage.utils.d.ts +7 -0
  40. package/utils/lineage.utils.d.ts.map +1 -1
@@ -25,8 +25,8 @@ declare const extraOutputSchema: import("@frontmcp/lazy-zod").ZodObject<{
25
25
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
26
26
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
27
27
  strict: "strict";
28
- lax: "lax";
29
28
  none: "none";
29
+ lax: "lax";
30
30
  }>>;
31
31
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
32
32
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -114,8 +114,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
114
114
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
115
115
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
116
116
  strict: "strict";
117
- lax: "lax";
118
117
  none: "none";
118
+ lax: "lax";
119
119
  }>>;
120
120
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
121
121
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -135,8 +135,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
135
135
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
136
136
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
137
137
  strict: "strict";
138
- lax: "lax";
139
138
  none: "none";
139
+ lax: "lax";
140
140
  }>>;
141
141
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
142
142
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -154,8 +154,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
154
154
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
155
155
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
156
156
  strict: "strict";
157
- lax: "lax";
158
157
  none: "none";
158
+ lax: "lax";
159
159
  }>>;
160
160
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
161
161
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -66,8 +66,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
66
66
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
67
67
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
68
68
  strict: "strict";
69
- lax: "lax";
70
69
  none: "none";
70
+ lax: "lax";
71
71
  }>>;
72
72
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
73
73
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -85,8 +85,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
85
85
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
86
86
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
87
87
  strict: "strict";
88
- lax: "lax";
89
88
  none: "none";
89
+ lax: "lax";
90
90
  }>>;
91
91
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
92
92
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -40,8 +40,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodObject<{
40
40
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
41
41
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
42
42
  strict: "strict";
43
- lax: "lax";
44
43
  none: "none";
44
+ lax: "lax";
45
45
  }>>;
46
46
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
47
47
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -54,8 +54,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
54
54
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
55
55
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
56
56
  strict: "strict";
57
- lax: "lax";
58
57
  none: "none";
58
+ lax: "lax";
59
59
  }>>;
60
60
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
61
61
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -73,8 +73,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
73
73
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
74
74
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
75
75
  strict: "strict";
76
- lax: "lax";
77
76
  none: "none";
77
+ lax: "lax";
78
78
  }>>;
79
79
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
80
80
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -38,8 +38,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodObject<{
38
38
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
39
39
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
40
40
  strict: "strict";
41
- lax: "lax";
42
41
  none: "none";
42
+ lax: "lax";
43
43
  }>>;
44
44
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
45
45
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -84,8 +84,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodObject<{
84
84
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
85
85
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
86
86
  strict: "strict";
87
- lax: "lax";
88
87
  none: "none";
88
+ lax: "lax";
89
89
  }>>;
90
90
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
91
91
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -41,8 +41,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodObject<{
41
41
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
42
42
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
43
43
  strict: "strict";
44
- lax: "lax";
45
44
  none: "none";
45
+ lax: "lax";
46
46
  }>>;
47
47
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
48
48
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -24,8 +24,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
24
24
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
25
25
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
26
26
  strict: "strict";
27
- lax: "lax";
28
27
  none: "none";
28
+ lax: "lax";
29
29
  }>>;
30
30
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
31
31
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -45,8 +45,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
45
45
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
46
46
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
47
47
  strict: "strict";
48
- lax: "lax";
49
48
  none: "none";
49
+ lax: "lax";
50
50
  }>>;
51
51
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
52
52
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -65,8 +65,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [impo
65
65
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
66
66
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
67
67
  strict: "strict";
68
- lax: "lax";
69
68
  none: "none";
69
+ lax: "lax";
70
70
  }>>;
71
71
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
72
72
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -49,8 +49,8 @@ export declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonl
49
49
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
50
50
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
51
51
  strict: "strict";
52
- lax: "lax";
53
52
  none: "none";
53
+ lax: "lax";
54
54
  }>>;
55
55
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
56
56
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -70,8 +70,8 @@ export declare const outputSchema: import("@frontmcp/lazy-zod").ZodUnion<readonl
70
70
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
71
71
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
72
72
  strict: "strict";
73
- lax: "lax";
74
73
  none: "none";
74
+ lax: "lax";
75
75
  }>>;
76
76
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
77
77
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
@@ -26,8 +26,8 @@ declare const outputSchema: import("@frontmcp/lazy-zod").ZodObject<{
26
26
  secure: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
27
27
  sameSite: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
28
28
  strict: "strict";
29
- lax: "lax";
30
29
  none: "none";
30
+ lax: "lax";
31
31
  }>>;
32
32
  maxAge: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
33
33
  expires: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodDate>;
package/browser/index.cjs CHANGED
@@ -5378,7 +5378,7 @@ var init_normalization_errors = __esm({
5378
5378
  });
5379
5379
 
5380
5380
  // libs/sdk/src/errors/registry.errors.ts
5381
- var RegistryDefinitionNotFoundError, RegistryGraphEntryNotFoundError, RegistryDependencyNotRegisteredError, InvalidRegistryKindError, NameDisambiguationError, EntryValidationError, ToolNameConflictError, FlowNotRegisteredError, UnsupportedHookOwnerKindError;
5381
+ var RegistryDefinitionNotFoundError, RegistryGraphEntryNotFoundError, RegistryDependencyNotRegisteredError, InvalidRegistryKindError, NameDisambiguationError, EntryValidationError, ToolNameConflictError, ReservedAppIdError, FlowNotRegisteredError, UnsupportedHookOwnerKindError;
5382
5382
  var init_registry_errors = __esm({
5383
5383
  "libs/sdk/src/errors/registry.errors.ts"() {
5384
5384
  "use strict";
@@ -5421,6 +5421,14 @@ var init_registry_errors = __esm({
5421
5421
  super(`A tool named "${toolName}" is already registered`, "TOOL_NAME_CONFLICT");
5422
5422
  }
5423
5423
  };
5424
+ ReservedAppIdError = class extends InternalMcpError {
5425
+ constructor(appId) {
5426
+ super(
5427
+ `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.`,
5428
+ "RESERVED_APP_ID"
5429
+ );
5430
+ }
5431
+ };
5424
5432
  FlowNotRegisteredError = class extends InternalMcpError {
5425
5433
  constructor(flowName) {
5426
5434
  super(`Flow "${flowName}" is not registered`, "FLOW_NOT_REGISTERED");
@@ -6051,6 +6059,7 @@ __export(errors_exports, {
6051
6059
  RemoteUnsupportedTransportError: () => RemoteUnsupportedTransportError,
6052
6060
  RequestContextNotAvailableError: () => RequestContextNotAvailableError,
6053
6061
  RequiredConfigUndefinedError: () => RequiredConfigUndefinedError,
6062
+ ReservedAppIdError: () => ReservedAppIdError,
6054
6063
  ResourceNotFoundError: () => ResourceNotFoundError,
6055
6064
  ResourceReadError: () => ResourceReadError,
6056
6065
  SamplingNotAvailableError: () => SamplingNotAvailableError,
@@ -13885,7 +13894,19 @@ var init_flow_context_providers = __esm({
13885
13894
  }
13886
13895
  });
13887
13896
 
13897
+ // libs/sdk/src/front-mcp/front-mcp.tokens.ts
13898
+ var FrontMcpConfig;
13899
+ var init_front_mcp_tokens2 = __esm({
13900
+ "libs/sdk/src/front-mcp/front-mcp.tokens.ts"() {
13901
+ "use strict";
13902
+ FrontMcpConfig = /* @__PURE__ */ Symbol("FrontMcpConfig");
13903
+ }
13904
+ });
13905
+
13888
13906
  // libs/sdk/src/utils/lineage.utils.ts
13907
+ function isServerEntryOwner(owner) {
13908
+ return owner?.kind === serverEntryOwner.kind && owner.id === serverEntryOwner.id && owner.ref === serverEntryOwner.ref;
13909
+ }
13889
13910
  function ownerKeyOf(lineage) {
13890
13911
  return lineage.map((o) => `${o.kind}:${o.id}`).join("/");
13891
13912
  }
@@ -13900,10 +13921,12 @@ function appOwnerIdOf(lineage, owner) {
13900
13921
  const owners2 = owner ? [...lineage, owner] : lineage;
13901
13922
  return owners2.find((candidate) => candidate.kind === "app")?.id;
13902
13923
  }
13903
- var EntryLineageIndex;
13924
+ var serverEntryOwner, EntryLineageIndex;
13904
13925
  var init_lineage_utils = __esm({
13905
13926
  "libs/sdk/src/utils/lineage.utils.ts"() {
13906
13927
  "use strict";
13928
+ init_front_mcp_tokens2();
13929
+ serverEntryOwner = { kind: "scope", id: "server", ref: FrontMcpConfig };
13907
13930
  EntryLineageIndex = class {
13908
13931
  lineages = /* @__PURE__ */ new Map();
13909
13932
  /** Replace the index with these rows; an entry held by several rows keeps the first row's lineage. */
@@ -14341,9 +14364,9 @@ var init_call_tool_flow = __esm({
14341
14364
  "checkToolAuthorization: incrementalAuth enabled but the verified token carries no authorized_apps claim \u2014 failing closed"
14342
14365
  );
14343
14366
  }
14344
- const appId = tool?.owner?.id;
14367
+ const appId = isServerEntryOwner(tool?.owner) ? void 0 : tool?.owner?.id;
14345
14368
  if (!appId) {
14346
- this.logger.verbose("checkToolAuthorization:skip (no owner)");
14369
+ this.logger.verbose("checkToolAuthorization:skip (no app owner)");
14347
14370
  return;
14348
14371
  }
14349
14372
  const isAppAuthorized = (claimAuthorizedApps?.has(appId) ?? false) || (legacyAuthorization?.authorizedAppIds?.includes(appId) ?? false) || appId in (legacyAuthorization?.authorizedApps || {});
@@ -16456,15 +16479,6 @@ var init_instance_file_logger = __esm({
16456
16479
  }
16457
16480
  });
16458
16481
 
16459
- // libs/sdk/src/front-mcp/front-mcp.tokens.ts
16460
- var FrontMcpConfig;
16461
- var init_front_mcp_tokens2 = __esm({
16462
- "libs/sdk/src/front-mcp/front-mcp.tokens.ts"() {
16463
- "use strict";
16464
- FrontMcpConfig = /* @__PURE__ */ Symbol("FrontMcpConfig");
16465
- }
16466
- });
16467
-
16468
16482
  // libs/sdk/src/regsitry/registry.base.ts
16469
16483
  var RegistryAbstract;
16470
16484
  var init_registry_base = __esm({
@@ -53798,9 +53812,15 @@ async function createSkillHttpCache(options = {}) {
53798
53812
  async function createRedisCache(redis, keyPrefix, ttlMs, logger) {
53799
53813
  const provider = redis.provider;
53800
53814
  if (provider === "vercel-kv" || provider === "@vercel/kv") {
53801
- const { kv } = require("@vercel/kv");
53815
+ const url = (0, import_utils97.getEnv)("KV_REST_API_URL");
53816
+ const token = (0, import_utils97.getEnv)("KV_REST_API_TOKEN");
53817
+ if (!url || !token) {
53818
+ throw new import_utils97.StorageConfigError("vercel-kv", "KV_REST_API_URL and KV_REST_API_TOKEN must be set.");
53819
+ }
53820
+ const { createClient } = require("@vercel/kv");
53821
+ const client2 = createClient({ url, token, automaticDeserialization: false });
53802
53822
  return new RedisSkillHttpCache({
53803
- getClient: async () => kv,
53823
+ getClient: async () => client2,
53804
53824
  keyPrefix,
53805
53825
  ttlMs
53806
53826
  });
@@ -53848,7 +53868,7 @@ async function getSkillHttpCache(scope) {
53848
53868
  if (pending) {
53849
53869
  return pending;
53850
53870
  }
53851
- const creationPromise = createCacheForScope(scopeId, cacheConfig);
53871
+ const creationPromise = createCacheForScope(scopeId, cacheConfig, scope.logger);
53852
53872
  pendingCreation.set(scopeId, creationPromise);
53853
53873
  try {
53854
53874
  const cache2 = await creationPromise;
@@ -53858,12 +53878,13 @@ async function getSkillHttpCache(scope) {
53858
53878
  pendingCreation.delete(scopeId);
53859
53879
  }
53860
53880
  }
53861
- async function createCacheForScope(scopeId, cacheConfig) {
53881
+ async function createCacheForScope(scopeId, cacheConfig, logger) {
53862
53882
  try {
53863
53883
  const { cache: cache2 } = await createSkillHttpCache({
53864
53884
  redis: cacheConfig.redis,
53865
53885
  ttlMs: cacheConfig.ttlMs,
53866
- keyPrefix: cacheConfig.keyPrefix ?? `frontmcp:skills:${scopeId}:cache:`
53886
+ keyPrefix: cacheConfig.keyPrefix ?? `frontmcp:skills:${scopeId}:cache:`,
53887
+ logger
53867
53888
  });
53868
53889
  return cache2;
53869
53890
  } catch (error) {
@@ -64046,6 +64067,29 @@ var init_http_request_flow = __esm({
64046
64067
  }
64047
64068
  });
64048
64069
 
64070
+ // libs/sdk/src/scope/server-entries.helper.ts
64071
+ async function registerServerEntries(providers, entries, appIds) {
64072
+ if (!entries.tools?.length && !entries.resources?.length) return;
64073
+ if (appIds.includes(serverEntryOwner.id)) throw new ReservedAppIdError(serverEntryOwner.id);
64074
+ const registries = [];
64075
+ if (entries.tools?.length) {
64076
+ registries.push(new ToolRegistry(providers, entries.tools, serverEntryOwner, { adopt: false }).ready);
64077
+ }
64078
+ if (entries.resources?.length) {
64079
+ registries.push(new ResourceRegistry(providers, entries.resources, serverEntryOwner, { adopt: false }).ready);
64080
+ }
64081
+ await Promise.all(registries);
64082
+ }
64083
+ var init_server_entries_helper = __esm({
64084
+ "libs/sdk/src/scope/server-entries.helper.ts"() {
64085
+ "use strict";
64086
+ init_errors();
64087
+ init_resource_registry();
64088
+ init_tool_registry();
64089
+ init_lineage_utils();
64090
+ }
64091
+ });
64092
+
64049
64093
  // libs/sdk/src/scope/scope.instance.ts
64050
64094
  var import_reflect_metadata25, import_auth60, import_guard9, import_utils114, SCOPE_NON_DISPATCHABLE_FLOWS, Scope;
64051
64095
  var init_scope_instance = __esm({
@@ -64107,6 +64151,7 @@ var init_scope_instance = __esm({
64107
64151
  init_http_ip_filter_flow();
64108
64152
  init_http_request_flow();
64109
64153
  init_optional_dependency_util();
64154
+ init_server_entries_helper();
64110
64155
  SCOPE_NON_DISPATCHABLE_FLOWS = /* @__PURE__ */ new Set(["http:request"]);
64111
64156
  Scope = class _Scope extends ScopeEntry {
64112
64157
  id;
@@ -64538,6 +64583,11 @@ var init_scope_instance = __esm({
64538
64583
  await scopeAdapters.ready;
64539
64584
  this.onDispose(() => scopeAdapters.dispose());
64540
64585
  }
64586
+ await registerServerEntries(
64587
+ this.scopeProviders,
64588
+ this.metadata,
64589
+ this.scopeApps.getApps().map((app) => app.id)
64590
+ );
64541
64591
  this.initAuthoritiesFromConfig();
64542
64592
  this.scopeTools = new ToolRegistry(this.scopeProviders, [], scopeRef);
64543
64593
  this.scopeResources = new ResourceRegistry(this.scopeProviders, [], scopeRef);
@@ -67854,9 +67904,10 @@ function collectStaticEntries(config) {
67854
67904
  };
67855
67905
  const visitEntries = (owner, app) => {
67856
67906
  const reach = app ? { app } : "every-plugin";
67907
+ const toolReach = app ? { app } : "every-app";
67857
67908
  for (const item of owner.tools ?? []) {
67858
67909
  const record = tryNormalize(() => normalizeTool(item));
67859
- if (record) add(`Tool "${record.metadata.id || record.metadata.name}"`, record.metadata, reach);
67910
+ if (record) add(`Tool "${record.metadata.id || record.metadata.name}"`, record.metadata, toolReach);
67860
67911
  }
67861
67912
  for (const item of owner.resources ?? []) {
67862
67913
  if (tryNormalize(() => isResourceTemplate(item))) {
@@ -67889,7 +67940,10 @@ function collectStaticEntries(config) {
67889
67940
  visitPlugins(owner.plugins, app);
67890
67941
  };
67891
67942
  const server = config;
67892
- visitEntries({ skills: server.skills, plugins: server.plugins }, void 0);
67943
+ visitEntries(
67944
+ { tools: server.tools, resources: server.resources, skills: server.skills, plugins: server.plugins },
67945
+ void 0
67946
+ );
67893
67947
  for (const app of server.apps ?? []) {
67894
67948
  const record = tryNormalize(() => normalizeApp(app));
67895
67949
  if (record?.kind === "LOCAL_CLASS" /* LOCAL_CLASS */) visitEntries(record.metadata, record);
@@ -67897,6 +67951,7 @@ function collectStaticEntries(config) {
67897
67951
  const everyPluginKeys = /* @__PURE__ */ new Set([...everyAppKeys, ...[...ownAppKeys.values()].flatMap((keys) => [...keys])]);
67898
67952
  const keysReaching = (reach) => {
67899
67953
  if (reach === "every-plugin") return everyPluginKeys;
67954
+ if (reach === "every-app") return everyAppKeys;
67900
67955
  if ("agentKeys" in reach) return reach.agentKeys;
67901
67956
  return /* @__PURE__ */ new Set([...everyAppKeys, ...ownAppKeys.get(reach.app) ?? []]);
67902
67957
  };
@@ -70872,6 +70927,7 @@ __export(index_exports, {
70872
70927
  RemoveWorkflowTool: () => RemoveWorkflowTool,
70873
70928
  RequestContextNotAvailableError: () => RequestContextNotAvailableError,
70874
70929
  RequiredConfigUndefinedError: () => RequiredConfigUndefinedError,
70930
+ ReservedAppIdError: () => ReservedAppIdError,
70875
70931
  Resource: () => Resource,
70876
70932
  ResourceContext: () => ResourceContext,
70877
70933
  ResourceEntry: () => ResourceEntry,
@@ -72129,6 +72185,7 @@ var ChannelListHook = FlowHooksOf("channels:list");
72129
72185
  RemoveWorkflowTool,
72130
72186
  RequestContextNotAvailableError,
72131
72187
  RequiredConfigUndefinedError,
72188
+ ReservedAppIdError,
72132
72189
  Resource,
72133
72190
  ResourceContext,
72134
72191
  ResourceEntry,