feat: add basic mcp test fixture

pull/715/head
Travis Fischer 2025-06-06 03:11:21 +07:00
rodzic b18b4a0975
commit 65862f5bad
10 zmienionych plików z 423 dodań i 31 usunięć

Wyświetl plik

@ -7,7 +7,7 @@ import {
sentry
} from '@agentic/platform-hono'
import { Client as McpClient } from '@modelcontextprotocol/sdk/client/index.js'
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
import { Hono } from 'hono'
import type { GatewayHonoEnv } from './lib/types'
@ -68,6 +68,7 @@ app.all(async (ctx) => {
resolvedOriginRequest.originRequest
)
// TODO: transform origin 5XX errors to 502 errors...
originResponse = await fetchCache(ctx, {
cacheKey,
fetchResponse: () => fetch(resolvedOriginRequest.originRequest!)
@ -82,7 +83,7 @@ app.all(async (ctx) => {
'Tool args are required for MCP origin requests'
)
const transport = new SSEClientTransport(
const transport = new StreamableHTTPClientTransport(
new URL(resolvedOriginRequest.deployment.originUrl)
)
const client = new McpClient({

Wyświetl plik

@ -1,21 +1,20 @@
// import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
// import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'
// import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
import type { GatewayHonoContext, ResolvedOriginRequest } from './lib/types'
// TODO: https://github.com/modelcontextprotocol/servers/blob/8fb7bbdab73eddb42aba72e8eab81102efe1d544/src/everything/sse.ts
// TODO: https://github.com/cloudflare/agents
// const transports: Map<string, SSEServerTransport> = new Map<
// const transports: Map<string, StreamableHTTPClientTransport> = new Map<
// string,
// SSEServerTransport
// StreamableHTTPClientTransport
// >()
export async function handleMCPRequest(
_ctx: GatewayHonoContext,
_resolvedOriginRequest: ResolvedOriginRequest
) {
// const serverTransport = new SSEServerTransport()
// const server = new McpServer({
// name: 'weather',
// version: '1.0.0',

Wyświetl plik

@ -0,0 +1,9 @@
import { defineConfig } from '@agentic/platform'
export default defineConfig({
name: 'test-basic-mcp',
originUrl: 'http://localhost:8080',
originAdapter: {
type: 'mcp'
}
})

Wyświetl plik

@ -0,0 +1,22 @@
{
"name": "@agentic/platform-fixtures-basic-mcp",
"private": true,
"author": "Travis Fischer <travis@transitivebullsh.it>",
"license": "UNLICENSED",
"repository": {
"type": "git",
"url": "git+https://github.com/transitive-bullshit/agentic-platform.git",
"directory": "packages/fixtures/valid/basic-mcp"
},
"type": "module",
"scripts": {
"test": "run-s test:*",
"test:lint": "eslint .",
"test:typecheck": "tsc --noEmit"
},
"dependencies": {
"@modelcontextprotocol/sdk": "catalog:",
"fastmcp": "^2.2.2",
"zod": "catalog:"
}
}

Wyświetl plik

@ -0,0 +1,12 @@
import 'dotenv/config'
import { z } from 'zod'
export const envSchema = z.object({
PORT: z.number().default(8080)
})
export type Env = z.infer<typeof envSchema>
// eslint-disable-next-line no-process-env
export const env = envSchema.parse(process.env)

Wyświetl plik

@ -0,0 +1,30 @@
import 'dotenv/config'
import { FastMCP } from 'fastmcp'
import { z } from 'zod'
import { env } from './env'
const server = new FastMCP({
name: 'Agentic basic test MCP server',
version: '0.0.1'
})
server.addTool({
name: 'add',
description: 'Add two numbers',
parameters: z.object({
a: z.number(),
b: z.number()
}),
execute: async (args) => {
return String(args.a + args.b)
}
})
await server.start({
transportType: 'httpStream',
httpStream: {
port: env.PORT
}
})

Wyświetl plik

@ -0,0 +1,5 @@
{
"extends": "@fisch0920/config/tsconfig-node",
"include": ["*.config.ts", "src"],
"exclude": ["node_modules"]
}

Wyświetl plik

@ -5,7 +5,7 @@ import type {
} from '@agentic/platform-types'
import { assert } from '@agentic/platform-core'
import { Client as McpClient } from '@modelcontextprotocol/sdk/client/index.js'
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
export async function resolveMCPOriginAdapter({
name,
@ -28,7 +28,7 @@ export async function resolveMCPOriginAdapter({
400,
`Invalid origin adapter type "${originAdapter.type}" for ${label}`
)
const transport = new SSEClientTransport(new URL(originUrl))
const transport = new StreamableHTTPClientTransport(new URL(originUrl))
const client = new McpClient({ name, version })
await client.connect(transport)

Wyświetl plik

@ -592,6 +592,18 @@ importers:
specifier: 'catalog:'
version: 3.25.51
packages/fixtures/valid/basic-mcp:
dependencies:
'@modelcontextprotocol/sdk':
specifier: 'catalog:'
version: 1.12.1
fastmcp:
specifier: ^2.2.2
version: 2.2.2
zod:
specifier: 'catalog:'
version: 3.25.51
packages/hono:
dependencies:
'@agentic/platform-core':
@ -2347,6 +2359,9 @@ packages:
'@rtsao/scc@1.1.0':
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
'@selderee/plugin-htmlparser2@0.11.0':
resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==}
@ -2394,9 +2409,16 @@ packages:
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
engines: {node: '>=18'}
'@sindresorhus/merge-streams@4.0.0':
resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
engines: {node: '>=18'}
'@socket.io/component-emitter@3.1.2':
resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
'@standard-schema/spec@1.0.0':
resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
'@standard-schema/spec@1.0.0-beta.3':
resolution: {integrity: sha512-0ifF3BjA1E8SY9C+nUew8RefNOIq0cDlYALPty4rhUm8Rrl6tCM8hBT4bhGhx7I7iXD0uAgt50lgo8dD73ACMw==}
@ -2406,6 +2428,13 @@ packages:
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
'@tokenizer/inflate@0.2.7':
resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==}
engines: {node: '>=18'}
'@tokenizer/token@0.3.0':
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
'@total-typescript/ts-reset@0.6.1':
resolution: {integrity: sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==}
@ -2847,6 +2876,10 @@ packages:
client-only@0.0.1:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
@ -3428,6 +3461,14 @@ packages:
resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==}
engines: {node: '>=18.0.0'}
eventsource@4.0.0:
resolution: {integrity: sha512-fvIkb9qZzdMxgZrEQDyll+9oJsyaVvY92I2Re+qK0qEJ+w5s0X3dtz+M0VAPOjP1gtU3iqWyjQ0G3nvd5CLZ2g==}
engines: {node: '>=20.0.0'}
execa@9.6.0:
resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==}
engines: {node: ^18.19.0 || >=20.5.0}
exit-hook@2.2.1:
resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
engines: {node: '>=6'}
@ -3475,6 +3516,10 @@ packages:
fast-uri@3.0.6:
resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
fastmcp@2.2.2:
resolution: {integrity: sha512-V6qEfOnABo7lDrwHqZQhCYd52KXzK85/ipllmUyaos8WLAjygP9NuuKcm1kiEWa0jjsFxe2kf/Y+T4PRE+0rEw==}
hasBin: true
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
@ -3489,10 +3534,21 @@ packages:
picomatch:
optional: true
fflate@0.8.2:
resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
figures@6.1.0:
resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
engines: {node: '>=18'}
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
file-type@20.5.0:
resolution: {integrity: sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg==}
engines: {node: '>=18'}
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
@ -3558,6 +3614,14 @@ packages:
functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
fuse.js@7.1.0:
resolution: {integrity: sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==}
engines: {node: '>=10'}
get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
get-east-asian-width@1.3.0:
resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==}
engines: {node: '>=18'}
@ -3577,6 +3641,10 @@ packages:
get-source@2.0.12:
resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
get-stream@9.0.1:
resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
engines: {node: '>=18'}
get-symbol-description@1.1.0:
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
engines: {node: '>= 0.4'}
@ -3688,10 +3756,17 @@ packages:
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
engines: {node: '>= 14'}
human-signals@8.0.1:
resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==}
engines: {node: '>=18.18.0'}
iconv-lite@0.6.3:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@ -3858,6 +3933,10 @@ packages:
resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
engines: {node: '>= 0.4'}
is-stream@4.0.1:
resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
engines: {node: '>=18'}
is-string@1.1.1:
resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
engines: {node: '>= 0.4'}
@ -4090,6 +4169,10 @@ packages:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
mcp-proxy@3.3.0:
resolution: {integrity: sha512-xyFKQEZ64HC7lxScBHjb5fxiPoyJjjkPhwH5hWUT0oL/ttCpMGZDJrYZRGFKVJiLLkrZPAkHnMGkI+WMlyD/cg==}
hasBin: true
md-to-react-email@5.0.5:
resolution: {integrity: sha512-OvAXqwq57uOk+WZqFFNCMZz8yDp8BD3WazW1wAKHUrPbbdr89K9DWS6JXY09vd9xNdPNeurI8DU/X4flcfaD8A==}
peerDependencies:
@ -4252,6 +4335,10 @@ packages:
engines: {node: ^20.5.0 || >=22.0.0, npm: '>= 10'}
hasBin: true
npm-run-path@6.0.0:
resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
engines: {node: '>=18'}
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@ -4365,6 +4452,10 @@ packages:
resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==}
engines: {node: '>=18'}
parse-ms@4.0.0:
resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
engines: {node: '>=18'}
parseley@0.12.1:
resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==}
@ -4380,6 +4471,10 @@ packages:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
path-key@4.0.0:
resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
engines: {node: '>=12'}
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
@ -4412,6 +4507,10 @@ packages:
peberminta@0.9.0:
resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==}
peek-readable@7.0.0:
resolution: {integrity: sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==}
engines: {node: '>=18'}
pg-int8@1.0.1:
resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
engines: {node: '>=4.0.0'}
@ -4517,6 +4616,10 @@ packages:
engines: {node: '>=14'}
hasBin: true
pretty-ms@9.2.0:
resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==}
engines: {node: '>=18'}
printable-characters@1.0.42:
resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
@ -4608,6 +4711,10 @@ packages:
resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==}
hasBin: true
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
@ -4869,6 +4976,9 @@ packages:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
strict-event-emitter-types@2.0.0:
resolution: {integrity: sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA==}
string-argv@0.3.2:
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
engines: {node: '>=0.6.19'}
@ -4920,6 +5030,10 @@ packages:
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
engines: {node: '>=4'}
strip-final-newline@4.0.0:
resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
engines: {node: '>=18'}
strip-indent@4.0.0:
resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==}
engines: {node: '>=12'}
@ -4941,6 +5055,10 @@ packages:
'@types/node':
optional: true
strtok3@10.2.2:
resolution: {integrity: sha512-Xt18+h4s7Z8xyZ0tmBoRmzxcop97R4BAh+dXouUDCYn+Em+1P3qpkUfI5ueWLT8ynC5hZ+q4iPEmGG1urvQGBg==}
engines: {node: '>=18'}
stubborn-fs@1.2.5:
resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==}
@ -5019,6 +5137,10 @@ packages:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
token-types@6.0.0:
resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==}
engines: {node: '>=14.16'}
toucan-js@4.1.1:
resolution: {integrity: sha512-GTPwEaCRN8IbYe5/VeGiwxYvMO0dKaC16fTeLbF+QGswjkLZ9JUqAfDhLMyH2SWukYhmetH+uxWa1Bhluv/evQ==}
@ -5173,6 +5295,10 @@ packages:
resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==}
engines: {node: '>=14.0'}
undici@7.10.0:
resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==}
engines: {node: '>=20.18.1'}
unenv@2.0.0-rc.17:
resolution: {integrity: sha512-B06u0wXkEd+o5gOCMl/ZHl5cfpYbDZKAT+HWTL+Hws6jWu7dCiqBBXXXzMFcFVJb8D4ytAnYmxJA83uwOQRSsg==}
@ -5206,6 +5332,9 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
uri-templates@0.2.0:
resolution: {integrity: sha512-EWkjYEN0L6KOfEoOH6Wj4ghQqU7eBZMJqRHQnxQAq+dSEzRPClkWjf8557HkWQXF6BrAUoLSAyy9i3RVTliaNg==}
uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
@ -5404,10 +5533,37 @@ packages:
utf-8-validate:
optional: true
xsschema@0.3.0-beta.1:
resolution: {integrity: sha512-Z7ZlPKLTc8iUKVfic0Lr66NB777wJqZl3JVLIy1vaNxx6NNTuylYm4wbK78Sgg7kHwaPRqFnuT4IliQM1sDxvg==}
peerDependencies:
'@valibot/to-json-schema': ^1.0.0
arktype: ^2.1.16
effect: ^3.14.5
sury: ^10.0.0-rc
zod: ^3.25.0
zod-to-json-schema: ^3.24.5
peerDependenciesMeta:
'@valibot/to-json-schema':
optional: true
arktype:
optional: true
effect:
optional: true
sury:
optional: true
zod:
optional: true
zod-to-json-schema:
optional: true
xtend@4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
engines: {node: '>=0.4'}
y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
yaml-ast-parser@0.0.43:
resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==}
@ -5420,6 +5576,10 @@ packages:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
yargs@17.7.2:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
@ -6803,6 +6963,8 @@ snapshots:
'@rtsao/scc@1.1.0': {}
'@sec-ant/readable-stream@0.4.1': {}
'@selderee/plugin-htmlparser2@0.11.0':
dependencies:
domhandler: 5.0.3
@ -6878,8 +7040,12 @@ snapshots:
'@sindresorhus/merge-streams@2.3.0': {}
'@sindresorhus/merge-streams@4.0.0': {}
'@socket.io/component-emitter@3.1.2': {}
'@standard-schema/spec@1.0.0': {}
'@standard-schema/spec@1.0.0-beta.3': {}
'@swc/counter@0.1.3': {}
@ -6888,6 +7054,16 @@ snapshots:
dependencies:
tslib: 2.8.1
'@tokenizer/inflate@0.2.7':
dependencies:
debug: 4.4.1(supports-color@10.0.0)
fflate: 0.8.2
token-types: 6.0.0
transitivePeerDependencies:
- supports-color
'@tokenizer/token@0.3.0': {}
'@total-typescript/ts-reset@0.6.1': {}
'@tybys/wasm-util@0.9.0':
@ -7375,6 +7551,12 @@ snapshots:
client-only@0.0.1: {}
cliui@8.0.1:
dependencies:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
@ -8029,6 +8211,25 @@ snapshots:
dependencies:
eventsource-parser: 3.0.2
eventsource@4.0.0:
dependencies:
eventsource-parser: 3.0.2
execa@9.6.0:
dependencies:
'@sindresorhus/merge-streams': 4.0.0
cross-spawn: 7.0.6
figures: 6.1.0
get-stream: 9.0.1
human-signals: 8.0.1
is-plain-obj: 4.1.0
is-stream: 4.0.1
npm-run-path: 6.0.0
pretty-ms: 9.2.0
signal-exit: 4.1.0
strip-final-newline: 4.0.0
yoctocolors: 2.1.1
exit-hook@2.2.1: {}
exit-hook@4.0.0: {}
@ -8093,6 +8294,28 @@ snapshots:
fast-uri@3.0.6: {}
fastmcp@2.2.2:
dependencies:
'@modelcontextprotocol/sdk': 1.12.1
'@standard-schema/spec': 1.0.0
execa: 9.6.0
file-type: 20.5.0
fuse.js: 7.1.0
mcp-proxy: 3.3.0
strict-event-emitter-types: 2.0.0
undici: 7.10.0
uri-templates: 0.2.0
xsschema: 0.3.0-beta.1(zod-to-json-schema@3.24.5(zod@3.25.51))(zod@3.25.51)
yargs: 17.7.2
zod: 3.25.51
zod-to-json-schema: 3.24.5(zod@3.25.51)
transitivePeerDependencies:
- '@valibot/to-json-schema'
- arktype
- effect
- supports-color
- sury
fastq@1.19.1:
dependencies:
reusify: 1.1.0
@ -8105,10 +8328,25 @@ snapshots:
optionalDependencies:
picomatch: 4.0.2
fflate@0.8.2: {}
figures@6.1.0:
dependencies:
is-unicode-supported: 2.1.0
file-entry-cache@8.0.0:
dependencies:
flat-cache: 4.0.1
file-type@20.5.0:
dependencies:
'@tokenizer/inflate': 0.2.7
strtok3: 10.2.2
token-types: 6.0.0
uint8array-extras: 1.4.0
transitivePeerDependencies:
- supports-color
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
@ -8179,6 +8417,10 @@ snapshots:
functions-have-names@1.2.3: {}
fuse.js@7.1.0: {}
get-caller-file@2.0.5: {}
get-east-asian-width@1.3.0: {}
get-intrinsic@1.3.0:
@ -8206,6 +8448,11 @@ snapshots:
data-uri-to-buffer: 2.0.2
source-map: 0.6.1
get-stream@9.0.1:
dependencies:
'@sec-ant/readable-stream': 0.4.1
is-stream: 4.0.1
get-symbol-description@1.1.0:
dependencies:
call-bound: 1.0.4
@ -8335,10 +8582,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
human-signals@8.0.1: {}
iconv-lite@0.6.3:
dependencies:
safer-buffer: 2.1.2
ieee754@1.2.1: {}
ignore@5.3.2: {}
ignore@7.0.4: {}
@ -8484,6 +8735,8 @@ snapshots:
dependencies:
call-bound: 1.0.4
is-stream@4.0.1: {}
is-string@1.1.1:
dependencies:
call-bound: 1.0.4
@ -8706,6 +8959,14 @@ snapshots:
math-intrinsics@1.1.0: {}
mcp-proxy@3.3.0:
dependencies:
'@modelcontextprotocol/sdk': 1.12.1
eventsource: 4.0.0
yargs: 17.7.2
transitivePeerDependencies:
- supports-color
md-to-react-email@5.0.5(react@19.1.0):
dependencies:
marked: 7.0.4
@ -8860,6 +9121,11 @@ snapshots:
shell-quote: 1.8.2
which: 5.0.0
npm-run-path@6.0.0:
dependencies:
path-key: 4.0.0
unicorn-magic: 0.3.0
object-assign@4.1.1: {}
object-inspect@1.13.4: {}
@ -9026,6 +9292,8 @@ snapshots:
index-to-position: 1.1.0
type-fest: 4.41.0
parse-ms@4.0.0: {}
parseley@0.12.1:
dependencies:
leac: 0.6.0
@ -9037,6 +9305,8 @@ snapshots:
path-key@3.1.1: {}
path-key@4.0.0: {}
path-parse@1.0.7: {}
path-scurry@1.11.1:
@ -9061,6 +9331,8 @@ snapshots:
peberminta@0.9.0: {}
peek-readable@7.0.0: {}
pg-int8@1.0.1: {}
pg-protocol@1.10.0: {}
@ -9136,6 +9408,10 @@ snapshots:
prettier@3.5.3: {}
pretty-ms@9.2.0:
dependencies:
parse-ms: 4.0.0
printable-characters@1.0.42: {}
prismjs@1.30.0: {}
@ -9261,6 +9537,8 @@ snapshots:
dependencies:
jsesc: 3.0.2
require-directory@2.1.1: {}
require-from-string@2.0.2: {}
require-in-the-middle@7.5.2:
@ -9632,6 +9910,8 @@ snapshots:
streamsearch@1.1.0: {}
strict-event-emitter-types@2.0.0: {}
string-argv@0.3.2: {}
string-width@4.2.3:
@ -9712,6 +9992,8 @@ snapshots:
strip-bom@3.0.0: {}
strip-final-newline@4.0.0: {}
strip-indent@4.0.0:
dependencies:
min-indent: 1.0.1
@ -9726,6 +10008,11 @@ snapshots:
optionalDependencies:
'@types/node': 22.15.29
strtok3@10.2.2:
dependencies:
'@tokenizer/token': 0.3.0
peek-readable: 7.0.0
stubborn-fs@1.2.5: {}
styled-jsx@5.1.6(react@19.1.0):
@ -9787,6 +10074,11 @@ snapshots:
toidentifier@1.0.1: {}
token-types@6.0.0:
dependencies:
'@tokenizer/token': 0.3.0
ieee754: 1.2.1
toucan-js@4.1.1:
dependencies:
'@sentry/core': 8.9.2
@ -9961,6 +10253,8 @@ snapshots:
dependencies:
'@fastify/busboy': 2.1.1
undici@7.10.0: {}
unenv@2.0.0-rc.17:
dependencies:
defu: 6.1.4
@ -9991,6 +10285,8 @@ snapshots:
dependencies:
punycode: 2.3.1
uri-templates@0.2.0: {}
uuid@8.3.2: {}
validate-npm-package-license@3.0.4:
@ -10208,14 +10504,31 @@ snapshots:
ws@8.18.0: {}
xsschema@0.3.0-beta.1(zod-to-json-schema@3.24.5(zod@3.25.51))(zod@3.25.51):
optionalDependencies:
zod: 3.25.51
zod-to-json-schema: 3.24.5(zod@3.25.51)
xtend@4.0.2: {}
y18n@5.0.8: {}
yaml-ast-parser@0.0.43: {}
yaml@2.8.0: {}
yargs-parser@21.1.1: {}
yargs@17.7.2:
dependencies:
cliui: 8.0.1
escalade: 3.2.0
get-caller-file: 2.0.5
require-directory: 2.1.1
string-width: 4.2.3
y18n: 5.0.8
yargs-parser: 21.1.1
yocto-queue@0.1.0: {}
yoctocolors@2.1.1: {}

Wyświetl plik

@ -1,30 +1,31 @@
packages:
- packages/*
- apps/*
- packages/fixtures/valid/*
catalog:
"@agentic/openauth": ^0.4.3
"@ai-sdk/openai": ^1.3.22
"@apideck/better-ajv-errors": ^0.3.6
"@clack/prompts": ^0.11.0
"@cloudflare/workers-types": ^4.20250604.0
"@commander-js/extra-typings": ^14.0.0
"@edge-runtime/vm": ^5.0.0
"@fisch0920/config": ^1.1.0
"@fisch0920/drizzle-orm": ^0.43.7
"@fisch0920/drizzle-zod": ^0.7.9
"@hono/node-server": ^1.14.3
"@hono/sentry": ^1.2.1
"@hono/zod-openapi": ^0.19.8
"@hono/zod-validator": ^0.7.0
"@modelcontextprotocol/sdk": ^1.12.1
"@paralleldrive/cuid2": ^2.2.2
"@redocly/openapi-core": ^1.34.3
"@sentry/cloudflare": ^9.26.0
"@sentry/core": ^9.26.0
"@sentry/node": ^9.26.0
"@types/ms": ^2.1.0
"@types/node": ^22.15.29
"@types/semver": ^7.7.0
'@agentic/openauth': ^0.4.3
'@ai-sdk/openai': ^1.3.22
'@apideck/better-ajv-errors': ^0.3.6
'@clack/prompts': ^0.11.0
'@cloudflare/workers-types': ^4.20250604.0
'@commander-js/extra-typings': ^14.0.0
'@edge-runtime/vm': ^5.0.0
'@fisch0920/config': ^1.1.0
'@fisch0920/drizzle-orm': ^0.43.7
'@fisch0920/drizzle-zod': ^0.7.9
'@hono/node-server': ^1.14.3
'@hono/sentry': ^1.2.1
'@hono/zod-openapi': ^0.19.8
'@hono/zod-validator': ^0.7.0
'@modelcontextprotocol/sdk': ^1.12.1
'@paralleldrive/cuid2': ^2.2.2
'@redocly/openapi-core': ^1.34.3
'@sentry/cloudflare': ^9.26.0
'@sentry/core': ^9.26.0
'@sentry/node': ^9.26.0
'@types/ms': ^2.1.0
'@types/node': ^22.15.29
'@types/semver': ^7.7.0
ai: ^4.3.15
ajv: ^8.17.1
ajv-formats: ^3.0.1