From f171cea96a6a6d57e772b6ceefca766aadce66aa Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 12:34:05 +0000 Subject: [PATCH 01/19] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 031fed99..7c3aae1c 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-d1a3e6dfc45ae832b6b14a0aef25878985c679fa9f48c1470df188b1578ba648.yml openapi_spec_hash: 1d382866fce3284f26d341f112988d9d -config_hash: d57f3c7c581048428b41398f30da8b9b +config_hash: e42d7fc3a8c92c35099cc283f9a4467a From 2acb106595f0642dcdb81bcd9a041a1bf059d307 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 03:37:56 +0000 Subject: [PATCH 02/19] chore(internal): codegen related update --- 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 00000000..b9ff70d4 --- /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/imagekit/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 d8b13fc5..efe6b64b 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 e1a3b52f5691f398669cd682c57d5a6dc4e5895a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 03:39:38 +0000 Subject: [PATCH 03/19] 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 ecc9f10e..348a33d0 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 efe6b64b..d9f2770e 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 7e8cfadd5473e55e83c6659c4033f9b852d3f91c 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:49:40 +0000 Subject: [PATCH 04/19] 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 00000000..ef42df58 --- /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 9e0e5b0c46930798e8d06f553fd91a57d9692d2b 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:50:37 +0000 Subject: [PATCH 05/19] 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 5111d3e2..35bb8dc2 100644 --- a/packages/mcp-server/tsconfig.build.json +++ b/packages/mcp-server/tsconfig.build.json @@ -5,8 +5,8 @@ "compilerOptions": { "rootDir": "./dist/src", "paths": { - "imagekit-api-mcp/*": ["dist/src/*"], - "imagekit-api-mcp": ["dist/src/index.ts"] + "imagekit-api-mcp/*": ["./dist/src/*"], + "imagekit-api-mcp": ["./dist/src/index.ts"] }, "noEmit": false, "declaration": true, diff --git a/packages/mcp-server/tsconfig.json b/packages/mcp-server/tsconfig.json index ddb25b3e..0b2df07c 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": { - "imagekit-api-mcp/*": ["src/*"], - "imagekit-api-mcp": ["src/index.ts"] + "imagekit-api-mcp/*": ["./src/*"], + "imagekit-api-mcp": ["./src/index.ts"] }, "noEmit": true, diff --git a/tsconfig.build.json b/tsconfig.build.json index 3d7881a2..8116b319 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -5,8 +5,8 @@ "compilerOptions": { "rootDir": "./dist/src", "paths": { - "@imagekit/nodejs/*": ["dist/src/*"], - "@imagekit/nodejs": ["dist/src/index.ts"] + "@imagekit/nodejs/*": ["./dist/src/*"], + "@imagekit/nodejs": ["./dist/src/index.ts"] }, "noEmit": false, "declaration": true, diff --git a/tsconfig.json b/tsconfig.json index 0136ffb1..e5d0c6bb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,10 +7,9 @@ "module": "commonjs", "moduleResolution": "node", "esModuleInterop": true, - "baseUrl": "./", "paths": { - "@imagekit/nodejs/*": ["src/*"], - "@imagekit/nodejs": ["src/index.ts"] + "@imagekit/nodejs/*": ["./src/*"], + "@imagekit/nodejs": ["./src/index.ts"] }, "noEmit": true, From 863e6b7b6cff10c81fc07524b038972db2ce76b6 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 03:12:42 +0000 Subject: [PATCH 06/19] 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 ef42df58..53721ac0 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 bbe84b3a9a5b30fc11c7b074cea447632740f512 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 03:14:02 +0000 Subject: [PATCH 07/19] 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 00000000..6f814b42 --- /dev/null +++ b/.eslintcache @@ -0,0 +1 @@ +[{"/home/tempuser-z6aas2/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/docs-search-tool.ts":"1"},{"size":1462,"mtime":1758942838433}] \ 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 b9ff70d4..f05cd9b2 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/imagekit/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/imagekit/docs/search?' + query); + const result = await fetch(`${docsSearchURL}?${query}`); return asTextContentResult(await result.json()); }; From ca24cab20bc7d4450623d67b0ebcb4e2a0ef7633 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 03:16:13 +0000 Subject: [PATCH 08/19] chore(internal): codegen related update --- .eslintcache | 2 +- .github/workflows/release-doctor.yml | 1 + .../cloudflare-worker/wrangler.jsonc | 58 +++++++++---------- packages/mcp-server/src/code-tool-paths.cts | 2 +- 4 files changed, 32 insertions(+), 31 deletions(-) diff --git a/.eslintcache b/.eslintcache index 6f814b42..715b6b74 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/home/tempuser-z6aas2/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/docs-search-tool.ts":"1"},{"size":1462,"mtime":1758942838433}] \ No newline at end of file +[{"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/jest.config.ts":"1","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/src/app.ts":"2","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/src/index.ts":"3","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/src/utils.ts":"4","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/jest.config.ts":"5","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/code-tool-types.ts":"6","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/code-tool-worker.ts":"7","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/code-tool.ts":"8","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/compat.ts":"9","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/docs-search-tool.ts":"10","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/dynamic-tools.ts":"11","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/worker-configuration.d.ts":"12","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/index.ts":"13","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/options.ts":"14","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/headers.ts":"15","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/http.ts":"16","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/filtering.ts":"17","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/server.ts":"18","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/stdio.ts":"19","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/create-accounts-origins.ts":"20","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/delete-accounts-origins.ts":"21","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/get-accounts-origins.ts":"22","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/list-accounts-origins.ts":"23","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/update-accounts-origins.ts":"24","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/create-accounts-url-endpoints.ts":"25","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/delete-accounts-url-endpoints.ts":"26","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/get-accounts-url-endpoints.ts":"27","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/list-accounts-url-endpoints.ts":"28","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/update-accounts-url-endpoints.ts":"29","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/usage/get-accounts-usage.ts":"30","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/assets/list-assets.ts":"31","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts":"32","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/cache/invalidation/create-cache-invalidation.ts":"33","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/cache/invalidation/get-cache-invalidation.ts":"34","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/delete-custom-metadata-fields.ts":"35","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/create-custom-metadata-fields.ts":"36","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts":"37","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/update-custom-metadata-fields.ts":"38","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/bulk/add-tags-files-bulk.ts":"39","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/bulk/delete-files-bulk.ts":"40","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/bulk/remove-ai-tags-files-bulk.ts":"41","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/bulk/remove-tags-files-bulk.ts":"42","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/copy-files.ts":"43","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/delete-files.ts":"44","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/get-files.ts":"45","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/metadata/get-files-metadata.ts":"46","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/metadata/get-from-url-files-metadata.ts":"47","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/move-files.ts":"48","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/rename-files.ts":"49","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/update-files.ts":"50","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/upload-files.ts":"51","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/delete-files-versions.ts":"52","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/get-files-versions.ts":"53","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/list-files-versions.ts":"54","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/restore-files-versions.ts":"55","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/copy-folders.ts":"56","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/create-folders.ts":"57","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/delete-folders.ts":"58","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/job/get-folders-job.ts":"59","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/move-folders.ts":"60","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/rename-folders.ts":"61","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/index.ts":"62","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/types.ts":"63","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools.ts":"64","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/compat.test.ts":"65","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/dynamic-tools.test.ts":"66","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/options.test.ts":"67","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/tools.test.ts":"68","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/scripts/publish-packages.ts":"69","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/api-promise.ts":"70","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/client.ts":"71","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/api-promise.ts":"72","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/error.ts":"73","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/resource.ts":"74","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/uploads.ts":"75","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/error.ts":"76","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/index.ts":"77","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/builtin-types.ts":"78","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/detect-platform.ts":"79","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/headers.ts":"80","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/parse.ts":"81","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/request-options.ts":"82","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/shim-types.ts":"83","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/shims.ts":"84","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/to-file.ts":"85","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/errors.ts":"86","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/types.ts":"87","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/uploads.ts":"88","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/base64.ts":"89","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/bytes.ts":"90","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/env.ts":"91","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/log.ts":"92","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/path.ts":"93","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/sleep.ts":"94","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/uuid.ts":"95","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/values.ts":"96","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils.ts":"97","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resource.ts":"98","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/accounts.ts":"99","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/index.ts":"100","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/origins.ts":"101","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/url-endpoints.ts":"102","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/usage.ts":"103","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts.ts":"104","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/assets.ts":"105","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/beta.ts":"106","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/index.ts":"107","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/files.ts":"108","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/index.ts":"109","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/v2.ts":"110","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2.ts":"111","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta.ts":"112","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache/cache.ts":"113","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache/index.ts":"114","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache/invalidation.ts":"115","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache.ts":"116","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/custom-metadata-fields.ts":"117","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/bulk.ts":"118","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/files.ts":"119","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/index.ts":"120","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/metadata.ts":"121","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/versions.ts":"122","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files.ts":"123","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders/folders.ts":"124","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders/index.ts":"125","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders/job.ts":"126","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders.ts":"127","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/index.ts":"128","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/shared.ts":"129","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources.ts":"130","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/webhooks.ts":"131","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/uploads.ts":"132","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/version.ts":"133","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/accounts/origins.test.ts":"134","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/accounts/url-endpoints.test.ts":"135","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/accounts/usage.test.ts":"136","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/assets.test.ts":"137","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/beta/v2/files.test.ts":"138","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/cache/invalidation.test.ts":"139","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/custom-metadata-fields.test.ts":"140","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/bulk.test.ts":"141","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/files.test.ts":"142","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/metadata.test.ts":"143","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/versions.test.ts":"144","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/folders/folders.test.ts":"145","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/folders/job.test.ts":"146","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/webhooks.test.ts":"147","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/base64.test.ts":"148","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/buildHeaders.test.ts":"149","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/form.test.ts":"150","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/index.test.ts":"151","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/path.test.ts":"152","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/stringifyQuery.test.ts":"153","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/uploads.test.ts":"154"},{"size":612,"mtime":1758942943329,"results":"155","hashOfConfig":"156"},{"size":3501,"mtime":1758942943529,"results":"157","hashOfConfig":"158"},{"size":2888,"mtime":1758942959109},{"size":17752,"mtime":1758942959109},{"size":499,"mtime":1758942959113},{"size":370,"mtime":1758942959113},{"size":1182,"mtime":1758942943629,"results":"159","hashOfConfig":"158"},{"size":5863,"mtime":1758942959113},{"size":12713,"mtime":1758942943485,"results":"160","hashOfConfig":"158"},{"size":1462,"mtime":1758942959113},{"size":5593,"mtime":1758942959113},{"size":234066,"mtime":1758942959113},{"size":2884,"mtime":1758942943485,"results":"161","hashOfConfig":"158"},{"size":17071,"mtime":1758942943629,"results":"162","hashOfConfig":"158"},{"size":1097,"mtime":1758942959113},{"size":3400,"mtime":1758942959113},{"size":368,"mtime":1758942943485,"results":"163","hashOfConfig":"158"},{"size":6410,"mtime":1758942959113},{"size":465,"mtime":1758942959113},{"size":9031,"mtime":1758942959113},{"size":1320,"mtime":1758942959113},{"size":1161,"mtime":1758942959113},{"size":980,"mtime":1758942959113},{"size":10572,"mtime":1758942959113},{"size":6750,"mtime":1758942959113},{"size":1424,"mtime":1758942959113},{"size":5030,"mtime":1758942959113},{"size":4904,"mtime":1758942959113},{"size":7034,"mtime":1758942959113},{"size":3128,"mtime":1758942959113},{"size":10463,"mtime":1758942959113},{"size":15144,"mtime":1758942959117},{"size":2152,"mtime":1758942959117},{"size":2019,"mtime":1758942959117},{"size":1944,"mtime":1758942959117},{"size":10544,"mtime":1758942959117},{"size":6760,"mtime":1758942959117},{"size":10154,"mtime":1758942959117},{"size":2332,"mtime":1758942959117},{"size":2385,"mtime":1758942959117},{"size":2383,"mtime":1758942959117},{"size":2361,"mtime":1758942959117},{"size":2471,"mtime":1758942959117},{"size":1266,"mtime":1758942959117},{"size":6496,"mtime":1758942959117},{"size":9285,"mtime":1758942959117},{"size":9229,"mtime":1758942959117},{"size":2171,"mtime":1758942959117},{"size":3515,"mtime":1758942959117},{"size":7206,"mtime":1758942959117},{"size":16108,"mtime":1758942959117},{"size":2046,"mtime":1758942959117},{"size":6598,"mtime":1758942959117},{"size":6528,"mtime":1758942959117},{"size":6604,"mtime":1758942959117},{"size":2962,"mtime":1758942959117},{"size":2546,"mtime":1758942959117},{"size":1939,"mtime":1758942959117},{"size":2518,"mtime":1758942959117},{"size":2615,"mtime":1758942959117},{"size":3491,"mtime":1758942959117},{"size":6622,"mtime":1758942959117},{"size":2192,"mtime":1758942959117},{"size":31,"mtime":1758942943485,"results":"164","hashOfConfig":"158"},{"size":29411,"mtime":1758942943485,"results":"165","hashOfConfig":"158"},{"size":6851,"mtime":1758942943489,"results":"166","hashOfConfig":"158"},{"size":16226,"mtime":1758942943489,"results":"167","hashOfConfig":"158"},{"size":6594,"mtime":1758942943489,"results":"168","hashOfConfig":"158"},{"size":3689,"mtime":1758942943333,"results":"169","hashOfConfig":"156"},{"size":92,"mtime":1758942959117},{"size":32566,"mtime":1758942959117},{"size":3128,"mtime":1758942959117},{"size":3979,"mtime":1758942959117},{"size":267,"mtime":1758942943621,"results":"170","hashOfConfig":"156"},{"size":119,"mtime":1758942943337,"results":"171","hashOfConfig":"156"},{"size":80,"mtime":1758942959117},{"size":577,"mtime":1758942959117},{"size":2917,"mtime":1758942959117},{"size":6407,"mtime":1758942959117},{"size":3026,"mtime":1758942959117},{"size":1502,"mtime":1758942959117},{"size":2473,"mtime":1758942959117},{"size":929,"mtime":1758942959117},{"size":3526,"mtime":1758942959117},{"size":5211,"mtime":1758942959117},{"size":1187,"mtime":1758942959117},{"size":6352,"mtime":1758942959121},{"size":6746,"mtime":1758942943341,"results":"172","hashOfConfig":"156"},{"size":1275,"mtime":1758942943617,"results":"173","hashOfConfig":"156"},{"size":831,"mtime":1758942943341,"results":"174","hashOfConfig":"156"},{"size":612,"mtime":1758942943617,"results":"175","hashOfConfig":"156"},{"size":3110,"mtime":1758942959121},{"size":3211,"mtime":1758942943341,"results":"176","hashOfConfig":"156"},{"size":182,"mtime":1758942943617,"results":"177","hashOfConfig":"156"},{"size":601,"mtime":1758942959121},{"size":3140,"mtime":1758942943613,"results":"178","hashOfConfig":"156"},{"size":271,"mtime":1758942943613,"results":"179","hashOfConfig":"156"},{"size":86,"mtime":1758942959121},{"size":1769,"mtime":1758942959121},{"size":550,"mtime":1758942959121},{"size":22825,"mtime":1758942959121},{"size":7851,"mtime":1758942959121},{"size":2045,"mtime":1758942959121},{"size":122,"mtime":1758942944393,"results":"180","hashOfConfig":"156"},{"size":3158,"mtime":1758942959121},{"size":370,"mtime":1758942959121},{"size":154,"mtime":1758942959121},{"size":16667,"mtime":1758942959121},{"size":198,"mtime":1758942959121},{"size":536,"mtime":1758942959121},{"size":116,"mtime":1758942944509,"results":"181","hashOfConfig":"156"},{"size":118,"mtime":1758942944509,"results":"182","hashOfConfig":"156"},{"size":767,"mtime":1758942959121},{"size":264,"mtime":1758942959121},{"size":2054,"mtime":1758942959121},{"size":119,"mtime":1758942944313,"results":"183","hashOfConfig":"156"},{"size":11220,"mtime":1758942959121},{"size":4792,"mtime":1758942959121},{"size":38706,"mtime":1758942959121},{"size":894,"mtime":1758942959121},{"size":1706,"mtime":1758942959121},{"size":3286,"mtime":1758942959121},{"size":119,"mtime":1758942944009,"results":"184","hashOfConfig":"156"},{"size":7946,"mtime":1758942959121},{"size":429,"mtime":1758942959121},{"size":1280,"mtime":1758942959121},{"size":121,"mtime":1758942944329,"results":"185","hashOfConfig":"156"},{"size":1614,"mtime":1758942959121},{"size":35988,"mtime":1758942959121},{"size":35,"mtime":1758942943341,"results":"186","hashOfConfig":"156"},{"size":26078,"mtime":1758942959121},{"size":84,"mtime":1758942959121},{"size":59,"mtime":1758942959121},{"size":4104,"mtime":1758942959121},{"size":3734,"mtime":1758942959121},{"size":1120,"mtime":1758942959121},{"size":1323,"mtime":1758942959121},{"size":2119,"mtime":1758942959121},{"size":1701,"mtime":1758942959121},{"size":3902,"mtime":1758942959121},{"size":3948,"mtime":1758942959121},{"size":6193,"mtime":1758942959121},{"size":1622,"mtime":1758942959121},{"size":3124,"mtime":1758942959121},{"size":4467,"mtime":1758942959121},{"size":844,"mtime":1758942959121},{"size":2043,"mtime":1758942959121},{"size":2070,"mtime":1758942943345,"results":"187","hashOfConfig":"158"},{"size":2190,"mtime":1758942943345,"results":"188","hashOfConfig":"158"},{"size":1904,"mtime":1758942943345,"results":"189","hashOfConfig":"158"},{"size":24448,"mtime":1758942959121},{"size":17598,"mtime":1758942943345,"results":"190","hashOfConfig":"158"},{"size":929,"mtime":1758942959121},{"size":3498,"mtime":1758942943345,"results":"191","hashOfConfig":"158"},{"filePath":"192","messages":"193","suppressedMessages":"194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1nkvclw",{"filePath":"195","messages":"196","suppressedMessages":"197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"uatmab",{"filePath":"198","messages":"199","suppressedMessages":"200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"201","messages":"202","suppressedMessages":"203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"204","messages":"205","suppressedMessages":"206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"207","messages":"208","suppressedMessages":"209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"210","messages":"211","suppressedMessages":"212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"213","messages":"214","suppressedMessages":"215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"216","messages":"217","suppressedMessages":"218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"219","messages":"220","suppressedMessages":"221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"222","messages":"223","suppressedMessages":"224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"225","messages":"226","suppressedMessages":"227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"228","messages":"229","suppressedMessages":"230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"231","messages":"232","suppressedMessages":"233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"234","messages":"235","suppressedMessages":"236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"237","messages":"238","suppressedMessages":"239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"240","messages":"241","suppressedMessages":"242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"243","messages":"244","suppressedMessages":"245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"246","messages":"247","suppressedMessages":"248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"249","messages":"250","suppressedMessages":"251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"252","messages":"253","suppressedMessages":"254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"255","messages":"256","suppressedMessages":"257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"258","messages":"259","suppressedMessages":"260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"261","messages":"262","suppressedMessages":"263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"264","messages":"265","suppressedMessages":"266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"267","messages":"268","suppressedMessages":"269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"270","messages":"271","suppressedMessages":"272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"273","messages":"274","suppressedMessages":"275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"276","messages":"277","suppressedMessages":"278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"279","messages":"280","suppressedMessages":"281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"282","messages":"283","suppressedMessages":"284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"285","messages":"286","suppressedMessages":"287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"288","messages":"289","suppressedMessages":"290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"291","messages":"292","suppressedMessages":"293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"294","messages":"295","suppressedMessages":"296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/jest.config.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/src/app.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/code-tool-worker.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/compat.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/index.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/options.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/filtering.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/compat.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/dynamic-tools.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/options.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/tools.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/scripts/publish-packages.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/resource.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/uploads.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/uploads.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/base64.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/bytes.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/env.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/path.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/sleep.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/values.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/base64.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/buildHeaders.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/form.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/path.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-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 949a0a1a..6f09ab8c 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.IMAGE_KIT_NPM_TOKEN || secrets.NPM_TOKEN }} + diff --git a/packages/mcp-server/cloudflare-worker/wrangler.jsonc b/packages/mcp-server/cloudflare-worker/wrangler.jsonc index a49004af..8d53ba81 100644 --- a/packages/mcp-server/cloudflare-worker/wrangler.jsonc +++ b/packages/mcp-server/cloudflare-worker/wrangler.jsonc @@ -3,33 +3,33 @@ * https://developers.cloudflare.com/workers/wrangler/configuration/ */ { - "$schema": "node_modules/wrangler/config-schema.json", - "name": "imagekit-nodejs-api-mcp-server", - "main": "src/index.ts", - "compatibility_date": "2025-03-10", - "compatibility_flags": ["nodejs_compat"], - "migrations": [ - { - "new_sqlite_classes": ["MyMCP"], - "tag": "v1" - } - ], - "durable_objects": { - "bindings": [ - { - "class_name": "MyMCP", - "name": "MCP_OBJECT" - } - ] - }, - "kv_namespaces": [ - { - "binding": "OAUTH_KV", - "id": "ae6fe7d7993146a9b8d54d87f73b0bdf" - } - ], - "observability": { - "enabled": true - }, - "assets": { "directory": "./static/", "binding": "ASSETS" } + "$schema": "node_modules/wrangler/config-schema.json", + "name": "imagekit-nodejs-api-mcp-server", + "main": "src/index.ts", + "compatibility_date": "2025-03-10", + "compatibility_flags": ["nodejs_compat"], + "migrations": [ + { + "new_sqlite_classes": ["MyMCP"], + "tag": "v1" + } + ], + "durable_objects": { + "bindings": [ + { + "class_name": "MyMCP", + "name": "MCP_OBJECT" + } + ] + }, + "kv_namespaces": [ + { + "binding": "OAUTH_KV", + "id": "ae6fe7d7993146a9b8d54d87f73b0bdf" + } + ], + "observability": { + "enabled": true + }, + "assets": { "directory": "./static/", "binding": "ASSETS" } } diff --git a/packages/mcp-server/src/code-tool-paths.cts b/packages/mcp-server/src/code-tool-paths.cts index 15ce7f55..3d6655af 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 f99167394b66562e972b54730a4cf65aed8e33fd Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 03:18:38 +0000 Subject: [PATCH 09/19] chore(internal): ignore .eslintcache --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 74cba895..d62bea50 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,6 @@ dist dist-deno /*.tgz .idea/ +.eslintcache dist-bundle *.mcpb From a8da5506c7a39462b7b02bbfec1e4e7a6fbdfdaf 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:52:12 +0000 Subject: [PATCH 10/19] 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 715b6b74..3fe5f659 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/jest.config.ts":"1","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/src/app.ts":"2","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/src/index.ts":"3","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/src/utils.ts":"4","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/jest.config.ts":"5","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/code-tool-types.ts":"6","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/code-tool-worker.ts":"7","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/code-tool.ts":"8","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/compat.ts":"9","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/docs-search-tool.ts":"10","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/dynamic-tools.ts":"11","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/worker-configuration.d.ts":"12","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/index.ts":"13","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/options.ts":"14","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/headers.ts":"15","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/http.ts":"16","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/filtering.ts":"17","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/server.ts":"18","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/stdio.ts":"19","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/create-accounts-origins.ts":"20","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/delete-accounts-origins.ts":"21","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/get-accounts-origins.ts":"22","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/list-accounts-origins.ts":"23","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/origins/update-accounts-origins.ts":"24","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/create-accounts-url-endpoints.ts":"25","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/delete-accounts-url-endpoints.ts":"26","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/get-accounts-url-endpoints.ts":"27","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/list-accounts-url-endpoints.ts":"28","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/url-endpoints/update-accounts-url-endpoints.ts":"29","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/accounts/usage/get-accounts-usage.ts":"30","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/assets/list-assets.ts":"31","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts":"32","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/cache/invalidation/create-cache-invalidation.ts":"33","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/cache/invalidation/get-cache-invalidation.ts":"34","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/delete-custom-metadata-fields.ts":"35","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/create-custom-metadata-fields.ts":"36","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts":"37","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/update-custom-metadata-fields.ts":"38","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/bulk/add-tags-files-bulk.ts":"39","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/bulk/delete-files-bulk.ts":"40","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/bulk/remove-ai-tags-files-bulk.ts":"41","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/bulk/remove-tags-files-bulk.ts":"42","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/copy-files.ts":"43","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/delete-files.ts":"44","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/get-files.ts":"45","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/metadata/get-files-metadata.ts":"46","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/metadata/get-from-url-files-metadata.ts":"47","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/move-files.ts":"48","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/rename-files.ts":"49","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/update-files.ts":"50","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/upload-files.ts":"51","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/delete-files-versions.ts":"52","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/get-files-versions.ts":"53","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/list-files-versions.ts":"54","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/restore-files-versions.ts":"55","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/copy-folders.ts":"56","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/create-folders.ts":"57","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/delete-folders.ts":"58","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/job/get-folders-job.ts":"59","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/move-folders.ts":"60","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/folders/rename-folders.ts":"61","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/index.ts":"62","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/types.ts":"63","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools.ts":"64","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/compat.test.ts":"65","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/dynamic-tools.test.ts":"66","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/options.test.ts":"67","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/tools.test.ts":"68","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/scripts/publish-packages.ts":"69","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/api-promise.ts":"70","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/client.ts":"71","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/api-promise.ts":"72","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/error.ts":"73","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/resource.ts":"74","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/uploads.ts":"75","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/error.ts":"76","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/index.ts":"77","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/builtin-types.ts":"78","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/detect-platform.ts":"79","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/headers.ts":"80","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/parse.ts":"81","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/request-options.ts":"82","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/shim-types.ts":"83","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/shims.ts":"84","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/to-file.ts":"85","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/errors.ts":"86","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/types.ts":"87","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/uploads.ts":"88","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/base64.ts":"89","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/bytes.ts":"90","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/env.ts":"91","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/log.ts":"92","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/path.ts":"93","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/sleep.ts":"94","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/uuid.ts":"95","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/values.ts":"96","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils.ts":"97","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resource.ts":"98","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/accounts.ts":"99","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/index.ts":"100","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/origins.ts":"101","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/url-endpoints.ts":"102","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts/usage.ts":"103","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts.ts":"104","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/assets.ts":"105","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/beta.ts":"106","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/index.ts":"107","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/files.ts":"108","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/index.ts":"109","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/v2.ts":"110","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2.ts":"111","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta.ts":"112","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache/cache.ts":"113","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache/index.ts":"114","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache/invalidation.ts":"115","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache.ts":"116","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/custom-metadata-fields.ts":"117","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/bulk.ts":"118","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/files.ts":"119","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/index.ts":"120","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/metadata.ts":"121","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/versions.ts":"122","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files.ts":"123","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders/folders.ts":"124","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders/index.ts":"125","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders/job.ts":"126","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders.ts":"127","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/index.ts":"128","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/shared.ts":"129","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources.ts":"130","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/webhooks.ts":"131","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/uploads.ts":"132","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/version.ts":"133","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/accounts/origins.test.ts":"134","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/accounts/url-endpoints.test.ts":"135","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/accounts/usage.test.ts":"136","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/assets.test.ts":"137","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/beta/v2/files.test.ts":"138","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/cache/invalidation.test.ts":"139","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/custom-metadata-fields.test.ts":"140","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/bulk.test.ts":"141","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/files.test.ts":"142","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/metadata.test.ts":"143","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/versions.test.ts":"144","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/folders/folders.test.ts":"145","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/folders/job.test.ts":"146","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/webhooks.test.ts":"147","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/base64.test.ts":"148","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/buildHeaders.test.ts":"149","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/form.test.ts":"150","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/index.test.ts":"151","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/path.test.ts":"152","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/stringifyQuery.test.ts":"153","/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/uploads.test.ts":"154"},{"size":612,"mtime":1758942943329,"results":"155","hashOfConfig":"156"},{"size":3501,"mtime":1758942943529,"results":"157","hashOfConfig":"158"},{"size":2888,"mtime":1758942959109},{"size":17752,"mtime":1758942959109},{"size":499,"mtime":1758942959113},{"size":370,"mtime":1758942959113},{"size":1182,"mtime":1758942943629,"results":"159","hashOfConfig":"158"},{"size":5863,"mtime":1758942959113},{"size":12713,"mtime":1758942943485,"results":"160","hashOfConfig":"158"},{"size":1462,"mtime":1758942959113},{"size":5593,"mtime":1758942959113},{"size":234066,"mtime":1758942959113},{"size":2884,"mtime":1758942943485,"results":"161","hashOfConfig":"158"},{"size":17071,"mtime":1758942943629,"results":"162","hashOfConfig":"158"},{"size":1097,"mtime":1758942959113},{"size":3400,"mtime":1758942959113},{"size":368,"mtime":1758942943485,"results":"163","hashOfConfig":"158"},{"size":6410,"mtime":1758942959113},{"size":465,"mtime":1758942959113},{"size":9031,"mtime":1758942959113},{"size":1320,"mtime":1758942959113},{"size":1161,"mtime":1758942959113},{"size":980,"mtime":1758942959113},{"size":10572,"mtime":1758942959113},{"size":6750,"mtime":1758942959113},{"size":1424,"mtime":1758942959113},{"size":5030,"mtime":1758942959113},{"size":4904,"mtime":1758942959113},{"size":7034,"mtime":1758942959113},{"size":3128,"mtime":1758942959113},{"size":10463,"mtime":1758942959113},{"size":15144,"mtime":1758942959117},{"size":2152,"mtime":1758942959117},{"size":2019,"mtime":1758942959117},{"size":1944,"mtime":1758942959117},{"size":10544,"mtime":1758942959117},{"size":6760,"mtime":1758942959117},{"size":10154,"mtime":1758942959117},{"size":2332,"mtime":1758942959117},{"size":2385,"mtime":1758942959117},{"size":2383,"mtime":1758942959117},{"size":2361,"mtime":1758942959117},{"size":2471,"mtime":1758942959117},{"size":1266,"mtime":1758942959117},{"size":6496,"mtime":1758942959117},{"size":9285,"mtime":1758942959117},{"size":9229,"mtime":1758942959117},{"size":2171,"mtime":1758942959117},{"size":3515,"mtime":1758942959117},{"size":7206,"mtime":1758942959117},{"size":16108,"mtime":1758942959117},{"size":2046,"mtime":1758942959117},{"size":6598,"mtime":1758942959117},{"size":6528,"mtime":1758942959117},{"size":6604,"mtime":1758942959117},{"size":2962,"mtime":1758942959117},{"size":2546,"mtime":1758942959117},{"size":1939,"mtime":1758942959117},{"size":2518,"mtime":1758942959117},{"size":2615,"mtime":1758942959117},{"size":3491,"mtime":1758942959117},{"size":6622,"mtime":1758942959117},{"size":2192,"mtime":1758942959117},{"size":31,"mtime":1758942943485,"results":"164","hashOfConfig":"158"},{"size":29411,"mtime":1758942943485,"results":"165","hashOfConfig":"158"},{"size":6851,"mtime":1758942943489,"results":"166","hashOfConfig":"158"},{"size":16226,"mtime":1758942943489,"results":"167","hashOfConfig":"158"},{"size":6594,"mtime":1758942943489,"results":"168","hashOfConfig":"158"},{"size":3689,"mtime":1758942943333,"results":"169","hashOfConfig":"156"},{"size":92,"mtime":1758942959117},{"size":32566,"mtime":1758942959117},{"size":3128,"mtime":1758942959117},{"size":3979,"mtime":1758942959117},{"size":267,"mtime":1758942943621,"results":"170","hashOfConfig":"156"},{"size":119,"mtime":1758942943337,"results":"171","hashOfConfig":"156"},{"size":80,"mtime":1758942959117},{"size":577,"mtime":1758942959117},{"size":2917,"mtime":1758942959117},{"size":6407,"mtime":1758942959117},{"size":3026,"mtime":1758942959117},{"size":1502,"mtime":1758942959117},{"size":2473,"mtime":1758942959117},{"size":929,"mtime":1758942959117},{"size":3526,"mtime":1758942959117},{"size":5211,"mtime":1758942959117},{"size":1187,"mtime":1758942959117},{"size":6352,"mtime":1758942959121},{"size":6746,"mtime":1758942943341,"results":"172","hashOfConfig":"156"},{"size":1275,"mtime":1758942943617,"results":"173","hashOfConfig":"156"},{"size":831,"mtime":1758942943341,"results":"174","hashOfConfig":"156"},{"size":612,"mtime":1758942943617,"results":"175","hashOfConfig":"156"},{"size":3110,"mtime":1758942959121},{"size":3211,"mtime":1758942943341,"results":"176","hashOfConfig":"156"},{"size":182,"mtime":1758942943617,"results":"177","hashOfConfig":"156"},{"size":601,"mtime":1758942959121},{"size":3140,"mtime":1758942943613,"results":"178","hashOfConfig":"156"},{"size":271,"mtime":1758942943613,"results":"179","hashOfConfig":"156"},{"size":86,"mtime":1758942959121},{"size":1769,"mtime":1758942959121},{"size":550,"mtime":1758942959121},{"size":22825,"mtime":1758942959121},{"size":7851,"mtime":1758942959121},{"size":2045,"mtime":1758942959121},{"size":122,"mtime":1758942944393,"results":"180","hashOfConfig":"156"},{"size":3158,"mtime":1758942959121},{"size":370,"mtime":1758942959121},{"size":154,"mtime":1758942959121},{"size":16667,"mtime":1758942959121},{"size":198,"mtime":1758942959121},{"size":536,"mtime":1758942959121},{"size":116,"mtime":1758942944509,"results":"181","hashOfConfig":"156"},{"size":118,"mtime":1758942944509,"results":"182","hashOfConfig":"156"},{"size":767,"mtime":1758942959121},{"size":264,"mtime":1758942959121},{"size":2054,"mtime":1758942959121},{"size":119,"mtime":1758942944313,"results":"183","hashOfConfig":"156"},{"size":11220,"mtime":1758942959121},{"size":4792,"mtime":1758942959121},{"size":38706,"mtime":1758942959121},{"size":894,"mtime":1758942959121},{"size":1706,"mtime":1758942959121},{"size":3286,"mtime":1758942959121},{"size":119,"mtime":1758942944009,"results":"184","hashOfConfig":"156"},{"size":7946,"mtime":1758942959121},{"size":429,"mtime":1758942959121},{"size":1280,"mtime":1758942959121},{"size":121,"mtime":1758942944329,"results":"185","hashOfConfig":"156"},{"size":1614,"mtime":1758942959121},{"size":35988,"mtime":1758942959121},{"size":35,"mtime":1758942943341,"results":"186","hashOfConfig":"156"},{"size":26078,"mtime":1758942959121},{"size":84,"mtime":1758942959121},{"size":59,"mtime":1758942959121},{"size":4104,"mtime":1758942959121},{"size":3734,"mtime":1758942959121},{"size":1120,"mtime":1758942959121},{"size":1323,"mtime":1758942959121},{"size":2119,"mtime":1758942959121},{"size":1701,"mtime":1758942959121},{"size":3902,"mtime":1758942959121},{"size":3948,"mtime":1758942959121},{"size":6193,"mtime":1758942959121},{"size":1622,"mtime":1758942959121},{"size":3124,"mtime":1758942959121},{"size":4467,"mtime":1758942959121},{"size":844,"mtime":1758942959121},{"size":2043,"mtime":1758942959121},{"size":2070,"mtime":1758942943345,"results":"187","hashOfConfig":"158"},{"size":2190,"mtime":1758942943345,"results":"188","hashOfConfig":"158"},{"size":1904,"mtime":1758942943345,"results":"189","hashOfConfig":"158"},{"size":24448,"mtime":1758942959121},{"size":17598,"mtime":1758942943345,"results":"190","hashOfConfig":"158"},{"size":929,"mtime":1758942959121},{"size":3498,"mtime":1758942943345,"results":"191","hashOfConfig":"158"},{"filePath":"192","messages":"193","suppressedMessages":"194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1nkvclw",{"filePath":"195","messages":"196","suppressedMessages":"197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"uatmab",{"filePath":"198","messages":"199","suppressedMessages":"200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"201","messages":"202","suppressedMessages":"203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"204","messages":"205","suppressedMessages":"206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"207","messages":"208","suppressedMessages":"209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"210","messages":"211","suppressedMessages":"212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"213","messages":"214","suppressedMessages":"215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"216","messages":"217","suppressedMessages":"218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"219","messages":"220","suppressedMessages":"221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"222","messages":"223","suppressedMessages":"224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"225","messages":"226","suppressedMessages":"227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"228","messages":"229","suppressedMessages":"230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"231","messages":"232","suppressedMessages":"233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"234","messages":"235","suppressedMessages":"236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"237","messages":"238","suppressedMessages":"239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"240","messages":"241","suppressedMessages":"242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"243","messages":"244","suppressedMessages":"245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"246","messages":"247","suppressedMessages":"248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"249","messages":"250","suppressedMessages":"251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"252","messages":"253","suppressedMessages":"254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"255","messages":"256","suppressedMessages":"257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"258","messages":"259","suppressedMessages":"260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"261","messages":"262","suppressedMessages":"263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"264","messages":"265","suppressedMessages":"266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"267","messages":"268","suppressedMessages":"269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"270","messages":"271","suppressedMessages":"272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"273","messages":"274","suppressedMessages":"275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"276","messages":"277","suppressedMessages":"278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"279","messages":"280","suppressedMessages":"281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"282","messages":"283","suppressedMessages":"284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"285","messages":"286","suppressedMessages":"287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"288","messages":"289","suppressedMessages":"290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"291","messages":"292","suppressedMessages":"293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"294","messages":"295","suppressedMessages":"296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/jest.config.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/cloudflare-worker/src/app.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/code-tool-worker.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/compat.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/index.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/options.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/filtering.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/compat.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/dynamic-tools.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/options.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/tests/tools.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/scripts/publish-packages.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/resource.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/core/uploads.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/uploads.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/base64.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/bytes.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/env.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/path.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/sleep.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils/values.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/internal/utils.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/accounts.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/cache.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/folders.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/base64.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/buildHeaders.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/form.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/path.test.ts",[],[],"/home/tempuser-rpe00m/run/codegen-output/imagekit-inc/imagekit-typescript/tests/uploads.test.ts",[],[]] \ No newline at end of file +[{"/home/tempuser-ntg79m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/options.ts":"1"},{"size":17015,"mtime":1759200729406,"results":"2","hashOfConfig":"3"},{"filePath":"4","messages":"5","suppressedMessages":"6","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"uatmab","/home/tempuser-ntg79m/run/codegen-output/imagekit-inc/imagekit-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 348a33d0..4fe3b987 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 e805d24f1d721e1694b927c3c41c5b21a4433fb0 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:54:51 +0000 Subject: [PATCH 11/19] 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 3d6655af..15ce7f55 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 dcdc0b74f7d809165bc0e3bce1656626d5dd1240 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:55:26 +0000 Subject: [PATCH 12/19] 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 ad819835..966d0575 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 d50cbcf4cd2535e25310c635539a2ecf2f2e8201 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 07:21:43 +0000 Subject: [PATCH 13/19] feat(api): add path policy related non-breaking changes --- .eslintcache | 2 +- .stats.yml | 4 ++-- packages/mcp-server/README.md | 3 +++ .../src/tools/beta/v2/files/upload-v2-beta-files.ts | 1 + .../list-custom-metadata-fields.ts | 7 ++++++- packages/mcp-server/src/tools/files/upload-files.ts | 1 + src/resources/beta/v2/files.ts | 1 + src/resources/custom-metadata-fields.ts | 13 +++++++++++++ src/resources/files/files.ts | 1 + tests/api-resources/custom-metadata-fields.test.ts | 5 ++++- 10 files changed, 33 insertions(+), 5 deletions(-) diff --git a/.eslintcache b/.eslintcache index 3fe5f659..2178d9e2 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/home/tempuser-ntg79m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/options.ts":"1"},{"size":17015,"mtime":1759200729406,"results":"2","hashOfConfig":"3"},{"filePath":"4","messages":"5","suppressedMessages":"6","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"uatmab","/home/tempuser-ntg79m/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/options.ts",[],[]] \ No newline at end of file +[{"/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts":"1","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts":"2","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/upload-files.ts":"3","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/files.ts":"4","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/custom-metadata-fields.ts":"5","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/files.ts":"6","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/custom-metadata-fields.test.ts":"7"},{"size":15178,"mtime":1759216900495},{"size":7344,"mtime":1759216900495},{"size":16142,"mtime":1759216900495},{"size":16692,"mtime":1759216900495},{"size":11809,"mtime":1759216900495},{"size":38731,"mtime":1759216900499},{"size":3928,"mtime":1759216900499}] \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 7c3aae1c..da19a2b5 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-d1a3e6dfc45ae832b6b14a0aef25878985c679fa9f48c1470df188b1578ba648.yml -openapi_spec_hash: 1d382866fce3284f26d341f112988d9d +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-1499148ce5fc81b4d8c8b3eaadf7adfaf54df5fa0b3a0452c3f5ef0dfe884a95.yml +openapi_spec_hash: e91526b143d3e696bef2b4d0ea3aa2b4 config_hash: e42d7fc3a8c92c35099cc283f9a4467a diff --git a/packages/mcp-server/README.md b/packages/mcp-server/README.md index 1b8f2944..a0b63036 100644 --- a/packages/mcp-server/README.md +++ b/packages/mcp-server/README.md @@ -212,6 +212,9 @@ The following tools are available in this MCP server. - `create_custom_metadata_fields` (`write`): This API creates a new custom metadata field. Once a custom metadata field is created either through this API or using the dashboard UI, its value can be set on the assets. The value of a field for an asset can be set using the media library UI or programmatically through upload or update assets API. - `update_custom_metadata_fields` (`write`): This API updates the label or schema of an existing custom metadata field. - `list_custom_metadata_fields` (`read`): This API returns the array of created custom metadata field objects. By default the API returns only non deleted field objects, but you can include deleted fields in the API response. + + You can also filter results by a specific folder path to retrieve custom metadata fields applicable at that location. This path-specific filtering is useful when using the **Path policy** feature to determine which custom metadata fields are selected for a given path. + - `delete_custom_metadata_fields` (`write`): This API deletes a custom metadata field. Even after deleting a custom metadata field, you cannot create any new custom metadata field with the same name. ### Resource `files`: diff --git a/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts b/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts index fcb48cae..9341d0f8 100644 --- a/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts +++ b/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts @@ -106,6 +106,7 @@ export const tool: Tool = { 'isPublished', 'customMetadata', 'metadata', + 'selectedFieldsSchema', ], }, }, diff --git a/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts b/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts index d85c214f..7b6ce1d7 100644 --- a/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts +++ b/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts @@ -18,10 +18,15 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'list_custom_metadata_fields', 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 API returns the array of created custom metadata field objects. By default the API returns only non deleted field objects, but you can include deleted fields in the API response.\n\n# Response Schema\n```json\n{\n type: 'array',\n items: {\n $ref: '#/$defs/custom_metadata_field'\n },\n $defs: {\n custom_metadata_field: {\n type: 'object',\n description: 'Object containing details of a custom metadata field.',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the custom metadata field. Use this to update the field.'\n },\n label: {\n type: 'string',\n description: 'Human readable name of the custom metadata field. This name is displayed as form field label to the users while setting field value on the asset in the media library UI.\\n'\n },\n name: {\n type: 'string',\n description: 'API name of the custom metadata field. This becomes the key while setting `customMetadata` (key-value object) for an asset using upload or update API.\\n'\n },\n schema: {\n type: 'object',\n description: 'An object that describes the rules for the custom metadata field value.',\n properties: {\n type: {\n type: 'string',\n description: 'Type of the custom metadata field.',\n enum: [ 'Text',\n 'Textarea',\n 'Number',\n 'Date',\n 'Boolean',\n 'SingleSelect',\n 'MultiSelect'\n ]\n },\n defaultValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n },\n {\n type: 'array',\n title: 'Mixed',\n description: 'Default value should be of type array when custom metadata field type is set to `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n ],\n description: 'The default value for this custom metadata field. Date type of default value depends on the field type.\\n'\n },\n isValueRequired: {\n type: 'boolean',\n description: 'Specifies if the this custom metadata field is required or not.\\n'\n },\n maxLength: {\n type: 'number',\n description: 'Maximum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n maxValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Maximum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n minLength: {\n type: 'number',\n description: 'Minimum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n minValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Minimum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n selectOptions: {\n type: 'array',\n description: 'An array of allowed values when field type is `SingleSelect` or `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n },\n required: [ 'type'\n ]\n }\n },\n required: [ 'id',\n 'label',\n 'name',\n 'schema'\n ]\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 API returns the array of created custom metadata field objects. By default the API returns only non deleted field objects, but you can include deleted fields in the API response.\n\nYou can also filter results by a specific folder path to retrieve custom metadata fields applicable at that location. This path-specific filtering is useful when using the **Path policy** feature to determine which custom metadata fields are selected for a given path.\n\n\n# Response Schema\n```json\n{\n type: 'array',\n items: {\n $ref: '#/$defs/custom_metadata_field'\n },\n $defs: {\n custom_metadata_field: {\n type: 'object',\n description: 'Object containing details of a custom metadata field.',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the custom metadata field. Use this to update the field.'\n },\n label: {\n type: 'string',\n description: 'Human readable name of the custom metadata field. This name is displayed as form field label to the users while setting field value on the asset in the media library UI.\\n'\n },\n name: {\n type: 'string',\n description: 'API name of the custom metadata field. This becomes the key while setting `customMetadata` (key-value object) for an asset using upload or update API.\\n'\n },\n schema: {\n type: 'object',\n description: 'An object that describes the rules for the custom metadata field value.',\n properties: {\n type: {\n type: 'string',\n description: 'Type of the custom metadata field.',\n enum: [ 'Text',\n 'Textarea',\n 'Number',\n 'Date',\n 'Boolean',\n 'SingleSelect',\n 'MultiSelect'\n ]\n },\n defaultValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n },\n {\n type: 'array',\n title: 'Mixed',\n description: 'Default value should be of type array when custom metadata field type is set to `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n ],\n description: 'The default value for this custom metadata field. Date type of default value depends on the field type.\\n'\n },\n isValueRequired: {\n type: 'boolean',\n description: 'Specifies if the this custom metadata field is required or not.\\n'\n },\n maxLength: {\n type: 'number',\n description: 'Maximum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n maxValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Maximum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n minLength: {\n type: 'number',\n description: 'Minimum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n minValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Minimum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n selectOptions: {\n type: 'array',\n description: 'An array of allowed values when field type is `SingleSelect` or `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n },\n required: [ 'type'\n ]\n }\n },\n required: [ 'id',\n 'label',\n 'name',\n 'schema'\n ]\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { + folderPath: { + type: 'string', + description: + 'The folder path (e.g., `/path/to/folder`) for which to retrieve applicable custom metadata fields. \nUseful for determining path-specific field selections when the [Path policy](https://imagekit.io/docs/dam/path-policy) feature is in use.\n', + }, includeDeleted: { type: 'boolean', description: 'Set it to `true` to include deleted field objects in the API response.\n', diff --git a/packages/mcp-server/src/tools/files/upload-files.ts b/packages/mcp-server/src/tools/files/upload-files.ts index 9173a4d8..3e0b52d0 100644 --- a/packages/mcp-server/src/tools/files/upload-files.ts +++ b/packages/mcp-server/src/tools/files/upload-files.ts @@ -117,6 +117,7 @@ export const tool: Tool = { 'isPublished', 'customMetadata', 'metadata', + 'selectedFieldsSchema', ], }, }, diff --git a/src/resources/beta/v2/files.ts b/src/resources/beta/v2/files.ts index 95ef6760..4d76a83d 100644 --- a/src/resources/beta/v2/files.ts +++ b/src/resources/beta/v2/files.ts @@ -403,6 +403,7 @@ export interface FileUploadParams { | 'isPublished' | 'customMetadata' | 'metadata' + | 'selectedFieldsSchema' >; /** diff --git a/src/resources/custom-metadata-fields.ts b/src/resources/custom-metadata-fields.ts index 10a917e4..ee202a05 100644 --- a/src/resources/custom-metadata-fields.ts +++ b/src/resources/custom-metadata-fields.ts @@ -59,6 +59,11 @@ export class CustomMetadataFields extends APIResource { * the API returns only non deleted field objects, but you can include deleted * fields in the API response. * + * You can also filter results by a specific folder path to retrieve custom + * metadata fields applicable at that location. This path-specific filtering is + * useful when using the **Path policy** feature to determine which custom metadata + * fields are selected for a given path. + * * @example * ```ts * const customMetadataFields = @@ -319,6 +324,14 @@ export namespace CustomMetadataFieldUpdateParams { } export interface CustomMetadataFieldListParams { + /** + * The folder path (e.g., `/path/to/folder`) for which to retrieve applicable + * custom metadata fields. + * Useful for determining path-specific field selections when the + * [Path policy](https://imagekit.io/docs/dam/path-policy) feature is in use. + */ + folderPath?: string; + /** * Set it to `true` to include deleted field objects in the API response. */ diff --git a/src/resources/files/files.ts b/src/resources/files/files.ts index 0f4fd927..4ac5f52c 100644 --- a/src/resources/files/files.ts +++ b/src/resources/files/files.ts @@ -1236,6 +1236,7 @@ export interface FileUploadParams { | 'isPublished' | 'customMetadata' | 'metadata' + | 'selectedFieldsSchema' >; /** diff --git a/tests/api-resources/custom-metadata-fields.test.ts b/tests/api-resources/custom-metadata-fields.test.ts index cbc88761..5f36ce66 100644 --- a/tests/api-resources/custom-metadata-fields.test.ts +++ b/tests/api-resources/custom-metadata-fields.test.ts @@ -94,7 +94,10 @@ describe('resource customMetadataFields', () => { test.skip('list: request options and params are passed correctly', async () => { // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error await expect( - client.customMetadataFields.list({ includeDeleted: true }, { path: '/_stainless_unknown_path' }), + client.customMetadataFields.list( + { folderPath: 'folderPath', includeDeleted: true }, + { path: '/_stainless_unknown_path' }, + ), ).rejects.toThrow(ImageKit.NotFoundError); }); From 962390f02b179b6a34f9697c27bc67ed99ba9b99 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 07:24:50 +0000 Subject: [PATCH 14/19] feat(api): updated docs --- .eslintcache | 2 +- .stats.yml | 4 ++-- .../custom-metadata-fields/list-custom-metadata-fields.ts | 2 +- src/resources/custom-metadata-fields.ts | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.eslintcache b/.eslintcache index 2178d9e2..3df9ba25 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts":"1","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts":"2","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/upload-files.ts":"3","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/files.ts":"4","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/custom-metadata-fields.ts":"5","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/files.ts":"6","/home/tempuser-8f1dic/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/custom-metadata-fields.test.ts":"7"},{"size":15178,"mtime":1759216900495},{"size":7344,"mtime":1759216900495},{"size":16142,"mtime":1759216900495},{"size":16692,"mtime":1759216900495},{"size":11809,"mtime":1759216900495},{"size":38731,"mtime":1759216900499},{"size":3928,"mtime":1759216900499}] \ No newline at end of file +[{"/home/tempuser-6nkja2/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts":"1","/home/tempuser-6nkja2/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/custom-metadata-fields.ts":"2"},{"size":7341,"mtime":1759217087976},{"size":11807,"mtime":1759217087976}] \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index da19a2b5..6b1c558b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-1499148ce5fc81b4d8c8b3eaadf7adfaf54df5fa0b3a0452c3f5ef0dfe884a95.yml -openapi_spec_hash: e91526b143d3e696bef2b4d0ea3aa2b4 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-8d944c932f09191791cc09e90ebf8142e523c0a6dd82ae9d1dbd7ff884acfc4b.yml +openapi_spec_hash: 179e38a7a472a5f98d17aed41099cbfd config_hash: e42d7fc3a8c92c35099cc283f9a4467a diff --git a/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts b/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts index 7b6ce1d7..6c3d73b4 100644 --- a/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts +++ b/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts @@ -25,7 +25,7 @@ export const tool: Tool = { folderPath: { type: 'string', description: - 'The folder path (e.g., `/path/to/folder`) for which to retrieve applicable custom metadata fields. \nUseful for determining path-specific field selections when the [Path policy](https://imagekit.io/docs/dam/path-policy) feature is in use.\n', + 'The folder path (e.g., `/path/to/folder`) for which to retrieve applicable custom metadata fields. Useful for determining path-specific field selections when the [Path policy](https://imagekit.io/docs/dam/path-policy) feature is in use.\n', }, includeDeleted: { type: 'boolean', diff --git a/src/resources/custom-metadata-fields.ts b/src/resources/custom-metadata-fields.ts index ee202a05..cf4193da 100644 --- a/src/resources/custom-metadata-fields.ts +++ b/src/resources/custom-metadata-fields.ts @@ -326,9 +326,9 @@ export namespace CustomMetadataFieldUpdateParams { export interface CustomMetadataFieldListParams { /** * The folder path (e.g., `/path/to/folder`) for which to retrieve applicable - * custom metadata fields. - * Useful for determining path-specific field selections when the - * [Path policy](https://imagekit.io/docs/dam/path-policy) feature is in use. + * custom metadata fields. Useful for determining path-specific field selections + * when the [Path policy](https://imagekit.io/docs/dam/path-policy) feature is in + * use. */ folderPath?: string; From ec8c8b846e6288e6c13d4bbe4e65ca13d4059fa2 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 07:29:13 +0000 Subject: [PATCH 15/19] feat(api): add selectedFieldsSchema in upload and list API response --- .eslintcache | 2 +- .stats.yml | 4 +- .../src/tools/assets/list-assets.ts | 2 +- .../beta/v2/files/upload-v2-beta-files.ts | 6 + .../mcp-server/src/tools/files/get-files.ts | 2 +- .../src/tools/files/upload-files.ts | 6 + .../files/versions/get-files-versions.ts | 2 +- .../files/versions/list-files-versions.ts | 2 +- .../files/versions/restore-files-versions.ts | 2 +- src/resources/beta/v2/files.ts | 71 +++++++++ src/resources/files/files.ts | 142 ++++++++++++++++++ tests/api-resources/beta/v2/files.test.ts | 14 ++ tests/api-resources/files/files.test.ts | 14 ++ 13 files changed, 261 insertions(+), 8 deletions(-) diff --git a/.eslintcache b/.eslintcache index 3df9ba25..3be71e0e 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/home/tempuser-6nkja2/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts":"1","/home/tempuser-6nkja2/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/custom-metadata-fields.ts":"2"},{"size":7341,"mtime":1759217087976},{"size":11807,"mtime":1759217087976}] \ No newline at end of file +[{"/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/assets/list-assets.ts":"1","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts":"2","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/get-files.ts":"3","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/upload-files.ts":"4","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/get-files-versions.ts":"5","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/list-files-versions.ts":"6","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/restore-files-versions.ts":"7","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/files.ts":"8","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/files.ts":"9","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/beta/v2/files.test.ts":"10","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/files.test.ts":"11"},{"size":11000,"mtime":1759217350680},{"size":15681,"mtime":1759217350680},{"size":7033,"mtime":1759217350680},{"size":16645,"mtime":1759217350680},{"size":7135,"mtime":1759217350680},{"size":7065,"mtime":1759217350680},{"size":7141,"mtime":1759217350680},{"size":19088,"mtime":1759217350680},{"size":43511,"mtime":1759217350680},{"size":2388,"mtime":1759217350680},{"size":6462,"mtime":1759217350680}] \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 6b1c558b..bceb847c 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-8d944c932f09191791cc09e90ebf8142e523c0a6dd82ae9d1dbd7ff884acfc4b.yml -openapi_spec_hash: 179e38a7a472a5f98d17aed41099cbfd +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-7a42233daaf82345cc6d92cc49d4885126176b014c05ea0618c035869319fe53.yml +openapi_spec_hash: c41b1b6062b7c2ea548b16e0462aa358 config_hash: e42d7fc3a8c92c35099cc283f9a4467a diff --git a/packages/mcp-server/src/tools/assets/list-assets.ts b/packages/mcp-server/src/tools/assets/list-assets.ts index 7ed71596..995550b5 100644 --- a/packages/mcp-server/src/tools/assets/list-assets.ts +++ b/packages/mcp-server/src/tools/assets/list-assets.ts @@ -18,7 +18,7 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'list_assets', 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 API can list all the uploaded files and folders in your ImageKit.io media library. In addition, you can fine-tune your query by specifying various filters by generating a query string in a Lucene-like syntax and provide this generated string as the value of the `searchQuery`.\n\n\n# Response Schema\n```json\n{\n type: 'array',\n items: {\n anyOf: [ {\n $ref: '#/$defs/file'\n },\n {\n $ref: '#/$defs/folder'\n }\n ],\n description: 'Object containing details of a file or file version.'\n },\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\n },\n folder: {\n type: 'object',\n title: 'Folder',\n properties: {\n createdAt: {\n type: 'string',\n description: 'Date and time when the folder was created. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n folderId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n folderPath: {\n type: 'string',\n description: 'Path of the folder. This is the path you would use in the URL to access the folder. For example, if the folder is at the root of the media library, the path will be /folder. If the folder is inside another folder named images, the path will be /images/folder.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'folder'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the folder was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n }\n }\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 API can list all the uploaded files and folders in your ImageKit.io media library. In addition, you can fine-tune your query by specifying various filters by generating a query string in a Lucene-like syntax and provide this generated string as the value of the `searchQuery`.\n\n\n# Response Schema\n```json\n{\n type: 'array',\n items: {\n anyOf: [ {\n $ref: '#/$defs/file'\n },\n {\n $ref: '#/$defs/folder'\n }\n ],\n description: 'Object containing details of a file or file version.'\n },\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n selectedFieldsSchema: {\n type: 'object',\n description: 'This field is included in the response only if the Path policy feature is available in the plan.\\nIt contains schema definitions for the custom metadata fields selected for the specified file path.\\nField selection can only be done when the Path policy feature is enabled.\\n\\nKeys are the names of the custom metadata fields; the value object has details about the custom metadata schema.\\n',\n additionalProperties: true\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\n },\n folder: {\n type: 'object',\n title: 'Folder',\n properties: {\n createdAt: {\n type: 'string',\n description: 'Date and time when the folder was created. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n folderId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n folderPath: {\n type: 'string',\n description: 'Path of the folder. This is the path you would use in the URL to access the folder. For example, if the folder is at the root of the media library, the path will be /folder. If the folder is inside another folder named images, the path will be /images/folder.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'folder'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the folder was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n }\n }\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { diff --git a/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts b/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts index 9341d0f8..e17d30d2 100644 --- a/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts +++ b/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts @@ -110,6 +110,12 @@ export const tool: Tool = { ], }, }, + selectedFieldsSchema: { + type: 'object', + description: + 'This field is included in the response only if the Path policy feature is available in the plan.\nIt contains schema definitions for the custom metadata fields selected for the specified file path.\nField selection can only be done when the Path policy feature is enabled.\n\nKeys are the names of the custom metadata fields; the value object has details about the custom metadata schema.\n', + additionalProperties: true, + }, tags: { type: 'array', description: diff --git a/packages/mcp-server/src/tools/files/get-files.ts b/packages/mcp-server/src/tools/files/get-files.ts index 4f9b26dd..3233d4ab 100644 --- a/packages/mcp-server/src/tools/files/get-files.ts +++ b/packages/mcp-server/src/tools/files/get-files.ts @@ -18,7 +18,7 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'get_files', 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 API returns an object with details or attributes about the current version of the file.\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/file',\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\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 API returns an object with details or attributes about the current version of the file.\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/file',\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n selectedFieldsSchema: {\n type: 'object',\n description: 'This field is included in the response only if the Path policy feature is available in the plan.\\nIt contains schema definitions for the custom metadata fields selected for the specified file path.\\nField selection can only be done when the Path policy feature is enabled.\\n\\nKeys are the names of the custom metadata fields; the value object has details about the custom metadata schema.\\n',\n additionalProperties: true\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { diff --git a/packages/mcp-server/src/tools/files/upload-files.ts b/packages/mcp-server/src/tools/files/upload-files.ts index 3e0b52d0..79e86ca4 100644 --- a/packages/mcp-server/src/tools/files/upload-files.ts +++ b/packages/mcp-server/src/tools/files/upload-files.ts @@ -121,6 +121,12 @@ export const tool: Tool = { ], }, }, + selectedFieldsSchema: { + type: 'object', + description: + 'This field is included in the response only if the Path policy feature is available in the plan.\nIt contains schema definitions for the custom metadata fields selected for the specified file path.\nField selection can only be done when the Path policy feature is enabled.\n\nKeys are the names of the custom metadata fields; the value object has details about the custom metadata schema.\n', + additionalProperties: true, + }, signature: { type: 'string', description: diff --git a/packages/mcp-server/src/tools/files/versions/get-files-versions.ts b/packages/mcp-server/src/tools/files/versions/get-files-versions.ts index 22b68d8e..9c052632 100644 --- a/packages/mcp-server/src/tools/files/versions/get-files-versions.ts +++ b/packages/mcp-server/src/tools/files/versions/get-files-versions.ts @@ -18,7 +18,7 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'get_files_versions', 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 API returns an object with details or attributes of a file version.\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/file',\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\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 API returns an object with details or attributes of a file version.\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/file',\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n selectedFieldsSchema: {\n type: 'object',\n description: 'This field is included in the response only if the Path policy feature is available in the plan.\\nIt contains schema definitions for the custom metadata fields selected for the specified file path.\\nField selection can only be done when the Path policy feature is enabled.\\n\\nKeys are the names of the custom metadata fields; the value object has details about the custom metadata schema.\\n',\n additionalProperties: true\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { diff --git a/packages/mcp-server/src/tools/files/versions/list-files-versions.ts b/packages/mcp-server/src/tools/files/versions/list-files-versions.ts index aa6d5d2b..33a3c2e6 100644 --- a/packages/mcp-server/src/tools/files/versions/list-files-versions.ts +++ b/packages/mcp-server/src/tools/files/versions/list-files-versions.ts @@ -18,7 +18,7 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'list_files_versions', 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 API returns details of all versions of a file.\n\n\n# Response Schema\n```json\n{\n type: 'array',\n items: {\n $ref: '#/$defs/file'\n },\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\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 API returns details of all versions of a file.\n\n\n# Response Schema\n```json\n{\n type: 'array',\n items: {\n $ref: '#/$defs/file'\n },\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n selectedFieldsSchema: {\n type: 'object',\n description: 'This field is included in the response only if the Path policy feature is available in the plan.\\nIt contains schema definitions for the custom metadata fields selected for the specified file path.\\nField selection can only be done when the Path policy feature is enabled.\\n\\nKeys are the names of the custom metadata fields; the value object has details about the custom metadata schema.\\n',\n additionalProperties: true\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { diff --git a/packages/mcp-server/src/tools/files/versions/restore-files-versions.ts b/packages/mcp-server/src/tools/files/versions/restore-files-versions.ts index 4e9e9197..2f41d386 100644 --- a/packages/mcp-server/src/tools/files/versions/restore-files-versions.ts +++ b/packages/mcp-server/src/tools/files/versions/restore-files-versions.ts @@ -18,7 +18,7 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'restore_files_versions', 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 API restores a file version as the current file version.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/file',\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\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 API restores a file version as the current file version.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/file',\n $defs: {\n file: {\n type: 'object',\n title: 'File & File Version',\n description: 'Object containing details of a file or file version.',\n properties: {\n AITags: {\n type: 'array',\n description: 'An array of tags assigned to the file by auto tagging.\\n',\n items: {\n type: 'object',\n properties: {\n confidence: {\n type: 'number',\n description: 'Confidence score of the tag.'\n },\n name: {\n type: 'string',\n description: 'Name of the tag.'\n },\n source: {\n type: 'string',\n description: 'Source of the tag. Possible values are `google-auto-tagging` and `aws-auto-tagging`.'\n }\n }\n }\n },\n createdAt: {\n type: 'string',\n description: 'Date and time when the file was uploaded. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n customCoordinates: {\n type: 'string',\n description: 'An string with custom coordinates of the file.\\n'\n },\n customMetadata: {\n type: 'object',\n description: 'An object with custom metadata for the file.\\n',\n additionalProperties: true\n },\n description: {\n type: 'string',\n description: 'Optional text to describe the contents of the file. Can be set by the user or the ai-auto-description extension.\\n'\n },\n fileId: {\n type: 'string',\n description: 'Unique identifier of the asset.'\n },\n filePath: {\n type: 'string',\n description: 'Path of the file. This is the path you would use in the URL to access the file. For example, if the file is at the root of the media library, the path will be `/file.jpg`. If the file is inside a folder named `images`, the path will be `/images/file.jpg`.\\n'\n },\n fileType: {\n type: 'string',\n description: 'Type of the file. Possible values are `image`, `non-image`.\\n'\n },\n hasAlpha: {\n type: 'boolean',\n description: 'Specifies if the image has an alpha channel.\\n'\n },\n height: {\n type: 'number',\n description: 'Height of the file.\\n'\n },\n isPrivateFile: {\n type: 'boolean',\n description: 'Specifies if the file is private or not.\\n'\n },\n isPublished: {\n type: 'boolean',\n description: 'Specifies if the file is published or not.\\n'\n },\n mime: {\n type: 'string',\n description: 'MIME type of the file.\\n'\n },\n name: {\n type: 'string',\n description: 'Name of the asset.'\n },\n selectedFieldsSchema: {\n type: 'object',\n description: 'This field is included in the response only if the Path policy feature is available in the plan.\\nIt contains schema definitions for the custom metadata fields selected for the specified file path.\\nField selection can only be done when the Path policy feature is enabled.\\n\\nKeys are the names of the custom metadata fields; the value object has details about the custom metadata schema.\\n',\n additionalProperties: true\n },\n size: {\n type: 'number',\n description: 'Size of the file in bytes.\\n'\n },\n tags: {\n type: 'array',\n description: 'An array of tags assigned to the file. Tags are used to search files in the media library.\\n',\n items: {\n type: 'string'\n }\n },\n thumbnail: {\n type: 'string',\n description: 'URL of the thumbnail image. This URL is used to access the thumbnail image of the file in the media library.\\n'\n },\n type: {\n type: 'string',\n description: 'Type of the asset.',\n enum: [ 'file',\n 'file-version'\n ]\n },\n updatedAt: {\n type: 'string',\n description: 'Date and time when the file was last updated. The date and time is in ISO8601 format.\\n',\n format: 'date-time'\n },\n url: {\n type: 'string',\n description: 'URL of the file.\\n'\n },\n versionInfo: {\n type: 'object',\n description: 'An object with details of the file version.\\n',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier of the file version.'\n },\n name: {\n type: 'string',\n description: 'Name of the file version.'\n }\n }\n },\n width: {\n type: 'number',\n description: 'Width of the file.\\n'\n }\n }\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { diff --git a/src/resources/beta/v2/files.ts b/src/resources/beta/v2/files.ts index 4d76a83d..70b79a77 100644 --- a/src/resources/beta/v2/files.ts +++ b/src/resources/beta/v2/files.ts @@ -406,6 +406,17 @@ export interface FileUploadParams { | 'selectedFieldsSchema' >; + /** + * This field is included in the response only if the Path policy feature is + * available in the plan. It contains schema definitions for the custom metadata + * fields selected for the specified file path. Field selection can only be done + * when the Path policy feature is enabled. + * + * Keys are the names of the custom metadata fields; the value object has details + * about the custom metadata schema. + */ + selectedFieldsSchema?: { [key: string]: FileUploadParams.SelectedFieldsSchema }; + /** * Set the tags while uploading the file. Provide an array of tag strings (e.g. * `["tag1", "tag2", "tag3"]`). The combined length of all tag characters must not @@ -450,6 +461,66 @@ export interface FileUploadParams { } export namespace FileUploadParams { + export interface SelectedFieldsSchema { + /** + * Type of the custom metadata field. + */ + type: 'Text' | 'Textarea' | 'Number' | 'Date' | 'Boolean' | 'SingleSelect' | 'MultiSelect'; + + /** + * The default value for this custom metadata field. The value should match the + * `type` of custom metadata field. + */ + defaultValue?: string | number | boolean | Array; + + /** + * Specifies if the custom metadata field is required or not. + */ + isValueRequired?: boolean; + + /** + * Maximum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + maxLength?: number; + + /** + * Maximum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + maxValue?: string | number; + + /** + * Minimum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + minLength?: number; + + /** + * Minimum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + minValue?: string | number; + + /** + * Indicates whether the custom metadata field is read only. A read only field + * cannot be modified after being set. This field is configurable only via the + * **Path policy** feature. + */ + readOnly?: boolean; + + /** + * An array of allowed values when field type is `SingleSelect` or `MultiSelect`. + */ + selectOptions?: Array; + + /** + * Specifies if the selectOptions array is truncated. It is truncated when number + * of options are > 100. + */ + selectOptionsTruncated?: boolean; + } + /** * Configure pre-processing (`pre`) and post-processing (`post`) transformations. * diff --git a/src/resources/files/files.ts b/src/resources/files/files.ts index 4ac5f52c..1b83105b 100644 --- a/src/resources/files/files.ts +++ b/src/resources/files/files.ts @@ -269,6 +269,17 @@ export interface File { */ name?: string; + /** + * This field is included in the response only if the Path policy feature is + * available in the plan. It contains schema definitions for the custom metadata + * fields selected for the specified file path. Field selection can only be done + * when the Path policy feature is enabled. + * + * Keys are the names of the custom metadata fields; the value object has details + * about the custom metadata schema. + */ + selectedFieldsSchema?: { [key: string]: File.SelectedFieldsSchema }; + /** * Size of the file in bytes. */ @@ -332,6 +343,66 @@ export namespace File { source?: string; } + export interface SelectedFieldsSchema { + /** + * Type of the custom metadata field. + */ + type: 'Text' | 'Textarea' | 'Number' | 'Date' | 'Boolean' | 'SingleSelect' | 'MultiSelect'; + + /** + * The default value for this custom metadata field. The value should match the + * `type` of custom metadata field. + */ + defaultValue?: string | number | boolean | Array; + + /** + * Specifies if the custom metadata field is required or not. + */ + isValueRequired?: boolean; + + /** + * Maximum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + maxLength?: number; + + /** + * Maximum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + maxValue?: string | number; + + /** + * Minimum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + minLength?: number; + + /** + * Minimum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + minValue?: string | number; + + /** + * Indicates whether the custom metadata field is read only. A read only field + * cannot be modified after being set. This field is configurable only via the + * **Path policy** feature. + */ + readOnly?: boolean; + + /** + * An array of allowed values when field type is `SingleSelect` or `MultiSelect`. + */ + selectOptions?: Array; + + /** + * Specifies if the selectOptions array is truncated. It is truncated when number + * of options are > 100. + */ + selectOptionsTruncated?: boolean; + } + /** * An object with details of the file version. */ @@ -1239,6 +1310,17 @@ export interface FileUploadParams { | 'selectedFieldsSchema' >; + /** + * This field is included in the response only if the Path policy feature is + * available in the plan. It contains schema definitions for the custom metadata + * fields selected for the specified file path. Field selection can only be done + * when the Path policy feature is enabled. + * + * Keys are the names of the custom metadata fields; the value object has details + * about the custom metadata schema. + */ + selectedFieldsSchema?: { [key: string]: FileUploadParams.SelectedFieldsSchema }; + /** * HMAC-SHA1 digest of the token+expire using your ImageKit.io private API key as a * key. Learn how to create a signature on the page below. This should be in @@ -1293,6 +1375,66 @@ export interface FileUploadParams { } export namespace FileUploadParams { + export interface SelectedFieldsSchema { + /** + * Type of the custom metadata field. + */ + type: 'Text' | 'Textarea' | 'Number' | 'Date' | 'Boolean' | 'SingleSelect' | 'MultiSelect'; + + /** + * The default value for this custom metadata field. The value should match the + * `type` of custom metadata field. + */ + defaultValue?: string | number | boolean | Array; + + /** + * Specifies if the custom metadata field is required or not. + */ + isValueRequired?: boolean; + + /** + * Maximum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + maxLength?: number; + + /** + * Maximum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + maxValue?: string | number; + + /** + * Minimum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + minLength?: number; + + /** + * Minimum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + minValue?: string | number; + + /** + * Indicates whether the custom metadata field is read only. A read only field + * cannot be modified after being set. This field is configurable only via the + * **Path policy** feature. + */ + readOnly?: boolean; + + /** + * An array of allowed values when field type is `SingleSelect` or `MultiSelect`. + */ + selectOptions?: Array; + + /** + * Specifies if the selectOptions array is truncated. It is truncated when number + * of options are > 100. + */ + selectOptionsTruncated?: boolean; + } + /** * Configure pre-processing (`pre`) and post-processing (`post`) transformations. * diff --git a/tests/api-resources/beta/v2/files.test.ts b/tests/api-resources/beta/v2/files.test.ts index 0faf8d31..fd8a6ed0 100644 --- a/tests/api-resources/beta/v2/files.test.ts +++ b/tests/api-resources/beta/v2/files.test.ts @@ -55,6 +55,20 @@ describe('resource files', () => { overwriteFile: true, overwriteTags: true, responseFields: ['tags', 'customCoordinates', 'isPrivateFile'], + selectedFieldsSchema: { + foo: { + type: 'Text', + defaultValue: 'string', + isValueRequired: true, + maxLength: 0, + maxValue: 'string', + minLength: 0, + minValue: 'string', + readOnly: true, + selectOptions: ['small', 'medium', 'large', 30, 40, true], + selectOptionsTruncated: true, + }, + }, tags: ['t-shirt', 'round-neck', 'men'], transformation: { post: [ diff --git a/tests/api-resources/files/files.test.ts b/tests/api-resources/files/files.test.ts index 3187856d..de81ba64 100644 --- a/tests/api-resources/files/files.test.ts +++ b/tests/api-resources/files/files.test.ts @@ -164,6 +164,20 @@ describe('resource files', () => { overwriteTags: true, publicKey: 'publicKey', responseFields: ['tags', 'customCoordinates', 'isPrivateFile'], + selectedFieldsSchema: { + foo: { + type: 'Text', + defaultValue: 'string', + isValueRequired: true, + maxLength: 0, + maxValue: 'string', + minLength: 0, + minValue: 'string', + readOnly: true, + selectOptions: ['small', 'medium', 'large', 30, 40, true], + selectOptionsTruncated: true, + }, + }, signature: 'signature', tags: ['t-shirt', 'round-neck', 'men'], transformation: { From a9572097a933ab5d9c62fda02d4edf8c9fc47eeb Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 07:38:52 +0000 Subject: [PATCH 16/19] docs: correct typo in default value description for custom metadata field --- .eslintcache | 2 +- .stats.yml | 4 ++-- .../custom-metadata-fields/create-custom-metadata-fields.ts | 2 +- .../custom-metadata-fields/list-custom-metadata-fields.ts | 2 +- .../custom-metadata-fields/update-custom-metadata-fields.ts | 2 +- src/resources/custom-metadata-fields.ts | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.eslintcache b/.eslintcache index 3be71e0e..0f0afb22 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/assets/list-assets.ts":"1","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts":"2","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/get-files.ts":"3","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/upload-files.ts":"4","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/get-files-versions.ts":"5","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/list-files-versions.ts":"6","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/versions/restore-files-versions.ts":"7","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/files.ts":"8","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/files.ts":"9","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/beta/v2/files.test.ts":"10","/home/tempuser-sfd1l9/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/files.test.ts":"11"},{"size":11000,"mtime":1759217350680},{"size":15681,"mtime":1759217350680},{"size":7033,"mtime":1759217350680},{"size":16645,"mtime":1759217350680},{"size":7135,"mtime":1759217350680},{"size":7065,"mtime":1759217350680},{"size":7141,"mtime":1759217350680},{"size":19088,"mtime":1759217350680},{"size":43511,"mtime":1759217350680},{"size":2388,"mtime":1759217350680},{"size":6462,"mtime":1759217350680}] \ No newline at end of file +[{"/home/tempuser-sb8jch/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/create-custom-metadata-fields.ts":"1","/home/tempuser-sb8jch/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts":"2","/home/tempuser-sb8jch/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/update-custom-metadata-fields.ts":"3","/home/tempuser-sb8jch/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/custom-metadata-fields.ts":"4"},{"size":10544,"mtime":1759217929861},{"size":7341,"mtime":1759217929861},{"size":10154,"mtime":1759217929861},{"size":11807,"mtime":1759217929861}] \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index bceb847c..56e1384b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-7a42233daaf82345cc6d92cc49d4885126176b014c05ea0618c035869319fe53.yml -openapi_spec_hash: c41b1b6062b7c2ea548b16e0462aa358 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-aa4c8e857ae03b12dabf168c83c62f759e2706d69fa4eb77d11519d45a5dada2.yml +openapi_spec_hash: 6ea00242c4685fb6422328f0dd53f9b1 config_hash: e42d7fc3a8c92c35099cc283f9a4467a diff --git a/packages/mcp-server/src/tools/custom-metadata-fields/create-custom-metadata-fields.ts b/packages/mcp-server/src/tools/custom-metadata-fields/create-custom-metadata-fields.ts index 7cd2d2e9..a574e271 100644 --- a/packages/mcp-server/src/tools/custom-metadata-fields/create-custom-metadata-fields.ts +++ b/packages/mcp-server/src/tools/custom-metadata-fields/create-custom-metadata-fields.ts @@ -18,7 +18,7 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'create_custom_metadata_fields', 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 API creates a new custom metadata field. Once a custom metadata field is created either through this API or using the dashboard UI, its value can be set on the assets. The value of a field for an asset can be set using the media library UI or programmatically through upload or update assets API.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/custom_metadata_field',\n $defs: {\n custom_metadata_field: {\n type: 'object',\n description: 'Object containing details of a custom metadata field.',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the custom metadata field. Use this to update the field.'\n },\n label: {\n type: 'string',\n description: 'Human readable name of the custom metadata field. This name is displayed as form field label to the users while setting field value on the asset in the media library UI.\\n'\n },\n name: {\n type: 'string',\n description: 'API name of the custom metadata field. This becomes the key while setting `customMetadata` (key-value object) for an asset using upload or update API.\\n'\n },\n schema: {\n type: 'object',\n description: 'An object that describes the rules for the custom metadata field value.',\n properties: {\n type: {\n type: 'string',\n description: 'Type of the custom metadata field.',\n enum: [ 'Text',\n 'Textarea',\n 'Number',\n 'Date',\n 'Boolean',\n 'SingleSelect',\n 'MultiSelect'\n ]\n },\n defaultValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n },\n {\n type: 'array',\n title: 'Mixed',\n description: 'Default value should be of type array when custom metadata field type is set to `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n ],\n description: 'The default value for this custom metadata field. Date type of default value depends on the field type.\\n'\n },\n isValueRequired: {\n type: 'boolean',\n description: 'Specifies if the this custom metadata field is required or not.\\n'\n },\n maxLength: {\n type: 'number',\n description: 'Maximum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n maxValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Maximum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n minLength: {\n type: 'number',\n description: 'Minimum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n minValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Minimum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n selectOptions: {\n type: 'array',\n description: 'An array of allowed values when field type is `SingleSelect` or `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n },\n required: [ 'type'\n ]\n }\n },\n required: [ 'id',\n 'label',\n 'name',\n 'schema'\n ]\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 API creates a new custom metadata field. Once a custom metadata field is created either through this API or using the dashboard UI, its value can be set on the assets. The value of a field for an asset can be set using the media library UI or programmatically through upload or update assets API.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/custom_metadata_field',\n $defs: {\n custom_metadata_field: {\n type: 'object',\n description: 'Object containing details of a custom metadata field.',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the custom metadata field. Use this to update the field.'\n },\n label: {\n type: 'string',\n description: 'Human readable name of the custom metadata field. This name is displayed as form field label to the users while setting field value on the asset in the media library UI.\\n'\n },\n name: {\n type: 'string',\n description: 'API name of the custom metadata field. This becomes the key while setting `customMetadata` (key-value object) for an asset using upload or update API.\\n'\n },\n schema: {\n type: 'object',\n description: 'An object that describes the rules for the custom metadata field value.',\n properties: {\n type: {\n type: 'string',\n description: 'Type of the custom metadata field.',\n enum: [ 'Text',\n 'Textarea',\n 'Number',\n 'Date',\n 'Boolean',\n 'SingleSelect',\n 'MultiSelect'\n ]\n },\n defaultValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n },\n {\n type: 'array',\n title: 'Mixed',\n description: 'Default value should be of type array when custom metadata field type is set to `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n ],\n description: 'The default value for this custom metadata field. Data type of default value depends on the field type.\\n'\n },\n isValueRequired: {\n type: 'boolean',\n description: 'Specifies if the this custom metadata field is required or not.\\n'\n },\n maxLength: {\n type: 'number',\n description: 'Maximum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n maxValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Maximum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n minLength: {\n type: 'number',\n description: 'Minimum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n minValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Minimum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n selectOptions: {\n type: 'array',\n description: 'An array of allowed values when field type is `SingleSelect` or `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n },\n required: [ 'type'\n ]\n }\n },\n required: [ 'id',\n 'label',\n 'name',\n 'schema'\n ]\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { diff --git a/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts b/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts index 6c3d73b4..0cc5eb90 100644 --- a/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts +++ b/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts @@ -18,7 +18,7 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'list_custom_metadata_fields', 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 API returns the array of created custom metadata field objects. By default the API returns only non deleted field objects, but you can include deleted fields in the API response.\n\nYou can also filter results by a specific folder path to retrieve custom metadata fields applicable at that location. This path-specific filtering is useful when using the **Path policy** feature to determine which custom metadata fields are selected for a given path.\n\n\n# Response Schema\n```json\n{\n type: 'array',\n items: {\n $ref: '#/$defs/custom_metadata_field'\n },\n $defs: {\n custom_metadata_field: {\n type: 'object',\n description: 'Object containing details of a custom metadata field.',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the custom metadata field. Use this to update the field.'\n },\n label: {\n type: 'string',\n description: 'Human readable name of the custom metadata field. This name is displayed as form field label to the users while setting field value on the asset in the media library UI.\\n'\n },\n name: {\n type: 'string',\n description: 'API name of the custom metadata field. This becomes the key while setting `customMetadata` (key-value object) for an asset using upload or update API.\\n'\n },\n schema: {\n type: 'object',\n description: 'An object that describes the rules for the custom metadata field value.',\n properties: {\n type: {\n type: 'string',\n description: 'Type of the custom metadata field.',\n enum: [ 'Text',\n 'Textarea',\n 'Number',\n 'Date',\n 'Boolean',\n 'SingleSelect',\n 'MultiSelect'\n ]\n },\n defaultValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n },\n {\n type: 'array',\n title: 'Mixed',\n description: 'Default value should be of type array when custom metadata field type is set to `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n ],\n description: 'The default value for this custom metadata field. Date type of default value depends on the field type.\\n'\n },\n isValueRequired: {\n type: 'boolean',\n description: 'Specifies if the this custom metadata field is required or not.\\n'\n },\n maxLength: {\n type: 'number',\n description: 'Maximum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n maxValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Maximum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n minLength: {\n type: 'number',\n description: 'Minimum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n minValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Minimum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n selectOptions: {\n type: 'array',\n description: 'An array of allowed values when field type is `SingleSelect` or `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n },\n required: [ 'type'\n ]\n }\n },\n required: [ 'id',\n 'label',\n 'name',\n 'schema'\n ]\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 API returns the array of created custom metadata field objects. By default the API returns only non deleted field objects, but you can include deleted fields in the API response.\n\nYou can also filter results by a specific folder path to retrieve custom metadata fields applicable at that location. This path-specific filtering is useful when using the **Path policy** feature to determine which custom metadata fields are selected for a given path.\n\n\n# Response Schema\n```json\n{\n type: 'array',\n items: {\n $ref: '#/$defs/custom_metadata_field'\n },\n $defs: {\n custom_metadata_field: {\n type: 'object',\n description: 'Object containing details of a custom metadata field.',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the custom metadata field. Use this to update the field.'\n },\n label: {\n type: 'string',\n description: 'Human readable name of the custom metadata field. This name is displayed as form field label to the users while setting field value on the asset in the media library UI.\\n'\n },\n name: {\n type: 'string',\n description: 'API name of the custom metadata field. This becomes the key while setting `customMetadata` (key-value object) for an asset using upload or update API.\\n'\n },\n schema: {\n type: 'object',\n description: 'An object that describes the rules for the custom metadata field value.',\n properties: {\n type: {\n type: 'string',\n description: 'Type of the custom metadata field.',\n enum: [ 'Text',\n 'Textarea',\n 'Number',\n 'Date',\n 'Boolean',\n 'SingleSelect',\n 'MultiSelect'\n ]\n },\n defaultValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n },\n {\n type: 'array',\n title: 'Mixed',\n description: 'Default value should be of type array when custom metadata field type is set to `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n ],\n description: 'The default value for this custom metadata field. Data type of default value depends on the field type.\\n'\n },\n isValueRequired: {\n type: 'boolean',\n description: 'Specifies if the this custom metadata field is required or not.\\n'\n },\n maxLength: {\n type: 'number',\n description: 'Maximum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n maxValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Maximum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n minLength: {\n type: 'number',\n description: 'Minimum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n minValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Minimum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n selectOptions: {\n type: 'array',\n description: 'An array of allowed values when field type is `SingleSelect` or `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n },\n required: [ 'type'\n ]\n }\n },\n required: [ 'id',\n 'label',\n 'name',\n 'schema'\n ]\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { diff --git a/packages/mcp-server/src/tools/custom-metadata-fields/update-custom-metadata-fields.ts b/packages/mcp-server/src/tools/custom-metadata-fields/update-custom-metadata-fields.ts index 7322540f..21505db5 100644 --- a/packages/mcp-server/src/tools/custom-metadata-fields/update-custom-metadata-fields.ts +++ b/packages/mcp-server/src/tools/custom-metadata-fields/update-custom-metadata-fields.ts @@ -18,7 +18,7 @@ export const metadata: Metadata = { export const tool: Tool = { name: 'update_custom_metadata_fields', 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 API updates the label or schema of an existing custom metadata field.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/custom_metadata_field',\n $defs: {\n custom_metadata_field: {\n type: 'object',\n description: 'Object containing details of a custom metadata field.',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the custom metadata field. Use this to update the field.'\n },\n label: {\n type: 'string',\n description: 'Human readable name of the custom metadata field. This name is displayed as form field label to the users while setting field value on the asset in the media library UI.\\n'\n },\n name: {\n type: 'string',\n description: 'API name of the custom metadata field. This becomes the key while setting `customMetadata` (key-value object) for an asset using upload or update API.\\n'\n },\n schema: {\n type: 'object',\n description: 'An object that describes the rules for the custom metadata field value.',\n properties: {\n type: {\n type: 'string',\n description: 'Type of the custom metadata field.',\n enum: [ 'Text',\n 'Textarea',\n 'Number',\n 'Date',\n 'Boolean',\n 'SingleSelect',\n 'MultiSelect'\n ]\n },\n defaultValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n },\n {\n type: 'array',\n title: 'Mixed',\n description: 'Default value should be of type array when custom metadata field type is set to `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n ],\n description: 'The default value for this custom metadata field. Date type of default value depends on the field type.\\n'\n },\n isValueRequired: {\n type: 'boolean',\n description: 'Specifies if the this custom metadata field is required or not.\\n'\n },\n maxLength: {\n type: 'number',\n description: 'Maximum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n maxValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Maximum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n minLength: {\n type: 'number',\n description: 'Minimum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n minValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Minimum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n selectOptions: {\n type: 'array',\n description: 'An array of allowed values when field type is `SingleSelect` or `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n },\n required: [ 'type'\n ]\n }\n },\n required: [ 'id',\n 'label',\n 'name',\n 'schema'\n ]\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 API updates the label or schema of an existing custom metadata field.\n\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/custom_metadata_field',\n $defs: {\n custom_metadata_field: {\n type: 'object',\n description: 'Object containing details of a custom metadata field.',\n properties: {\n id: {\n type: 'string',\n description: 'Unique identifier for the custom metadata field. Use this to update the field.'\n },\n label: {\n type: 'string',\n description: 'Human readable name of the custom metadata field. This name is displayed as form field label to the users while setting field value on the asset in the media library UI.\\n'\n },\n name: {\n type: 'string',\n description: 'API name of the custom metadata field. This becomes the key while setting `customMetadata` (key-value object) for an asset using upload or update API.\\n'\n },\n schema: {\n type: 'object',\n description: 'An object that describes the rules for the custom metadata field value.',\n properties: {\n type: {\n type: 'string',\n description: 'Type of the custom metadata field.',\n enum: [ 'Text',\n 'Textarea',\n 'Number',\n 'Date',\n 'Boolean',\n 'SingleSelect',\n 'MultiSelect'\n ]\n },\n defaultValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n },\n {\n type: 'array',\n title: 'Mixed',\n description: 'Default value should be of type array when custom metadata field type is set to `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n ],\n description: 'The default value for this custom metadata field. Data type of default value depends on the field type.\\n'\n },\n isValueRequired: {\n type: 'boolean',\n description: 'Specifies if the this custom metadata field is required or not.\\n'\n },\n maxLength: {\n type: 'number',\n description: 'Maximum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n maxValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Maximum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n minLength: {\n type: 'number',\n description: 'Minimum length of string. Only set if `type` is set to `Text` or `Textarea`.\\n'\n },\n minValue: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n }\n ],\n description: 'Minimum value of the field. Only set if field type is `Date` or `Number`. For `Date` type field, the value will be in ISO8601 string format. For `Number` type field, it will be a numeric value.\\n'\n },\n selectOptions: {\n type: 'array',\n description: 'An array of allowed values when field type is `SingleSelect` or `MultiSelect`.\\n',\n items: {\n anyOf: [ {\n type: 'string'\n },\n {\n type: 'number'\n },\n {\n type: 'boolean'\n }\n ]\n }\n }\n },\n required: [ 'type'\n ]\n }\n },\n required: [ 'id',\n 'label',\n 'name',\n 'schema'\n ]\n }\n }\n}\n```", inputSchema: { type: 'object', properties: { diff --git a/src/resources/custom-metadata-fields.ts b/src/resources/custom-metadata-fields.ts index cf4193da..7629d3f9 100644 --- a/src/resources/custom-metadata-fields.ts +++ b/src/resources/custom-metadata-fields.ts @@ -131,7 +131,7 @@ export namespace CustomMetadataField { type: 'Text' | 'Textarea' | 'Number' | 'Date' | 'Boolean' | 'SingleSelect' | 'MultiSelect'; /** - * The default value for this custom metadata field. Date type of default value + * The default value for this custom metadata field. Data type of default value * depends on the field type. */ defaultValue?: string | number | boolean | Array; From ba86045ee37ea9c03cce09f8a8028e645f263bbf Mon Sep 17 00:00:00 2001 From: Manu Chaudhary Date: Tue, 30 Sep 2025 13:11:08 +0530 Subject: [PATCH 17/19] docs: fix link to deploy template in README --- packages/mcp-server/cloudflare-worker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mcp-server/cloudflare-worker/README.md b/packages/mcp-server/cloudflare-worker/README.md index fc89a91d..7542e146 100644 --- a/packages/mcp-server/cloudflare-worker/README.md +++ b/packages/mcp-server/cloudflare-worker/README.md @@ -7,7 +7,7 @@ API token and any other client configuration options that you'd need to instanti The recommended way to use this project is to use the below "deploy to cloudflare" button to use this repo as a template for generating a server. -[![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/imagekit-developer/imagekit-nodejs/tree/main/packages/mcp-server/cloudflare-worker) +[![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/imagekit-developer/imagekit-nodejs/tree/master/packages/mcp-server/cloudflare-worker) ## Develop locally From 467d77b12af3f7f0a0816bffb921b229f6c54a9b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 07:49:09 +0000 Subject: [PATCH 18/19] feat(api): fix upload API request params --- .eslintcache | 2 +- .stats.yml | 4 +- .../beta/v2/files/upload-v2-beta-files.ts | 6 - .../src/tools/files/upload-files.ts | 6 - src/resources/beta/v2/files.ts | 142 +++++++++--------- src/resources/files/files.ts | 142 +++++++++--------- src/resources/webhooks.ts | 71 +++++++++ tests/api-resources/beta/v2/files.test.ts | 14 -- tests/api-resources/files/files.test.ts | 14 -- 9 files changed, 216 insertions(+), 185 deletions(-) diff --git a/.eslintcache b/.eslintcache index 0f0afb22..7cd44928 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/home/tempuser-sb8jch/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/create-custom-metadata-fields.ts":"1","/home/tempuser-sb8jch/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/list-custom-metadata-fields.ts":"2","/home/tempuser-sb8jch/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/custom-metadata-fields/update-custom-metadata-fields.ts":"3","/home/tempuser-sb8jch/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/custom-metadata-fields.ts":"4"},{"size":10544,"mtime":1759217929861},{"size":7341,"mtime":1759217929861},{"size":10154,"mtime":1759217929861},{"size":11807,"mtime":1759217929861}] \ No newline at end of file +[{"/home/tempuser-vr9scf/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts":"1","/home/tempuser-vr9scf/run/codegen-output/imagekit-inc/imagekit-typescript/packages/mcp-server/src/tools/files/upload-files.ts":"2","/home/tempuser-vr9scf/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/beta/v2/files.ts":"3","/home/tempuser-vr9scf/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/files/files.ts":"4","/home/tempuser-vr9scf/run/codegen-output/imagekit-inc/imagekit-typescript/src/resources/webhooks.ts":"5","/home/tempuser-vr9scf/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/beta/v2/files.test.ts":"6","/home/tempuser-vr9scf/run/codegen-output/imagekit-inc/imagekit-typescript/tests/api-resources/files/files.test.ts":"7"},{"size":15178,"mtime":1759218546101},{"size":16142,"mtime":1759218546101},{"size":19090,"mtime":1759218546101},{"size":43513,"mtime":1759218546101},{"size":28582,"mtime":1759218546101},{"size":2119,"mtime":1759218546101},{"size":6193,"mtime":1759218546101}] \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 56e1384b..0c9c486c 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 42 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-aa4c8e857ae03b12dabf168c83c62f759e2706d69fa4eb77d11519d45a5dada2.yml -openapi_spec_hash: 6ea00242c4685fb6422328f0dd53f9b1 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-01aef94bd928f40b7209dc21df71e2312d4bee430119b30ee05d75cf5e1b4801.yml +openapi_spec_hash: 054c332db88b23d362f72583dd24b2aa config_hash: e42d7fc3a8c92c35099cc283f9a4467a diff --git a/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts b/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts index e17d30d2..9341d0f8 100644 --- a/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts +++ b/packages/mcp-server/src/tools/beta/v2/files/upload-v2-beta-files.ts @@ -110,12 +110,6 @@ export const tool: Tool = { ], }, }, - selectedFieldsSchema: { - type: 'object', - description: - 'This field is included in the response only if the Path policy feature is available in the plan.\nIt contains schema definitions for the custom metadata fields selected for the specified file path.\nField selection can only be done when the Path policy feature is enabled.\n\nKeys are the names of the custom metadata fields; the value object has details about the custom metadata schema.\n', - additionalProperties: true, - }, tags: { type: 'array', description: diff --git a/packages/mcp-server/src/tools/files/upload-files.ts b/packages/mcp-server/src/tools/files/upload-files.ts index 79e86ca4..3e0b52d0 100644 --- a/packages/mcp-server/src/tools/files/upload-files.ts +++ b/packages/mcp-server/src/tools/files/upload-files.ts @@ -121,12 +121,6 @@ export const tool: Tool = { ], }, }, - selectedFieldsSchema: { - type: 'object', - description: - 'This field is included in the response only if the Path policy feature is available in the plan.\nIt contains schema definitions for the custom metadata fields selected for the specified file path.\nField selection can only be done when the Path policy feature is enabled.\n\nKeys are the names of the custom metadata fields; the value object has details about the custom metadata schema.\n', - additionalProperties: true, - }, signature: { type: 'string', description: diff --git a/src/resources/beta/v2/files.ts b/src/resources/beta/v2/files.ts index 70b79a77..3cf96ba8 100644 --- a/src/resources/beta/v2/files.ts +++ b/src/resources/beta/v2/files.ts @@ -174,6 +174,17 @@ export interface FileUploadResponse { */ name?: string; + /** + * This field is included in the response only if the Path policy feature is + * available in the plan. It contains schema definitions for the custom metadata + * fields selected for the specified file path. Field selection can only be done + * when the Path policy feature is enabled. + * + * Keys are the names of the custom metadata fields; the value object has details + * about the custom metadata schema. + */ + selectedFieldsSchema?: { [key: string]: FileUploadResponse.SelectedFieldsSchema }; + /** * Size of the image file in Bytes. */ @@ -253,6 +264,66 @@ export namespace FileUploadResponse { 'remove-bg'?: 'success' | 'pending' | 'failed'; } + export interface SelectedFieldsSchema { + /** + * Type of the custom metadata field. + */ + type: 'Text' | 'Textarea' | 'Number' | 'Date' | 'Boolean' | 'SingleSelect' | 'MultiSelect'; + + /** + * The default value for this custom metadata field. The value should match the + * `type` of custom metadata field. + */ + defaultValue?: string | number | boolean | Array; + + /** + * Specifies if the custom metadata field is required or not. + */ + isValueRequired?: boolean; + + /** + * Maximum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + maxLength?: number; + + /** + * Maximum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + maxValue?: string | number; + + /** + * Minimum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + minLength?: number; + + /** + * Minimum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + minValue?: string | number; + + /** + * Indicates whether the custom metadata field is read only. A read only field + * cannot be modified after being set. This field is configurable only via the + * **Path policy** feature. + */ + readOnly?: boolean; + + /** + * An array of allowed values when field type is `SingleSelect` or `MultiSelect`. + */ + selectOptions?: Array; + + /** + * Specifies if the selectOptions array is truncated. It is truncated when number + * of options are > 100. + */ + selectOptionsTruncated?: boolean; + } + /** * An object containing the file or file version's `id` (versionId) and `name`. */ @@ -406,17 +477,6 @@ export interface FileUploadParams { | 'selectedFieldsSchema' >; - /** - * This field is included in the response only if the Path policy feature is - * available in the plan. It contains schema definitions for the custom metadata - * fields selected for the specified file path. Field selection can only be done - * when the Path policy feature is enabled. - * - * Keys are the names of the custom metadata fields; the value object has details - * about the custom metadata schema. - */ - selectedFieldsSchema?: { [key: string]: FileUploadParams.SelectedFieldsSchema }; - /** * Set the tags while uploading the file. Provide an array of tag strings (e.g. * `["tag1", "tag2", "tag3"]`). The combined length of all tag characters must not @@ -461,66 +521,6 @@ export interface FileUploadParams { } export namespace FileUploadParams { - export interface SelectedFieldsSchema { - /** - * Type of the custom metadata field. - */ - type: 'Text' | 'Textarea' | 'Number' | 'Date' | 'Boolean' | 'SingleSelect' | 'MultiSelect'; - - /** - * The default value for this custom metadata field. The value should match the - * `type` of custom metadata field. - */ - defaultValue?: string | number | boolean | Array; - - /** - * Specifies if the custom metadata field is required or not. - */ - isValueRequired?: boolean; - - /** - * Maximum length of string. Only set if `type` is set to `Text` or `Textarea`. - */ - maxLength?: number; - - /** - * Maximum value of the field. Only set if field type is `Date` or `Number`. For - * `Date` type field, the value will be in ISO8601 string format. For `Number` type - * field, it will be a numeric value. - */ - maxValue?: string | number; - - /** - * Minimum length of string. Only set if `type` is set to `Text` or `Textarea`. - */ - minLength?: number; - - /** - * Minimum value of the field. Only set if field type is `Date` or `Number`. For - * `Date` type field, the value will be in ISO8601 string format. For `Number` type - * field, it will be a numeric value. - */ - minValue?: string | number; - - /** - * Indicates whether the custom metadata field is read only. A read only field - * cannot be modified after being set. This field is configurable only via the - * **Path policy** feature. - */ - readOnly?: boolean; - - /** - * An array of allowed values when field type is `SingleSelect` or `MultiSelect`. - */ - selectOptions?: Array; - - /** - * Specifies if the selectOptions array is truncated. It is truncated when number - * of options are > 100. - */ - selectOptionsTruncated?: boolean; - } - /** * Configure pre-processing (`pre`) and post-processing (`post`) transformations. * diff --git a/src/resources/files/files.ts b/src/resources/files/files.ts index 1b83105b..cbbd6ac7 100644 --- a/src/resources/files/files.ts +++ b/src/resources/files/files.ts @@ -909,6 +909,17 @@ export interface FileUploadResponse { */ name?: string; + /** + * This field is included in the response only if the Path policy feature is + * available in the plan. It contains schema definitions for the custom metadata + * fields selected for the specified file path. Field selection can only be done + * when the Path policy feature is enabled. + * + * Keys are the names of the custom metadata fields; the value object has details + * about the custom metadata schema. + */ + selectedFieldsSchema?: { [key: string]: FileUploadResponse.SelectedFieldsSchema }; + /** * Size of the image file in Bytes. */ @@ -988,6 +999,66 @@ export namespace FileUploadResponse { 'remove-bg'?: 'success' | 'pending' | 'failed'; } + export interface SelectedFieldsSchema { + /** + * Type of the custom metadata field. + */ + type: 'Text' | 'Textarea' | 'Number' | 'Date' | 'Boolean' | 'SingleSelect' | 'MultiSelect'; + + /** + * The default value for this custom metadata field. The value should match the + * `type` of custom metadata field. + */ + defaultValue?: string | number | boolean | Array; + + /** + * Specifies if the custom metadata field is required or not. + */ + isValueRequired?: boolean; + + /** + * Maximum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + maxLength?: number; + + /** + * Maximum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + maxValue?: string | number; + + /** + * Minimum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + minLength?: number; + + /** + * Minimum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + minValue?: string | number; + + /** + * Indicates whether the custom metadata field is read only. A read only field + * cannot be modified after being set. This field is configurable only via the + * **Path policy** feature. + */ + readOnly?: boolean; + + /** + * An array of allowed values when field type is `SingleSelect` or `MultiSelect`. + */ + selectOptions?: Array; + + /** + * Specifies if the selectOptions array is truncated. It is truncated when number + * of options are > 100. + */ + selectOptionsTruncated?: boolean; + } + /** * An object containing the file or file version's `id` (versionId) and `name`. */ @@ -1310,17 +1381,6 @@ export interface FileUploadParams { | 'selectedFieldsSchema' >; - /** - * This field is included in the response only if the Path policy feature is - * available in the plan. It contains schema definitions for the custom metadata - * fields selected for the specified file path. Field selection can only be done - * when the Path policy feature is enabled. - * - * Keys are the names of the custom metadata fields; the value object has details - * about the custom metadata schema. - */ - selectedFieldsSchema?: { [key: string]: FileUploadParams.SelectedFieldsSchema }; - /** * HMAC-SHA1 digest of the token+expire using your ImageKit.io private API key as a * key. Learn how to create a signature on the page below. This should be in @@ -1375,66 +1435,6 @@ export interface FileUploadParams { } export namespace FileUploadParams { - export interface SelectedFieldsSchema { - /** - * Type of the custom metadata field. - */ - type: 'Text' | 'Textarea' | 'Number' | 'Date' | 'Boolean' | 'SingleSelect' | 'MultiSelect'; - - /** - * The default value for this custom metadata field. The value should match the - * `type` of custom metadata field. - */ - defaultValue?: string | number | boolean | Array; - - /** - * Specifies if the custom metadata field is required or not. - */ - isValueRequired?: boolean; - - /** - * Maximum length of string. Only set if `type` is set to `Text` or `Textarea`. - */ - maxLength?: number; - - /** - * Maximum value of the field. Only set if field type is `Date` or `Number`. For - * `Date` type field, the value will be in ISO8601 string format. For `Number` type - * field, it will be a numeric value. - */ - maxValue?: string | number; - - /** - * Minimum length of string. Only set if `type` is set to `Text` or `Textarea`. - */ - minLength?: number; - - /** - * Minimum value of the field. Only set if field type is `Date` or `Number`. For - * `Date` type field, the value will be in ISO8601 string format. For `Number` type - * field, it will be a numeric value. - */ - minValue?: string | number; - - /** - * Indicates whether the custom metadata field is read only. A read only field - * cannot be modified after being set. This field is configurable only via the - * **Path policy** feature. - */ - readOnly?: boolean; - - /** - * An array of allowed values when field type is `SingleSelect` or `MultiSelect`. - */ - selectOptions?: Array; - - /** - * Specifies if the selectOptions array is truncated. It is truncated when number - * of options are > 100. - */ - selectOptionsTruncated?: boolean; - } - /** * Configure pre-processing (`pre`) and post-processing (`post`) transformations. * diff --git a/src/resources/webhooks.ts b/src/resources/webhooks.ts index a95d7454..7a059ecd 100644 --- a/src/resources/webhooks.ts +++ b/src/resources/webhooks.ts @@ -383,6 +383,17 @@ export namespace UploadPreTransformSuccessEvent { */ name?: string; + /** + * This field is included in the response only if the Path policy feature is + * available in the plan. It contains schema definitions for the custom metadata + * fields selected for the specified file path. Field selection can only be done + * when the Path policy feature is enabled. + * + * Keys are the names of the custom metadata fields; the value object has details + * about the custom metadata schema. + */ + selectedFieldsSchema?: { [key: string]: Data.SelectedFieldsSchema }; + /** * Size of the image file in Bytes. */ @@ -462,6 +473,66 @@ export namespace UploadPreTransformSuccessEvent { 'remove-bg'?: 'success' | 'pending' | 'failed'; } + export interface SelectedFieldsSchema { + /** + * Type of the custom metadata field. + */ + type: 'Text' | 'Textarea' | 'Number' | 'Date' | 'Boolean' | 'SingleSelect' | 'MultiSelect'; + + /** + * The default value for this custom metadata field. The value should match the + * `type` of custom metadata field. + */ + defaultValue?: string | number | boolean | Array; + + /** + * Specifies if the custom metadata field is required or not. + */ + isValueRequired?: boolean; + + /** + * Maximum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + maxLength?: number; + + /** + * Maximum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + maxValue?: string | number; + + /** + * Minimum length of string. Only set if `type` is set to `Text` or `Textarea`. + */ + minLength?: number; + + /** + * Minimum value of the field. Only set if field type is `Date` or `Number`. For + * `Date` type field, the value will be in ISO8601 string format. For `Number` type + * field, it will be a numeric value. + */ + minValue?: string | number; + + /** + * Indicates whether the custom metadata field is read only. A read only field + * cannot be modified after being set. This field is configurable only via the + * **Path policy** feature. + */ + readOnly?: boolean; + + /** + * An array of allowed values when field type is `SingleSelect` or `MultiSelect`. + */ + selectOptions?: Array; + + /** + * Specifies if the selectOptions array is truncated. It is truncated when number + * of options are > 100. + */ + selectOptionsTruncated?: boolean; + } + /** * An object containing the file or file version's `id` (versionId) and `name`. */ diff --git a/tests/api-resources/beta/v2/files.test.ts b/tests/api-resources/beta/v2/files.test.ts index fd8a6ed0..0faf8d31 100644 --- a/tests/api-resources/beta/v2/files.test.ts +++ b/tests/api-resources/beta/v2/files.test.ts @@ -55,20 +55,6 @@ describe('resource files', () => { overwriteFile: true, overwriteTags: true, responseFields: ['tags', 'customCoordinates', 'isPrivateFile'], - selectedFieldsSchema: { - foo: { - type: 'Text', - defaultValue: 'string', - isValueRequired: true, - maxLength: 0, - maxValue: 'string', - minLength: 0, - minValue: 'string', - readOnly: true, - selectOptions: ['small', 'medium', 'large', 30, 40, true], - selectOptionsTruncated: true, - }, - }, tags: ['t-shirt', 'round-neck', 'men'], transformation: { post: [ diff --git a/tests/api-resources/files/files.test.ts b/tests/api-resources/files/files.test.ts index de81ba64..3187856d 100644 --- a/tests/api-resources/files/files.test.ts +++ b/tests/api-resources/files/files.test.ts @@ -164,20 +164,6 @@ describe('resource files', () => { overwriteTags: true, publicKey: 'publicKey', responseFields: ['tags', 'customCoordinates', 'isPrivateFile'], - selectedFieldsSchema: { - foo: { - type: 'Text', - defaultValue: 'string', - isValueRequired: true, - maxLength: 0, - maxValue: 'string', - minLength: 0, - minValue: 'string', - readOnly: true, - selectOptions: ['small', 'medium', 'large', 30, 40, true], - selectOptionsTruncated: true, - }, - }, signature: 'signature', tags: ['t-shirt', 'round-neck', 'men'], transformation: { From 3dd5d374a1f1e2ca6baad5bd8a04f5d5ec8d265b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 07:49:29 +0000 Subject: [PATCH 19/19] release: 7.1.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 40 +++++++++++++++++++++++++++++++ package.json | 2 +- packages/mcp-server/package.json | 2 +- packages/mcp-server/src/server.ts | 2 +- src/version.ts | 2 +- 6 files changed, 45 insertions(+), 5 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 9995fe5e..58ef57e0 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "7.0.1" + ".": "7.1.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 143bae8e..ac5be15f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,45 @@ # Changelog +## 7.1.0 (2025-09-30) + +Full Changelog: [v7.0.1...v7.1.0](https://github.com/imagekit-developer/imagekit-nodejs/compare/v7.0.1...v7.1.0) + +### Features + +* **api:** add path policy related non-breaking changes ([d50cbcf](https://github.com/imagekit-developer/imagekit-nodejs/commit/d50cbcf4cd2535e25310c635539a2ecf2f2e8201)) +* **api:** add selectedFieldsSchema in upload and list API response ([ec8c8b8](https://github.com/imagekit-developer/imagekit-nodejs/commit/ec8c8b846e6288e6c13d4bbe4e65ca13d4059fa2)) +* **api:** fix upload API request params ([467d77b](https://github.com/imagekit-developer/imagekit-nodejs/commit/467d77b12af3f7f0a0816bffb921b229f6c54a9b)) +* **api:** updated docs ([962390f](https://github.com/imagekit-developer/imagekit-nodejs/commit/962390f02b179b6a34f9697c27bc67ed99ba9b99)) +* **mcp:** add option for including docs tools ([e1a3b52](https://github.com/imagekit-developer/imagekit-nodejs/commit/e1a3b52f5691f398669cd682c57d5a6dc4e5895a)) + + +### Bug Fixes + +* **mcp:** fix cli argument parsing logic ([a8da550](https://github.com/imagekit-developer/imagekit-nodejs/commit/a8da5506c7a39462b7b02bbfec1e4e7a6fbdfdaf)) +* **mcp:** resolve a linting issue in server code ([e805d24](https://github.com/imagekit-developer/imagekit-nodejs/commit/e805d24f1d721e1694b927c3c41c5b21a4433fb0)) + + +### Performance Improvements + +* faster formatting ([7e8cfad](https://github.com/imagekit-developer/imagekit-nodejs/commit/7e8cfadd5473e55e83c6659c4033f9b852d3f91c)) + + +### Chores + +* **internal:** codegen related update ([ca24cab](https://github.com/imagekit-developer/imagekit-nodejs/commit/ca24cab20bc7d4450623d67b0ebcb4e2a0ef7633)) +* **internal:** codegen related update ([2acb106](https://github.com/imagekit-developer/imagekit-nodejs/commit/2acb106595f0642dcdb81bcd9a041a1bf059d307)) +* **internal:** fix incremental formatting in some cases ([863e6b7](https://github.com/imagekit-developer/imagekit-nodejs/commit/863e6b7b6cff10c81fc07524b038972db2ce76b6)) +* **internal:** ignore .eslintcache ([f991673](https://github.com/imagekit-developer/imagekit-nodejs/commit/f99167394b66562e972b54730a4cf65aed8e33fd)) +* **internal:** remove deprecated `compilerOptions.baseUrl` from tsconfig.json ([9e0e5b0](https://github.com/imagekit-developer/imagekit-nodejs/commit/9e0e5b0c46930798e8d06f553fd91a57d9692d2b)) +* **mcp:** allow pointing `docs_search` tool at other URLs ([bbe84b3](https://github.com/imagekit-developer/imagekit-nodejs/commit/bbe84b3a9a5b30fc11c7b074cea447632740f512)) +* update lockfile ([dcdc0b7](https://github.com/imagekit-developer/imagekit-nodejs/commit/dcdc0b74f7d809165bc0e3bce1656626d5dd1240)) + + +### Documentation + +* correct typo in default value description for custom metadata field ([a957209](https://github.com/imagekit-developer/imagekit-nodejs/commit/a9572097a933ab5d9c62fda02d4edf8c9fc47eeb)) +* fix link to deploy template in README ([ba86045](https://github.com/imagekit-developer/imagekit-nodejs/commit/ba86045ee37ea9c03cce09f8a8028e645f263bbf)) + ## 7.0.1 (2025-09-21) Full Changelog: [v7.0.0...v7.0.1](https://github.com/imagekit-developer/imagekit-nodejs/compare/v7.0.0...v7.0.1) diff --git a/package.json b/package.json index b638d05d..60960a2b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@imagekit/nodejs", - "version": "7.0.1", + "version": "7.1.0", "description": "Offical NodeJS SDK for ImageKit.io integration", "author": "Image Kit ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index a5b18f9e..9b3d9a20 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "imagekit-api-mcp", - "version": "7.0.1", + "version": "7.1.0", "description": "The official MCP Server for the Image Kit API", "author": "Image Kit ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index d9f2770e..bececd73 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: 'imagekit_nodejs_api', - version: '7.0.1', + version: '7.1.0', }, { capabilities: { tools: {}, logging: {} } }, ); diff --git a/src/version.ts b/src/version.ts index 1ed227e2..f0fcf748 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '7.0.1'; // x-release-please-version +export const VERSION = '7.1.0'; // x-release-please-version