@redocly/realm 0.135.0 → 0.136.0-next.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/CHANGELOG.md +24 -0
- package/dist/cli/build/analytics/collect-analytics.js +1 -1
- package/dist/cli/build/analytics/collectors/get-skills-usage.d.ts +3 -0
- package/dist/cli/build/analytics/collectors/get-skills-usage.js +1 -0
- package/dist/client/templates/openapi-docs/helpers.js +1 -1
- package/dist/constants/common.d.ts +8 -0
- package/dist/constants/common.js +1 -1
- package/dist/server/config/env-config.d.ts +2 -0
- package/dist/server/config/env-schema.d.ts +5 -0
- package/dist/server/config/env-schemas/feature-flags.d.ts +4 -0
- package/dist/server/config/env-schemas/feature-flags.js +1 -1
- package/dist/server/constants/plugins/search.d.ts +1 -2
- package/dist/server/constants/plugins/search.js +1 -1
- package/dist/server/esbuild/plugins/on-rebuild.js +1 -1
- package/dist/server/fs/fs.js +1 -1
- package/dist/server/plugins/catalog-entities/database/repositories/entities/entities-write-repository.js +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.js +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.js +1 -1
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.js +2 -2
- package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
- package/dist/server/plugins/config-parser/loaders/redocly-config-loader.js +1 -1
- package/dist/server/plugins/lifecycle.js +2 -2
- package/dist/server/plugins/mcp/{docs-mcp/codemode → codemode}/build-tool-type-declarations.d.ts +1 -1
- package/dist/server/plugins/mcp/codemode/capabilities/fetch/index.d.ts +4 -0
- package/dist/server/plugins/mcp/codemode/capabilities/fetch/index.js +4 -0
- package/dist/server/plugins/mcp/codemode/capabilities/index.d.ts +3 -0
- package/dist/server/plugins/mcp/codemode/capabilities/index.js +1 -0
- package/dist/server/plugins/mcp/codemode/capabilities/registry.d.ts +4 -0
- package/dist/server/plugins/mcp/codemode/capabilities/registry.js +1 -0
- package/dist/server/plugins/mcp/codemode/capabilities/types.d.ts +13 -0
- package/dist/server/plugins/mcp/codemode/capabilities/utils.d.ts +13 -0
- package/dist/server/plugins/mcp/codemode/capabilities/utils.js +7 -0
- package/dist/server/plugins/mcp/codemode/constants.d.ts +5 -0
- package/dist/server/plugins/mcp/codemode/constants.js +1 -0
- package/dist/server/plugins/mcp/codemode/invoke-tool.d.ts +4 -0
- package/dist/server/plugins/mcp/codemode/invoke-tool.js +1 -0
- package/dist/server/plugins/mcp/codemode/prompts.d.ts +6 -0
- package/dist/server/plugins/mcp/codemode/prompts.js +4 -0
- package/dist/server/plugins/mcp/codemode/sandbox/sandbox-polyfills.d.ts +3 -0
- package/dist/server/plugins/mcp/codemode/sandbox/sandbox-polyfills.js +100 -0
- package/dist/server/plugins/mcp/{docs-mcp/codemode → codemode/sandbox}/sandbox.d.ts +1 -1
- package/dist/server/plugins/mcp/codemode/sandbox/sandbox.js +15 -0
- package/dist/server/plugins/mcp/codemode/tools/describe-tools.d.ts +7 -0
- package/dist/server/plugins/mcp/codemode/tools/describe-tools.js +1 -0
- package/dist/server/plugins/mcp/codemode/tools/execute-schema.d.ts +5 -0
- package/dist/server/plugins/mcp/codemode/tools/execute-schema.js +1 -0
- package/dist/server/plugins/mcp/codemode/tools/execute.js +1 -0
- package/dist/server/plugins/mcp/codemode/types.d.ts +24 -0
- package/dist/server/plugins/mcp/codemode/types.js +0 -0
- package/dist/server/plugins/mcp/constants.d.ts +2 -0
- package/dist/server/plugins/mcp/constants.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tool-schemas.d.ts +0 -4
- package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/openapi/list-apis.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/utils.js +1 -1
- package/dist/server/plugins/mcp/gateway-mcp/eligibility.d.ts +30 -0
- package/dist/server/plugins/mcp/gateway-mcp/eligibility.js +1 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch/allowed-hosts.d.ts +13 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch/allowed-hosts.js +1 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.d.ts +12 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.js +1 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch/ssrf-guard.d.ts +9 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch/ssrf-guard.js +1 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch-capability.d.ts +6 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch-capability.js +1 -0
- package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
- package/dist/server/plugins/mcp/handlers/errors.d.ts +3 -21
- package/dist/server/plugins/mcp/handlers/errors.js +1 -1
- package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -1
- package/dist/server/plugins/mcp/index.js +1 -1
- package/dist/server/plugins/mcp/servers/docs-server.d.ts +5 -10
- package/dist/server/plugins/mcp/servers/docs-server.js +1 -3
- package/dist/server/plugins/mcp/servers/mcp-server.d.ts +18 -0
- package/dist/server/plugins/mcp/servers/mcp-server.js +1 -0
- package/dist/server/plugins/mcp/types.d.ts +23 -8
- package/dist/server/plugins/mcp/utils/mode.d.ts +7 -0
- package/dist/server/plugins/mcp/utils/mode.js +1 -0
- package/dist/server/plugins/mcp/utils/xmcp-utils.d.ts +12 -60
- package/dist/server/plugins/mcp/utils/xmcp-utils.js +1 -1
- package/dist/server/plugins/mcp/utils.d.ts +8 -0
- package/dist/server/plugins/mcp/utils.js +1 -1
- package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
- package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.d.ts +15 -3
- package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.js +1 -1
- package/dist/server/plugins/openapi-docs/index.js +1 -1
- package/dist/server/plugins/search/engines/search-engine.d.ts +2 -1
- package/dist/server/plugins/search/index.js +1 -1
- package/dist/server/plugins/skills/discover-skills.d.ts +17 -0
- package/dist/server/plugins/skills/discover-skills.js +1 -0
- package/dist/server/plugins/skills/index.d.ts +3 -0
- package/dist/server/plugins/skills/index.js +1 -0
- package/dist/server/plugins/skills/utils/parse-skill.d.ts +18 -0
- package/dist/server/plugins/skills/utils/parse-skill.js +1 -0
- package/dist/server/plugins/sso/index.js +1 -1
- package/dist/server/store.d.ts +4 -0
- package/dist/server/store.js +1 -1
- package/dist/server/types/plugins/common.d.ts +3 -0
- package/dist/server/types/plugins/search.d.ts +0 -1
- package/dist/server/types/plugins/skills.d.ts +16 -0
- package/dist/server/types/plugins/skills.js +0 -0
- package/dist/server/utils/cookie.d.ts +3 -0
- package/dist/server/utils/cookie.js +1 -1
- package/dist/server/utils/skills/can-access-skill.d.ts +9 -0
- package/dist/server/utils/skills/can-access-skill.js +1 -0
- package/dist/server/utils/skills/get-accessible-skills.d.ts +5 -0
- package/dist/server/utils/skills/get-accessible-skills.js +1 -0
- package/dist/server/utils/skills/get-skill-url.d.ts +2 -0
- package/dist/server/utils/skills/get-skill-url.js +1 -0
- package/dist/server/web-server/auth.js +4 -4
- package/dist/server/web-server/middleware/corsMiddleware.d.ts +1 -0
- package/dist/server/web-server/middleware/corsMiddleware.js +1 -1
- package/dist/server/web-server/middleware/ensureSearchData.js +1 -1
- package/dist/server/web-server/routes/auth.js +1 -1
- package/dist/server/web-server/routes/catalog/helpers/create-entity-schema.d.ts +305 -256
- package/dist/server/web-server/routes/catalog/helpers/create-entity-update-schema.d.ts +46 -39
- package/dist/server/web-server/routes/health.js +1 -1
- package/dist/server/web-server/routes/index.js +1 -1
- package/dist/server/web-server/routes/mcp-routes/a2a.d.ts +10 -0
- package/dist/server/web-server/routes/mcp-routes/a2a.js +1 -0
- package/dist/server/web-server/routes/mcp-routes/agent-card.d.ts +4 -0
- package/dist/server/web-server/routes/mcp-routes/agent-card.js +1 -0
- package/dist/server/web-server/routes/mcp-routes/constants.d.ts +14 -0
- package/dist/server/web-server/routes/mcp-routes/constants.js +1 -0
- package/dist/server/web-server/routes/mcp-routes/mcp-routes.d.ts +1 -1
- package/dist/server/web-server/routes/mcp-routes/mcp-routes.js +1 -1
- package/dist/server/web-server/routes/mcp-routes/mcp-server-card.d.ts +4 -0
- package/dist/server/web-server/routes/mcp-routes/mcp-server-card.js +1 -0
- package/dist/server/web-server/routes/mcp-routes/types.d.ts +34 -0
- package/dist/server/web-server/routes/mcp-routes/types.js +0 -0
- package/dist/server/web-server/routes/mcp-routes/utils/build-agent-card.d.ts +10 -0
- package/dist/server/web-server/routes/mcp-routes/utils/build-agent-card.js +1 -0
- package/dist/server/web-server/routes/page-data.js +1 -1
- package/dist/server/web-server/routes/skills/build-skills-index.d.ts +4 -0
- package/dist/server/web-server/routes/skills/build-skills-index.js +1 -0
- package/dist/server/web-server/routes/skills/constants.d.ts +4 -0
- package/dist/server/web-server/routes/skills/constants.js +1 -0
- package/dist/server/web-server/routes/skills/skill-markdown.d.ts +4 -0
- package/dist/server/web-server/routes/skills/skill-markdown.js +1 -0
- package/dist/server/web-server/routes/skills/skills-index.d.ts +4 -0
- package/dist/server/web-server/routes/skills/skills-index.js +1 -0
- package/dist/server/web-server/routes/skills/skills-routes.d.ts +4 -0
- package/dist/server/web-server/routes/skills/skills-routes.js +1 -0
- package/dist/server/web-server/routes/skills/types.d.ts +12 -0
- package/dist/server/web-server/routes/skills/types.js +0 -0
- package/dist/server/web-server/utils/resolve-public-base-url.d.ts +4 -0
- package/dist/server/web-server/utils/resolve-public-base-url.js +1 -0
- package/dist/server/web-server/utils.js +1 -1
- package/dist/server/workers/api-routes-worker-pool.js +1 -1
- package/dist/server/workers/mcp-tool-worker-pool.js +1 -1
- package/dist/server/workers/scorecards-worker-pool.js +1 -1
- package/dist/server/workers/worker-pool.d.ts +1 -0
- package/dist/server/workers/worker-pool.js +1 -1
- package/package.json +9 -9
- package/dist/server/plugins/mcp/docs-mcp/codemode/prompts.d.ts +0 -5
- package/dist/server/plugins/mcp/docs-mcp/codemode/prompts.js +0 -4
- package/dist/server/plugins/mcp/docs-mcp/codemode/sandbox.js +0 -7
- package/dist/server/plugins/mcp/docs-mcp/codemode/types.d.ts +0 -9
- package/dist/server/plugins/mcp/docs-mcp/tools/execute.js +0 -1
- package/dist/server/plugins/mcp/mode.d.ts +0 -9
- package/dist/server/plugins/mcp/mode.js +0 -1
- /package/dist/server/plugins/mcp/{docs-mcp/codemode → codemode}/build-tool-type-declarations.js +0 -0
- /package/dist/server/plugins/mcp/{docs-mcp/codemode → codemode/capabilities}/types.js +0 -0
- /package/dist/server/plugins/mcp/{docs-mcp → codemode}/tools/execute.d.ts +0 -0
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{envConfig as r}from"../../config/env-config.js";import{getRequestOrigin as t}from"./get-request-origin.js";function l(e,o){return e.getGlobalConfig("seo")?.siteUrl?.trim()||r.REDOCLY_PUBLIC_URL||t(o)}export{l as resolvePublicBaseUrl};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{setCookie as b}from"hono/cookie";import{withPathPrefix as l}from"@redocly/theme/core/utils";import{DEV_LOGIN_SLUG as A}from"../../constants/common.js";import{CACHE_CONTROL_NO_STORE_HEADER_VALUE as
|
|
1
|
+
import{setCookie as b}from"hono/cookie";import{withPathPrefix as l}from"@redocly/theme/core/utils";import{DEV_LOGIN_SLUG as A}from"../../constants/common.js";import{CACHE_CONTROL_NO_STORE_HEADER_VALUE as C}from"../constants/common.js";import{hasPostLogoutCookie as y}from"../utils/cookie.js";import{getAuthProviderLoginParams as _,buildLoginUrl as O}from"./auth.js";import{renderPage as R}from"../ssr/index.js";import{telemetry as v}from"../../cli/telemetry/index.js";async function k(t,r,e,n){const{isAuthenticated:a}=t.get("auth"),i=t.req.raw.headers.get("x-forwarded-host"),o=t.req.raw.headers.get("x-forwarded-proto"),w=i?`${o==="http"||o==="https"?o:"https"}://${i}`:new URL(t.req.url).origin,g=r.getConfig().ssoDirect,p=Object.keys(g||{}),d=n||p[0],m=g?.[d];if(a)return z(t,r,{slug:e},403);const s=d&&m?await _(d,m):void 0,f=s&&y(t)?{...s,extraParams:{...s.extraParams,prompt:"login",post_logout:"1"}}:s,{loginUrl:E,cookies:h={}}=f&&O(f,w,l(e))||{},L=r.globalData.auth?.devLogin||p.length>1?D(e):E;return Object.keys(h).forEach(c=>{b(t,c,h[c].value,h[c].options)}),L?t.newResponse(null,302,{Location:L}):t.text("Unauthorized",401)}const P={};async function z(t,r,e,n,a){const i=a||String(n);let o=P[i];if(!o){const u={templateId:String(a||n),fsPath:"/",...e,baseSlug:e.slug};o=(await R(u,{},t,r,v)).html,P[i]=o}return t.html(o,n,{"Cache-Control":C})}function D(t){const r=new URLSearchParams({redirectTo:l(t)});return`${l(A)}?${r}`}async function G(t){return t.text("Forbidden",U(t))}function V(t){return t.json({message:"Forbidden"},U(t))}function U(t){const{isAuthenticated:r}=t.get("auth");return r?403:401}function K(t){const r=t?.match(/(?:^|:)(\d{1,3}(?:\.\d{1,3}){3})$/);return r?r[1]:t}export{D as getLoginUrlWithRedirect,z as handleErrorPageRender,k as handleUnauthorized,V as handleUnauthorizedApiRequest,G as handleUnauthorizedAsset,K as normalizeIpAddress};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getAllowedEnvs as r}from"../utils/envs/get-api-route-allowed-env-variables.js";import{WorkerPool as o}from"./worker-pool.js";const p="executeApiRoute",e=3,i=new o({workerScript:"./api-routes-worker",minWorkers:1,maxWorkers:e,workerType:"process",forkOpts:{
|
|
1
|
+
import{getAllowedEnvs as r}from"../utils/envs/get-api-route-allowed-env-variables.js";import{WorkerPool as o}from"./worker-pool.js";const p="executeApiRoute",e=3,i=new o({workerScript:"./api-routes-worker",minWorkers:1,maxWorkers:e,workerType:"process",forkOpts:{stdio:"inherit"},resolveForkEnv:r,lazy:!0});export{p as API_ROUTES_WORKER_KEY,i as apiRoutesWorkers};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getAllowedEnvs as o}from"../utils/envs/get-api-route-allowed-env-variables.js";import{WorkerPool as r}from"./worker-pool.js";const
|
|
1
|
+
import{getAllowedEnvs as o}from"../utils/envs/get-api-route-allowed-env-variables.js";import{WorkerPool as r}from"./worker-pool.js";const p="executeMcpTool",c="isMcpToolAvailable",e=5,l=new r({workerScript:"./mcp-tool-worker",minWorkers:1,maxWorkers:e,workerType:"process",forkOpts:{stdio:"inherit"},resolveForkEnv:o,lazy:!0});export{c as MCP_TOOL_IS_AVAILABLE_KEY,p as MCP_TOOL_WORKER_KEY,l as mcpToolWorkers};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{WorkerPool as r}from"./worker-pool.js";import{getAllowedEnvs as o}from"../utils/envs/get-api-route-allowed-env-variables.js";const c="startScorecardsEvaluationWorker",e=1,k=new r({workerScript:"./scorecards-worker",minWorkers:1,maxWorkers:e,workerType:"process",forkOpts:{
|
|
1
|
+
import{WorkerPool as r}from"./worker-pool.js";import{getAllowedEnvs as o}from"../utils/envs/get-api-route-allowed-env-variables.js";const c="startScorecardsEvaluationWorker",e=1,k=new r({workerScript:"./scorecards-worker",minWorkers:1,maxWorkers:e,workerType:"process",forkOpts:{stdio:"inherit"},resolveForkEnv:o,lazy:!0});export{c as SCORECARDS_WORKER_KEY,k as scorecardsWorker};
|
|
@@ -3,6 +3,7 @@ import type { WorkerTypeMapping, WorkerParams, WorkerResponse } from './types.js
|
|
|
3
3
|
export type WorkerPoolConfig = {
|
|
4
4
|
workerScript: string;
|
|
5
5
|
lazy: boolean;
|
|
6
|
+
resolveForkEnv?: () => Record<string, string | undefined>;
|
|
6
7
|
} & WorkerPoolOptions;
|
|
7
8
|
type RegisteredWorkers = keyof WorkerTypeMapping;
|
|
8
9
|
export declare class WorkerPool {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import n from"workerpool";import{basename as a,dirname as s,resolve as l}from"node:path";import{fileURLToPath as h}from"node:url";import{envConfig as m}from"../config/env-config.js";class
|
|
1
|
+
import n from"workerpool";import{basename as a,dirname as s,resolve as l}from"node:path";import{fileURLToPath as h}from"node:url";import{envConfig as m}from"../config/env-config.js";class v{#t=null;#r;constructor(o){this.#r=o,this.#r.lazy||(this.#t=this.#o())}#o(){const{workerScript:o,lazy:t,resolveForkEnv:r,...e}=this.#r;let i=this.#e(o);return r&&e.forkOpts&&(e.forkOpts={...e.forkOpts,env:r()}),n.pool(i,{...e})}#e(o){let t=o;if(!t.endsWith(".js")&&!t.endsWith(".mjs")&&(t=`${t}.${m.isDevelopMode?"js":"mjs"}`),!t.startsWith("."))return t;const r=s(h(import.meta.url)),e=a(r)==="chunks"?s(r):r;return l(e,t)}#i(){return this.#t||(this.#t=this.#o()),this.#t}async exec(o,t,r){let i=this.#i().exec(o,t);return r?.timeout&&(i=i.timeout(r.timeout)),await i}async terminate(){this.#t&&(await this.#t.terminate(),this.#t=null)}}export{v as WorkerPool};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/realm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.136.0-next.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@opentelemetry/semantic-conventions": "1.40.0",
|
|
34
34
|
"@redocly/ajv": "8.18.0",
|
|
35
35
|
"@redocly/mcp-typescript-sdk": "1.18.1",
|
|
36
|
-
"@redocly/openapi-core": "2.
|
|
36
|
+
"@redocly/openapi-core": "2.39.0",
|
|
37
37
|
"@shikijs/transformers": "3.21.0",
|
|
38
38
|
"@tanstack/react-query": "5.62.3",
|
|
39
39
|
"@tanstack/react-table": "8.21.3",
|
|
@@ -93,14 +93,14 @@
|
|
|
93
93
|
"xpath": "0.0.34",
|
|
94
94
|
"yaml-ast-parser": "0.0.43",
|
|
95
95
|
"zod": "^3.25.76",
|
|
96
|
-
"@redocly/asyncapi-docs": "1.
|
|
96
|
+
"@redocly/asyncapi-docs": "1.13.0-next.0",
|
|
97
|
+
"@redocly/config": "0.52.0",
|
|
98
|
+
"@redocly/graphql-docs": "1.13.0-next.0",
|
|
99
|
+
"@redocly/openapi-docs": "3.24.0-next.0",
|
|
97
100
|
"@redocly/portal-legacy-ui": "0.18.0",
|
|
98
|
-
"@redocly/portal-plugin-mock-server": "0.
|
|
99
|
-
"@redocly/
|
|
100
|
-
"@redocly/
|
|
101
|
-
"@redocly/config": "0.50.1",
|
|
102
|
-
"@redocly/graphql-docs": "1.12.0",
|
|
103
|
-
"@redocly/openapi-docs": "3.23.0"
|
|
101
|
+
"@redocly/portal-plugin-mock-server": "0.21.0-next.0",
|
|
102
|
+
"@redocly/realm-asyncapi-sdk": "0.14.0-next.0",
|
|
103
|
+
"@redocly/theme": "0.68.0-next.0"
|
|
104
104
|
},
|
|
105
105
|
"peerDependencies": {
|
|
106
106
|
"react": "^19.2.4",
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare const EXECUTE_DESCRIPTION: string;
|
|
2
|
-
export declare const DESCRIBE_TOOLS_DESCRIPTION: string;
|
|
3
|
-
export declare const CODE_MODE_INSTRUCTIONS: string;
|
|
4
|
-
export declare const USAGE_NOTES = "Types named `OpenApi\u2026` are the standard OpenAPI Specification objects.";
|
|
5
|
-
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const e=["Run JavaScript in a sandbox against the documentation tools on the global `tools` object.","The only extra global is `tools` - there is no `fetch`, `console`, `setTimeout`, `require`, or Node.js API; all I/O goes through `tools`.","","Workflow - minimize round-trips; one `describe-tools` call plus one `execute` call covers most requests:","1. Analyze the user request and decide which sandbox tools it needs (every tool name is listed in the `describe-tools` input schema).","2. Call `describe-tools` with those names to get their exact TypeScript signatures. NEVER call `execute` with guessed method names, parameter names, or enum values.","3. Batch everything the request needs into a SINGLE script: chain tool calls, pass one call's output into the next, process results in plain JavaScript (filter, map, aggregate), and `return` only what the request needs.","","Example - list the write endpoints of an API:","","```ts","const { items } = await tools.listApis({ filter: 'billing' });","const { endpoints } = await tools.getEndpoints({ name: items[0].name });","const writes = endpoints.filter((e) => e.method !== 'GET');","return { api: items[0].name, writes: writes.map((e) => `${e.method} ${e.path}`) };","```"].join(`
|
|
2
|
-
`),t=["Get the exact TypeScript signatures of the sandbox tools available to `execute`.","Analyze the user request first, then pass `tools` with only the tool names the request needs (every name is listed in this input schema); omit `tools` only when you cannot tell which tools apply.","Always call this before your first `execute` and never guess signatures. Request every tool the task may need in ONE call instead of calling this repeatedly."].join(`
|
|
3
|
-
`),s=["This server exposes documentation tools (API discovery, endpoint details, security schemes, full-text search) through two tools:","- `describe-tools` returns the exact TypeScript signatures of the sandbox tools.","- `execute` runs JavaScript that calls those tools on the global `tools` object.","Workflow: analyze the request, call `describe-tools` once with only the tool names it needs, then batch everything into a single `execute` script. Minimize round-trips and never guess tool signatures."].join(`
|
|
4
|
-
`),o="Types named `OpenApi\u2026` are the standard OpenAPI Specification objects.";export{s as CODE_MODE_INSTRUCTIONS,t as DESCRIBE_TOOLS_DESCRIPTION,e as EXECUTE_DESCRIPTION,o as USAGE_NOTES};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import J from"@jitl/quickjs-singlefile-mjs-release-sync";import{newQuickJSWASMModuleFromVariant as A,shouldInterruptAfterDeadline as I}from"quickjs-emscripten-core";const $=1e4,C=64*1024*1024,L=256*1024,w=100,N=1024*1024,R=1024*1024;let O;function x(){return O??=A(J)}function Y(t){return`(() => {
|
|
2
|
-
const invoke = globalThis.__invoke;
|
|
3
|
-
delete globalThis.__invoke;
|
|
4
|
-
globalThis.tools = Object.freeze({ ${t.map(r=>`${JSON.stringify(r)}: (input) => invoke(${JSON.stringify(r)}, JSON.stringify(input ?? {})).then(JSON.parse)`).join(", ")} });
|
|
5
|
-
})();`}async function F(t,n,r={}){const{timeoutMs:s=$}=r,m=new Set;let M=0,f=0;const e=(await x()).newContext();let l,g=()=>{};const y=new Promise((o,c)=>{g=()=>c(new Error(`Execution timed out after ${s}ms`))}),S=()=>e.runtime.setInterruptHandler(I(Date.now()+s)),p=()=>{clearTimeout(l),l=setTimeout(g,s)};let u;try{e.runtime.setMemoryLimit(C),e.runtime.setMaxStackSize(L),S(),p(),B(e,"__invoke",(E,b)=>{const P=e.getString(E),j=JSON.parse(e.getString(b)),i=e.newPromise();return m.add(i),f++,clearTimeout(l),(++M>w?Promise.reject(new Error(`Exceeded the limit of ${w} tool calls`)):Promise.resolve().then(()=>n[P](j))).then(a=>{if(!e.alive)return;const d=JSON.stringify(a??null);if(d.length>N){const k=`Tool output is too large (${d.length} bytes); request narrower data instead`;e.newError(k).consume(i.reject)}else e.newString(d).consume(i.resolve)},a=>{e.alive&&e.newError(h(a)).consume(i.reject)}),i.settled.then(()=>{e.alive&&(S(),--f===0&&p(),e.runtime.executePendingJobs())}),i.handle}),U(e,Y(Object.keys(n))),u=e.unwrapResult(e.evalCode(`(async () => {
|
|
6
|
-
${t}
|
|
7
|
-
})()`));const o=e.resolvePromise(u);e.runtime.executePendingJobs();const c=await Promise.race([o,y]),T=e.unwrapResult(c),_=e.dump(T);T.dispose();const v=JSON.stringify(_??null).length;return v>R?{error:`Result is too large (${v} bytes); return less data`}:{result:_}}catch(o){return{error:h(o)}}finally{clearTimeout(l),u?.dispose();for(const o of m)o.alive&&o.dispose();try{e.dispose()}catch{O=void 0}}}function B(t,n,r){t.newFunction(n,r).consume(s=>t.setProp(t.global,n,s))}function U(t,n){t.unwrapResult(t.evalCode(n)).dispose()}function h(t){return t instanceof Error?t.message:String(t)}export{F as runInSandbox};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{mcpToolHandlers as s}from"../../../../../client/mcp-tool-handlers-entry.js";import{EXECUTE_TOOL_NAME as c,CODE_MODE_TOOL_NAMES as u}from"../tool-schemas.js";import{sanitizeToolName as f}from"../codemode/build-tool-type-declarations.js";import{runInSandbox as l}from"../codemode/sandbox.js";import{executeMcpTool as m,isMcpToolAvailable as p}from"../../workers/execute-mcp-tool.js";const y=async(t,r,n)=>{const o=await E(r,n),{result:i,error:e}=await l(t.code,o);return{content:[{type:"text",text:JSON.stringify({result:i,error:e})}],isError:e!==void 0}};async function E(t,r){const n={};for(const o of Object.keys(s))u.has(o)||await d(o,t)&&(n[f(o)]=async i=>{const e=await m({toolName:o,args:i,context:t,extra:r}),a=O(e);if(e.isError)throw new Error(a);return T(a)});return n}async function d(t,r){try{return await p({toolName:t,context:r})}catch{return!1}}function O(t){return t.content.filter(r=>r.type==="text").map(r=>r.text).join("")}function T(t){try{return JSON.parse(t)}catch{return t}}var _={[c]:y};export{_ as default};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { McpMode } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Codemode (a single `execute` tool) is gated by a feature flag, not client config, so
|
|
4
|
-
* only we control the rollout. Kept in its own module so the worker / telemetry path
|
|
5
|
-
* does not pull in the heavier `utils.js` dependencies.
|
|
6
|
-
*/
|
|
7
|
-
export declare function isMcpCodeModeEnabled(): boolean;
|
|
8
|
-
export declare function getMcpMode(): McpMode;
|
|
9
|
-
//# sourceMappingURL=mode.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{envConfig as o}from"../../config/env-config.js";function e(){return o.REDOCLY_EXP_MCP_CODE_MODE_ENABLED??!1}function t(){return e()?"code":"tools"}export{t as getMcpMode,e as isMcpCodeModeEnabled};
|
/package/dist/server/plugins/mcp/{docs-mcp/codemode → codemode}/build-tool-type-declarations.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|