gemi 0.103.0 → 0.105.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/Agent.d.ts +13 -2
- package/dist/ai/Agent.d.ts.map +1 -1
- package/dist/ai/AgentController.d.ts +8 -1
- package/dist/ai/AgentController.d.ts.map +1 -1
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js.map +4 -4
- package/dist/auth/routes.d.ts +15 -73
- package/dist/auth/routes.d.ts.map +1 -1
- package/dist/chunk-48wh5mbp.js +17 -0
- package/dist/{chunk-g8qp01t6.js.map → chunk-48wh5mbp.js.map} +4 -4
- package/dist/{chunk-tcce63wk.js → chunk-dtcy3110.js} +2 -2
- package/dist/{chunk-tcce63wk.js.map → chunk-dtcy3110.js.map} +1 -1
- package/dist/{chunk-3e73zaft.js → chunk-k6rd1nd4.js} +1 -1
- package/dist/{chunk-3e73zaft.js.map → chunk-k6rd1nd4.js.map} +2 -2
- package/dist/{chunk-spgpvz77.js → chunk-w8mm0z6r.js} +1 -1
- package/dist/{chunk-j3y6cs0z.js → chunk-y926fhhz.js} +1 -1
- package/dist/facades/index.js +1 -1
- package/dist/http/ApiRouter.d.ts +89 -17
- package/dist/http/ApiRouter.d.ts.map +1 -1
- package/dist/http/McpRouter.d.ts +86 -27
- package/dist/http/McpRouter.d.ts.map +1 -1
- package/dist/http/index.d.ts +2 -2
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/mcp/McpRegistry.d.ts +8 -1
- package/dist/services/mcp/McpRegistry.d.ts.map +1 -1
- package/dist/services/mcp/toAgentTools.d.ts +60 -7
- package/dist/services/mcp/toAgentTools.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-g8qp01t6.js +0 -17
- /package/dist/{chunk-spgpvz77.js.map → chunk-w8mm0z6r.js.map} +0 -0
- /package/dist/{chunk-j3y6cs0z.js.map → chunk-y926fhhz.js.map} +0 -0
package/dist/services/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Ya as dW}from"../chunk-zytmxty5.js";import{Za as i6,_a as DW,ab as FW,bb as UW,cb as SW,db as fW,eb as RW,fb as kW,gb as _W,hb as U,ib as CW,jb as vW,kb as bW,lb as IW,mb as TW,nb as qW,ob as hW,pb as PW,qb as wW,rb as AW,sb as yW,tb as VW,ub as gW,vb as cW,wb as EW,xb as mW,yb as uW}from"../chunk-
|
|
2
|
+
import{Ya as dW}from"../chunk-zytmxty5.js";import{Za as i6,_a as DW,ab as FW,bb as UW,cb as SW,db as fW,eb as RW,fb as kW,gb as _W,hb as U,ib as CW,jb as vW,kb as bW,lb as IW,mb as TW,nb as qW,ob as hW,pb as PW,qb as wW,rb as AW,sb as yW,tb as VW,ub as gW,vb as cW,wb as EW,xb as mW,yb as uW}from"../chunk-k6rd1nd4.js";import"../chunk-wc46df4w.js";import{Eb as YW,Fb as JW,Gb as ZW,Hb as GW,Ib as $W,Jb as QW,Kb as KW,Lb as XW,Mb as zW,Nb as BW,Ob as xW,Pb as MW,Qb as jW,Rb as NW,Sb as LW}from"../chunk-b1dqx3b9.js";import{Tb as n6,Ub as o6,Vb as s6,Wb as a6,Xb as t6,Yb as r6,Zb as e6,_b as WW}from"../chunk-18aqqrev.js";import{dc as OW,ec as HW}from"../chunk-zm00crsx.js";import"../chunk-7kedxtbp.js";import{$c as f6,Cc as s4,Dc as a4,Dd as c6,Ec as g1,Fc as $6,Fd as E6,Ic as Q6,Jc as K6,Vc as D6,Wc as F6,Xc as O6,Yc as H6,Zc as U6,_c as S6,ad as d4,bd as R6,cd as k6,dd as _6,ed as C6,fd as v6,jd as b6,kd as I6,ld as T6,md as q6,nc as b0,nd as h6,od as P6,pd as w6,qd as A6,rd as y6,sd as V6,tc as e0,uc as W6,vc as Y6,wc as J6,xc as Z6,yc as G6,zd as g6}from"../chunk-48wh5mbp.js";import"../chunk-b0jpvp5t.js";import"../chunk-22k4b395.js";import{Ue as V1,Ve as A1,We as Y1,jf as g,kf as w,of as J1,pf as L1,qf as X6,rf as z6,sf as B6,tf as x6,vf as M6,xf as D1}from"../chunk-3cxbvrts.js";import"../chunk-j9deswmn.js";import"../chunk-ayss2f8c.js";import{Gf as j6,Hf as N6,If as L6}from"../chunk-5dwtmkk8.js";import"../chunk-xxkk60aw.js";import"../chunk-fcsq613t.js";import"../chunk-v4exgqbp.js";import"../chunk-st0d3ndv.js";import{Ag as p6,Cg as l6,xg as m6,yg as u6,zg as d6}from"../chunk-zhk3z9zk.js";import"../chunk-4f7n1r02.js";import{Lg as c}from"../chunk-xnggfm0s.js";import"../chunk-0fney17e.js";import"../chunk-yxh4xs3k.js";import"../chunk-ma5rmcbe.js";import"../chunk-3m93v7bt.js";import{ch as l4}from"../chunk-1xzdexbq.js";import{Buffer as p4}from"buffer";class n4 extends J1{client;config;constructor(...W){super();this.config=W}async connect(){let W=await import("../chunk-214av8am.js");return this.client??=new W.S3Client(...this.config),{sdk:W,client:this.client}}async put(W,{signal:Y}={}){Y?.throwIfAborted();let J,Z,G,$=process.env.BUCKET_NAME;if(W instanceof Blob)J=W,G=`${Bun.randomUUIDv7()}.${W.type.split("/")[1].split(";")[0]}`,Z=W.type;else J=W.body,G=W.name,$=W.bucket??$,Z=W.contentType||(J instanceof Blob||J instanceof File?J.type:void 0);Z=Z||void 0;let Q=J instanceof p4?J:J instanceof Blob||J instanceof File?p4.from(await J.arrayBuffer()):"",{sdk:K,client:z}=await this.connect();return Y?.throwIfAborted(),await z.send(new K.PutObjectCommand({Bucket:$,Key:G,Body:Q,ContentType:Z}),{abortSignal:Y}),G}async delete(W){let Y=typeof W==="string"?W:W.name,J=(typeof W==="string"?void 0:W.bucket)??process.env.BUCKET_NAME;if(!Y)throw Error("Object name has to be specified");let{sdk:Z,client:G}=await this.connect();try{await G.send(new Z.DeleteObjectCommand({Bucket:J,Key:Y}))}catch($){if($?.name==="NoSuchKey"||$?.$metadata?.httpStatusCode===404)return;throw $}}async list(W){let{sdk:Y,client:J}=await this.connect();return await J.send(new Y.ListObjectsV2Command({Bucket:process.env.BUCKET_NAME,Prefix:W}))}async fetch(W,{signal:Y}={}){Y?.throwIfAborted();let J=process.env.BUCKET_NAME,Z;if(typeof W==="string")Z=W;else J=W.bucket??J,Z=W.name;if(!Z)throw Error("Object name has to be specified");let{sdk:G,client:$}=await this.connect();Y?.throwIfAborted();let Q=await $.send(new G.GetObjectCommand({Bucket:J,Key:Z}),{abortSignal:Y}),K=L1(Q.Body.transformToWebStream(),Y);return Y?.throwIfAborted(),new Response(K,{headers:{"Content-Type":Q.ContentType,"Content-Length":Q.ContentLength.toString(),"Cache-Control":"private, max-age=12000, must-revalidate","Last-Modified":Q.LastModified?.toUTCString()||"",ETag:Q.ETag||""}})}async read(W){let Y=typeof W==="string"?{name:W}:W,J=Y.bucket??process.env.BUCKET_NAME,{name:Z,range:G=null}=Y;if(!Z)throw Error("Object name has to be specified");let{sdk:$,client:Q}=await this.connect(),K;try{K=await Q.send(new $.GetObjectCommand({Bucket:J,Key:Z,Range:G?A1(G):void 0}))}catch(M){if(M?.name==="InvalidRange"||M?.$metadata?.httpStatusCode===416)throw new g(await this.size({name:Z,bucket:J}));if(M?.name==="NoSuchKey"||M?.$metadata?.httpStatusCode===404)throw new w(Z);throw M}let z=Y1(K.ContentRange),X=Boolean(z)&&K.$metadata?.httpStatusCode===206,x=z?.total??K.ContentLength??0;return{body:K.Body.transformToWebStream(),start:z?.start??0,end:z?.end??x-1,total:x,partial:X,type:K.ContentType??"application/octet-stream",etag:K.ETag||void 0,lastModified:K.LastModified,name:Z}}async size(W){let Y=typeof W==="string"?W:W.name,J=(typeof W==="string"?void 0:W.bucket)??process.env.BUCKET_NAME,{sdk:Z,client:G}=await this.connect();try{return(await G.send(new Z.HeadObjectCommand({Bucket:J,Key:Y}))).ContentLength??0}catch($){if($?.name==="NotFound"||$?.$metadata?.httpStatusCode===404)throw new w(Y);throw $}}}import{Buffer as i4}from"buffer";import{Readable as q0}from"stream";function y1(W){return W?.statusCode===404||W?.details?.errorCode==="BlobNotFound"||W?.code==="BlobNotFound"}function h0(W){return W?.statusCode===416||W?.details?.errorCode==="InvalidRange"||W?.code==="InvalidRange"}class o4 extends J1{config;serviceClientPromise=null;constructor(W={}){super();this.config=W}async serviceClient(){if(this.config.serviceClient)return this.config.serviceClient;return this.serviceClientPromise??=(async()=>{let W;try{W=await import("@azure/storage-blob")}catch{throw Error("AzureBlobDriver requires the '@azure/storage-blob' package. Install it with `bun add @azure/storage-blob`, or pass a pre-built `serviceClient`.")}let Y=this.config.connectionString??process.env.AZURE_STORAGE_CONNECTION_STRING;if(this.config.url)return new W.BlobServiceClient(this.config.url,this.config.credential);if(Y)return W.BlobServiceClient.fromConnectionString(Y);throw Error("AzureBlobDriver needs a connection string (AZURE_STORAGE_CONNECTION_STRING), a `url`, or a `serviceClient`.")})(),this.serviceClientPromise}async blob(W,Y){if(!W)throw Error("Object name has to be specified");let J=Y??this.config.container??process.env.BUCKET_NAME;if(!J)throw Error("AzureBlobDriver needs a container name, from `bucket`, the `container` config, or BUCKET_NAME.");return(await this.serviceClient()).getContainerClient(J).getBlockBlobClient(W)}async put(W,{signal:Y}={}){Y?.throwIfAborted();let J,Z,G,$;if(W instanceof Blob)J=W,G=`${Bun.randomUUIDv7()}.${W.type.split("/")[1].split(";")[0]}`,Z=W.type;else J=W.body,G=W.name,$=W.bucket,Z=W.contentType??(J instanceof Blob||J instanceof File?J.type:void 0);let Q=J instanceof i4?J:i4.from(await J.arrayBuffer()),K=await this.blob(G,$);return Y?.throwIfAborted(),await K.uploadData(Q,{blobHTTPHeaders:Z?{blobContentType:Z}:void 0,abortSignal:Y}),G}async list(W){let Y=this.config.container??process.env.BUCKET_NAME,Z=(await this.serviceClient()).getContainerClient(Y),G=[];for await(let $ of Z.listBlobsFlat({prefix:W}))G.push($.name);return G}async fetch(W,{signal:Y}={}){Y?.throwIfAborted();let J=await this.download(typeof W==="string"?{name:W}:{name:W.name,bucket:W.bucket},Y);return new Response(J.body,{headers:{"Content-Type":J.type,"Content-Length":String(J.total),"Cache-Control":"private, max-age=12000, must-revalidate","Last-Modified":J.lastModified?.toUTCString()??"",ETag:J.etag??""}})}async read(W){return this.download(typeof W==="string"?{name:W}:W)}async download(W,Y){let{name:J,bucket:Z,range:G=null}=W,$=await this.blob(J,Z);Y?.throwIfAborted();let Q,K,z=G?.kind==="suffix"||G?.kind==="offset"&&G.end===null&&G.start===0;if(G&&z){let b=await this.size({name:J,bucket:Z}),W1=V1(G,b);if(!W1)throw new g(b);Q=W1.start,K=W1.length}else if(G?.kind==="offset")Q=G.start,K=G.end===null?void 0:G.end-G.start+1;let X;try{X=await $.download(Q,K,Y?{abortSignal:Y}:void 0)}catch(b){if(h0(b))throw new g(await this.size({name:J,bucket:Z}));if(y1(b))throw new w(J);throw b}let x=Y1(X.contentRange),M=Boolean(x),R=x?.total??X.contentLength??0,v=await P0(X);if(v instanceof ReadableStream)v=L1(v,Y);return Y?.throwIfAborted(),{body:v,start:x?.start??0,end:x?.end??R-1,total:R,partial:M,type:X.contentType??"application/octet-stream",etag:X.etag||void 0,lastModified:X.lastModified,name:J}}async size(W){let Y=typeof W==="string"?W:W.name,J=typeof W==="string"?void 0:W.bucket,Z=await this.blob(Y,J);try{return(await Z.getProperties()).contentLength??0}catch(G){if(y1(G))throw new w(Y);throw G}}async delete(W){let Y=typeof W==="string"?W:W.name,J=typeof W==="string"?void 0:W.bucket,Z=await this.blob(Y,J);try{await Z.delete()}catch(G){if(y1(G))return;throw G}}}async function P0(W){if(W.blobBody)return await W.blobBody;if(W.readableStreamBody)return q0.toWeb(W.readableStreamBody);return null}var w0=`
|
|
3
3
|
local currentKey = KEYS[1]
|
|
4
4
|
local previousKey = KEYS[2]
|
|
5
5
|
local limit = tonumber(ARGV[1])
|
|
@@ -144,10 +144,17 @@ export declare class McpToolError extends ToolError {
|
|
|
144
144
|
* `exec`, which is the handler alone — no auth, no policies, no rate limit —
|
|
145
145
|
* and is the shorter path for exactly that reason.
|
|
146
146
|
*/
|
|
147
|
-
export declare class McpRegistry {
|
|
147
|
+
export declare class McpRegistry<R extends McpRouter<any> = McpRouter<any>> {
|
|
148
148
|
private readonly router;
|
|
149
149
|
private readonly dispatcher;
|
|
150
150
|
static token: string;
|
|
151
|
+
/**
|
|
152
|
+
* Types only, never set: the app's router, which a typed `toAgentTools`
|
|
153
|
+
* reads its tools' names, inputs and outputs from (#771). The container
|
|
154
|
+
* answers an untyped registry; name the router where the tools are built:
|
|
155
|
+
* `app(McpRegistry) as McpRegistry<SiteMcpRouter>`.
|
|
156
|
+
*/
|
|
157
|
+
readonly __router?: R;
|
|
151
158
|
private readonly plans;
|
|
152
159
|
constructor(router: McpRouter<any>, dispatcher: Pick<ApiRouteDispatcher, "flatRoutes" | "dispatchAs" | "getRouteHandlerAndParams">);
|
|
153
160
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpRegistry.d.ts","sourceRoot":"","sources":["../../../services/mcp/McpRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAK,KAAK,SAAS,EAAmB,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAEV,SAAS,EAKT,SAAS,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9C,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,SAAS;IAGvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;gBADxB,OAAO,EAAE,MAAM,EACN,MAAM,CAAC,EAAE,MAAM;CAK3B;AAwCD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"McpRegistry.d.ts","sourceRoot":"","sources":["../../../services/mcp/McpRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type AnyAgentTool, type ToolEntry } from "../../ai/Agent";
|
|
1
|
+
import { AgentTool, ToolNamespace, type AnyAgentTool, type ToolEntry, type ToolShapesOf } from "../../ai/Agent";
|
|
2
|
+
import type { McpRouteDeclaration, McpRouter } from "../../http/McpRouter";
|
|
2
3
|
import type { McpRegistry, McpToolFilter } from "./McpRegistry";
|
|
3
4
|
/** One namespace `toAgentTools` groups a tag's tools into. */
|
|
4
5
|
export type McpToolNamespaceOptions = {
|
|
@@ -30,6 +31,38 @@ export type ToAgentToolsOptions = {
|
|
|
30
31
|
*/
|
|
31
32
|
namespaces?: Record<string, McpToolNamespaceOptions>;
|
|
32
33
|
};
|
|
34
|
+
type RoutesOf<R> = R extends {
|
|
35
|
+
routes: infer T;
|
|
36
|
+
} ? T : never;
|
|
37
|
+
/** Whether a filter's field narrows by literals, rather than by `string`s. */
|
|
38
|
+
type LiteralsOf<L> = L extends readonly (infer X)[] ? (string extends X ? never : X) : never;
|
|
39
|
+
/** Whether the tool `N`, declared as `D`, passes the filter `F`. */
|
|
40
|
+
type Passes<N, D, F> = (F extends {
|
|
41
|
+
names: readonly string[];
|
|
42
|
+
} ? [LiteralsOf<F["names"]>] extends [never] ? true : N extends LiteralsOf<F["names"]> ? true : false : true) extends true ? F extends {
|
|
43
|
+
tags: readonly string[];
|
|
44
|
+
} ? [LiteralsOf<F["tags"]>] extends [never] ? true : D extends McpRouteDeclaration<any, any, any, any, infer T> ? string extends T[number] ? true : [Extract<T[number], LiteralsOf<F["tags"]>>] extends [never] ? false : true : true : true : false;
|
|
45
|
+
/**
|
|
46
|
+
* The tools of the router `R` that pass the filter `F`, as `toAgentTools`
|
|
47
|
+
* builds them: named by their `routes` key, with the input the model sends and
|
|
48
|
+
* the output the tool answers. An untyped router (`McpRouter<any>`, what the
|
|
49
|
+
* container answers) gives `AnyAgentTool`, as before.
|
|
50
|
+
*/
|
|
51
|
+
export type McpAgentTool<R extends McpRouter<any>, F = {}> = string extends keyof RoutesOf<R> ? AnyAgentTool : {
|
|
52
|
+
[N in keyof RoutesOf<R> & string]: Passes<N, RoutesOf<R>[N], F> extends true ? RoutesOf<R>[N] extends McpRouteDeclaration<any, any, infer I, infer O, any> ? AgentTool<N, I, O, never> : never : never;
|
|
53
|
+
}[keyof RoutesOf<R> & string];
|
|
54
|
+
/**
|
|
55
|
+
* The client's shapes of the router's tools, as `ToolShapesOf` gives them for
|
|
56
|
+
* an agent holding `toAgentTools(registry, { filter: F })`. For a chat built
|
|
57
|
+
* on its tools alone; an agent mixing them with its own tools gets them from
|
|
58
|
+
* `ToolShapesOf<typeof agent.tools>`.
|
|
59
|
+
*/
|
|
60
|
+
export type McpToolShapesOf<R extends McpRouter<any>, F = {}> = ToolShapesOf<McpAgentTool<R, F>[]>;
|
|
61
|
+
/** What the grouped call answers: namespaces of the tools, and the bare ones. */
|
|
62
|
+
type McpToolEntry<R extends McpRouter<any>, F> = string extends keyof RoutesOf<R> ? ToolEntry : ToolNamespace<string, readonly McpAgentTool<R, F>[]> | McpAgentTool<R, F>;
|
|
63
|
+
type FilterOf<O> = O extends {
|
|
64
|
+
filter: infer F;
|
|
65
|
+
} ? F : {};
|
|
33
66
|
/**
|
|
34
67
|
* The registry's tools as `AgentTool`s, for an agent running in this server —
|
|
35
68
|
* v1's only projection.
|
|
@@ -72,14 +105,34 @@ export type ToAgentToolsOptions = {
|
|
|
72
105
|
* The second argument is read as options when it has `filter`, `deferred` or
|
|
73
106
|
* `namespaces`, and as a filter otherwise, so `toAgentTools(registry, filter)`
|
|
74
107
|
* is unchanged.
|
|
108
|
+
*
|
|
109
|
+
* Typed (#771): given the app's router type, the tools keep their names,
|
|
110
|
+
* inputs and outputs, so the client's `ToolShapesOf<typeof agent.tools>` types
|
|
111
|
+
* their parts. A literal `filter` narrows them as it narrows the tools:
|
|
112
|
+
*
|
|
113
|
+
* ```ts
|
|
114
|
+
* const registry = app(McpRegistry) as McpRegistry<SiteMcpRouter>;
|
|
115
|
+
* toAgentTools(registry, { filter: { tags: ["collections"] } });
|
|
116
|
+
* // AgentTool<"listCollections", { page: string | null }, { name: string }[]> | …
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* `toAgentTools<SiteMcpRouter>(app(McpRegistry), …)` types them too, but an
|
|
120
|
+
* explicit type argument leaves the filter uninferred: every tool of the
|
|
121
|
+
* router is in the type. An untyped registry answers `AnyAgentTool`s, as
|
|
122
|
+
* before.
|
|
75
123
|
*/
|
|
76
|
-
export declare function toAgentTools(registry: McpRegistry, filter?:
|
|
77
|
-
export declare function toAgentTools
|
|
124
|
+
export declare function toAgentTools<R extends McpRouter<any> = McpRouter<any>, const F extends McpToolFilter = {}>(registry: McpRegistry<R> | McpRegistry, filter?: F): McpAgentTool<R, F>[];
|
|
125
|
+
export declare function toAgentTools<R extends McpRouter<any> = McpRouter<any>, const O extends ToAgentToolsOptions & {
|
|
78
126
|
namespaces: Record<string, McpToolNamespaceOptions>;
|
|
79
|
-
}
|
|
80
|
-
|
|
127
|
+
} = ToAgentToolsOptions & {
|
|
128
|
+
namespaces: Record<string, McpToolNamespaceOptions>;
|
|
129
|
+
}>(registry: McpRegistry<R> | McpRegistry, options: O): McpToolEntry<R, FilterOf<O>>[];
|
|
130
|
+
export declare function toAgentTools<R extends McpRouter<any> = McpRouter<any>, const O extends ToAgentToolsOptions & {
|
|
131
|
+
namespaces?: undefined;
|
|
132
|
+
} = ToAgentToolsOptions & {
|
|
81
133
|
namespaces?: undefined;
|
|
82
|
-
}):
|
|
134
|
+
}>(registry: McpRegistry<R> | McpRegistry, options: O): McpAgentTool<R, FilterOf<O>>[];
|
|
83
135
|
/** Options whose `namespaces` is not known statically: either shape. */
|
|
84
|
-
export declare function toAgentTools(registry: McpRegistry, options: ToAgentToolsOptions):
|
|
136
|
+
export declare function toAgentTools<R extends McpRouter<any> = McpRouter<any>>(registry: McpRegistry<R> | McpRegistry, options: ToAgentToolsOptions): McpToolEntry<R, FilterOf<ToAgentToolsOptions>>[];
|
|
137
|
+
export {};
|
|
85
138
|
//# sourceMappingURL=toAgentTools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toAgentTools.d.ts","sourceRoot":"","sources":["../../../services/mcp/toAgentTools.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"toAgentTools.d.ts","sourceRoot":"","sources":["../../../services/mcp/toAgentTools.ts"],"names":[],"mappings":"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"}
|