stitchkit 0.40.0 → 0.42.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.
Files changed (57) hide show
  1. package/dist/browser/client.d.ts.map +1 -1
  2. package/dist/browser/http.d.ts +1 -1
  3. package/dist/browser/http.d.ts.map +1 -1
  4. package/dist/cli.js +2 -2
  5. package/dist/contract/errors-factory.d.ts +88 -15
  6. package/dist/contract/errors-factory.d.ts.map +1 -1
  7. package/dist/contract/errors.d.ts +4 -4
  8. package/dist/contract/errors.d.ts.map +1 -1
  9. package/dist/contract/index.d.ts +1 -1
  10. package/dist/contract/index.d.ts.map +1 -1
  11. package/dist/contract/index.js +2 -2
  12. package/dist/{index-xax049k6.js → index-11x5dts2.js} +44 -13
  13. package/dist/{index-7rbzbnnf.js → index-181aebw8.js} +10 -15
  14. package/dist/{index-92gs1m5b.js → index-310bfer5.js} +1 -1
  15. package/dist/{index-fyfk537k.js → index-gex6gxhe.js} +25 -5
  16. package/dist/{index-p1x65gk7.js → index-p9vkwns1.js} +11 -13
  17. package/dist/{index-809wc1tt.js → index-s4qsmgwe.js} +4 -1
  18. package/dist/index.js +37 -13
  19. package/dist/internal/errors.d.ts +13 -0
  20. package/dist/internal/errors.d.ts.map +1 -1
  21. package/dist/internal/typed.d.ts +8 -0
  22. package/dist/internal/typed.d.ts.map +1 -1
  23. package/dist/node.js +2 -2
  24. package/dist/observability/index.js +1 -1
  25. package/dist/react.js +1 -1
  26. package/dist/server/create.d.ts.map +1 -1
  27. package/dist/server/error-hook.d.ts +8 -4
  28. package/dist/server/error-hook.d.ts.map +1 -1
  29. package/dist/server/index.js +7 -6
  30. package/dist/tools/agent.d.ts +1 -1
  31. package/dist/tools/agent.d.ts.map +1 -1
  32. package/dist/tools/list-names.d.ts +8 -6
  33. package/dist/tools/list-names.d.ts.map +1 -1
  34. package/dist/tools/manifest.d.ts +13 -5
  35. package/dist/tools/manifest.d.ts.map +1 -1
  36. package/dist/tools/mcp-handler.d.ts +5 -4
  37. package/dist/tools/mcp-handler.d.ts.map +1 -1
  38. package/dist/tools/mcp-stdio.d.ts +3 -2
  39. package/dist/tools/mcp-stdio.d.ts.map +1 -1
  40. package/dist/tools/mcp.d.ts +49 -9
  41. package/dist/tools/mcp.d.ts.map +1 -1
  42. package/dist/tools/native-mcp.d.ts +4 -18
  43. package/dist/tools/native-mcp.d.ts.map +1 -1
  44. package/dist/tools/runtime-tool.d.ts +3 -3
  45. package/dist/tools/runtime-tool.d.ts.map +1 -1
  46. package/dist/tools/surface.d.ts +37 -0
  47. package/dist/tools/surface.d.ts.map +1 -0
  48. package/dist/tools/toolkit.d.ts +4 -4
  49. package/dist/tools/toolkit.d.ts.map +1 -1
  50. package/dist/tools/transports.d.ts +11 -9
  51. package/dist/tools/transports.d.ts.map +1 -1
  52. package/dist/tools/view-file.d.ts +3 -3
  53. package/dist/tools.d.ts +5 -5
  54. package/dist/tools.d.ts.map +1 -1
  55. package/dist/tools.js +320 -165
  56. package/llms-full.txt +310 -53
  57. package/package.json +1 -1
@@ -57,4 +57,17 @@ export declare function validateHandlerOutput(schema: ZodType, data: unknown, on
57
57
  ok: false;
58
58
  message: string;
59
59
  };
60
+ /**
61
+ * Enforce the presence or absence of a contract output before a transport
62
+ * presents it. `null` is JSON data when a schema accepts it; `undefined` never
63
+ * is. Without a schema, nullish returns mean "no result" and any other value is
64
+ * an undeclared response.
65
+ */
66
+ export declare function validateDeclaredOutput(schema: ZodType | undefined, data: unknown, onStripped?: (paths: string[]) => void): {
67
+ ok: true;
68
+ data: unknown;
69
+ } | {
70
+ ok: false;
71
+ message: string;
72
+ };
60
73
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC,wBAAgB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,MAAM,CAMxD;AAED,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,eAAe,EAAE,CAM9D;AAKD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI1D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,MAAM,EAAE,OAAO,GACd,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAgBrD;AA4BD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,OAAO,EACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,GACrC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAe9D"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC,wBAAgB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,MAAM,CAMxD;AAED,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,eAAe,EAAE,CAM9D;AAKD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI1D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,MAAM,EAAE,OAAO,GACd,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAgBrD;AA4BD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,OAAO,EACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,GACrC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAe9D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,IAAI,EAAE,OAAO,EACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,GACrC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAe9D"}
@@ -6,4 +6,12 @@ export declare function isRecord(value: unknown): value is Record<string, unknow
6
6
  export declare function mapObject<TSource extends object, TResult extends {
7
7
  [K in keyof TSource]?: unknown;
8
8
  }>(source: TSource, mapper: <K extends keyof TSource>(key: K, value: TSource[K]) => TResult[K] | undefined): TResult;
9
+ /**
10
+ * Dynamic key-wise factory bridge. Use when runtime construction preserves a
11
+ * mapped type's key/value relation but TypeScript cannot express the dependent
12
+ * callback return. The assertion is intentionally isolated at this boundary.
13
+ */
14
+ export declare function mapObjectTypeBoundary<TSource extends object, TResult extends {
15
+ [K in keyof TSource]?: unknown;
16
+ }>(source: TSource, mapper: (key: keyof TSource, value: TSource[keyof TSource]) => unknown): TResult;
9
17
  //# sourceMappingURL=typed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../../src/internal/typed.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,KAAK,EAAE,CAAC,GACP,KAAK,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAE/C;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,SAAS,CACvB,OAAO,SAAS,MAAM,EACtB,OAAO,SAAS;KAAG,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,OAAO;CAAE,EAElD,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,GACrF,OAAO,CAOT"}
1
+ {"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../../src/internal/typed.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,KAAK,EAAE,CAAC,GACP,KAAK,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAE/C;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,SAAS,CACvB,OAAO,SAAS,MAAM,EACtB,OAAO,SAAS;KAAG,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,OAAO;CAAE,EAElD,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,GACrF,OAAO,CAOT;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,SAAS,MAAM,EACtB,OAAO,SAAS;KAAG,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,OAAO;CAAE,EAElD,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,OAAO,CAAC,KAAK,OAAO,GACrE,OAAO,CAKT"}
package/dist/node.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  createImplement,
4
4
  createSocketIOServer,
5
5
  implement
6
- } from "./index-7rbzbnnf.js";
6
+ } from "./index-181aebw8.js";
7
7
  import"./index-6jypn22c.js";
8
8
  import"./index-x3fcszf8.js";
9
9
  import {
@@ -15,7 +15,7 @@ import {
15
15
  notFound,
16
16
  rateLimited,
17
17
  unauthorized
18
- } from "./index-fyfk537k.js";
18
+ } from "./index-gex6gxhe.js";
19
19
  // src/server/node.ts
20
20
  import { serve } from "srvx";
21
21
  async function serveNode(config) {
@@ -16,7 +16,7 @@ import {
16
16
  setRequestError,
17
17
  setRequestUser,
18
18
  wrapInRequestContext
19
- } from "../index-fyfk537k.js";
19
+ } from "../index-gex6gxhe.js";
20
20
 
21
21
  // src/observability/sanitize.ts
22
22
  var DEFAULT_SENSITIVE_KEYS = /(password|passwd|pwd|secret|token|apikey|api[-_ ]?key|auth|authorization|bearer|session|cookie|init[-_ ]?data|credential|private[-_ ]?key)/i;
package/dist/react.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isRecord
3
- } from "./index-809wc1tt.js";
3
+ } from "./index-s4qsmgwe.js";
4
4
 
5
5
  // src/react/cache-bridge.ts
6
6
  function createCacheBridge(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/server/create.ts"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAA2B,MAAM,SAAS,CAAC;AAEpF,wBAAgB,aAAa,CAAC,OAAO,GAAG,OAAO,EAC7C,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAC7B,YAAY,CAAC,OAAO,CAAC,CAmdvB"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/server/create.ts"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAA2B,MAAM,SAAS,CAAC;AAEpF,wBAAgB,aAAa,CAAC,OAAO,GAAG,OAAO,EAC7C,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAC7B,YAAY,CAAC,OAAO,CAAC,CAocvB"}
@@ -33,7 +33,7 @@
33
33
  */
34
34
  import type { RuntimeContext } from '../contract';
35
35
  import { type StitchErrorCode } from '../contract';
36
- import type { LifecycleHooks } from './types';
36
+ import type { LifecycleHooks, MethodDef } from './types';
37
37
  /** The normalised error handed to `render` — code already remapped. */
38
38
  export interface ResolvedError {
39
39
  /** Wire code — the app code from `codeMap` for a stitch error, else the thrown code. */
@@ -62,9 +62,13 @@ export interface ErrorHookConfig<TWireCode extends string = string> {
62
62
  * in the envelope, which is the ordinary reason to have one. Declaring the
63
63
  * parameter is optional: a one-argument `render` stays assignable.
64
64
  */
65
- render: (info: ResolvedError, ctx: RuntimeContext) => unknown;
66
- /** Observe the raw thrown value before rendering — logging / metrics. */
67
- onError?: (error: unknown, info: ResolvedError, ctx: RuntimeContext) => void;
65
+ render: (info: ResolvedError, ctx: RuntimeContext, endpoint?: MethodDef) => unknown | Promise<unknown>;
66
+ /**
67
+ * Observe the raw thrown value before rendering — logging, metrics or
68
+ * asynchronous request attribution. The matched endpoint is absent for
69
+ * failures that happen before the router resolves an operation.
70
+ */
71
+ onError?: (error: unknown, info: ResolvedError, ctx: RuntimeContext, endpoint?: MethodDef) => unknown | Promise<unknown>;
68
72
  }
69
73
  /** Build an `onError` hook from a code map + envelope renderer. */
70
74
  export declare function createErrorHook<TWireCode extends string = string>(config: ErrorHookConfig<TWireCode>): NonNullable<LifecycleHooks['onError']>;
@@ -1 +1 @@
1
- {"version":3,"file":"error-hook.d.ts","sourceRoot":"","sources":["../../src/server/error-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,oCAAoC;AACpC,MAAM,WAAW,eAAe,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IAChE;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC7C,uDAAuD;IACvD;;;;;OAKG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC;IAC9D,yEAAyE;IACzE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;CAC9E;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAC/D,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,GACjC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAyBxC"}
1
+ {"version":3,"file":"error-hook.d.ts","sourceRoot":"","sources":["../../src/server/error-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzD,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,oCAAoC;AACpC,MAAM,WAAW,eAAe,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IAChE;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC7C,uDAAuD;IACvD;;;;;OAKG;IACH,MAAM,EAAE,CACN,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,cAAc,EACnB,QAAQ,CAAC,EAAE,SAAS,KACjB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,cAAc,EACnB,QAAQ,CAAC,EAAE,SAAS,KACjB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAC/D,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,GACjC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CA0BxC"}
@@ -9,7 +9,7 @@ import {
9
9
  socketIoLane,
10
10
  staticRoute,
11
11
  webSocketLane
12
- } from "../index-7rbzbnnf.js";
12
+ } from "../index-181aebw8.js";
13
13
  import {
14
14
  createAuthHook,
15
15
  createBearerResolver,
@@ -22,7 +22,7 @@ import {
22
22
  signJwt,
23
23
  verifyJwt,
24
24
  verifyPkce
25
- } from "../index-92gs1m5b.js";
25
+ } from "../index-310bfer5.js";
26
26
  import {
27
27
  DEFAULT_CORS_ALLOW_HEADERS,
28
28
  DEFAULT_CORS_EXPOSE_HEADERS,
@@ -59,7 +59,7 @@ import {
59
59
  resolveTraceId,
60
60
  unauthorized,
61
61
  zodIssues
62
- } from "../index-fyfk537k.js";
62
+ } from "../index-gex6gxhe.js";
63
63
  // src/server/bun.ts
64
64
  function createServer(config) {
65
65
  const { routes, websocket, development, bun: bunExtra, port = 3000, hostname } = config;
@@ -140,7 +140,7 @@ function cacheHeaders(maxAge, scope = "public") {
140
140
  }
141
141
  // src/server/error-hook.ts
142
142
  function createErrorHook(config) {
143
- return (ctx, error) => {
143
+ return async (ctx, error, endpoint) => {
144
144
  const appErr = normalizeError(error);
145
145
  const code = config.codeMap && isStitchErrorCode(appErr.code) ? config.codeMap[appErr.code] : appErr.code;
146
146
  const info = {
@@ -150,8 +150,9 @@ function createErrorHook(config) {
150
150
  details: appErr.details,
151
151
  hint: appErr.hint
152
152
  };
153
- config.onError?.(error, info, ctx);
154
- return new Response(JSON.stringify(config.render(info, ctx)), {
153
+ await config.onError?.(error, info, ctx, endpoint);
154
+ const body = await config.render(info, ctx, endpoint);
155
+ return new Response(JSON.stringify(body), {
155
156
  status: info.status,
156
157
  headers: { "content-type": "application/json" }
157
158
  });
@@ -2,7 +2,7 @@ import type { ToolSet } from 'ai';
2
2
  import type { ServiceDef } from '../server/types';
3
3
  import { type ErrorHintFn, type ToolCallHooks, type ToolLifecycle } from './execute';
4
4
  import { type ToolExtend } from './mount';
5
- import { type RuntimeToolDefinition } from './runtime-tool';
5
+ import type { RuntimeToolDefinition } from './runtime-tool';
6
6
  export interface AgentContext {
7
7
  [key: string]: unknown;
8
8
  }
@@ -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;AAE3F,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,gBAAgB,CAAC;AAExB,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;IACxB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACjD;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,UAAU,GAAG,UAAU,EAAE,EACnC,MAAM,GAAE,gBAAqB,GAC5B,OAAO,CAuGT"}
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,EAAqC,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAG5D,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;IACxB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACjD;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,UAAU,GAAG,UAAU,EAAE,EACnC,MAAM,GAAE,gBAAqB,GAC5B,OAAO,CAwET"}
@@ -7,13 +7,15 @@
7
7
  * consumer's build instead. Also the mechanical "what changed" diff when
8
8
  * migrating a service between contract shapes.
9
9
  *
10
- * Built on `collectTools`, the exact resolver `mountMcp` / `mountAgent` /
11
- * `createCli` use the listing can never drift from what actually mounts.
10
+ * Built on the mixed-surface collector used by the mounts the listing cannot
11
+ * drift when pathless runtime tools sit beside contract operations.
12
12
  */
13
13
  import type { Transport } from '../contract';
14
- import type { ServiceDef } from '../server/types';
14
+ import { type ToolSurfaceDefinition } from './surface';
15
15
  /** One mounted tool name and where it comes from. */
16
16
  export interface ToolNameEntry {
17
+ /** Whether the operation comes from a contract or a pathless runtime definition. */
18
+ kind: 'contract' | 'runtime';
17
19
  /** Final tool name — the `toolName` override, else derived from service + method. */
18
20
  name: string;
19
21
  /** Owning service (`ServiceDef.name` — the contract's prefix). */
@@ -24,11 +26,11 @@ export interface ToolNameEntry {
24
26
  transports: Transport[];
25
27
  }
26
28
  /**
27
- * Resolve every tool name the given services expose, sorted by name (then
28
- * service) — a stable shape to snapshot. Multipart and raw-response endpoints
29
+ * Resolve every tool name the surface exposes, sorted by name (then service) —
30
+ * a stable shape to snapshot. Multipart and raw-response endpoints
29
31
  * are absent
30
32
  * (never mounted as tools) and CLI appears only where `expose` opts in,
31
33
  * mirroring the real mounts.
32
34
  */
33
- export declare function listToolNames(services: ServiceDef[]): ToolNameEntry[];
35
+ export declare function listToolNames(surface: ToolSurfaceDefinition): ToolNameEntry[];
34
36
  //# sourceMappingURL=list-names.d.ts.map
@@ -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;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CA2BrE"}
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,EAEL,KAAK,qBAAqB,EAE3B,MAAM,WAAW,CAAC;AAEnB,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,oFAAoF;IACpF,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,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,OAAO,EAAE,qBAAqB,GAAG,aAAa,EAAE,CA6B7E"}
@@ -1,17 +1,25 @@
1
- import type { MountableTool } from './mount';
1
+ import type { CollectToolsConfig } from './mount';
2
+ import type { RuntimeToolTransport } from './runtime-tool';
3
+ import { type ToolSurfaceDefinition } from './surface';
2
4
  export interface ToolManifestEntry {
3
5
  name: string;
4
6
  description: string;
5
7
  inputSchema: Record<string, unknown>;
6
8
  }
9
+ export interface ToolManifestConfig extends ToolSurfaceDefinition {
10
+ /** Model-facing surface whose exposure rules the manifest must mirror. */
11
+ transport: RuntimeToolTransport;
12
+ extend?: CollectToolsConfig['extend'];
13
+ flattenUnionInput?: boolean;
14
+ }
7
15
  /**
8
- * Build a searchable manifest from collected tools name, description and
9
- * JSON Schema for each. Use it to power a `tool_search` native tool: the app
10
- * decides the search algorithm and the unlock mechanism.
16
+ * Build a searchable manifest from the complete contract/runtime surface
17
+ * name, description and JSON Schema for each. Use it to power a `tool_search`
18
+ * tool: the app decides the search algorithm and the unlock mechanism.
11
19
  *
12
20
  * A tool whose schema cannot be represented as JSON Schema still appears —
13
21
  * with an empty `inputSchema` — so it stays discoverable by name / description
14
22
  * rather than crashing the whole manifest.
15
23
  */
16
- export declare function buildToolManifest(tools: MountableTool[]): ToolManifestEntry[];
24
+ export declare function buildToolManifest(config: ToolManifestConfig): ToolManifestEntry[];
17
25
  //# sourceMappingURL=manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/tools/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,iBAAiB,EAAE,CAM7E"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/tools/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,0EAA0E;IAC1E,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,EAAE,CAWjF"}
@@ -1,6 +1,6 @@
1
- import { type McpServerBuildConfig } from './mcp';
1
+ import { type McpServerBuildConfig, type McpSurfaceRegistry } from './mcp';
2
2
  import { type ProtectedResourceConfig } from './oauth-metadata';
3
- export interface McpHandlerConfig<TAuth> extends McpServerBuildConfig<TAuth> {
3
+ export interface McpHttpConfig<TAuth> {
4
4
  /** Resolve an incoming request to an identity. Return `null` → 401. */
5
5
  auth: (req: Request) => TAuth | null | Promise<TAuth | null>;
6
6
  /**
@@ -14,6 +14,7 @@ export interface McpHandlerConfig<TAuth> extends McpServerBuildConfig<TAuth> {
14
14
  * for cross-request progress, server push or resumable SSE sessions. */
15
15
  sessionMode?: McpSessionMode;
16
16
  }
17
+ export type McpHandlerConfig<TAuth, TSurfaces extends McpSurfaceRegistry = McpSurfaceRegistry> = McpServerBuildConfig<TAuth, TSurfaces> & McpHttpConfig<TAuth>;
17
18
  export type McpSessionMode = 'stateful' | 'stateless';
18
19
  /**
19
20
  * Build a Streamable-HTTP MCP request handler (`Request → Response`).
@@ -22,12 +23,12 @@ export type McpSessionMode = 'stateful' | 'stateless';
22
23
  * mode, the SSE event/session stores — so the consuming app never imports the
23
24
  * SDK itself. The app only declares WHAT to expose:
24
25
  * how to authenticate and which contract services. MCP tools come from
25
- * contracts; native multimodal tools attach via `nativeTools`.
26
+ * contracts; multimodal operations are declared as framework `runtimeTools`.
26
27
  *
27
28
  * The server itself is built by the transport-neutral `buildMcpServer` — the
28
29
  * same core used by `createStdioMcpServer`.
29
30
  *
30
31
  * Mount the returned handler in your server's fetch router (e.g. under `/mcp`).
31
32
  */
32
- export declare function createMcpHandler<TAuth>(config: McpHandlerConfig<TAuth>): (req: Request) => Promise<Response>;
33
+ export declare function createMcpHandler<TAuth, const TSurfaces extends McpSurfaceRegistry = McpSurfaceRegistry>(config: McpHandlerConfig<TAuth, TSurfaces>): (req: Request) => Promise<Response>;
33
34
  //# sourceMappingURL=mcp-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-handler.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-handler.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,oBAAoB,EAE1B,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,uBAAuB,EAAyB,MAAM,kBAAkB,CAAC;AAqEvF,MAAM,WAAW,gBAAgB,CAAC,KAAK,CAAE,SAAQ,oBAAoB,CAAC,KAAK,CAAC;IAC1E,uEAAuE;IACvE,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C;6EACyE;IACzE,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;AAoBtD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EACpC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAC9B,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA2HrC"}
1
+ {"version":3,"file":"mcp-handler.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-handler.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EAExB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,uBAAuB,EAAyB,MAAM,kBAAkB,CAAC;AAqEvF,MAAM,WAAW,aAAa,CAAC,KAAK;IAClC,uEAAuE;IACvE,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C;6EACyE;IACzE,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,CAC1B,KAAK,EACL,SAAS,SAAS,kBAAkB,GAAG,kBAAkB,IACvD,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAElE,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;AAoBtD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EACL,KAAK,CAAC,SAAS,SAAS,kBAAkB,GAAG,kBAAkB,EAC/D,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAyJjF"}
@@ -1,14 +1,15 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { type McpServerBuildConfig } from './mcp';
2
+ import { type McpServerBuildConfig, type McpSurfaceRegistry } from './mcp';
3
3
  /**
4
4
  * Config for a stdio MCP server. Unlike the HTTP handler, a stdio server is a
5
5
  * single process serving one client — identity is resolved ONCE at startup
6
6
  * (from an env var / CLI arg), not per request.
7
7
  */
8
- export interface StdioMcpServerConfig<TAuth> extends McpServerBuildConfig<TAuth> {
8
+ export interface StdioAuthConfig<TAuth> {
9
9
  /** Identity for the single stdio session — a value or a promise of one. */
10
10
  auth: TAuth | Promise<TAuth>;
11
11
  }
12
+ export type StdioMcpServerConfig<TAuth, TSurfaces extends McpSurfaceRegistry = McpSurfaceRegistry> = McpServerBuildConfig<TAuth, TSurfaces> & StdioAuthConfig<TAuth>;
12
13
  /**
13
14
  * Build an MCP server and connect it over stdio — the server runs as a
14
15
  * subprocess of the MCP client, on the client's machine, so it can reach the
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-stdio.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-stdio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CAAC,KAAK,CAAE,SAAQ,oBAAoB,CAAC,KAAK,CAAC;IAC9E,2EAA2E;IAC3E,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAC9C,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAClC,OAAO,CAAC,SAAS,CAAC,CAKpB"}
1
+ {"version":3,"file":"mcp-stdio.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-stdio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAkB,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3F;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK;IACpC,2EAA2E;IAC3E,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,oBAAoB,CAC9B,KAAK,EACL,SAAS,SAAS,kBAAkB,GAAG,kBAAkB,IACvD,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAC9C,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAClC,OAAO,CAAC,SAAS,CAAC,CAKpB"}
@@ -5,7 +5,8 @@ import { type ErrorHintFn, type ToolCallHooks, type ToolLifecycle } from './exec
5
5
  import type { ToolPresentationSchema } from './flatten';
6
6
  import { type McpResourceDef } from './mcp-app';
7
7
  import { type MountableTool, type ToolExtend } from './mount';
8
- import { type NativeMcpRegistrar } from './native-mcp';
8
+ import type { RuntimeToolDefinition } from './runtime-tool';
9
+ import { type ToolSurfaceDefinition } from './surface';
9
10
  /**
10
11
  * What to do when a tool's schema cannot be advertised on the MCP surface — a
11
12
  * union / discriminated-union input (MCP needs an object), or a construct
@@ -59,6 +60,27 @@ export interface McpSurfacePreparationConfig {
59
60
  export declare function prepareMcpSurface(services: ServiceDef | ServiceDef[], config?: McpSurfacePreparationConfig): PreparedMcpSurface;
60
61
  /** Prepare already-resolved tool operations through the canonical MCP schema profile. */
61
62
  export declare function prepareMcpTools(tools: readonly MountableTool[], config?: McpSurfacePreparationConfig): PreparedMcpSurface;
63
+ /** One immutable, framework-managed MCP surface selected as a unit. */
64
+ export interface McpSurfaceDefinition extends ToolSurfaceDefinition {
65
+ services: ServiceDef[];
66
+ }
67
+ /** A finite set of surfaces known when the server/handler is constructed. */
68
+ export type McpSurfaceRegistry = Record<string, McpSurfaceDefinition>;
69
+ /** A runtime definition paired with its already validated MCP descriptor. */
70
+ export interface PreparedRuntimeMcpTool {
71
+ definition: RuntimeToolDefinition;
72
+ descriptor: PreparedMcpTool;
73
+ }
74
+ /** Complete immutable tool descriptors for one fresh MCP server runtime. */
75
+ export interface PreparedMcpServerSurface {
76
+ contractTools: PreparedMcpSurface;
77
+ runtimeTools: readonly PreparedRuntimeMcpTool[];
78
+ }
79
+ /**
80
+ * Prepare contracts and framework runtime tools as one collision-checked unit.
81
+ * No auth, request context, lifecycle, hooks, SDK server or transport is stored.
82
+ */
83
+ export declare function prepareMcpServerSurface(surface: McpSurfaceDefinition, config?: McpSurfacePreparationConfig): PreparedMcpServerSurface;
62
84
  export interface McpMountConfig {
63
85
  context?: Record<string, unknown>;
64
86
  /** Tool-call observability hooks. */
@@ -101,14 +123,12 @@ export declare function mountPreparedMcp(mcpServer: McpServer, prepared: Prepare
101
123
  * resolved. `createMcpHandler` (HTTP) and `createStdioMcpServer` (stdio) each
102
124
  * add their own `auth` on top.
103
125
  */
104
- export interface McpServerBuildConfig<TAuth> {
126
+ export interface McpServerSharedConfig<TAuth> {
105
127
  /** MCP server identity (name + version). */
106
128
  serverInfo: {
107
129
  name: string;
108
130
  version: string;
109
131
  };
110
- /** Contract services exposed as MCP tools — may depend on the identity. */
111
- services: ServiceDef[] | ((auth: TAuth) => ServiceDef[]);
112
132
  /** Context merged into every contract handler (`mountMcp` context). */
113
133
  context?: (auth: TAuth) => Record<string, unknown>;
114
134
  /** Tool-call observability hooks — `afterToolCall` fires for every result
@@ -128,10 +148,9 @@ export interface McpServerBuildConfig<TAuth> {
128
148
  schemaValidation?: McpSchemaValidationConfig;
129
149
  /** Logger for schema-incompatibility warnings — defaults to `console`. */
130
150
  logger?: StitchLogger;
131
- /** Register native multimodal MCP tools for the resolved identity. Use
132
- * `registerTool` for stitchkit lifecycle/hooks; `rawServer` is an explicit
133
- * unprotected SDK escape hatch. */
134
- nativeTools?: (registrar: NativeMcpRegistrar, auth: TAuth) => void;
151
+ /** Explicit unprotected SDK escape hatch. Prefer `runtimeTools`; registrations
152
+ * here do not receive stitchkit validation, lifecycle, context or hooks. */
153
+ rawTools?: (server: McpServer, auth: TAuth) => void;
135
154
  /** MCP Apps UI resources (`ui://…`) served for tools that declare `ui`. */
136
155
  resources?: McpResourceDef[];
137
156
  /** Server instructions — a short (≤2KB) hint to the host on when and how to
@@ -146,13 +165,34 @@ export interface McpServerBuildConfig<TAuth> {
146
165
  /** Report output keys the contract schema removed — → ADR 0037. */
147
166
  onOutputStrip?: (toolName: string, paths: string[]) => void;
148
167
  }
168
+ export interface DirectMcpSurfaceConfig<TAuth> {
169
+ /** Contract services exposed as MCP tools — may depend on the identity. */
170
+ services: ServiceDef[] | ((auth: TAuth) => ServiceDef[]);
171
+ /** Framework-managed runtime tools — may depend on the identity. */
172
+ runtimeTools?: readonly RuntimeToolDefinition[] | ((auth: TAuth) => readonly RuntimeToolDefinition[]);
173
+ surfaces?: never;
174
+ selectSurface?: never;
175
+ }
176
+ export interface FiniteMcpSurfaceConfig<TAuth, TSurfaces extends McpSurfaceRegistry> {
177
+ /** Finite immutable surfaces, all prepared eagerly exactly once. */
178
+ surfaces: TSurfaces;
179
+ /** Select one declared surface for the resolved identity. */
180
+ selectSurface: (auth: TAuth) => Extract<keyof TSurfaces, string>;
181
+ services?: never;
182
+ runtimeTools?: never;
183
+ }
184
+ /**
185
+ * Transport-neutral MCP build config. Use direct services for a static or truly
186
+ * identity-dynamic surface; use `surfaces` for a bounded role/plan registry.
187
+ */
188
+ export type McpServerBuildConfig<TAuth, TSurfaces extends McpSurfaceRegistry = McpSurfaceRegistry> = McpServerSharedConfig<TAuth> & (DirectMcpSurfaceConfig<TAuth> | FiniteMcpSurfaceConfig<TAuth, TSurfaces>);
149
189
  /**
150
190
  * Build an `McpServer` from contract services for a resolved identity.
151
191
  * Transport-agnostic — the shared core behind every MCP transport.
152
192
  */
153
193
  export declare function buildMcpServer<TAuth>(config: McpServerBuildConfig<TAuth>, auth: TAuth): McpServer;
154
194
  /** Build one fresh server from a deterministic surface prepared by its owner. */
155
- export declare function buildMcpServerFromPrepared<TAuth>(config: McpServerBuildConfig<TAuth>, auth: TAuth, prepared: PreparedMcpSurface): McpServer;
195
+ export declare function buildMcpServerFromPrepared<TAuth>(config: McpServerBuildConfig<TAuth>, auth: TAuth, prepared: PreparedMcpServerSurface): McpServer;
156
196
  /**
157
197
  * Register one MCP Apps UI resource on an `McpServer`. The `read` callback's
158
198
  * HTML is served under the resource `uri` with the apps MIME type; any `ui`
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,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;AACnB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,WAAW,CAAC;AACpE,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,SAAS,CAAC;AASjB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAG3E;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjE,gFAAgF;AAChF,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,oEAAoE;IACpE,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,oEAAoE;IACpE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gEAAgE;IAChE,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,uFAAuF;AACvF,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IACzE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAOD,2DAA2D;AAC3D,KAAK,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAiFpD,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,aAAa,CAAC;IACzB,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,eAAe,EAAE,CAAC;AAE5D,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IAC7C,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAsHD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,UAAU,GAAG,UAAU,EAAE,EACnC,MAAM,GAAE,2BAAgC,GACvC,kBAAkB,CAIpB;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,GAAE,2BAAgC,GACvC,kBAAkB,CAsBpB;AAED,uEAAuE;AACvE,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,6EAA6E;AAC7E,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAEtE,6EAA6E;AAC7E,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,qBAAqB,CAAC;IAClC,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,4EAA4E;AAC5E,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,kBAAkB,CAAC;IAClC,YAAY,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,2BAAgC,GACvC,wBAAwB,CAmC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,qCAAqC;IACrC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IAC7C,8DAA8D;IAC9D,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gEAAgE;IAChE,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,mEAAmE;IACnE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAOzE;AAED,wBAAgB,QAAQ,CACtB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,UAAU,GAAG,UAAU,EAAE,EACnC,MAAM,GAAE,cAAmB,GAC1B,IAAI,CAQN;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,GAAE,cAAmB,GAC1B,IAAI,CA8DN;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB,CAAC,KAAK;IAC1C,4CAA4C;IAC5C,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD;;uEAEmE;IACnE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;0CAEsC;IACtC,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;;;kEAG8D;IAC9D,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IAC7C,0EAA0E;IAC1E,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;iFAC6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IACpD,2EAA2E;IAC3E,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B;wDACoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gEAAgE;IAChE,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,mEAAmE;IACnE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,sBAAsB,CAAC,KAAK;IAC3C,2EAA2E;IAC3E,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC,CAAC;IACzD,oEAAoE;IACpE,YAAY,CAAC,EACT,SAAS,qBAAqB,EAAE,GAChC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,qBAAqB,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB,CAAC,KAAK,EAAE,SAAS,SAAS,kBAAkB;IACjF,oEAAoE;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,6DAA6D;IAC7D,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,SAAS,EAAE,MAAM,CAAC,CAAC;IACjE,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAC9B,KAAK,EACL,SAAS,SAAS,kBAAkB,GAAG,kBAAkB,IACvD,qBAAqB,CAAC,KAAK,CAAC,GAC9B,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAE7E;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAClC,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,EACnC,IAAI,EAAE,KAAK,GACV,SAAS,CA0BX;AAED,iFAAiF;AACjF,wBAAgB,0BAA0B,CAAC,KAAK,EAC9C,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,EACnC,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,wBAAwB,GACjC,SAAS,CAgCX;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAgBlF"}
@@ -1,30 +1,16 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
- import { z } from 'zod';
4
3
  import { executeToolMethod, type ToolCallHooks, type ToolLifecycle } from './execute';
5
- import type { PreparedMcpSurface } from './mcp';
6
- import { type RuntimeToolDefinitionWithOutput, type RuntimeToolDefinitionWithoutOutput, runtimeToolMountable } from './runtime-tool';
7
- export interface NativeMcpRegistrar {
8
- /** Register through stitchkit validation, lifecycle, context and tool hooks. */
9
- registerTool<TInput extends z.ZodObject, TOutput extends z.ZodType>(definition: RuntimeToolDefinitionWithOutput<TInput, TOutput>): void;
10
- registerTool<TInput extends z.ZodObject>(definition: RuntimeToolDefinitionWithoutOutput<TInput>): void;
11
- /**
12
- * Explicit SDK escape hatch. Registrations made here do not run stitchkit
13
- * validation, lifecycle, per-call context or tool hooks.
14
- */
15
- readonly rawServer: McpServer;
16
- }
4
+ import type { PreparedRuntimeMcpTool } from './mcp';
17
5
  interface NativeMcpRuntimeConfig {
18
6
  context?: Record<string, unknown>;
19
7
  hooks?: ToolCallHooks;
20
8
  lifecycle?: ToolLifecycle;
21
9
  coerceJsonArgs?: boolean;
22
10
  onOutputStrip?: (toolName: string, paths: string[]) => void;
23
- takenNames: Set<string>;
24
- prepare: (tool: ReturnType<typeof runtimeToolMountable>) => PreparedMcpSurface;
25
- formatResult: (result: Awaited<ReturnType<typeof executeToolMethod>>, mode: PreparedMcpSurface[number]['outputMode'], toolName: string) => CallToolResult;
11
+ formatResult: (result: Awaited<ReturnType<typeof executeToolMethod>>, mode: PreparedRuntimeMcpTool['descriptor']['outputMode'], toolName: string) => CallToolResult;
26
12
  }
27
- /** Build the protected registrar for one fresh MCP server/runtime. */
28
- export declare function createNativeMcpRegistrar(server: McpServer, config: NativeMcpRuntimeConfig): NativeMcpRegistrar;
13
+ /** Mount immutable runtime-tool descriptors onto one fresh MCP server/runtime. */
14
+ export declare function mountPreparedRuntimeMcp(server: McpServer, tools: readonly PreparedRuntimeMcpTool[], config: NativeMcpRuntimeConfig): void;
29
15
  export {};
30
16
  //# sourceMappingURL=native-mcp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-mcp.d.ts","sourceRoot":"","sources":["../../src/tools/native-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,oCAAoC,CAAC;AAC/F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAGhD,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,kCAAkC,EACvC,oBAAoB,EAErB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,gFAAgF;IAChF,YAAY,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,EAAE,OAAO,SAAS,CAAC,CAAC,OAAO,EAChE,UAAU,EAAE,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3D,IAAI,CAAC;IACR,YAAY,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,EACrC,UAAU,EAAE,kCAAkC,CAAC,MAAM,CAAC,GACrD,IAAI,CAAC;IACR;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,UAAU,sBAAsB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5D,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,KAAK,kBAAkB,CAAC;IAC/E,YAAY,EAAE,CACZ,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,EACrD,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,EAC9C,QAAQ,EAAE,MAAM,KACb,cAAc,CAAC;CACrB;AAMD,sEAAsE;AACtE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,sBAAsB,GAC7B,kBAAkB,CAwFpB"}
1
+ {"version":3,"file":"native-mcp.d.ts","sourceRoot":"","sources":["../../src/tools/native-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,oCAAoC,CAAC;AAI/F,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAGpD,UAAU,sBAAsB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5D,YAAY,EAAE,CACZ,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,EACrD,IAAI,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,EACxD,QAAQ,EAAE,MAAM,KACb,cAAc,CAAC;CACrB;AAMD,kFAAkF;AAClF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,SAAS,sBAAsB,EAAE,EACxC,MAAM,EAAE,sBAAsB,GAC7B,IAAI,CA4EN"}
@@ -17,7 +17,7 @@ export type RuntimeToolHandlerContext<TInput extends ZodObject> = RuntimeContext
17
17
  params: undefined;
18
18
  input: z.output<TInput>;
19
19
  };
20
- export type RuntimeToolOutput<TOutput extends ZodType | undefined> = TOutput extends ZodType ? z.output<TOutput> : unknown;
20
+ export type RuntimeToolOutput<TOutput extends ZodType | undefined> = TOutput extends ZodType ? z.output<TOutput> : undefined;
21
21
  /** MCP-owned fields; validation and error state are always supplied by Stitchkit. */
22
22
  export type RuntimeMcpPresentation = Omit<CallToolResult, 'structuredContent' | 'isError'> & {
23
23
  structuredContent?: never;
@@ -45,7 +45,7 @@ export interface RuntimeToolDefinitionWithOutput<TInput extends ZodObject, TOutp
45
45
  }
46
46
  export interface RuntimeToolDefinitionWithoutOutput<TInput extends ZodObject> extends RuntimeToolDefinitionBase<TInput> {
47
47
  output?: never;
48
- handler: (context: RuntimeToolHandlerContext<TInput>) => unknown | Promise<unknown>;
48
+ handler: (context: RuntimeToolHandlerContext<TInput>) => void | Promise<void>;
49
49
  present?: never;
50
50
  }
51
51
  export type RuntimeToolDefinition = RuntimeToolDefinitionWithOutput<ZodObject, ZodType> | RuntimeToolDefinitionWithoutOutput<ZodObject>;
@@ -54,5 +54,5 @@ export declare function defineRuntimeTool<TInput extends ZodObject, TOutput exte
54
54
  export declare function defineRuntimeTool<TInput extends ZodObject>(definition: RuntimeToolDefinitionWithoutOutput<TInput>): RuntimeToolDefinitionWithoutOutput<TInput>;
55
55
  export declare function runtimeToolSupports(definition: RuntimeToolDefinition, transport: RuntimeToolTransport): boolean;
56
56
  export declare function runtimeToolIdentity(definition: RuntimeToolDefinition): OperationIdentity;
57
- export declare function runtimeToolMountable(definition: RuntimeToolDefinition): MountableTool;
57
+ export declare function runtimeToolMountable(definition: RuntimeToolDefinition, assertName?: boolean): MountableTool;
58
58
  //# sourceMappingURL=runtime-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-tool.d.ts","sourceRoot":"","sources":["../../src/tools/runtime-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-tool.d.ts","sourceRoot":"","sources":["../../src/tools/runtime-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { Transport } from '../contract';
2
+ import type { ServiceDef } from '../server/types';
3
+ import { type CollectToolsConfig, type MountableTool } from './mount';
4
+ import { type RuntimeToolDefinition } from './runtime-tool';
5
+ export type ToolSurfaceTransport = Exclude<Transport, 'HTTP'>;
6
+ /** Contract and pathless runtime operations that form one tool surface. */
7
+ export interface ToolSurfaceDefinition {
8
+ services?: readonly ServiceDef[];
9
+ runtimeTools?: readonly RuntimeToolDefinition[];
10
+ }
11
+ interface CollectedContractTool {
12
+ kind: 'contract';
13
+ service: string;
14
+ action: string;
15
+ mountable: MountableTool;
16
+ }
17
+ interface CollectedRuntimeTool {
18
+ kind: 'runtime';
19
+ service: string;
20
+ action: string;
21
+ mountable: MountableTool;
22
+ definition: RuntimeToolDefinition;
23
+ }
24
+ export type CollectedToolSurfaceEntry = CollectedContractTool | CollectedRuntimeTool;
25
+ export interface CollectToolSurfaceConfig extends CollectToolsConfig {
26
+ surface: ToolSurfaceDefinition;
27
+ transport: ToolSurfaceTransport;
28
+ /** Diagnostics disable this so they can report a broken surface. Default: true. */
29
+ assertUniqueNames?: boolean;
30
+ }
31
+ /**
32
+ * Resolve contracts and runtime definitions in their real mount order through
33
+ * the same name, exposure and presentation-schema machinery as the mounts.
34
+ */
35
+ export declare function collectToolSurface({ surface, transport, assertUniqueNames, ...collectConfig }: CollectToolSurfaceConfig): CollectedToolSurfaceEntry[];
36
+ export {};
37
+ //# sourceMappingURL=surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../../src/tools/surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,kBAAkB,EAAgB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAEpF,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAE9D,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACjD;AAED,UAAU,qBAAqB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,qBAAqB,CAAC;CACnC;AAED,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAErF,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAClE,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,EAAE,oBAAoB,CAAC;IAChC,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAQD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,SAAS,EACT,iBAAwB,EACxB,GAAG,aAAa,EACjB,EAAE,wBAAwB,GAAG,yBAAyB,EAAE,CAwCxD"}