From 461a411c1491f80b951618ec83a117667da2c786 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 02:24:47 +0000 Subject: [PATCH 01/32] fix(ci): set permissions for DXT publish action --- .github/workflows/publish-npm.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index b130dd2..51f2d01 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -16,6 +16,8 @@ jobs: publish: name: publish runs-on: ubuntu-latest + permissions: + contents: write steps: - uses: actions/checkout@v4 @@ -44,3 +46,5 @@ jobs: run: | gh release upload ${{ github.event.release.tag_name }} \ packages/mcp-server/cas_parser_node_api.dxt + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 4206154f0e8c7f82ce8c62b0729e4859af7fbda9 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 18 Sep 2025 02:21:10 +0000 Subject: [PATCH 02/32] chore(mcp): rename dxt to mcpb --- .github/workflows/publish-npm.yml | 2 +- packages/mcp-server/build | 6 +++--- packages/mcp-server/manifest.json | 5 +++-- packages/mcp-server/package.json | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index 51f2d01..5de1e17 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -45,6 +45,6 @@ jobs: - name: Upload MCP Server DXT GitHub release asset run: | gh release upload ${{ github.event.release.tag_name }} \ - packages/mcp-server/cas_parser_node_api.dxt + packages/mcp-server/cas_parser_node_api.mcpb env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/packages/mcp-server/build b/packages/mcp-server/build index d842d02..90e5f33 100644 --- a/packages/mcp-server/build +++ b/packages/mcp-server/build @@ -32,7 +32,7 @@ chmod +x dist/index.js DIST_PATH=./dist PKG_IMPORT_PATH=cas-parser-node-mcp/ node ../../scripts/utils/postprocess-files.cjs # mcp bundle -rm -rf dist-bundle cas_parser_node_api.dxt; mkdir dist-bundle +rm -rf dist-bundle cas_parser_node_api.mcpb; mkdir dist-bundle # copy package.json PKG_JSON_PATH=../../packages/mcp-server/package.json node ../../scripts/utils/make-dist-package-json.cjs > dist-bundle/package.json @@ -48,9 +48,9 @@ cd .. # pack bundle cp manifest.json dist-bundle -npx dxt pack dist-bundle cas_parser_node_api.dxt +npx mcpb pack dist-bundle cas_parser_node_api.mcpb -npx dxt sign cas_parser_node_api.dxt --self-signed +npx mcpb sign cas_parser_node_api.mcpb --self-signed # clean up rm -rf dist-bundle diff --git a/packages/mcp-server/manifest.json b/packages/mcp-server/manifest.json index d407451..287df34 100644 --- a/packages/mcp-server/manifest.json +++ b/packages/mcp-server/manifest.json @@ -1,5 +1,5 @@ { - "dxt_version": "0.1", + "dxt_version": "0.2", "name": "cas-parser-node-mcp", "version": "1.3.0", "description": "The official MCP Server for the Cas Parser API", @@ -15,7 +15,7 @@ "documentation": "https://docs.casparser.in/reference", "server": { "type": "node", - "entry_point": "${__dirname}/index.js", + "entry_point": "index.js", "mcp_config": { "command": "node", "args": ["${__dirname}/index.js"], @@ -32,6 +32,7 @@ "type": "string" } }, + "tools": [], "tools_generated": true, "compatibility": { "runtimes": { diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 40f498d..d0fc7cd 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -47,7 +47,7 @@ "mcp-server": "dist/index.js" }, "devDependencies": { - "@anthropic-ai/dxt": "^0.2.6", + "@anthropic-ai/mcpb": "^1.1.0", "@types/cors": "^2.8.19", "@types/express": "^5.0.3", "@types/jest": "^29.4.0", From 037b423d403f4af547043cc73164df04fcbe8115 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 19 Sep 2025 02:27:59 +0000 Subject: [PATCH 03/32] chore(internal): gitignore .mcpb files --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4b27d0f..74cba89 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ dist-deno /*.tgz .idea/ dist-bundle -*.dxt +*.mcpb From e2afa8394a7f891e90526dffeab493f4033ebfe0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 19 Sep 2025 02:31:49 +0000 Subject: [PATCH 04/32] feat(mcp): add docs search tool --- packages/mcp-server/src/docs-search-tool.ts | 47 +++++++++++++++++++++ packages/mcp-server/src/server.ts | 3 +- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 packages/mcp-server/src/docs-search-tool.ts diff --git a/packages/mcp-server/src/docs-search-tool.ts b/packages/mcp-server/src/docs-search-tool.ts new file mode 100644 index 0000000..da931b6 --- /dev/null +++ b/packages/mcp-server/src/docs-search-tool.ts @@ -0,0 +1,47 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import { Metadata, asTextContentResult } from './tools/types'; + +import { Tool } from '@modelcontextprotocol/sdk/types.js'; + +export const metadata: Metadata = { + resource: 'all', + operation: 'read', + tags: [], + httpMethod: 'get', +}; + +export const tool: Tool = { + name: 'search_docs', + description: + 'Search for documentation for how to use the client to interact with the API.\nThe tool will return an array of Markdown-formatted documentation pages.', + inputSchema: { + type: 'object', + properties: { + query: { + type: 'string', + description: 'The query to search for.', + }, + language: { + type: 'string', + description: 'The language for the SDK to search for.', + enum: ['http', 'python', 'go', 'typescript', 'terraform', 'ruby', 'java', 'kotlin'], + }, + }, + required: ['query', 'language'], + }, + annotations: { + readOnlyHint: true, + }, +}; + +export const handler = async (_: unknown, args: Record | undefined) => { + const body = args as any; + const query = new URLSearchParams(body).toString(); + const result = await fetch( + 'https://api.stainless.com/api/projects/cas-parser/cas-parser/docs/search?' + query, + ); + return asTextContentResult(await result.json()); +}; + +export default { metadata, tool, handler }; diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index 13bcf36..ab248ba 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -21,6 +21,7 @@ import { } from './compat'; import { dynamicTools } from './dynamic-tools'; import { codeTool } from './code-tool'; +import docsSearchTool from './docs-search-tool'; import { McpOptions } from './options'; export { McpOptions } from './options'; @@ -159,7 +160,7 @@ export async function selectTools(endpoints: Endpoint[], options?: McpOptions): } else if (options?.includeDynamicTools) { includedTools = dynamicTools(endpoints); } else if (options?.includeCodeTools) { - includedTools = [await codeTool()]; + includedTools = [await codeTool(), docsSearchTool]; } else { includedTools = endpoints; } From 63d6cd75e8ec5d1985cbaf203bd60a4172c3cbd6 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 19 Sep 2025 02:32:30 +0000 Subject: [PATCH 05/32] chore(codegen): internal codegen update --- packages/mcp-server/src/docs-search-tool.ts | 47 --------------------- packages/mcp-server/src/server.ts | 3 +- 2 files changed, 1 insertion(+), 49 deletions(-) delete mode 100644 packages/mcp-server/src/docs-search-tool.ts diff --git a/packages/mcp-server/src/docs-search-tool.ts b/packages/mcp-server/src/docs-search-tool.ts deleted file mode 100644 index da931b6..0000000 --- a/packages/mcp-server/src/docs-search-tool.ts +++ /dev/null @@ -1,47 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -import { Metadata, asTextContentResult } from './tools/types'; - -import { Tool } from '@modelcontextprotocol/sdk/types.js'; - -export const metadata: Metadata = { - resource: 'all', - operation: 'read', - tags: [], - httpMethod: 'get', -}; - -export const tool: Tool = { - name: 'search_docs', - description: - 'Search for documentation for how to use the client to interact with the API.\nThe tool will return an array of Markdown-formatted documentation pages.', - inputSchema: { - type: 'object', - properties: { - query: { - type: 'string', - description: 'The query to search for.', - }, - language: { - type: 'string', - description: 'The language for the SDK to search for.', - enum: ['http', 'python', 'go', 'typescript', 'terraform', 'ruby', 'java', 'kotlin'], - }, - }, - required: ['query', 'language'], - }, - annotations: { - readOnlyHint: true, - }, -}; - -export const handler = async (_: unknown, args: Record | undefined) => { - const body = args as any; - const query = new URLSearchParams(body).toString(); - const result = await fetch( - 'https://api.stainless.com/api/projects/cas-parser/cas-parser/docs/search?' + query, - ); - return asTextContentResult(await result.json()); -}; - -export default { metadata, tool, handler }; diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index ab248ba..13bcf36 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -21,7 +21,6 @@ import { } from './compat'; import { dynamicTools } from './dynamic-tools'; import { codeTool } from './code-tool'; -import docsSearchTool from './docs-search-tool'; import { McpOptions } from './options'; export { McpOptions } from './options'; @@ -160,7 +159,7 @@ export async function selectTools(endpoints: Endpoint[], options?: McpOptions): } else if (options?.includeDynamicTools) { includedTools = dynamicTools(endpoints); } else if (options?.includeCodeTools) { - includedTools = [await codeTool(), docsSearchTool]; + includedTools = [await codeTool()]; } else { includedTools = endpoints; } From d4fb00e57c79b1b2420cd1fd4d3843ee1e73675d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 20 Sep 2025 02:35:10 +0000 Subject: [PATCH 06/32] chore: do not install brew dependencies in ./scripts/bootstrap by default --- scripts/bootstrap | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/bootstrap b/scripts/bootstrap index 062a034..a8b69ff 100755 --- a/scripts/bootstrap +++ b/scripts/bootstrap @@ -4,10 +4,18 @@ set -e cd "$(dirname "$0")/.." -if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ]; then +if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then brew bundle check >/dev/null 2>&1 || { - echo "==> Installing Homebrew dependencies…" - brew bundle + echo -n "==> Install Homebrew dependencies? (y/N): " + read -r response + case "$response" in + [yY][eE][sS]|[yY]) + brew bundle + ;; + *) + ;; + esac + echo } fi From 7f712351a3d5349fff33bf321ab946a58a8ae015 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 00:18:28 +0000 Subject: [PATCH 07/32] feat(api): api update --- .stats.yml | 4 +- src/resources/cas-parser.ts | 145 ++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 92721c7..06e7614 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 5 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cas-parser%2Fcas-parser-b7fdba3d3f97c7debc22c7ca30b828bce81bcd64648df8c94029b27a3321ebb9.yml -openapi_spec_hash: 03f1315f1d32ada42445ca920f047dff +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cas-parser%2Fcas-parser-9eaed98ce5934f11e901cef376a28257d2c196bd3dba7c690babc6741a730ded.yml +openapi_spec_hash: b76e4e830c4d03ba4cf9429bb9fb9c8a config_hash: cb5d75abef6264b5d86448caf7295afa diff --git a/src/resources/cas-parser.ts b/src/resources/cas-parser.ts index 9bd1cef..0240345 100644 --- a/src/resources/cas-parser.ts +++ b/src/resources/cas-parser.ts @@ -67,6 +67,11 @@ export interface UnifiedResponse { mutual_funds?: Array; + /** + * List of NPS accounts + */ + nps?: Array; + summary?: UnifiedResponse.Summary; } @@ -104,6 +109,11 @@ export namespace UnifiedResponse { holdings?: DematAccount.Holdings; + /** + * List of account holders linked to this demat account + */ + linked_holders?: Array; + /** * Total value of the demat account */ @@ -304,6 +314,18 @@ export namespace UnifiedResponse { value?: number; } } + + export interface LinkedHolder { + /** + * Name of the account holder + */ + name?: string; + + /** + * PAN of the account holder + */ + pan?: string; + } } export interface Insurance { @@ -440,6 +462,11 @@ export namespace UnifiedResponse { */ folio_number?: string; + /** + * List of account holders linked to this mutual fund folio + */ + linked_holders?: Array; + /** * Registrar and Transfer Agent name */ @@ -474,6 +501,18 @@ export namespace UnifiedResponse { pankyc?: string; } + export interface LinkedHolder { + /** + * Name of the account holder + */ + name?: string; + + /** + * PAN of the account holder + */ + pan?: string; + } + export interface Scheme { /** * Additional information specific to the scheme @@ -615,6 +654,98 @@ export namespace UnifiedResponse { } } + export interface Np { + /** + * Additional information specific to the NPS account + */ + additional_info?: unknown; + + /** + * Central Record Keeping Agency name + */ + cra?: string; + + funds?: Array; + + /** + * List of account holders linked to this NPS account + */ + linked_holders?: Array; + + /** + * Permanent Retirement Account Number (PRAN) + */ + pran?: string; + + /** + * Total value of the NPS account + */ + value?: number; + } + + export namespace Np { + export interface Fund { + /** + * Additional information specific to the NPS fund + */ + additional_info?: Fund.AdditionalInfo; + + /** + * Cost of investment + */ + cost?: number; + + /** + * Name of the NPS fund + */ + name?: string; + + /** + * Net Asset Value per unit + */ + nav?: number; + + /** + * Number of units held + */ + units?: number; + + /** + * Current market value of the holding + */ + value?: number; + } + + export namespace Fund { + /** + * Additional information specific to the NPS fund + */ + export interface AdditionalInfo { + /** + * Fund manager name + */ + manager?: string; + + /** + * NPS tier (Tier I or Tier II) + */ + tier?: 1 | 2 | null; + } + } + + export interface LinkedHolder { + /** + * Name of the account holder + */ + name?: string; + + /** + * PAN of the account holder + */ + pan?: string; + } + } + export interface Summary { accounts?: Summary.Accounts; @@ -631,6 +762,8 @@ export namespace UnifiedResponse { insurance?: Accounts.Insurance; mutual_funds?: Accounts.MutualFunds; + + nps?: Accounts.Nps; } export namespace Accounts { @@ -669,6 +802,18 @@ export namespace UnifiedResponse { */ total_value?: number; } + + export interface Nps { + /** + * Number of NPS accounts + */ + count?: number; + + /** + * Total value of NPS accounts + */ + total_value?: number; + } } } } From 86b23ff7a185038d52d18395f7cccb68716affed Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 23 Sep 2025 02:27:13 +0000 Subject: [PATCH 08/32] feat(mcp): enable experimental docs search tool --- packages/mcp-server/src/docs-search-tool.ts | 45 +++++++++++++++++++++ packages/mcp-server/src/server.ts | 3 +- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 packages/mcp-server/src/docs-search-tool.ts diff --git a/packages/mcp-server/src/docs-search-tool.ts b/packages/mcp-server/src/docs-search-tool.ts new file mode 100644 index 0000000..8b9c951 --- /dev/null +++ b/packages/mcp-server/src/docs-search-tool.ts @@ -0,0 +1,45 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import { Metadata, asTextContentResult } from './tools/types'; + +import { Tool } from '@modelcontextprotocol/sdk/types.js'; + +export const metadata: Metadata = { + resource: 'all', + operation: 'read', + tags: [], + httpMethod: 'get', +}; + +export const tool: Tool = { + name: 'search_docs', + description: + 'Search for documentation for how to use the client to interact with the API.\nThe tool will return an array of Markdown-formatted documentation pages.', + inputSchema: { + type: 'object', + properties: { + query: { + type: 'string', + description: 'The query to search for.', + }, + language: { + type: 'string', + description: 'The language for the SDK to search for.', + enum: ['http', 'python', 'go', 'typescript', 'terraform', 'ruby', 'java', 'kotlin'], + }, + }, + required: ['query', 'language'], + }, + annotations: { + readOnlyHint: true, + }, +}; + +export const handler = async (_: unknown, args: Record | undefined) => { + const body = args as any; + const query = new URLSearchParams(body).toString(); + const result = await fetch('https://api.stainless.com/api/projects/cas-parser/docs/search?' + query); + return asTextContentResult(await result.json()); +}; + +export default { metadata, tool, handler }; diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index 13bcf36..ab248ba 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -21,6 +21,7 @@ import { } from './compat'; import { dynamicTools } from './dynamic-tools'; import { codeTool } from './code-tool'; +import docsSearchTool from './docs-search-tool'; import { McpOptions } from './options'; export { McpOptions } from './options'; @@ -159,7 +160,7 @@ export async function selectTools(endpoints: Endpoint[], options?: McpOptions): } else if (options?.includeDynamicTools) { includedTools = dynamicTools(endpoints); } else if (options?.includeCodeTools) { - includedTools = [await codeTool()]; + includedTools = [await codeTool(), docsSearchTool]; } else { includedTools = endpoints; } From e39c90ed1a75114d95ccae8183f69983331bf7c2 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 02:40:56 +0000 Subject: [PATCH 09/32] feat(mcp): add option for including docs tools --- packages/mcp-server/src/options.ts | 19 ++++++++++++++----- packages/mcp-server/src/server.ts | 12 +++++++----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/packages/mcp-server/src/options.ts b/packages/mcp-server/src/options.ts index ecc9f10..348a33d 100644 --- a/packages/mcp-server/src/options.ts +++ b/packages/mcp-server/src/options.ts @@ -17,6 +17,7 @@ export type McpOptions = { includeDynamicTools?: boolean | undefined; includeAllTools?: boolean | undefined; includeCodeTools?: boolean | undefined; + includeDocsTools?: boolean | undefined; filters?: Filter[] | undefined; capabilities?: Partial | undefined; }; @@ -55,13 +56,13 @@ export function parseCLIOptions(): CLIOptions { .option('tools', { type: 'string', array: true, - choices: ['dynamic', 'all', 'code'], + choices: ['dynamic', 'all', 'code', 'docs'], description: 'Use dynamic tools or all tools', }) .option('no-tools', { type: 'string', array: true, - choices: ['dynamic', 'all', 'code'], + choices: ['dynamic', 'all', 'code', 'docs'], description: 'Do not use any dynamic or all tools', }) .option('tool', { @@ -245,13 +246,14 @@ export function parseCLIOptions(): CLIOptions { } } - const shouldIncludeToolType = (toolType: 'dynamic' | 'all' | 'code') => + const shouldIncludeToolType = (toolType: 'dynamic' | 'all' | 'code' | 'docs') => explicitTools ? argv.tools?.includes(toolType) && !argv.noTools?.includes(toolType) : undefined; const explicitTools = Boolean(argv.tools || argv.noTools); const includeDynamicTools = shouldIncludeToolType('dynamic'); const includeAllTools = shouldIncludeToolType('all'); const includeCodeTools = shouldIncludeToolType('code'); + const includeDocsTools = shouldIncludeToolType('docs'); const transport = argv.transport as 'stdio' | 'http'; @@ -261,6 +263,7 @@ export function parseCLIOptions(): CLIOptions { includeDynamicTools, includeAllTools, includeCodeTools, + includeDocsTools, filters, capabilities: clientCapabilities, list: argv.list || false, @@ -280,8 +283,8 @@ const coerceArray = (zodType: T) => ); const QueryOptions = z.object({ - tools: coerceArray(z.enum(['dynamic', 'all'])).describe('Use dynamic tools or all tools'), - no_tools: coerceArray(z.enum(['dynamic', 'all'])).describe('Do not use dynamic tools or all tools'), + tools: coerceArray(z.enum(['dynamic', 'all', 'docs'])).describe('Use dynamic tools or all tools'), + no_tools: coerceArray(z.enum(['dynamic', 'all', 'docs'])).describe('Do not use dynamic tools or all tools'), tool: coerceArray(z.string()).describe('Include tools matching the specified names'), resource: coerceArray(z.string()).describe('Include tools matching the specified resources'), operation: coerceArray(z.enum(['read', 'write'])).describe( @@ -376,11 +379,17 @@ export function parseQueryOptions(defaultOptions: McpOptions, query: unknown): M : queryOptions.tools?.includes('all') ? true : defaultOptions.includeAllTools; + let docsTools: boolean | undefined = + queryOptions.no_tools && queryOptions.no_tools?.includes('docs') ? false + : queryOptions.tools?.includes('docs') ? true + : defaultOptions.includeDocsTools; + return { client: queryOptions.client ?? defaultOptions.client, includeDynamicTools: dynamicTools, includeAllTools: allTools, includeCodeTools: undefined, + includeDocsTools: docsTools, filters, capabilities: clientCapabilities, }; diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index ab248ba..4291d7d 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -148,7 +148,7 @@ export function initMcpServer(params: { export async function selectTools(endpoints: Endpoint[], options?: McpOptions): Promise { const filteredEndpoints = query(options?.filters ?? [], endpoints); - let includedTools = filteredEndpoints; + let includedTools = filteredEndpoints.slice(); if (includedTools.length > 0) { if (options?.includeDynamicTools) { @@ -156,16 +156,18 @@ export async function selectTools(endpoints: Endpoint[], options?: McpOptions): } } else { if (options?.includeAllTools) { - includedTools = endpoints; + includedTools = endpoints.slice(); } else if (options?.includeDynamicTools) { includedTools = dynamicTools(endpoints); } else if (options?.includeCodeTools) { - includedTools = [await codeTool(), docsSearchTool]; + includedTools = [await codeTool()]; } else { - includedTools = endpoints; + includedTools = endpoints.slice(); } } - + if (options?.includeDocsTools ?? true) { + includedTools.push(docsSearchTool); + } const capabilities = { ...defaultClientCapabilities, ...options?.capabilities }; return applyCompatibilityTransformations(includedTools, capabilities); } From 5e72001cfce74462351337f831f066cfdd500db4 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 02:23:38 +0000 Subject: [PATCH 10/32] perf: faster formatting --- scripts/fast-format | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 scripts/fast-format diff --git a/scripts/fast-format b/scripts/fast-format new file mode 100755 index 0000000..ef42df5 --- /dev/null +++ b/scripts/fast-format @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo "Script started with $# arguments" +echo "Arguments: $*" +echo "Script location: $(dirname "$0")" + +cd "$(dirname "$0")/.." +echo "Changed to directory: $(pwd)" + +if [ $# -eq 0 ]; then + echo "Usage: $0 [additional-formatter-args...]" + echo "The file should contain one file path per line" + exit 1 +fi + +FILE_LIST="$1" + +echo "Looking for file: $FILE_LIST" + +if [ ! -f "$FILE_LIST" ]; then + echo "Error: File '$FILE_LIST' not found" + exit 1 +fi + +echo "==> Running eslint --fix" +ESLINT_FILES="$(grep '\.ts$' "$FILE_LIST" || true)" +if ! [ -z "$ESLINT_FILES" ]; then + echo "$ESLINT_FILES" | xargs ./node_modules/.bin/eslint --cache --fix +fi + +echo "==> Running prettier --write" +# format things eslint didn't +PRETTIER_FILES="$(grep '\.\(js\|json\)$' "$FILE_LIST" || true)" +if ! [ -z "$PRETTIER_FILES" ]; then + echo "$PRETTIER_FILES" | xargs ./node_modules/.bin/prettier \ + --write --cache --cache-strategy metadata \ + '!**/dist' '!**/*.ts' '!**/*.mts' '!**/*.cts' '!**/*.js' '!**/*.mjs' '!**/*.cjs' +fi From 3e2894e798b721339c48214a6b8b2d932a3e2c02 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 02:24:41 +0000 Subject: [PATCH 11/32] chore(internal): remove deprecated `compilerOptions.baseUrl` from tsconfig.json This allows sdks to be built using tsgo - see https://github.com/microsoft/typescript-go/issues/474 --- packages/mcp-server/tsconfig.build.json | 4 ++-- packages/mcp-server/tsconfig.json | 5 ++--- tsconfig.build.json | 4 ++-- tsconfig.json | 5 ++--- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/mcp-server/tsconfig.build.json b/packages/mcp-server/tsconfig.build.json index 702ec64..83df2c1 100644 --- a/packages/mcp-server/tsconfig.build.json +++ b/packages/mcp-server/tsconfig.build.json @@ -5,8 +5,8 @@ "compilerOptions": { "rootDir": "./dist/src", "paths": { - "cas-parser-node-mcp/*": ["dist/src/*"], - "cas-parser-node-mcp": ["dist/src/index.ts"] + "cas-parser-node-mcp/*": ["./dist/src/*"], + "cas-parser-node-mcp": ["./dist/src/index.ts"] }, "noEmit": false, "declaration": true, diff --git a/packages/mcp-server/tsconfig.json b/packages/mcp-server/tsconfig.json index e24e096..5c4c76e 100644 --- a/packages/mcp-server/tsconfig.json +++ b/packages/mcp-server/tsconfig.json @@ -7,10 +7,9 @@ "module": "commonjs", "moduleResolution": "node", "esModuleInterop": true, - "baseUrl": "./", "paths": { - "cas-parser-node-mcp/*": ["src/*"], - "cas-parser-node-mcp": ["src/index.ts"] + "cas-parser-node-mcp/*": ["./src/*"], + "cas-parser-node-mcp": ["./src/index.ts"] }, "noEmit": true, diff --git a/tsconfig.build.json b/tsconfig.build.json index 820f85c..bc46a37 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -5,8 +5,8 @@ "compilerOptions": { "rootDir": "./dist/src", "paths": { - "cas-parser-node/*": ["dist/src/*"], - "cas-parser-node": ["dist/src/index.ts"] + "cas-parser-node/*": ["./dist/src/*"], + "cas-parser-node": ["./dist/src/index.ts"] }, "noEmit": false, "declaration": true, diff --git a/tsconfig.json b/tsconfig.json index 3f4f112..dbd3476 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,10 +7,9 @@ "module": "commonjs", "moduleResolution": "node", "esModuleInterop": true, - "baseUrl": "./", "paths": { - "cas-parser-node/*": ["src/*"], - "cas-parser-node": ["src/index.ts"] + "cas-parser-node/*": ["./src/*"], + "cas-parser-node": ["./src/index.ts"] }, "noEmit": true, From 170eef2a9573b4a2c3a51f4a8979a4d8cb49ce77 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 02:30:48 +0000 Subject: [PATCH 12/32] chore(internal): fix incremental formatting in some cases --- scripts/fast-format | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/fast-format b/scripts/fast-format index ef42df5..53721ac 100755 --- a/scripts/fast-format +++ b/scripts/fast-format @@ -35,6 +35,6 @@ echo "==> Running prettier --write" PRETTIER_FILES="$(grep '\.\(js\|json\)$' "$FILE_LIST" || true)" if ! [ -z "$PRETTIER_FILES" ]; then echo "$PRETTIER_FILES" | xargs ./node_modules/.bin/prettier \ - --write --cache --cache-strategy metadata \ + --write --cache --cache-strategy metadata --no-error-on-unmatched-pattern \ '!**/dist' '!**/*.ts' '!**/*.mts' '!**/*.cts' '!**/*.js' '!**/*.mjs' '!**/*.cjs' fi From 5df72aac38114806d999acd0e266eb6c6abff4cc Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 02:32:12 +0000 Subject: [PATCH 13/32] chore(mcp): allow pointing `docs_search` tool at other URLs --- .eslintcache | 1 + packages/mcp-server/src/docs-search-tool.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .eslintcache diff --git a/.eslintcache b/.eslintcache new file mode 100644 index 0000000..1057712 --- /dev/null +++ b/.eslintcache @@ -0,0 +1 @@ +[{"/home/tempuser-nyody4/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/docs-search-tool.ts":"1"},{"size":1464,"mtime":1758940329025}] \ No newline at end of file diff --git a/packages/mcp-server/src/docs-search-tool.ts b/packages/mcp-server/src/docs-search-tool.ts index 8b9c951..17ed811 100644 --- a/packages/mcp-server/src/docs-search-tool.ts +++ b/packages/mcp-server/src/docs-search-tool.ts @@ -35,10 +35,13 @@ export const tool: Tool = { }, }; +const docsSearchURL = + process.env['DOCS_SEARCH_URL'] || 'https://api.stainless.com/api/projects/cas-parser/docs/search'; + export const handler = async (_: unknown, args: Record | undefined) => { const body = args as any; const query = new URLSearchParams(body).toString(); - const result = await fetch('https://api.stainless.com/api/projects/cas-parser/docs/search?' + query); + const result = await fetch(`${docsSearchURL}?${query}`); return asTextContentResult(await result.json()); }; From 22c7ea2ba63601478bc3d9ad534ff0df493f4c8c Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 02:34:13 +0000 Subject: [PATCH 14/32] chore(internal): codegen related update --- .eslintcache | 2 +- .github/workflows/release-doctor.yml | 1 + packages/mcp-server/src/code-tool-paths.cts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.eslintcache b/.eslintcache index 1057712..5f159ab 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/home/tempuser-nyody4/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/docs-search-tool.ts":"1"},{"size":1464,"mtime":1758940329025}] \ No newline at end of file +[{"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/jest.config.ts":"1","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/jest.config.ts":"2","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/code-tool-types.ts":"3","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/code-tool-worker.ts":"4","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/code-tool.ts":"5","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/compat.ts":"6","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/docs-search-tool.ts":"7","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/filtering.ts":"8","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/dynamic-tools.ts":"9","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/headers.ts":"10","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/http.ts":"11","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/options.ts":"12","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/index.ts":"13","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/server.ts":"14","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/stdio.ts":"15","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-generator/generate-cas-cas-generator.ts":"16","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-parser/cams-kfintech-cas-parser.ts":"17","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-parser/cdsl-cas-parser.ts":"18","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-parser/nsdl-cas-parser.ts":"19","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-parser/smart-parse-cas-parser.ts":"20","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools.ts":"21","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/compat.test.ts":"22","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/types.ts":"23","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/index.ts":"24","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/dynamic-tools.test.ts":"25","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/options.test.ts":"26","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/tools.test.ts":"27","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/scripts/publish-packages.ts":"28","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/api-promise.ts":"29","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/client.ts":"30","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/api-promise.ts":"31","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/error.ts":"32","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/resource.ts":"33","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/uploads.ts":"34","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/error.ts":"35","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/index.ts":"36","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/builtin-types.ts":"37","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/detect-platform.ts":"38","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/errors.ts":"39","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/headers.ts":"40","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/parse.ts":"41","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/request-options.ts":"42","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/shim-types.ts":"43","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/shims.ts":"44","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/to-file.ts":"45","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/types.ts":"46","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/uploads.ts":"47","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/base64.ts":"48","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/bytes.ts":"49","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/env.ts":"50","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/log.ts":"51","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/path.ts":"52","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/sleep.ts":"53","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/uuid.ts":"54","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/values.ts":"55","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils.ts":"56","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resource.ts":"57","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources/cas-generator.ts":"58","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources/cas-parser.ts":"59","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources/index.ts":"60","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources.ts":"61","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/uploads.ts":"62","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/version.ts":"63","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/api-resources/cas-generator.test.ts":"64","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/api-resources/cas-parser.test.ts":"65","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/base64.test.ts":"66","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/buildHeaders.test.ts":"67","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/form.test.ts":"68","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/index.test.ts":"69","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/path.test.ts":"70","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/stringifyQuery.test.ts":"71","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/uploads.test.ts":"72"},{"size":610,"mtime":1758940428842,"results":"73","hashOfConfig":"74"},{"size":505,"mtime":1758940446082},{"size":369,"mtime":1758940446082},{"size":1183,"mtime":1758940429082,"results":"75","hashOfConfig":"76"},{"size":5772,"mtime":1758940446082},{"size":12713,"mtime":1758940428986,"results":"77","hashOfConfig":"76"},{"size":1464,"mtime":1758940446082},{"size":368,"mtime":1758940428986,"results":"78","hashOfConfig":"76"},{"size":5599,"mtime":1758940428986,"results":"79","hashOfConfig":"76"},{"size":396,"mtime":1758940446082},{"size":3400,"mtime":1758940446082},{"size":17071,"mtime":1758940429078,"results":"80","hashOfConfig":"76"},{"size":2884,"mtime":1758940428986,"results":"81","hashOfConfig":"76"},{"size":6410,"mtime":1758940446082},{"size":465,"mtime":1758940446082},{"size":2867,"mtime":1758940446082},{"size":1379,"mtime":1758940446082},{"size":1324,"mtime":1758940446082},{"size":1324,"mtime":1758940446082},{"size":1408,"mtime":1758940446082},{"size":31,"mtime":1758940428986,"results":"82","hashOfConfig":"76"},{"size":29411,"mtime":1758940428990,"results":"83","hashOfConfig":"76"},{"size":2193,"mtime":1758940446082},{"size":2656,"mtime":1758940446082},{"size":6851,"mtime":1758940428990,"results":"84","hashOfConfig":"76"},{"size":16226,"mtime":1758940428994,"results":"85","hashOfConfig":"76"},{"size":6594,"mtime":1758940428994,"results":"86","hashOfConfig":"76"},{"size":3689,"mtime":1758940428846,"results":"87","hashOfConfig":"74"},{"size":92,"mtime":1758940446082},{"size":26425,"mtime":1758940446082},{"size":3132,"mtime":1758940446082},{"size":3981,"mtime":1758940446082},{"size":270,"mtime":1758940429070,"results":"88","hashOfConfig":"74"},{"size":119,"mtime":1758940428854,"results":"89","hashOfConfig":"74"},{"size":80,"mtime":1758940446082},{"size":580,"mtime":1758940446082},{"size":2917,"mtime":1758940446082},{"size":6407,"mtime":1758940446082},{"size":1187,"mtime":1758940446082},{"size":3026,"mtime":1758940446082},{"size":1504,"mtime":1758940446082},{"size":2473,"mtime":1758940446082},{"size":929,"mtime":1758940446082},{"size":3527,"mtime":1758940446086},{"size":5211,"mtime":1758940446086},{"size":6352,"mtime":1758940446086},{"size":6751,"mtime":1758940428858,"results":"90","hashOfConfig":"74"},{"size":1278,"mtime":1758940429062,"results":"91","hashOfConfig":"74"},{"size":831,"mtime":1758940428858,"results":"92","hashOfConfig":"74"},{"size":612,"mtime":1758940429066,"results":"93","hashOfConfig":"74"},{"size":3151,"mtime":1758940446086},{"size":3213,"mtime":1758940428862,"results":"94","hashOfConfig":"74"},{"size":182,"mtime":1758940429066,"results":"95","hashOfConfig":"74"},{"size":601,"mtime":1758940446086},{"size":3146,"mtime":1758940429062,"results":"96","hashOfConfig":"74"},{"size":271,"mtime":1758940429062,"results":"97","hashOfConfig":"74"},{"size":86,"mtime":1758940446086},{"size":1968,"mtime":1758940446086},{"size":17811,"mtime":1758940446086},{"size":402,"mtime":1758940446086},{"size":35,"mtime":1758940428862,"results":"98","hashOfConfig":"74"},{"size":84,"mtime":1758940446086},{"size":59,"mtime":1758940446086},{"size":1278,"mtime":1758940446086},{"size":2347,"mtime":1758940446086},{"size":2069,"mtime":1758940428862,"results":"99","hashOfConfig":"76"},{"size":2189,"mtime":1758940428862,"results":"100","hashOfConfig":"76"},{"size":1902,"mtime":1758940428862,"results":"101","hashOfConfig":"76"},{"size":22979,"mtime":1758940446086},{"size":17597,"mtime":1758940428866,"results":"102","hashOfConfig":"76"},{"size":930,"mtime":1758940446086},{"size":3495,"mtime":1758940428866,"results":"103","hashOfConfig":"76"},{"filePath":"104","messages":"105","suppressedMessages":"106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1cg5263",{"filePath":"107","messages":"108","suppressedMessages":"109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"g8e85j",{"filePath":"110","messages":"111","suppressedMessages":"112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"113","messages":"114","suppressedMessages":"115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"116","messages":"117","suppressedMessages":"118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"119","messages":"120","suppressedMessages":"121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"122","messages":"123","suppressedMessages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"125","messages":"126","suppressedMessages":"127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"128","messages":"129","suppressedMessages":"130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"131","messages":"132","suppressedMessages":"133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"134","messages":"135","suppressedMessages":"136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"137","messages":"138","suppressedMessages":"139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"140","messages":"141","suppressedMessages":"142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"143","messages":"144","suppressedMessages":"145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"146","messages":"147","suppressedMessages":"148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"149","messages":"150","suppressedMessages":"151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"152","messages":"153","suppressedMessages":"154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"155","messages":"156","suppressedMessages":"157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"158","messages":"159","suppressedMessages":"160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"161","messages":"162","suppressedMessages":"163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"164","messages":"165","suppressedMessages":"166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"167","messages":"168","suppressedMessages":"169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"170","messages":"171","suppressedMessages":"172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"173","messages":"174","suppressedMessages":"175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"176","messages":"177","suppressedMessages":"178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"179","messages":"180","suppressedMessages":"181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"182","messages":"183","suppressedMessages":"184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"185","messages":"186","suppressedMessages":"187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"188","messages":"189","suppressedMessages":"190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/jest.config.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/code-tool-worker.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/compat.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/filtering.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/dynamic-tools.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/options.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/index.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/compat.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/dynamic-tools.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/options.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/tools.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/scripts/publish-packages.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/resource.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/uploads.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/uploads.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/base64.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/bytes.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/env.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/path.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/sleep.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/values.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/base64.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/buildHeaders.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/form.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/path.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/uploads.test.ts",[],[]] \ No newline at end of file diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml index 0a7b0ac..b572278 100644 --- a/.github/workflows/release-doctor.yml +++ b/.github/workflows/release-doctor.yml @@ -19,3 +19,4 @@ jobs: bash ./bin/check-release-environment env: NPM_TOKEN: ${{ secrets.CAS_PARSER_NPM_TOKEN || secrets.NPM_TOKEN }} + diff --git a/packages/mcp-server/src/code-tool-paths.cts b/packages/mcp-server/src/code-tool-paths.cts index 15ce7f5..3d6655a 100644 --- a/packages/mcp-server/src/code-tool-paths.cts +++ b/packages/mcp-server/src/code-tool-paths.cts @@ -1,3 +1,3 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -export const workerPath = require.resolve('./code-tool-worker.mjs'); +export const workerPath = require.resolve('./code-tool-worker.mjs') From 475202b2ce09234a57356ce5a1dd466f3122e9a8 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 02:36:14 +0000 Subject: [PATCH 15/32] chore(internal): ignore .eslintcache --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 74cba89..d62bea5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,6 @@ dist dist-deno /*.tgz .idea/ +.eslintcache dist-bundle *.mcpb From 6d18c3d887c074a25205c62dd3a461fff1424d28 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 02:24:29 +0000 Subject: [PATCH 16/32] fix(mcp): fix cli argument parsing logic --- .eslintcache | 2 +- packages/mcp-server/src/options.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.eslintcache b/.eslintcache index 5f159ab..a22c95e 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/jest.config.ts":"1","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/jest.config.ts":"2","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/code-tool-types.ts":"3","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/code-tool-worker.ts":"4","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/code-tool.ts":"5","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/compat.ts":"6","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/docs-search-tool.ts":"7","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/filtering.ts":"8","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/dynamic-tools.ts":"9","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/headers.ts":"10","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/http.ts":"11","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/options.ts":"12","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/index.ts":"13","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/server.ts":"14","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/stdio.ts":"15","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-generator/generate-cas-cas-generator.ts":"16","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-parser/cams-kfintech-cas-parser.ts":"17","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-parser/cdsl-cas-parser.ts":"18","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-parser/nsdl-cas-parser.ts":"19","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/cas-parser/smart-parse-cas-parser.ts":"20","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools.ts":"21","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/compat.test.ts":"22","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/types.ts":"23","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools/index.ts":"24","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/dynamic-tools.test.ts":"25","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/options.test.ts":"26","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/tools.test.ts":"27","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/scripts/publish-packages.ts":"28","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/api-promise.ts":"29","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/client.ts":"30","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/api-promise.ts":"31","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/error.ts":"32","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/resource.ts":"33","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/uploads.ts":"34","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/error.ts":"35","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/index.ts":"36","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/builtin-types.ts":"37","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/detect-platform.ts":"38","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/errors.ts":"39","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/headers.ts":"40","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/parse.ts":"41","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/request-options.ts":"42","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/shim-types.ts":"43","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/shims.ts":"44","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/to-file.ts":"45","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/types.ts":"46","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/uploads.ts":"47","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/base64.ts":"48","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/bytes.ts":"49","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/env.ts":"50","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/log.ts":"51","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/path.ts":"52","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/sleep.ts":"53","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/uuid.ts":"54","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/values.ts":"55","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils.ts":"56","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resource.ts":"57","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources/cas-generator.ts":"58","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources/cas-parser.ts":"59","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources/index.ts":"60","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources.ts":"61","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/uploads.ts":"62","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/version.ts":"63","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/api-resources/cas-generator.test.ts":"64","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/api-resources/cas-parser.test.ts":"65","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/base64.test.ts":"66","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/buildHeaders.test.ts":"67","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/form.test.ts":"68","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/index.test.ts":"69","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/path.test.ts":"70","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/stringifyQuery.test.ts":"71","/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/uploads.test.ts":"72"},{"size":610,"mtime":1758940428842,"results":"73","hashOfConfig":"74"},{"size":505,"mtime":1758940446082},{"size":369,"mtime":1758940446082},{"size":1183,"mtime":1758940429082,"results":"75","hashOfConfig":"76"},{"size":5772,"mtime":1758940446082},{"size":12713,"mtime":1758940428986,"results":"77","hashOfConfig":"76"},{"size":1464,"mtime":1758940446082},{"size":368,"mtime":1758940428986,"results":"78","hashOfConfig":"76"},{"size":5599,"mtime":1758940428986,"results":"79","hashOfConfig":"76"},{"size":396,"mtime":1758940446082},{"size":3400,"mtime":1758940446082},{"size":17071,"mtime":1758940429078,"results":"80","hashOfConfig":"76"},{"size":2884,"mtime":1758940428986,"results":"81","hashOfConfig":"76"},{"size":6410,"mtime":1758940446082},{"size":465,"mtime":1758940446082},{"size":2867,"mtime":1758940446082},{"size":1379,"mtime":1758940446082},{"size":1324,"mtime":1758940446082},{"size":1324,"mtime":1758940446082},{"size":1408,"mtime":1758940446082},{"size":31,"mtime":1758940428986,"results":"82","hashOfConfig":"76"},{"size":29411,"mtime":1758940428990,"results":"83","hashOfConfig":"76"},{"size":2193,"mtime":1758940446082},{"size":2656,"mtime":1758940446082},{"size":6851,"mtime":1758940428990,"results":"84","hashOfConfig":"76"},{"size":16226,"mtime":1758940428994,"results":"85","hashOfConfig":"76"},{"size":6594,"mtime":1758940428994,"results":"86","hashOfConfig":"76"},{"size":3689,"mtime":1758940428846,"results":"87","hashOfConfig":"74"},{"size":92,"mtime":1758940446082},{"size":26425,"mtime":1758940446082},{"size":3132,"mtime":1758940446082},{"size":3981,"mtime":1758940446082},{"size":270,"mtime":1758940429070,"results":"88","hashOfConfig":"74"},{"size":119,"mtime":1758940428854,"results":"89","hashOfConfig":"74"},{"size":80,"mtime":1758940446082},{"size":580,"mtime":1758940446082},{"size":2917,"mtime":1758940446082},{"size":6407,"mtime":1758940446082},{"size":1187,"mtime":1758940446082},{"size":3026,"mtime":1758940446082},{"size":1504,"mtime":1758940446082},{"size":2473,"mtime":1758940446082},{"size":929,"mtime":1758940446082},{"size":3527,"mtime":1758940446086},{"size":5211,"mtime":1758940446086},{"size":6352,"mtime":1758940446086},{"size":6751,"mtime":1758940428858,"results":"90","hashOfConfig":"74"},{"size":1278,"mtime":1758940429062,"results":"91","hashOfConfig":"74"},{"size":831,"mtime":1758940428858,"results":"92","hashOfConfig":"74"},{"size":612,"mtime":1758940429066,"results":"93","hashOfConfig":"74"},{"size":3151,"mtime":1758940446086},{"size":3213,"mtime":1758940428862,"results":"94","hashOfConfig":"74"},{"size":182,"mtime":1758940429066,"results":"95","hashOfConfig":"74"},{"size":601,"mtime":1758940446086},{"size":3146,"mtime":1758940429062,"results":"96","hashOfConfig":"74"},{"size":271,"mtime":1758940429062,"results":"97","hashOfConfig":"74"},{"size":86,"mtime":1758940446086},{"size":1968,"mtime":1758940446086},{"size":17811,"mtime":1758940446086},{"size":402,"mtime":1758940446086},{"size":35,"mtime":1758940428862,"results":"98","hashOfConfig":"74"},{"size":84,"mtime":1758940446086},{"size":59,"mtime":1758940446086},{"size":1278,"mtime":1758940446086},{"size":2347,"mtime":1758940446086},{"size":2069,"mtime":1758940428862,"results":"99","hashOfConfig":"76"},{"size":2189,"mtime":1758940428862,"results":"100","hashOfConfig":"76"},{"size":1902,"mtime":1758940428862,"results":"101","hashOfConfig":"76"},{"size":22979,"mtime":1758940446086},{"size":17597,"mtime":1758940428866,"results":"102","hashOfConfig":"76"},{"size":930,"mtime":1758940446086},{"size":3495,"mtime":1758940428866,"results":"103","hashOfConfig":"76"},{"filePath":"104","messages":"105","suppressedMessages":"106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1cg5263",{"filePath":"107","messages":"108","suppressedMessages":"109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"g8e85j",{"filePath":"110","messages":"111","suppressedMessages":"112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"113","messages":"114","suppressedMessages":"115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"116","messages":"117","suppressedMessages":"118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"119","messages":"120","suppressedMessages":"121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"122","messages":"123","suppressedMessages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"125","messages":"126","suppressedMessages":"127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"128","messages":"129","suppressedMessages":"130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"131","messages":"132","suppressedMessages":"133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"134","messages":"135","suppressedMessages":"136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"137","messages":"138","suppressedMessages":"139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"140","messages":"141","suppressedMessages":"142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"143","messages":"144","suppressedMessages":"145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"146","messages":"147","suppressedMessages":"148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"149","messages":"150","suppressedMessages":"151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"152","messages":"153","suppressedMessages":"154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"155","messages":"156","suppressedMessages":"157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"158","messages":"159","suppressedMessages":"160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"161","messages":"162","suppressedMessages":"163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"164","messages":"165","suppressedMessages":"166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"167","messages":"168","suppressedMessages":"169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"170","messages":"171","suppressedMessages":"172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"173","messages":"174","suppressedMessages":"175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"176","messages":"177","suppressedMessages":"178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"179","messages":"180","suppressedMessages":"181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"182","messages":"183","suppressedMessages":"184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"185","messages":"186","suppressedMessages":"187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"188","messages":"189","suppressedMessages":"190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/jest.config.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/code-tool-worker.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/compat.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/filtering.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/dynamic-tools.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/options.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/index.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/tools.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/compat.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/dynamic-tools.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/options.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/tests/tools.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/scripts/publish-packages.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/resource.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/core/uploads.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/uploads.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/base64.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/bytes.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/env.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/path.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/sleep.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils/values.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/internal/utils.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/src/resources.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/base64.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/buildHeaders.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/form.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/path.test.ts",[],[],"/home/tempuser-x04hvr/run/codegen-output/cas-parser/cas-parser-typescript/tests/uploads.test.ts",[],[]] \ No newline at end of file +[{"/home/tempuser-9fbby9/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/options.ts":"1"},{"size":17015,"mtime":1759199066312,"results":"2","hashOfConfig":"3"},{"filePath":"4","messages":"5","suppressedMessages":"6","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"g8e85j","/home/tempuser-9fbby9/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/options.ts",[],[]] \ No newline at end of file diff --git a/packages/mcp-server/src/options.ts b/packages/mcp-server/src/options.ts index 348a33d..4fe3b98 100644 --- a/packages/mcp-server/src/options.ts +++ b/packages/mcp-server/src/options.ts @@ -247,9 +247,10 @@ export function parseCLIOptions(): CLIOptions { } const shouldIncludeToolType = (toolType: 'dynamic' | 'all' | 'code' | 'docs') => - explicitTools ? argv.tools?.includes(toolType) && !argv.noTools?.includes(toolType) : undefined; + argv.noTools?.includes(toolType) ? false + : argv.tools?.includes(toolType) ? true + : undefined; - const explicitTools = Boolean(argv.tools || argv.noTools); const includeDynamicTools = shouldIncludeToolType('dynamic'); const includeAllTools = shouldIncludeToolType('all'); const includeCodeTools = shouldIncludeToolType('code'); From 691d0c124350d54df029a9fa2873a85369615f7d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 02:27:00 +0000 Subject: [PATCH 17/32] fix(mcp): resolve a linting issue in server code --- packages/mcp-server/src/code-tool-paths.cts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp-server/src/code-tool-paths.cts b/packages/mcp-server/src/code-tool-paths.cts index 3d6655a..15ce7f5 100644 --- a/packages/mcp-server/src/code-tool-paths.cts +++ b/packages/mcp-server/src/code-tool-paths.cts @@ -1,3 +1,3 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -export const workerPath = require.resolve('./code-tool-worker.mjs') +export const workerPath = require.resolve('./code-tool-worker.mjs'); From 952858c419b88f6a5205daece2c9ecdac5324dd1 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 02:27:28 +0000 Subject: [PATCH 18/32] chore: update lockfile --- packages/mcp-server/yarn.lock | 306 +--------------------------------- 1 file changed, 4 insertions(+), 302 deletions(-) diff --git a/packages/mcp-server/yarn.lock b/packages/mcp-server/yarn.lock index ad81983..966d057 100644 --- a/packages/mcp-server/yarn.lock +++ b/packages/mcp-server/yarn.lock @@ -10,20 +10,6 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@anthropic-ai/dxt@^0.2.6": - version "0.2.6" - resolved "https://registry.yarnpkg.com/@anthropic-ai/dxt/-/dxt-0.2.6.tgz#636197c3d083c9136ac3b5a11d2ba82477fdc2c6" - integrity sha512-5VSqKRpkytTYh5UJz9jOaI8zLXNCe4Gc+ArKGFV6IeWnEPP0Qnd0k+V3pO8cYzp92Puf/+Cgo0xc4haE0azTXg== - dependencies: - "@inquirer/prompts" "^6.0.1" - commander "^13.1.0" - fflate "^0.8.2" - galactus "^1.0.0" - ignore "^7.0.5" - node-forge "^1.3.1" - pretty-bytes "^5.6.0" - zod "^3.25.67" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" @@ -350,144 +336,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== -"@inquirer/checkbox@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-3.0.1.tgz#0a57f704265f78c36e17f07e421b98efb4b9867b" - integrity sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/figures" "^1.0.6" - "@inquirer/type" "^2.0.0" - ansi-escapes "^4.3.2" - yoctocolors-cjs "^2.1.2" - -"@inquirer/confirm@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-4.0.1.tgz#9106d6bffa0b2fdd0e4f60319b6f04f2e06e6e25" - integrity sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - -"@inquirer/core@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.2.1.tgz#677c49dee399c9063f31e0c93f0f37bddc67add1" - integrity sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg== - dependencies: - "@inquirer/figures" "^1.0.6" - "@inquirer/type" "^2.0.0" - "@types/mute-stream" "^0.0.4" - "@types/node" "^22.5.5" - "@types/wrap-ansi" "^3.0.0" - ansi-escapes "^4.3.2" - cli-width "^4.1.0" - mute-stream "^1.0.0" - signal-exit "^4.1.0" - strip-ansi "^6.0.1" - wrap-ansi "^6.2.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/editor@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-3.0.1.tgz#d109f21e050af6b960725388cb1c04214ed7c7bc" - integrity sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - external-editor "^3.1.0" - -"@inquirer/expand@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-3.0.1.tgz#aed9183cac4d12811be47a4a895ea8e82a17e22c" - integrity sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/figures@^1.0.6": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.13.tgz#ad0afd62baab1c23175115a9b62f511b6a751e45" - integrity sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw== - -"@inquirer/input@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-3.0.1.tgz#de63d49e516487388508d42049deb70f2cb5f28e" - integrity sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - -"@inquirer/number@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-2.0.1.tgz#b9863080d02ab7dc2e56e16433d83abea0f2a980" - integrity sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - -"@inquirer/password@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-3.0.1.tgz#2a9a9143591088336bbd573bcb05d5bf080dbf87" - integrity sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - ansi-escapes "^4.3.2" - -"@inquirer/prompts@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-6.0.1.tgz#43f5c0ed35c5ebfe52f1d43d46da2d363d950071" - integrity sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A== - dependencies: - "@inquirer/checkbox" "^3.0.1" - "@inquirer/confirm" "^4.0.1" - "@inquirer/editor" "^3.0.1" - "@inquirer/expand" "^3.0.1" - "@inquirer/input" "^3.0.1" - "@inquirer/number" "^2.0.1" - "@inquirer/password" "^3.0.1" - "@inquirer/rawlist" "^3.0.1" - "@inquirer/search" "^2.0.1" - "@inquirer/select" "^3.0.1" - -"@inquirer/rawlist@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-3.0.1.tgz#729def358419cc929045f264131878ed379e0af3" - integrity sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/search@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-2.0.1.tgz#69b774a0a826de2e27b48981d01bc5ad81e73721" - integrity sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/figures" "^1.0.6" - "@inquirer/type" "^2.0.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/select@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-3.0.1.tgz#1df9ed27fb85a5f526d559ac5ce7cc4e9dc4e7ec" - integrity sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/figures" "^1.0.6" - "@inquirer/type" "^2.0.0" - ansi-escapes "^4.3.2" - yoctocolors-cjs "^2.1.2" - -"@inquirer/type@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-2.0.0.tgz#08fa513dca2cb6264fe1b0a2fabade051444e3f6" - integrity sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag== - dependencies: - mute-stream "^1.0.0" - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -947,13 +795,6 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/mute-stream@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@types/mute-stream/-/mute-stream-0.0.4.tgz#77208e56a08767af6c5e1237be8888e2f255c478" - integrity sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow== - dependencies: - "@types/node" "*" - "@types/node@*": version "22.15.17" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.17.tgz#355ccec95f705b664e4332bb64a7f07db30b7055" @@ -961,13 +802,6 @@ dependencies: undici-types "~6.21.0" -"@types/node@^22.5.5": - version "22.18.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.18.0.tgz#9e4709be4f104e3568f7dd1c71e2949bf147a47b" - integrity sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ== - dependencies: - undici-types "~6.21.0" - "@types/qs@*", "@types/qs@^6.14.0": version "6.14.0" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" @@ -1000,11 +834,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@types/wrap-ansi@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" - integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g== - "@types/yargs-parser@*": version "21.0.3" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" @@ -1151,7 +980,7 @@ ajv@^6.12.4, ajv@^6.12.6: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: +ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -1393,11 +1222,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - ci-info@^3.2.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -1413,11 +1237,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-width@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" - integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== - cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -1454,11 +1273,6 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -commander@^13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" - integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1871,15 +1685,6 @@ express@^5.0.1, express@^5.1.0: type-is "^2.0.1" vary "^1.1.2" -external-editor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -1925,11 +1730,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fflate@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" - integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -1993,14 +1793,6 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== -flora-colossus@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flora-colossus/-/flora-colossus-2.0.0.tgz#af1e85db0a8256ef05f3fb531c1235236c97220a" - integrity sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA== - dependencies: - debug "^4.3.4" - fs-extra "^10.1.0" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -2011,15 +1803,6 @@ fresh@^2.0.0: resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4" integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== -fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2035,15 +1818,6 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -galactus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/galactus/-/galactus-1.0.0.tgz#c2615182afa0c6d0859b92e56ae36d052827db7e" - integrity sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ== - dependencies: - debug "^4.3.4" - flora-colossus "^2.0.0" - fs-extra "^10.1.0" - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -2136,7 +1910,7 @@ gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: +graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -2191,23 +1965,11 @@ iconv-lite@0.6.3, iconv-lite@^0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -ignore@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" - integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== - import-fresh@^3.2.1: version "3.3.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" @@ -2786,15 +2548,6 @@ json5@^2.2.2, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" - integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -2968,11 +2721,6 @@ ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mute-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -2983,11 +2731,6 @@ negotiator@^1.0.0: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== -node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -3053,11 +2796,6 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - p-all@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-all/-/p-all-3.0.0.tgz#077c023c37e75e760193badab2bad3ccd5782bfb" @@ -3201,11 +2939,6 @@ prettier@^3.0.0: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== -pretty-bytes@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -3353,7 +3086,7 @@ safe-buffer@5.2.1, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +"safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -3457,11 +3190,6 @@ signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -3606,13 +3334,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -3753,11 +3474,6 @@ undici-types@~6.21.0: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -3821,15 +3537,6 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -3890,11 +3597,6 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -yoctocolors-cjs@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz#7e4964ea8ec422b7a40ac917d3a344cfd2304baa" - integrity sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw== - zod-to-json-schema@^3.24.1, zod-to-json-schema@^3.24.5: version "3.24.5" resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz#d1095440b147fb7c2093812a53c54df8d5df50a3" @@ -3910,7 +3612,7 @@ zod@^3.23.8: resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.4.tgz#e2e2cca5faaa012d76e527d0d36622e0a90c315f" integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg== -zod@^3.25.20, zod@^3.25.67: +zod@^3.25.20: version "3.25.76" resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== From 8897700e7ebf141e8416adf62a78a679e37c55bc Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 4 Oct 2025 02:14:19 +0000 Subject: [PATCH 19/32] chore(internal): remove .eslintcache --- .eslintcache | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .eslintcache diff --git a/.eslintcache b/.eslintcache deleted file mode 100644 index a22c95e..0000000 --- a/.eslintcache +++ /dev/null @@ -1 +0,0 @@ -[{"/home/tempuser-9fbby9/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/options.ts":"1"},{"size":17015,"mtime":1759199066312,"results":"2","hashOfConfig":"3"},{"filePath":"4","messages":"5","suppressedMessages":"6","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"g8e85j","/home/tempuser-9fbby9/run/codegen-output/cas-parser/cas-parser-typescript/packages/mcp-server/src/options.ts",[],[]] \ No newline at end of file From 2c53c6a40eae947ff82bf62021471d770f3154a0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 4 Oct 2025 02:14:17 +0000 Subject: [PATCH 20/32] =?UTF-8?q?chore(jsdoc):=20fix=20@link=20annotations?= =?UTF-8?q?=20to=20refer=20only=20to=20parts=20of=20the=20package=E2=80=98?= =?UTF-8?q?s=20public=20interface?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/internal/to-file.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internal/to-file.ts b/src/internal/to-file.ts index 245e849..30eada3 100644 --- a/src/internal/to-file.ts +++ b/src/internal/to-file.ts @@ -73,7 +73,7 @@ export type ToFileInput = /** * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats - * @param value the raw content of the file. Can be an {@link Uploadable}, {@link BlobLikePart}, or {@link AsyncIterable} of {@link BlobLikePart}s + * @param value the raw content of the file. Can be an {@link Uploadable}, BlobLikePart, or AsyncIterable of BlobLikeParts * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible * @param {Object=} options additional properties * @param {string=} options.type the MIME type of the content From 080eee4a0de5730b86eabe4cdd9bf6831ed69713 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 7 Oct 2025 02:29:42 +0000 Subject: [PATCH 21/32] chore(internal): use npm pack for build uploads --- scripts/utils/upload-artifact.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/utils/upload-artifact.sh b/scripts/utils/upload-artifact.sh index 89be9e7..1c37c70 100755 --- a/scripts/utils/upload-artifact.sh +++ b/scripts/utils/upload-artifact.sh @@ -12,9 +12,11 @@ if [[ "$SIGNED_URL" == "null" ]]; then exit 1 fi -UPLOAD_RESPONSE=$(tar "${BASE_PATH:+-C$BASE_PATH}" -cz "${ARTIFACT_PATH:-dist}" | curl -v -X PUT \ +TARBALL=$(cd dist && npm pack --silent) + +UPLOAD_RESPONSE=$(curl -v -X PUT \ -H "Content-Type: application/gzip" \ - --data-binary @- "$SIGNED_URL" 2>&1) + --data-binary "@dist/$TARBALL" "$SIGNED_URL" 2>&1) if echo "$UPLOAD_RESPONSE" | grep -q "HTTP/[0-9.]* 200"; then echo -e "\033[32mUploaded build to Stainless storage.\033[0m" From 464c4adaf3e55bba56c65b932686b196057816c8 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 02:33:50 +0000 Subject: [PATCH 22/32] chore: extract some types in mcp docs --- .../src/tools/cas-generator/generate-cas-cas-generator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp-server/src/tools/cas-generator/generate-cas-cas-generator.ts b/packages/mcp-server/src/tools/cas-generator/generate-cas-cas-generator.ts index 3075230..fd414e3 100644 --- a/packages/mcp-server/src/tools/cas-generator/generate-cas-cas-generator.ts +++ b/packages/mcp-server/src/tools/cas-generator/generate-cas-cas-generator.ts @@ -18,7 +18,7 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'generate_cas_cas_generator', description: - "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nThis endpoint generates CAS (Consolidated Account Statement) documents by submitting a mailback request to the specified CAS authority.\nCurrently only supports KFintech, with plans to support CAMS, CDSL, and NSDL in the future.\n\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n msg: {\n type: 'string'\n },\n status: {\n type: 'string'\n }\n }\n}\n```", + "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nThis endpoint generates CAS (Consolidated Account Statement) documents by submitting a mailback request to the specified CAS authority.\nCurrently only supports KFintech, with plans to support CAMS, CDSL, and NSDL in the future.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/cas_generator_generate_cas_response',\n $defs: {\n cas_generator_generate_cas_response: {\n type: 'object',\n properties: {\n msg: {\n type: 'string'\n },\n status: {\n type: 'string'\n }\n }\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { From 3a1120e08ae1f95374532f8711918b20ad6b74c1 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 02:31:18 +0000 Subject: [PATCH 23/32] fix(mcpb): pin @anthropic-ai/mcpb version --- packages/mcp-server/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index d0fc7cd..3f4f68c 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -47,7 +47,7 @@ "mcp-server": "dist/index.js" }, "devDependencies": { - "@anthropic-ai/mcpb": "^1.1.0", + "@anthropic-ai/mcpb": "1.1.0", "@types/cors": "^2.8.19", "@types/express": "^5.0.3", "@types/jest": "^29.4.0", From 0f7008c68019fc03ae354f85839784008e838eac Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 03:36:26 +0000 Subject: [PATCH 24/32] chore(internal): grammar fix (it's -> its) --- packages/mcp-server/src/code-tool.ts | 4 ++-- packages/mcp-server/src/dynamic-tools.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/mcp-server/src/code-tool.ts b/packages/mcp-server/src/code-tool.ts index 8428672..22d01d7 100644 --- a/packages/mcp-server/src/code-tool.ts +++ b/packages/mcp-server/src/code-tool.ts @@ -12,7 +12,7 @@ import { WorkerInput, WorkerError, WorkerSuccess } from './code-tool-types'; /** * A tool that runs code against a copy of the SDK. * - * Instead of exposing every endpoint as it's own tool, which uses up too many tokens for LLMs to use at once, + * Instead of exposing every endpoint as its own tool, which uses up too many tokens for LLMs to use at once, * we expose a single tool that can be used to search for endpoints by name, resource, operation, or tag, and then * a generic endpoint that can be used to invoke any endpoint with the provided arguments. * @@ -23,7 +23,7 @@ export async function codeTool(): Promise { const tool: Tool = { name: 'execute', description: - 'Runs Typescript code to interact with the API.\nYou are a skilled programmer writing code to interface with the service.\nDefine an async function named "run" that takes a single parameter of an initialized client, and it will be run.\nDo not initialize a client, but instead use the client that you are given as a parameter.\nYou will be returned anything that your function returns, plus the results of any console.log statements.\nIf any code triggers an error, the tool will return an error response, so you do not need to add error handling unless you want to output something more helpful than the raw error.\nIt is not necessary to add comments to code, unless by adding those comments you believe that you can generate better code.\nThis code will run in a container, and you will not be able to use fetch or otherwise interact with the network calls other than through the client you are given.\nAny variables you define won\'t live between successive uses of this call, so make sure to return or log any data you might need later.', + 'Runs TypeScript code to interact with the API.\nYou are a skilled programmer writing code to interface with the service.\nDefine an async function named "run" that takes a single parameter of an initialized client, and it will be run.\nDo not initialize a client, but instead use the client that you are given as a parameter.\nYou will be returned anything that your function returns, plus the results of any console.log statements.\nIf any code triggers an error, the tool will return an error response, so you do not need to add error handling unless you want to output something more helpful than the raw error.\nIt is not necessary to add comments to code, unless by adding those comments you believe that you can generate better code.\nThis code will run in a container, and you will not be able to use fetch or otherwise interact with the network calls other than through the client you are given.\nAny variables you define won\'t live between successive uses of this call, so make sure to return or log any data you might need later.', inputSchema: { type: 'object', properties: { code: { type: 'string' } } }, }; diff --git a/packages/mcp-server/src/dynamic-tools.ts b/packages/mcp-server/src/dynamic-tools.ts index e0b4266..364bc79 100644 --- a/packages/mcp-server/src/dynamic-tools.ts +++ b/packages/mcp-server/src/dynamic-tools.ts @@ -14,7 +14,7 @@ function zodToInputSchema(schema: z.ZodSchema) { /** * A list of tools that expose all the endpoints in the API dynamically. * - * Instead of exposing every endpoint as it's own tool, which uses up too many tokens for LLMs to use at once, + * Instead of exposing every endpoint as its own tool, which uses up too many tokens for LLMs to use at once, * we expose a single tool that can be used to search for endpoints by name, resource, operation, or tag, and then * a generic endpoint that can be used to invoke any endpoint with the provided arguments. * From 0b9eb86e3ee6d9e2a35b396453bf4fbec66dc905 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 03:41:31 +0000 Subject: [PATCH 25/32] chore: use structured error when code execution tool errors --- packages/mcp-server/src/code-tool.ts | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/mcp-server/src/code-tool.ts b/packages/mcp-server/src/code-tool.ts index 22d01d7..59aba93 100644 --- a/packages/mcp-server/src/code-tool.ts +++ b/packages/mcp-server/src/code-tool.ts @@ -3,7 +3,7 @@ import { dirname } from 'node:path'; import { pathToFileURL } from 'node:url'; import CasParser, { ClientOptions } from 'cas-parser-node'; -import { Endpoint, ContentBlock, Metadata } from './tools/types'; +import { ContentBlock, Endpoint, Metadata, ToolCallResult } from './tools/types'; import { Tool } from '@modelcontextprotocol/sdk/types.js'; @@ -31,7 +31,7 @@ export async function codeTool(): Promise { const { newDenoHTTPWorker } = await import('@valtown/deno-http-worker'); const { workerPath } = await import('./code-tool-paths.cjs'); - const handler = async (client: CasParser, args: unknown) => { + const handler = async (client: CasParser, args: unknown): Promise => { const baseURLHostname = new URL(client.baseURL).hostname; const { code } = args as { code: string }; @@ -97,7 +97,7 @@ export async function codeTool(): Promise { } satisfies WorkerInput); req.write(body, (err) => { - if (err !== null && err !== undefined) { + if (err != null) { reject(err); } }); @@ -108,12 +108,12 @@ export async function codeTool(): Promise { if (resp.status === 200) { const { result, logLines, errLines } = (await resp.json()) as WorkerSuccess; const returnOutput: ContentBlock | null = - result === null ? null - : result === undefined ? null - : { + result == null ? null : ( + { type: 'text', - text: typeof result === 'string' ? (result as string) : JSON.stringify(result), - }; + text: typeof result === 'string' ? result : JSON.stringify(result), + } + ); const logOutput: ContentBlock | null = logLines.length === 0 ? null @@ -133,10 +133,11 @@ export async function codeTool(): Promise { }; } else { const { message } = (await resp.json()) as WorkerError; - throw new Error(message); + return { + content: message == null ? [] : [{ type: 'text', text: message }], + isError: true, + }; } - } catch (e) { - throw e; } finally { worker.terminate(); } From c1688e1762adac87ce781019f0c7e3797d6cbc20 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 5 Nov 2025 03:28:51 +0000 Subject: [PATCH 26/32] chore: mcp code tool explicit error message when missing a run function --- packages/mcp-server/package.json | 4 +- packages/mcp-server/src/code-tool-worker.ts | 47 +++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 3f4f68c..bfb7061 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -38,6 +38,7 @@ "express": "^5.1.0", "jq-web": "https://github.com/stainless-api/jq-web/releases/download/v0.8.6/jq-web.tar.gz", "qs": "^6.14.0", + "typescript": "5.8.3", "yargs": "^17.7.2", "zod": "^3.25.20", "zod-to-json-schema": "^3.24.5", @@ -64,8 +65,7 @@ "ts-morph": "^19.0.0", "ts-node": "^10.5.0", "tsc-multi": "https://github.com/stainless-api/tsc-multi/releases/download/v1.1.9/tsc-multi.tgz", - "tsconfig-paths": "^4.0.0", - "typescript": "5.8.3" + "tsconfig-paths": "^4.0.0" }, "imports": { "cas-parser-node-mcp": ".", diff --git a/packages/mcp-server/src/code-tool-worker.ts b/packages/mcp-server/src/code-tool-worker.ts index f34d5ab..8a6a30a 100644 --- a/packages/mcp-server/src/code-tool-worker.ts +++ b/packages/mcp-server/src/code-tool-worker.ts @@ -1,11 +1,58 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import util from 'node:util'; + +import ts from 'typescript'; + import { WorkerInput, WorkerSuccess, WorkerError } from './code-tool-types'; import { CasParser } from 'cas-parser-node'; +function getRunFunctionNode( + code: string, +): ts.FunctionDeclaration | ts.FunctionExpression | ts.ArrowFunction | null { + const sourceFile = ts.createSourceFile('code.ts', code, ts.ScriptTarget.Latest, true); + + for (const statement of sourceFile.statements) { + // Check for top-level function declarations + if (ts.isFunctionDeclaration(statement)) { + if (statement.name?.text === 'run') { + return statement; + } + } + + // Check for variable declarations: const run = () => {} or const run = function() {} + if (ts.isVariableStatement(statement)) { + for (const declaration of statement.declarationList.declarations) { + if (ts.isIdentifier(declaration.name) && declaration.name.text === 'run') { + // Check if it's initialized with a function + if ( + declaration.initializer && + (ts.isFunctionExpression(declaration.initializer) || ts.isArrowFunction(declaration.initializer)) + ) { + return declaration.initializer; + } + } + } + } + } + + return null; +} + const fetch = async (req: Request): Promise => { const { opts, code } = (await req.json()) as WorkerInput; + + const runFunctionNode = getRunFunctionNode(code); + if (!runFunctionNode) { + return Response.json( + { + message: + 'The code is missing a top-level `run` function. Write code within this template:\n\n```\nasync function run(client) {\n // Fill this out\n}\n```', + } satisfies WorkerError, + { status: 400, statusText: 'Code execution error' }, + ); + } + const client = new CasParser({ ...opts, }); From c65e4a343bc9f6d6064e5c3a416630ef3880aa9e Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 5 Nov 2025 03:32:33 +0000 Subject: [PATCH 27/32] feat(mcp): enable optional code execution tool on http mcp servers --- packages/mcp-server/src/options.ts | 13 ++++++++++--- packages/mcp-server/tests/options.test.ts | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/packages/mcp-server/src/options.ts b/packages/mcp-server/src/options.ts index 4fe3b98..b6ff597 100644 --- a/packages/mcp-server/src/options.ts +++ b/packages/mcp-server/src/options.ts @@ -284,8 +284,10 @@ const coerceArray = (zodType: T) => ); const QueryOptions = z.object({ - tools: coerceArray(z.enum(['dynamic', 'all', 'docs'])).describe('Use dynamic tools or all tools'), - no_tools: coerceArray(z.enum(['dynamic', 'all', 'docs'])).describe('Do not use dynamic tools or all tools'), + tools: coerceArray(z.enum(['dynamic', 'all', 'code', 'docs'])).describe('Specify which MCP tools to use'), + no_tools: coerceArray(z.enum(['dynamic', 'all', 'code', 'docs'])).describe( + 'Specify which MCP tools to not use.', + ), tool: coerceArray(z.string()).describe('Include tools matching the specified names'), resource: coerceArray(z.string()).describe('Include tools matching the specified resources'), operation: coerceArray(z.enum(['read', 'write'])).describe( @@ -385,11 +387,16 @@ export function parseQueryOptions(defaultOptions: McpOptions, query: unknown): M : queryOptions.tools?.includes('docs') ? true : defaultOptions.includeDocsTools; + let codeTools: boolean | undefined = + queryOptions.no_tools && queryOptions.no_tools?.includes('code') ? false + : queryOptions.tools?.includes('code') && defaultOptions.includeCodeTools ? true + : defaultOptions.includeCodeTools; + return { client: queryOptions.client ?? defaultOptions.client, includeDynamicTools: dynamicTools, includeAllTools: allTools, - includeCodeTools: undefined, + includeCodeTools: codeTools, includeDocsTools: docsTools, filters, capabilities: clientCapabilities, diff --git a/packages/mcp-server/tests/options.test.ts b/packages/mcp-server/tests/options.test.ts index a8a5b81..4d9b60c 100644 --- a/packages/mcp-server/tests/options.test.ts +++ b/packages/mcp-server/tests/options.test.ts @@ -171,6 +171,7 @@ describe('parseQueryOptions', () => { const defaultOptions = { client: undefined, includeDynamicTools: undefined, + includeCodeTools: undefined, includeAllTools: undefined, filters: [], capabilities: { @@ -383,6 +384,27 @@ describe('parseQueryOptions', () => { { type: 'tool', op: 'exclude', value: 'exclude-tool' }, ]); }); + + it('code tools are enabled on http servers with default option set', () => { + const query = 'tools=code'; + const result = parseQueryOptions({ ...defaultOptions, includeCodeTools: true }, query); + + expect(result.includeCodeTools).toBe(true); + }); + + it('code tools are prevented on http servers when no default option set', () => { + const query = 'tools=code'; + const result = parseQueryOptions(defaultOptions, query); + + expect(result.includeCodeTools).toBe(undefined); + }); + + it('code tools are prevented on http servers when default option is explicitly false', () => { + const query = 'tools=code'; + const result = parseQueryOptions({ ...defaultOptions, includeCodeTools: false }, query); + + expect(result.includeCodeTools).toBe(false); + }); }); describe('parseEmbeddedJSON', () => { From 92613e96bb14ed9de8d1042cbb30d580d44a4fa7 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 03:34:56 +0000 Subject: [PATCH 28/32] chore(mcp): add friendlier MCP code tool errors on incorrect method invocations --- packages/mcp-server/package.json | 1 + packages/mcp-server/src/code-tool-worker.ts | 93 ++++++++++++++++++++- packages/mcp-server/src/code-tool.ts | 2 +- 3 files changed, 94 insertions(+), 2 deletions(-) diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index bfb7061..5d9641c 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -36,6 +36,7 @@ "@valtown/deno-http-worker": "^0.0.21", "cors": "^2.8.5", "express": "^5.1.0", + "fuse.js": "^7.1.0", "jq-web": "https://github.com/stainless-api/jq-web/releases/download/v0.8.6/jq-web.tar.gz", "qs": "^6.14.0", "typescript": "5.8.3", diff --git a/packages/mcp-server/src/code-tool-worker.ts b/packages/mcp-server/src/code-tool-worker.ts index 8a6a30a..2201c07 100644 --- a/packages/mcp-server/src/code-tool-worker.ts +++ b/packages/mcp-server/src/code-tool-worker.ts @@ -2,6 +2,7 @@ import util from 'node:util'; +import Fuse from 'fuse.js'; import ts from 'typescript'; import { WorkerInput, WorkerSuccess, WorkerError } from './code-tool-types'; @@ -39,8 +40,98 @@ function getRunFunctionNode( return null; } +const fuse = new Fuse( + [ + 'client.casParser.camsKfintech', + 'client.casParser.cdsl', + 'client.casParser.nsdl', + 'client.casParser.smartParse', + 'client.casGenerator.generateCas', + ], + { threshold: 1, shouldSort: true }, +); + +function getMethodSuggestions(fullyQualifiedMethodName: string): string[] { + return fuse + .search(fullyQualifiedMethodName) + .map(({ item }) => item) + .slice(0, 5); +} + +const proxyToObj = new WeakMap(); +const objToProxy = new WeakMap(); + +type ClientProxyConfig = { + path: string[]; + isBelievedBad?: boolean; +}; + +function makeSdkProxy(obj: T, { path, isBelievedBad = false }: ClientProxyConfig): T { + let proxy: T = objToProxy.get(obj); + + if (!proxy) { + proxy = new Proxy(obj, { + get(target, prop, receiver) { + const propPath = [...path, String(prop)]; + const value = Reflect.get(target, prop, receiver); + + if (isBelievedBad || (!(prop in target) && value === undefined)) { + // If we're accessing a path that doesn't exist, it will probably eventually error. + // Let's proxy it and mark it bad so that we can control the error message. + // We proxy an empty class so that an invocation or construction attempt is possible. + return makeSdkProxy(class {}, { path: propPath, isBelievedBad: true }); + } + + if (value !== null && (typeof value === 'object' || typeof value === 'function')) { + return makeSdkProxy(value, { path: propPath, isBelievedBad }); + } + + return value; + }, + + apply(target, thisArg, args) { + if (isBelievedBad || typeof target !== 'function') { + const fullyQualifiedMethodName = path.join('.'); + const suggestions = getMethodSuggestions(fullyQualifiedMethodName); + throw new Error( + `${fullyQualifiedMethodName} is not a function. Did you mean: ${suggestions.join(', ')}`, + ); + } + + return Reflect.apply(target, proxyToObj.get(thisArg) ?? thisArg, args); + }, + + construct(target, args, newTarget) { + if (isBelievedBad || typeof target !== 'function') { + const fullyQualifiedMethodName = path.join('.'); + const suggestions = getMethodSuggestions(fullyQualifiedMethodName); + throw new Error( + `${fullyQualifiedMethodName} is not a constructor. Did you mean: ${suggestions.join(', ')}`, + ); + } + + return Reflect.construct(target, args, newTarget); + }, + }); + + objToProxy.set(obj, proxy); + proxyToObj.set(proxy, obj); + } + + return proxy; +} + const fetch = async (req: Request): Promise => { const { opts, code } = (await req.json()) as WorkerInput; + if (code == null) { + return Response.json( + { + message: + 'The code param is missing. Provide one containing a top-level `run` function. Write code within this template:\n\n```\nasync function run(client) {\n // Fill this out\n}\n```', + } satisfies WorkerError, + { status: 400, statusText: 'Code execution error' }, + ); + } const runFunctionNode = getRunFunctionNode(code); if (!runFunctionNode) { @@ -73,7 +164,7 @@ const fetch = async (req: Request): Promise => { ${code} run_ = run; `); - const result = await run_(client); + const result = await run_(makeSdkProxy(client, { path: ['client'] })); return Response.json({ result, logLines, diff --git a/packages/mcp-server/src/code-tool.ts b/packages/mcp-server/src/code-tool.ts index 59aba93..e5ae95c 100644 --- a/packages/mcp-server/src/code-tool.ts +++ b/packages/mcp-server/src/code-tool.ts @@ -23,7 +23,7 @@ export async function codeTool(): Promise { const tool: Tool = { name: 'execute', description: - 'Runs TypeScript code to interact with the API.\nYou are a skilled programmer writing code to interface with the service.\nDefine an async function named "run" that takes a single parameter of an initialized client, and it will be run.\nDo not initialize a client, but instead use the client that you are given as a parameter.\nYou will be returned anything that your function returns, plus the results of any console.log statements.\nIf any code triggers an error, the tool will return an error response, so you do not need to add error handling unless you want to output something more helpful than the raw error.\nIt is not necessary to add comments to code, unless by adding those comments you believe that you can generate better code.\nThis code will run in a container, and you will not be able to use fetch or otherwise interact with the network calls other than through the client you are given.\nAny variables you define won\'t live between successive uses of this call, so make sure to return or log any data you might need later.', + 'Runs TypeScript code to interact with the API.\n\nYou are a skilled programmer writing code to interface with the service.\nDefine an async function named "run" that takes a single parameter of an initialized client named "client", and it will be run.\nWrite code within this template:\n\n```\nasync function run(client) {\n // Fill this out\n}\n```\n\nYou will be returned anything that your function returns, plus the results of any console.log statements.\nIf any code triggers an error, the tool will return an error response, so you do not need to add error handling unless you want to output something more helpful than the raw error.\nIt is not necessary to add comments to code, unless by adding those comments you believe that you can generate better code.\nThis code will run in a container, and you will not be able to use fetch or otherwise interact with the network calls other than through the client you are given.\nAny variables you define won\'t live between successive uses of this call, so make sure to return or log any data you might need later.', inputSchema: { type: 'object', properties: { code: { type: 'string' } } }, }; From b3c083e9e828fa712b60904be1ab82a43679615c Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 03:35:29 +0000 Subject: [PATCH 29/32] chore(mcp): add line numbers to code tool errors --- packages/mcp-server/src/code-tool-worker.ts | 27 ++++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/mcp-server/src/code-tool-worker.ts b/packages/mcp-server/src/code-tool-worker.ts index 2201c07..3dd0136 100644 --- a/packages/mcp-server/src/code-tool-worker.ts +++ b/packages/mcp-server/src/code-tool-worker.ts @@ -121,6 +121,25 @@ function makeSdkProxy(obj: T, { path, isBelievedBad = false }: return proxy; } +function parseError(code: string, error: unknown): string | undefined { + if (!(error instanceof Error)) return; + const message = error.name ? `${error.name}: ${error.message}` : error.message; + try { + // Deno uses V8; the first ":LINE:COLUMN" is the top of stack. + const lineNumber = error.stack?.match(/:([0-9]+):[0-9]+/)?.[1]; + // -1 for the zero-based indexing + const line = + lineNumber && + code + .split('\n') + .at(parseInt(lineNumber, 10) - 1) + ?.trim(); + return line ? `${message}\n at line ${lineNumber}\n ${line}` : message; + } catch { + return message; + } +} + const fetch = async (req: Request): Promise => { const { opts, code } = (await req.json()) as WorkerInput; if (code == null) { @@ -160,10 +179,7 @@ const fetch = async (req: Request): Promise => { }; try { let run_ = async (client: any) => {}; - eval(` - ${code} - run_ = run; - `); + eval(`${code}\nrun_ = run;`); const result = await run_(makeSdkProxy(client, { path: ['client'] })); return Response.json({ result, @@ -171,10 +187,9 @@ const fetch = async (req: Request): Promise => { errLines, } satisfies WorkerSuccess); } catch (e) { - const message = e instanceof Error ? e.message : undefined; return Response.json( { - message, + message: parseError(code, e), } satisfies WorkerError, { status: 400, statusText: 'Code execution error' }, ); From f57f9234638bd30b09ee62fb45e4374d78e3b93f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 03:36:34 +0000 Subject: [PATCH 30/32] docs(mcp): add a README button for one-click add to Cursor --- packages/mcp-server/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/mcp-server/README.md b/packages/mcp-server/README.md index 6dec8e6..5885292 100644 --- a/packages/mcp-server/README.md +++ b/packages/mcp-server/README.md @@ -34,6 +34,13 @@ For clients with a configuration JSON, it might look something like this: } ``` +### Cursor + + If you use Cursor, you can install the MCP server by using the button below. You will need to set your environment variables + in Cursor's `mcp.json`, which can be found in Cursor Settings > Tools & MCP > New MCP Server. + + [![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=cas-parser-node-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImNhcy1wYXJzZXItbm9kZS1tY3AiXSwiZW52Ijp7IkNBU19QQVJTRVJfQVBJX0tFWSI6IlNldCB5b3VyIENBU19QQVJTRVJfQVBJX0tFWSBoZXJlLiJ9fQ) + ## Exposing endpoints to your MCP Client There are two ways to expose endpoints as tools in the MCP server: From 4d1a0f4799890a888f01eb528ca0d2d3a798b0cd Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 03:38:58 +0000 Subject: [PATCH 31/32] chore(internal): codegen related update --- packages/mcp-server/README.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/mcp-server/README.md b/packages/mcp-server/README.md index 5885292..6c22bf7 100644 --- a/packages/mcp-server/README.md +++ b/packages/mcp-server/README.md @@ -36,17 +36,18 @@ For clients with a configuration JSON, it might look something like this: ### Cursor - If you use Cursor, you can install the MCP server by using the button below. You will need to set your environment variables - in Cursor's `mcp.json`, which can be found in Cursor Settings > Tools & MCP > New MCP Server. +If you use Cursor, you can install the MCP server by using the button below. You will need to set your environment variables +in Cursor's `mcp.json`, which can be found in Cursor Settings > Tools & MCP > New MCP Server. - [![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=cas-parser-node-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImNhcy1wYXJzZXItbm9kZS1tY3AiXSwiZW52Ijp7IkNBU19QQVJTRVJfQVBJX0tFWSI6IlNldCB5b3VyIENBU19QQVJTRVJfQVBJX0tFWSBoZXJlLiJ9fQ) +[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=cas-parser-node-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImNhcy1wYXJzZXItbm9kZS1tY3AiXSwiZW52Ijp7IkNBU19QQVJTRVJfQVBJX0tFWSI6IlNldCB5b3VyIENBU19QQVJTRVJfQVBJX0tFWSBoZXJlLiJ9fQ) ## Exposing endpoints to your MCP Client -There are two ways to expose endpoints as tools in the MCP server: +There are three ways to expose endpoints as tools in the MCP server: 1. Exposing one tool per endpoint, and filtering as necessary 2. Exposing a set of tools to dynamically discover and invoke endpoints from the API +3. Exposing a docs search tool and a code execution tool, allowing the client to write code to be executed against the TypeScript client ### Filtering endpoints and tools @@ -81,6 +82,18 @@ All of these command-line options can be repeated, combined together, and have c Use `--list` to see the list of available tools, or see below. +### Code execution + +If you specify `--tools=code` to the MCP server, it will expose just two tools: + +- `search_docs` - Searches the API documentation and returns a list of markdown results +- `execute` - Runs code against the TypeScript client + +This allows the LLM to implement more complex logic by chaining together many API calls without loading +intermediary results into its context window. + +The code execution itself happens in a Deno sandbox that has network access only to the base URL for the API. + ### Specifying the MCP Client Different clients have varying abilities to handle arbitrary tools and schemas. From 204fafb1082783c315a03d1619e5ad9abc6e0d30 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 03:39:22 +0000 Subject: [PATCH 32/32] release: 1.5.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 54 +++++++++++++++++++++++++++++++ package.json | 2 +- packages/mcp-server/package.json | 2 +- packages/mcp-server/src/server.ts | 2 +- src/version.ts | 2 +- 6 files changed, 59 insertions(+), 5 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4918b25..dd8fde7 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.4.1" + ".": "1.5.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index fda1b9d..d281ffe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,59 @@ # Changelog +## 1.5.0 (2025-11-06) + +Full Changelog: [v1.4.1...v1.5.0](https://github.com/CASParser/cas-parser-node/compare/v1.4.1...v1.5.0) + +### Features + +* **api:** api update ([7f71235](https://github.com/CASParser/cas-parser-node/commit/7f712351a3d5349fff33bf321ab946a58a8ae015)) +* **mcp:** add docs search tool ([e2afa83](https://github.com/CASParser/cas-parser-node/commit/e2afa8394a7f891e90526dffeab493f4033ebfe0)) +* **mcp:** add option for including docs tools ([e39c90e](https://github.com/CASParser/cas-parser-node/commit/e39c90ed1a75114d95ccae8183f69983331bf7c2)) +* **mcp:** enable experimental docs search tool ([86b23ff](https://github.com/CASParser/cas-parser-node/commit/86b23ff7a185038d52d18395f7cccb68716affed)) +* **mcp:** enable optional code execution tool on http mcp servers ([c65e4a3](https://github.com/CASParser/cas-parser-node/commit/c65e4a343bc9f6d6064e5c3a416630ef3880aa9e)) + + +### Bug Fixes + +* **ci:** set permissions for DXT publish action ([461a411](https://github.com/CASParser/cas-parser-node/commit/461a411c1491f80b951618ec83a117667da2c786)) +* **mcpb:** pin @anthropic-ai/mcpb version ([3a1120e](https://github.com/CASParser/cas-parser-node/commit/3a1120e08ae1f95374532f8711918b20ad6b74c1)) +* **mcp:** fix cli argument parsing logic ([6d18c3d](https://github.com/CASParser/cas-parser-node/commit/6d18c3d887c074a25205c62dd3a461fff1424d28)) +* **mcp:** resolve a linting issue in server code ([691d0c1](https://github.com/CASParser/cas-parser-node/commit/691d0c124350d54df029a9fa2873a85369615f7d)) + + +### Performance Improvements + +* faster formatting ([5e72001](https://github.com/CASParser/cas-parser-node/commit/5e72001cfce74462351337f831f066cfdd500db4)) + + +### Chores + +* **codegen:** internal codegen update ([63d6cd7](https://github.com/CASParser/cas-parser-node/commit/63d6cd75e8ec5d1985cbaf203bd60a4172c3cbd6)) +* do not install brew dependencies in ./scripts/bootstrap by default ([d4fb00e](https://github.com/CASParser/cas-parser-node/commit/d4fb00e57c79b1b2420cd1fd4d3843ee1e73675d)) +* extract some types in mcp docs ([464c4ad](https://github.com/CASParser/cas-parser-node/commit/464c4adaf3e55bba56c65b932686b196057816c8)) +* **internal:** codegen related update ([4d1a0f4](https://github.com/CASParser/cas-parser-node/commit/4d1a0f4799890a888f01eb528ca0d2d3a798b0cd)) +* **internal:** codegen related update ([22c7ea2](https://github.com/CASParser/cas-parser-node/commit/22c7ea2ba63601478bc3d9ad534ff0df493f4c8c)) +* **internal:** fix incremental formatting in some cases ([170eef2](https://github.com/CASParser/cas-parser-node/commit/170eef2a9573b4a2c3a51f4a8979a4d8cb49ce77)) +* **internal:** gitignore .mcpb files ([037b423](https://github.com/CASParser/cas-parser-node/commit/037b423d403f4af547043cc73164df04fcbe8115)) +* **internal:** grammar fix (it's -> its) ([0f7008c](https://github.com/CASParser/cas-parser-node/commit/0f7008c68019fc03ae354f85839784008e838eac)) +* **internal:** ignore .eslintcache ([475202b](https://github.com/CASParser/cas-parser-node/commit/475202b2ce09234a57356ce5a1dd466f3122e9a8)) +* **internal:** remove .eslintcache ([8897700](https://github.com/CASParser/cas-parser-node/commit/8897700e7ebf141e8416adf62a78a679e37c55bc)) +* **internal:** remove deprecated `compilerOptions.baseUrl` from tsconfig.json ([3e2894e](https://github.com/CASParser/cas-parser-node/commit/3e2894e798b721339c48214a6b8b2d932a3e2c02)) +* **internal:** use npm pack for build uploads ([080eee4](https://github.com/CASParser/cas-parser-node/commit/080eee4a0de5730b86eabe4cdd9bf6831ed69713)) +* **jsdoc:** fix [@link](https://github.com/link) annotations to refer only to parts of the packageā€˜s public interface ([2c53c6a](https://github.com/CASParser/cas-parser-node/commit/2c53c6a40eae947ff82bf62021471d770f3154a0)) +* mcp code tool explicit error message when missing a run function ([c1688e1](https://github.com/CASParser/cas-parser-node/commit/c1688e1762adac87ce781019f0c7e3797d6cbc20)) +* **mcp:** add friendlier MCP code tool errors on incorrect method invocations ([92613e9](https://github.com/CASParser/cas-parser-node/commit/92613e96bb14ed9de8d1042cbb30d580d44a4fa7)) +* **mcp:** add line numbers to code tool errors ([b3c083e](https://github.com/CASParser/cas-parser-node/commit/b3c083e9e828fa712b60904be1ab82a43679615c)) +* **mcp:** allow pointing `docs_search` tool at other URLs ([5df72aa](https://github.com/CASParser/cas-parser-node/commit/5df72aac38114806d999acd0e266eb6c6abff4cc)) +* **mcp:** rename dxt to mcpb ([4206154](https://github.com/CASParser/cas-parser-node/commit/4206154f0e8c7f82ce8c62b0729e4859af7fbda9)) +* update lockfile ([952858c](https://github.com/CASParser/cas-parser-node/commit/952858c419b88f6a5205daece2c9ecdac5324dd1)) +* use structured error when code execution tool errors ([0b9eb86](https://github.com/CASParser/cas-parser-node/commit/0b9eb86e3ee6d9e2a35b396453bf4fbec66dc905)) + + +### Documentation + +* **mcp:** add a README button for one-click add to Cursor ([f57f923](https://github.com/CASParser/cas-parser-node/commit/f57f9234638bd30b09ee62fb45e4374d78e3b93f)) + ## 1.4.1 (2025-09-12) Full Changelog: [v1.4.0...v1.4.1](https://github.com/CASParser/cas-parser-node/compare/v1.4.0...v1.4.1) diff --git a/package.json b/package.json index 0f1fb96..3666d4b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cas-parser-node", - "version": "1.4.1", + "version": "1.5.0", "description": "The official TypeScript library for the Cas Parser API", "author": "Cas Parser ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 5d9641c..4ab8ebd 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "cas-parser-node-mcp", - "version": "1.4.1", + "version": "1.5.0", "description": "The official MCP Server for the Cas Parser API", "author": "Cas Parser ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index 4291d7d..3584bcb 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -34,7 +34,7 @@ export const newMcpServer = () => new McpServer( { name: 'cas_parser_node_api', - version: '1.4.1', + version: '1.5.0', }, { capabilities: { tools: {}, logging: {} } }, ); diff --git a/src/version.ts b/src/version.ts index 45b0c3a..e514fa0 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '1.4.1'; // x-release-please-version +export const VERSION = '1.5.0'; // x-release-please-version