stitchkit 0.25.0 → 0.27.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/browser/client-multipart.d.ts +22 -0
- package/dist/browser/client-multipart.d.ts.map +1 -0
- package/dist/browser/client.d.ts.map +1 -1
- package/dist/browser/http.d.ts +7 -1
- package/dist/browser/http.d.ts.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/contract/define.d.ts +79 -2
- package/dist/contract/define.d.ts.map +1 -1
- package/dist/contract/factory.d.ts +1 -0
- package/dist/contract/factory.d.ts.map +1 -1
- package/dist/contract/index.js +1 -1
- package/dist/{index-h9d1fm0p.js → index-4whcb3c3.js} +64 -22
- package/dist/{index-a9n8m4ec.js → index-jvescqgr.js} +1 -1
- package/dist/{index-x62gnfsk.js → index-pmftwk2a.js} +19 -1
- package/dist/{index-g8kyab85.js → index-y4132gqh.js} +81 -12
- package/dist/{index-tje0q6gp.js → index-zfscdskj.js} +6 -1
- package/dist/{index-4gawbm74.js → index-zza375qp.js} +41 -3
- package/dist/index.js +39 -25
- package/dist/internal/errors.d.ts +6 -1
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/write-download.d.ts +17 -0
- package/dist/internal/write-download.d.ts.map +1 -0
- package/dist/node.js +3 -3
- package/dist/server/create.d.ts.map +1 -1
- package/dist/server/error-hook.d.ts +14 -3
- package/dist/server/error-hook.d.ts.map +1 -1
- package/dist/server/implement.d.ts.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +21 -8
- package/dist/server/middleware/cors.d.ts +19 -0
- package/dist/server/middleware/cors.d.ts.map +1 -1
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/router.d.ts +27 -0
- package/dist/server/router.d.ts.map +1 -1
- package/dist/server/types.d.ts +44 -1
- package/dist/server/types.d.ts.map +1 -1
- package/dist/tools/agent.d.ts +2 -0
- package/dist/tools/agent.d.ts.map +1 -1
- package/dist/tools/cli.d.ts.map +1 -1
- package/dist/tools/execute.d.ts +1 -1
- package/dist/tools/execute.d.ts.map +1 -1
- package/dist/tools/list-names.d.ts +2 -1
- package/dist/tools/list-names.d.ts.map +1 -1
- package/dist/tools/mcp.d.ts +10 -3
- package/dist/tools/mcp.d.ts.map +1 -1
- package/dist/tools/mount-download.d.ts.map +1 -1
- package/dist/tools/mount-upload.d.ts.map +1 -1
- package/dist/tools/mount-wait.d.ts.map +1 -1
- package/dist/tools/mount.d.ts +13 -0
- package/dist/tools/mount.d.ts.map +1 -1
- package/dist/tools/names.d.ts +34 -0
- package/dist/tools/names.d.ts.map +1 -1
- package/dist/tools/remote.d.ts.map +1 -1
- package/dist/tools/transports.d.ts.map +1 -1
- package/dist/tools.js +69 -49
- package/llms-full.txt +223 -12
- package/llms.txt +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,UAAU,EACV,cAAc,EACd,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACtE,KAAK,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACjF,KAAK,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC/E,KAAK,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE7E,MAAM,MAAM,QAAQ,CAClB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,IAAI,SAAS,cAAc,GAAG,cAAc,IAC1C;KACD,CAAC,IAAI,MAAM,CAAC,GAAG,CACd,GAAG,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/agent.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export interface AgentMountConfig {
|
|
|
18
18
|
extend?: ToolExtend;
|
|
19
19
|
/** Coerce JSON-stringified arrays/objects in tool arguments. Default: true. */
|
|
20
20
|
coerceJsonArgs?: boolean;
|
|
21
|
+
/** Report output keys the contract schema removed — → ADR 0037. */
|
|
22
|
+
onOutputStrip?: (toolName: string, paths: string[]) => void;
|
|
21
23
|
/** Flatten discriminated union inputs into a single object. Default: false. */
|
|
22
24
|
flattenUnionInput?: boolean;
|
|
23
25
|
/** Global error hint injected into every failed tool result. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/tools/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAGlC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAEnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/tools/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAGlC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAEnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAG3F,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,qCAAqC;IACrC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5D,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gEAAgE;IAChE,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,UAAU,GAAG,UAAU,EAAE,EACnC,MAAM,GAAE,gBAAqB,GAC5B,OAAO,CA8CT"}
|
package/dist/tools/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/tools/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/tools/cli.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAsB,KAAK,WAAW,EAAc,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,YAAY,CAAC;AAC/D,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAGnB,MAAM,WAAW,CAAC;AAMnB,MAAM,WAAW,SAAS,CACxB,KAAK,GAAG,OAAO,EACf,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElE,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,KAAK,UAAU,EAAE,CAAC,CAAC;IAC9E;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,KAAK,QAAQ,CAAC;IACzD,8EAA8E;IAC9E,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,wEAAwE;IACxE,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kEAAkE;IAClE,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,oEAAoE;IACpE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,gEAAgE;IAChE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACtC;AAuLD;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,KAAK,GAAG,OAAO,EACf,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgInD"}
|
package/dist/tools/execute.d.ts
CHANGED
|
@@ -48,5 +48,5 @@ export interface ToolLifecycle {
|
|
|
48
48
|
export declare function toolResultFromError(err: unknown): Extract<ToolResult, {
|
|
49
49
|
ok: false;
|
|
50
50
|
}>;
|
|
51
|
-
export declare function executeToolMethod(method: MethodDef<unknown, unknown, unknown>, toolName: string, rawArgs: Record<string, unknown>, context: ToolCallContext, hooks?: ToolCallHooks, lifecycle?: ToolLifecycle, coerceJson?: boolean): Promise<ToolResult>;
|
|
51
|
+
export declare function executeToolMethod(method: MethodDef<unknown, unknown, unknown>, toolName: string, rawArgs: Record<string, unknown>, context: ToolCallContext, hooks?: ToolCallHooks, lifecycle?: ToolLifecycle, coerceJson?: boolean, onOutputStrip?: (paths: string[]) => void): Promise<ToolResult>;
|
|
52
52
|
//# sourceMappingURL=execute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,SAAS,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,SAAS,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAEjF;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,0DAA0D;IAC1D,WAAW,CAAC,EAAE,CACZ,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,SAAS,KAChB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAQpF;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,eAAe,EACxB,KAAK,CAAC,EAAE,aAAa,EACrB,SAAS,CAAC,EAAE,aAAa,EACzB,UAAU,UAAQ,
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,SAAS,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,SAAS,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAEjF;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,0DAA0D;IAC1D,WAAW,CAAC,EAAE,CACZ,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,SAAS,KAChB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAQpF;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,eAAe,EACxB,KAAK,CAAC,EAAE,aAAa,EACrB,SAAS,CAAC,EAAE,aAAa,EACzB,UAAU,UAAQ,EAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,GACxC,OAAO,CAAC,UAAU,CAAC,CAwHrB"}
|
|
@@ -25,7 +25,8 @@ export interface ToolNameEntry {
|
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Resolve every tool name the given services expose, sorted by name (then
|
|
28
|
-
* service) — a stable shape to snapshot. Multipart
|
|
28
|
+
* service) — a stable shape to snapshot. Multipart and raw-response endpoints
|
|
29
|
+
* are absent
|
|
29
30
|
* (never mounted as tools) and CLI appears only where `expose` opts in,
|
|
30
31
|
* mirroring the real mounts.
|
|
31
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-names.d.ts","sourceRoot":"","sources":["../../src/tools/list-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAID
|
|
1
|
+
{"version":3,"file":"list-names.d.ts","sourceRoot":"","sources":["../../src/tools/list-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAID;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CA2BrE"}
|
package/dist/tools/mcp.d.ts
CHANGED
|
@@ -35,6 +35,8 @@ export interface McpMountConfig {
|
|
|
35
35
|
flattenUnionInput?: boolean;
|
|
36
36
|
/** Global error hint injected into every failed tool result. */
|
|
37
37
|
errorHint?: ErrorHintFn;
|
|
38
|
+
/** Report output keys the contract schema removed — → ADR 0037. */
|
|
39
|
+
onOutputStrip?: (toolName: string, paths: string[]) => void;
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
40
42
|
* Validate that every contract tool in `services` can be advertised on the MCP
|
|
@@ -80,9 +82,12 @@ export interface McpServerBuildConfig<TAuth> {
|
|
|
80
82
|
onIncompatibleSchema?: IncompatibleSchemaPolicy;
|
|
81
83
|
/** Logger for schema-incompatibility warnings — defaults to `console`. */
|
|
82
84
|
logger?: StitchLogger;
|
|
83
|
-
/** Register native (non-contract) MCP tools — receives the `McpServer`
|
|
84
|
-
*
|
|
85
|
-
|
|
85
|
+
/** Register native (non-contract) MCP tools — receives the `McpServer` and the
|
|
86
|
+
* resolved identity, like `services` and `context` do, so a native tool can be
|
|
87
|
+
* per-tenant. For tools returning multimodal content, e.g. `mountViewFile`.
|
|
88
|
+
* Note this is **not** a scope gate: native tools are not contract methods and
|
|
89
|
+
* `lifecycle` does not run for them. */
|
|
90
|
+
nativeTools?: (server: McpServer, auth: TAuth) => void;
|
|
86
91
|
/** MCP Apps UI resources (`ui://…`) served for tools that declare `ui`. */
|
|
87
92
|
resources?: McpResourceDef[];
|
|
88
93
|
/** Server instructions — a short (≤2KB) hint to the host on when and how to
|
|
@@ -94,6 +99,8 @@ export interface McpServerBuildConfig<TAuth> {
|
|
|
94
99
|
flattenUnionInput?: boolean;
|
|
95
100
|
/** Global error hint injected into every failed tool result. */
|
|
96
101
|
errorHint?: ErrorHintFn;
|
|
102
|
+
/** Report output keys the contract schema removed — → ADR 0037. */
|
|
103
|
+
onOutputStrip?: (toolName: string, paths: string[]) => void;
|
|
97
104
|
}
|
|
98
105
|
/**
|
|
99
106
|
* Build an `McpServer` from contract services for a resolved identity.
|
package/dist/tools/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAGnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,WAAW,CAAC;AACpE,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount-download.d.ts","sourceRoot":"","sources":["../../src/tools/mount-download.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mount-download.d.ts","sourceRoot":"","sources":["../../src/tools/mount-download.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4C7B,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC;IAC3B,kFAAkF;IAClF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IACtF,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAqDjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount-upload.d.ts","sourceRoot":"","sources":["../../src/tools/mount-upload.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"mount-upload.d.ts","sourceRoot":"","sources":["../../src/tools/mount-upload.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA6B7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount-wait.d.ts","sourceRoot":"","sources":["../../src/tools/mount-wait.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"mount-wait.d.ts","sourceRoot":"","sources":["../../src/tools/mount-wait.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAM7B,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC;IAC3B,mEAAmE;IACnE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,yCAAyC;IACzC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAClC,uDAAuD;IACvD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IACxE,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACpF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA+BzE"}
|
package/dist/tools/mount.d.ts
CHANGED
|
@@ -38,6 +38,13 @@ export interface CollectToolsConfig {
|
|
|
38
38
|
extend?: ToolExtend;
|
|
39
39
|
/** Flatten discriminated union inputs into a single object for MCP. Default: false. */
|
|
40
40
|
flattenUnionInput?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Throw on a tool name no provider will accept. Default: true — every mount
|
|
43
|
+
* wants it. The read-only listers pass `false`: `listToolNames` is the
|
|
44
|
+
* documented way to *find* an offending name before an upgrade, so it must
|
|
45
|
+
* report one rather than die on it. → ADR 0035.
|
|
46
|
+
*/
|
|
47
|
+
assertNames?: boolean;
|
|
41
48
|
}
|
|
42
49
|
/**
|
|
43
50
|
* Walk a service's methods and resolve each one exposed on `transport` to a
|
|
@@ -60,6 +67,12 @@ export interface ToolRunnerConfig {
|
|
|
60
67
|
errorHint?: ErrorHintFn;
|
|
61
68
|
/** Coerce JSON-stringified arrays/objects in tool arguments. Default: true. */
|
|
62
69
|
coerceJsonArgs?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Report handler-output keys the contract schema removed — the tool-side twin of
|
|
72
|
+
* `createServer`'s `warnOnOutputStrip`. Off unless a reporter is passed; the key
|
|
73
|
+
* diff only runs when one is. → ADR 0037.
|
|
74
|
+
*/
|
|
75
|
+
onOutputStrip?: (toolName: string, paths: string[]) => void;
|
|
63
76
|
}
|
|
64
77
|
/**
|
|
65
78
|
* Build the call executor for a mount — resolve the extend context, strip the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/tools/mount.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AAKnB;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU,CACzB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElE,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAClC,qEAAqE;IACrE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3F,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC;CAC9D;AAED,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAClB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;CACvB;AAyBD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/tools/mount.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AAKnB;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU,CACzB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElE,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAClC,qEAAqE;IACrE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3F,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC;CAC9D;AAED,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAClB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;CACvB;AAyBD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,SAAS,EACpB,MAAM,GAAE,kBAAuB,GAC9B,aAAa,EAAE,CAwDjB;AAED,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,MAAM,EAAE,eAAe,CAAC;IACxB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,qCAAqC;IACrC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,yEAAyE;IACzE,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,gEAAgE;IAChE,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC7D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GACvB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CA6BhF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,EAC1C,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,WAAW,GACtB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB"}
|
package/dist/tools/names.d.ts
CHANGED
|
@@ -1,2 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when a value carries at least one character that survives into a name.
|
|
3
|
+
* Normalisation can neither create nor destroy an alphanumeric, so this is a
|
|
4
|
+
* plain test on the raw value.
|
|
5
|
+
*/
|
|
6
|
+
export declare function hasUsableChars(value: string): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Throw unless `name` is a tool name every provider will accept.
|
|
9
|
+
*
|
|
10
|
+
* Nothing else *stops* this: the MCP SDK warns (SEP-986, `validateAndWarnToolName`)
|
|
11
|
+
* but registers the tool anyway, and the `ai` SDK has no rule at all. So an illegal
|
|
12
|
+
* name reaches the provider, which rejects **the whole request** — every tool of
|
|
13
|
+
* that mount goes dark, not just the bad one. A tool name is an
|
|
14
|
+
* *identity* defect like a duplicate name (which also throws unconditionally), not
|
|
15
|
+
* a *representability* one like an unconvertible schema (which gets the
|
|
16
|
+
* `onIncompatibleSchema` policy). → ADR 0035.
|
|
17
|
+
*/
|
|
18
|
+
export declare function assertToolName(name: string, serviceName: string, key: string): void;
|
|
1
19
|
export declare function toToolName(serviceName: string, methodName: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* The surface a duplicate name is reported against — only the label differs
|
|
22
|
+
* between the three mounts, the guarantee does not.
|
|
23
|
+
*/
|
|
24
|
+
export type ToolNameSurface = 'MCP tool name' | 'agent tool name' | 'CLI command';
|
|
25
|
+
/**
|
|
26
|
+
* Throw when a tool name is already taken on this mount.
|
|
27
|
+
*
|
|
28
|
+
* Every mount keeps its own bookkeeping (a `Set`, an object, a `Map`), so this
|
|
29
|
+
* takes the *answer* rather than the container — the point is one message and one
|
|
30
|
+
* guarantee, not one data structure. It matters because that guarantee is now
|
|
31
|
+
* load-bearing documentation: ADR 0035 declines to add a collision check of its
|
|
32
|
+
* own precisely because all three mounts already dedupe, so a fourth mount added
|
|
33
|
+
* later must not quietly skip it.
|
|
34
|
+
*/
|
|
35
|
+
export declare function assertUniqueToolName(name: string, taken: boolean, surface: ToolNameSurface): void;
|
|
2
36
|
//# sourceMappingURL=names.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/tools/names.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/tools/names.ts"],"names":[],"mappings":"AA6DA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CASnF;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAa1E;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,iBAAiB,GAAG,aAAa,CAAC;AAElF;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,eAAe,GACvB,IAAI,CAIN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/tools/remote.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/tools/remote.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiB7D,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CACd,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACnE,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAChC,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,UAAU,CAgFZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../src/tools/transports.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAExD,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,EAAE,eAAe,CAAC;IACxB,6CAA6C;IAC7C,UAAU,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;CACjE;AAQD,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../src/tools/transports.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAExD,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,EAAE,eAAe,CAAC;IACxB,6CAA6C;IAC7C,UAAU,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;CACjE;AAQD,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAqB5E"}
|
package/dist/tools.js
CHANGED
|
@@ -2,11 +2,13 @@ import {
|
|
|
2
2
|
inputIsQuery,
|
|
3
3
|
signJwt,
|
|
4
4
|
verifyPkce
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-jvescqgr.js";
|
|
6
6
|
import {
|
|
7
7
|
DEFAULT_CORS_ALLOW_HEADERS
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-zfscdskj.js";
|
|
9
9
|
import {
|
|
10
|
+
assertToolName,
|
|
11
|
+
assertUniqueToolName,
|
|
10
12
|
coerceJsonArgs,
|
|
11
13
|
collectTools,
|
|
12
14
|
createCli,
|
|
@@ -17,15 +19,17 @@ import {
|
|
|
17
19
|
formatToolError,
|
|
18
20
|
pollUntil,
|
|
19
21
|
readCapped,
|
|
20
|
-
toolResultFromError
|
|
21
|
-
|
|
22
|
+
toolResultFromError,
|
|
23
|
+
writeDownload
|
|
24
|
+
} from "./index-4whcb3c3.js";
|
|
22
25
|
import {
|
|
23
26
|
toJsonSchema
|
|
24
27
|
} from "./index-0ed3bx43.js";
|
|
25
28
|
import {
|
|
26
29
|
AppError,
|
|
27
|
-
isWithinDir
|
|
28
|
-
|
|
30
|
+
isWithinDir,
|
|
31
|
+
mergeMeta
|
|
32
|
+
} from "./index-zza375qp.js";
|
|
29
33
|
import"./index-khwedj16.js";
|
|
30
34
|
import {
|
|
31
35
|
isRecord,
|
|
@@ -44,16 +48,15 @@ function mountAgent(services, config = {}) {
|
|
|
44
48
|
hooks: config.hooks,
|
|
45
49
|
lifecycle: config.lifecycle,
|
|
46
50
|
errorHint: config.errorHint,
|
|
47
|
-
coerceJsonArgs: config.coerceJsonArgs
|
|
51
|
+
coerceJsonArgs: config.coerceJsonArgs,
|
|
52
|
+
onOutputStrip: config.onOutputStrip
|
|
48
53
|
});
|
|
49
54
|
for (const service of serviceList) {
|
|
50
55
|
for (const mountable of collectTools(service, "AGENT", {
|
|
51
56
|
extend: config.extend,
|
|
52
57
|
flattenUnionInput: config.flattenUnionInput
|
|
53
58
|
})) {
|
|
54
|
-
|
|
55
|
-
throw new Error(`Duplicate agent tool name "${mountable.name}" across mounted services`);
|
|
56
|
-
}
|
|
59
|
+
assertUniqueToolName(mountable.name, Object.hasOwn(tools, mountable.name), "agent tool name");
|
|
57
60
|
tools[mountable.name] = tool({
|
|
58
61
|
description: mountable.method.desc,
|
|
59
62
|
inputSchema: zodSchema(mountable.schema),
|
|
@@ -79,7 +82,7 @@ function listToolNames(services) {
|
|
|
79
82
|
const entries = new Map;
|
|
80
83
|
for (const service of services) {
|
|
81
84
|
for (const transport of TOOL_TRANSPORTS) {
|
|
82
|
-
for (const tool2 of collectTools(service, transport)) {
|
|
85
|
+
for (const tool2 of collectTools(service, transport, { assertNames: false })) {
|
|
83
86
|
const id = `${service.name}\x00${tool2.method.key}`;
|
|
84
87
|
const existing = entries.get(id);
|
|
85
88
|
if (existing) {
|
|
@@ -188,9 +191,7 @@ function throwIfFailures(failures) {
|
|
|
188
191
|
}
|
|
189
192
|
}
|
|
190
193
|
function prepareMcpTool(mountable, policy, logger, failures, seen) {
|
|
191
|
-
|
|
192
|
-
throw new Error(`Duplicate MCP tool name "${mountable.name}" across mounted services`);
|
|
193
|
-
}
|
|
194
|
+
assertUniqueToolName(mountable.name, seen.has(mountable.name), "MCP tool name");
|
|
194
195
|
seen.add(mountable.name);
|
|
195
196
|
if (!(mountable.schema instanceof z.ZodObject)) {
|
|
196
197
|
reportIncompatible(`MCP tool "${mountable.name}" — input must be an object schema; a union, discriminated union or scalar cannot be an MCP tool input (flatten it in the contract, or drop MCP from \`expose\`)`, policy, logger, failures);
|
|
@@ -231,7 +232,8 @@ function mountMcp(mcpServer, services, config = {}) {
|
|
|
231
232
|
hooks: config.hooks,
|
|
232
233
|
lifecycle: config.lifecycle,
|
|
233
234
|
errorHint: config.errorHint,
|
|
234
|
-
coerceJsonArgs: config.coerceJsonArgs
|
|
235
|
+
coerceJsonArgs: config.coerceJsonArgs,
|
|
236
|
+
onOutputStrip: config.onOutputStrip
|
|
235
237
|
});
|
|
236
238
|
const seen = new Set;
|
|
237
239
|
const failures = [];
|
|
@@ -283,7 +285,7 @@ function buildMcpServer(config, auth) {
|
|
|
283
285
|
flattenUnionInput: config.flattenUnionInput,
|
|
284
286
|
errorHint: config.errorHint
|
|
285
287
|
});
|
|
286
|
-
config.nativeTools?.(server);
|
|
288
|
+
config.nativeTools?.(server, auth);
|
|
287
289
|
for (const resource of config.resources ?? []) {
|
|
288
290
|
mountMcpResource(server, resource);
|
|
289
291
|
}
|
|
@@ -490,7 +492,6 @@ async function createStdioMcpServer(config) {
|
|
|
490
492
|
return server;
|
|
491
493
|
}
|
|
492
494
|
// src/tools/mount-download.ts
|
|
493
|
-
import { mkdir, writeFile } from "node:fs/promises";
|
|
494
495
|
import { basename, extname, join } from "node:path";
|
|
495
496
|
|
|
496
497
|
// src/tools/native-result.ts
|
|
@@ -531,7 +532,9 @@ function baseNameFor(url) {
|
|
|
531
532
|
}
|
|
532
533
|
}
|
|
533
534
|
function mountDownload(server, config) {
|
|
534
|
-
|
|
535
|
+
const name = config.name ?? "download";
|
|
536
|
+
assertToolName(name, "<native>", "download");
|
|
537
|
+
server.registerTool(name, { description: config.description, inputSchema: config.inputSchema }, async (rawArgs) => {
|
|
535
538
|
const args = isRecord(rawArgs) ? rawArgs : {};
|
|
536
539
|
try {
|
|
537
540
|
const url = await config.resolveUrl(args);
|
|
@@ -551,9 +554,8 @@ function mountDownload(server, config) {
|
|
|
551
554
|
if (!buffer)
|
|
552
555
|
return textResult(`Download failed: file exceeds the ${max}-byte cap`, true);
|
|
553
556
|
const dir = config.dirFromArgs?.(args) ?? config.defaultDir;
|
|
554
|
-
await mkdir(dir, { recursive: true });
|
|
555
557
|
const filePath = join(dir, `${baseNameFor(url)}${extensionFor(url, mimeType)}`);
|
|
556
|
-
await
|
|
558
|
+
await writeDownload(dir, filePath, buffer);
|
|
557
559
|
return textResult(JSON.stringify({ path: filePath, size: buffer.length, mimeType }, null, 2));
|
|
558
560
|
} catch (err) {
|
|
559
561
|
return textResult(`Download failed: ${err instanceof Error ? err.message : String(err)}`, true);
|
|
@@ -563,7 +565,9 @@ function mountDownload(server, config) {
|
|
|
563
565
|
// src/tools/mount-upload.ts
|
|
564
566
|
import { z as z2 } from "zod";
|
|
565
567
|
function mountUpload(server, config) {
|
|
566
|
-
|
|
568
|
+
const name = config.name ?? "upload";
|
|
569
|
+
assertToolName(name, "<native>", "upload");
|
|
570
|
+
server.registerTool(name, {
|
|
567
571
|
description: config.description,
|
|
568
572
|
inputSchema: { path: z2.string().describe("Path to a local file on this machine") }
|
|
569
573
|
}, async (rawArgs) => {
|
|
@@ -581,7 +585,9 @@ function mountUpload(server, config) {
|
|
|
581
585
|
}
|
|
582
586
|
// src/tools/mount-wait.ts
|
|
583
587
|
function mountWait(server, config) {
|
|
584
|
-
|
|
588
|
+
const name = config.name ?? "wait";
|
|
589
|
+
assertToolName(name, "<native>", "wait");
|
|
590
|
+
server.registerTool(name, { description: config.description, inputSchema: config.inputSchema }, async (rawArgs) => {
|
|
585
591
|
const args = isRecord(rawArgs) ? rawArgs : {};
|
|
586
592
|
try {
|
|
587
593
|
const { state, timedOut } = await pollUntil({
|
|
@@ -870,6 +876,25 @@ function mountOAuthProvider(config) {
|
|
|
870
876
|
};
|
|
871
877
|
return [metadataRoute, registerRoute, authorizeRoute, tokenRoute];
|
|
872
878
|
}
|
|
879
|
+
// src/browser/client-multipart.ts
|
|
880
|
+
function isFileDescriptor(value) {
|
|
881
|
+
return typeof value === "object" && value !== null && !(value instanceof Blob) && "uri" in value && typeof value.uri === "string" && "name" in value && typeof value.name === "string" && "type" in value && typeof value.type === "string";
|
|
882
|
+
}
|
|
883
|
+
function isMultipartFile(value) {
|
|
884
|
+
return value instanceof Blob || isFileDescriptor(value);
|
|
885
|
+
}
|
|
886
|
+
function appendMultipartFile(form, field, file) {
|
|
887
|
+
const sink = form;
|
|
888
|
+
sink.append(field, file);
|
|
889
|
+
}
|
|
890
|
+
function appendFormFields(formData, values, skipKeys) {
|
|
891
|
+
for (const [key, value] of Object.entries(values)) {
|
|
892
|
+
if (skipKeys.has(key) || value === undefined || value === null)
|
|
893
|
+
continue;
|
|
894
|
+
formData.append(key, typeof value === "string" ? value : JSON.stringify(value));
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
|
|
873
898
|
// src/browser/http.ts
|
|
874
899
|
import ky, { isHTTPError } from "ky";
|
|
875
900
|
class ApiError extends Error {
|
|
@@ -904,10 +929,15 @@ function parseApiErrorBody(body) {
|
|
|
904
929
|
}
|
|
905
930
|
|
|
906
931
|
// src/browser/client.ts
|
|
907
|
-
function withTimeout(options,
|
|
908
|
-
|
|
932
|
+
function withTimeout(options, endpoint) {
|
|
933
|
+
const responseType = endpoint.rawResponse ? "response" : undefined;
|
|
934
|
+
if (endpoint.timeout === undefined && responseType === undefined)
|
|
909
935
|
return options;
|
|
910
|
-
return {
|
|
936
|
+
return {
|
|
937
|
+
...options,
|
|
938
|
+
...endpoint.timeout !== undefined && { timeout: endpoint.timeout },
|
|
939
|
+
...responseType && { responseType }
|
|
940
|
+
};
|
|
911
941
|
}
|
|
912
942
|
function withOutput(endpoint, result) {
|
|
913
943
|
const schema = endpoint.output;
|
|
@@ -984,15 +1014,15 @@ function createHttpMethod(endpoint, prefix, client, config) {
|
|
|
984
1014
|
const formData = new FormData;
|
|
985
1015
|
appendMultipartFile(formData, endpoint.multipart, file);
|
|
986
1016
|
appendFormFields(formData, firstArg, new Set([...prefixKeys, endpoint.multipart]));
|
|
987
|
-
return withOutput(endpoint, client[httpMethod](url, formData, withTimeout(undefined, endpoint
|
|
1017
|
+
return withOutput(endpoint, client[httpMethod](url, formData, withTimeout(undefined, endpoint)));
|
|
988
1018
|
}
|
|
989
1019
|
if (isGet) {
|
|
990
1020
|
const params = collectQueryParams(firstArg, prefixKeys, endpoint);
|
|
991
|
-
return withOutput(endpoint, client.get(url, withTimeout(params ? { params } : undefined, endpoint
|
|
1021
|
+
return withOutput(endpoint, client.get(url, withTimeout(params ? { params } : undefined, endpoint)));
|
|
992
1022
|
}
|
|
993
1023
|
if (httpMethod === "delete") {
|
|
994
1024
|
const params = collectQueryParams(firstArg, prefixKeys, endpoint);
|
|
995
|
-
return withOutput(endpoint, client.delete(url, withTimeout(params ? { params } : undefined, endpoint
|
|
1025
|
+
return withOutput(endpoint, client.delete(url, withTimeout(params ? { params } : undefined, endpoint)));
|
|
996
1026
|
}
|
|
997
1027
|
const payload = {};
|
|
998
1028
|
for (const [key, value] of Object.entries(firstArg)) {
|
|
@@ -1000,7 +1030,7 @@ function createHttpMethod(endpoint, prefix, client, config) {
|
|
|
1000
1030
|
payload[key] = value;
|
|
1001
1031
|
}
|
|
1002
1032
|
}
|
|
1003
|
-
return withOutput(endpoint, client[httpMethod](url, Object.keys(payload).length > 0 ? payload : undefined, withTimeout(undefined, endpoint
|
|
1033
|
+
return withOutput(endpoint, client[httpMethod](url, Object.keys(payload).length > 0 ? payload : undefined, withTimeout(undefined, endpoint)));
|
|
1004
1034
|
};
|
|
1005
1035
|
}
|
|
1006
1036
|
function createFetchMethod(endpoint, prefix, config, contractConfig) {
|
|
@@ -1056,6 +1086,8 @@ function createFetchMethod(endpoint, prefix, config, contractConfig) {
|
|
|
1056
1086
|
if (!res2.ok) {
|
|
1057
1087
|
await throwForErrorResponse(res2, config, null);
|
|
1058
1088
|
}
|
|
1089
|
+
if (endpoint.rawResponse)
|
|
1090
|
+
return res2;
|
|
1059
1091
|
if (res2.status === 204)
|
|
1060
1092
|
return;
|
|
1061
1093
|
const json3 = await res2.json();
|
|
@@ -1073,29 +1105,14 @@ function createFetchMethod(endpoint, prefix, config, contractConfig) {
|
|
|
1073
1105
|
if (!res.ok) {
|
|
1074
1106
|
await throwForErrorResponse(res, config, { error: res.statusText });
|
|
1075
1107
|
}
|
|
1108
|
+
if (endpoint.rawResponse)
|
|
1109
|
+
return res;
|
|
1076
1110
|
if (res.status === 204)
|
|
1077
1111
|
return;
|
|
1078
1112
|
const json2 = await res.json();
|
|
1079
1113
|
return endpoint.output ? endpoint.output.parse(json2) : json2;
|
|
1080
1114
|
};
|
|
1081
1115
|
}
|
|
1082
|
-
function isFileDescriptor(value) {
|
|
1083
|
-
return typeof value === "object" && value !== null && !(value instanceof Blob) && "uri" in value && typeof value.uri === "string" && "name" in value && typeof value.name === "string" && "type" in value && typeof value.type === "string";
|
|
1084
|
-
}
|
|
1085
|
-
function isMultipartFile(value) {
|
|
1086
|
-
return value instanceof Blob || isFileDescriptor(value);
|
|
1087
|
-
}
|
|
1088
|
-
function appendMultipartFile(form, field, file) {
|
|
1089
|
-
const sink = form;
|
|
1090
|
-
sink.append(field, file);
|
|
1091
|
-
}
|
|
1092
|
-
function appendFormFields(formData, values, skipKeys) {
|
|
1093
|
-
for (const [key, value] of Object.entries(values)) {
|
|
1094
|
-
if (skipKeys.has(key) || value === undefined || value === null)
|
|
1095
|
-
continue;
|
|
1096
|
-
formData.append(key, typeof value === "string" ? value : JSON.stringify(value));
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
1116
|
async function throwForErrorResponse(res, config, fallbackBody) {
|
|
1100
1117
|
const body = await res.json().catch(() => fallbackBody);
|
|
1101
1118
|
config.onError?.(res.status, body);
|
|
@@ -1137,6 +1154,7 @@ function stripParams(args, path, extra) {
|
|
|
1137
1154
|
}
|
|
1138
1155
|
|
|
1139
1156
|
// src/tools/remote.ts
|
|
1157
|
+
var HTTP_ONLY = Object.freeze(["HTTP"]);
|
|
1140
1158
|
function toArgs(ctx) {
|
|
1141
1159
|
const { params, input } = ctx;
|
|
1142
1160
|
return {
|
|
@@ -1156,16 +1174,18 @@ function implementRemote(contract, http, options) {
|
|
|
1156
1174
|
serviceName: contract.meta.prefix,
|
|
1157
1175
|
key,
|
|
1158
1176
|
toolName: "toolName" in endpoint ? endpoint.toolName : undefined,
|
|
1159
|
-
expose: endpoint.expose,
|
|
1177
|
+
expose: endpoint.rawResponse ? HTTP_ONLY : endpoint.expose,
|
|
1160
1178
|
ui: "ui" in endpoint ? endpoint.ui : undefined,
|
|
1161
1179
|
annotations: "annotations" in endpoint ? endpoint.annotations : undefined,
|
|
1162
|
-
meta: endpoint.meta,
|
|
1180
|
+
meta: mergeMeta(contract.meta.meta, endpoint.meta),
|
|
1163
1181
|
scope: endpoint.scope ?? groupScope,
|
|
1164
1182
|
paramsSchema: endpoint.params,
|
|
1165
1183
|
inputSchema: endpoint.input,
|
|
1166
1184
|
outputSchema: endpoint.output,
|
|
1167
1185
|
multipart: endpoint.multipart,
|
|
1168
1186
|
idempotent: endpoint.idempotent,
|
|
1187
|
+
rawResponse: endpoint.rawResponse,
|
|
1188
|
+
contentType: "contentType" in endpoint ? endpoint.contentType : undefined,
|
|
1169
1189
|
handler: async (ctx) => {
|
|
1170
1190
|
const call = client[key];
|
|
1171
1191
|
if (!call) {
|
|
@@ -1236,7 +1256,7 @@ function summarizeTransports(services) {
|
|
|
1236
1256
|
counts.HTTP += 1;
|
|
1237
1257
|
}
|
|
1238
1258
|
for (const transport of TOOL_TRANSPORTS2) {
|
|
1239
|
-
counts[transport] = collectTools(service, transport).length;
|
|
1259
|
+
counts[transport] = collectTools(service, transport, { assertNames: false }).length;
|
|
1240
1260
|
}
|
|
1241
1261
|
for (const transport of Object.keys(counts)) {
|
|
1242
1262
|
totals[transport] += counts[transport];
|