stitchkit 0.0.1 → 0.1.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 (113) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +373 -4
  3. package/dist/browser/client.d.ts +30 -0
  4. package/dist/browser/client.d.ts.map +1 -0
  5. package/dist/browser/http.d.ts +77 -0
  6. package/dist/browser/http.d.ts.map +1 -0
  7. package/dist/browser/socket-io.d.ts +69 -0
  8. package/dist/browser/socket-io.d.ts.map +1 -0
  9. package/dist/browser/stream.d.ts +2 -0
  10. package/dist/browser/stream.d.ts.map +1 -0
  11. package/dist/contract/define.d.ts +94 -0
  12. package/dist/contract/define.d.ts.map +1 -0
  13. package/dist/contract/errors.d.ts +46 -0
  14. package/dist/contract/errors.d.ts.map +1 -0
  15. package/dist/contract/index.d.ts +4 -0
  16. package/dist/contract/index.d.ts.map +1 -0
  17. package/dist/contract/index.js +26 -0
  18. package/dist/contract/pagination.d.ts +19 -0
  19. package/dist/contract/pagination.d.ts.map +1 -0
  20. package/dist/index-5sxnvwb1.js +368 -0
  21. package/dist/index-7wfkbvss.js +92 -0
  22. package/dist/index-809wc1tt.js +18 -0
  23. package/dist/index-gfzn1n4n.js +29 -0
  24. package/dist/index-ke4mx4ea.js +38 -0
  25. package/dist/index-n7bmdwmz.js +68 -0
  26. package/dist/index.d.ts +7 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +111 -0
  29. package/dist/internal/errors.d.ts +5 -0
  30. package/dist/internal/errors.d.ts.map +1 -0
  31. package/dist/internal/typed.d.ts +9 -0
  32. package/dist/internal/typed.d.ts.map +1 -0
  33. package/dist/observability/audit.d.ts +32 -0
  34. package/dist/observability/audit.d.ts.map +1 -0
  35. package/dist/observability/context.d.ts +60 -0
  36. package/dist/observability/context.d.ts.map +1 -0
  37. package/dist/observability/event.d.ts +49 -0
  38. package/dist/observability/event.d.ts.map +1 -0
  39. package/dist/observability/index.d.ts +14 -0
  40. package/dist/observability/index.d.ts.map +1 -0
  41. package/dist/observability/index.js +266 -0
  42. package/dist/observability/sanitize.d.ts +42 -0
  43. package/dist/observability/sanitize.d.ts.map +1 -0
  44. package/dist/observability/trace.d.ts +42 -0
  45. package/dist/observability/trace.d.ts.map +1 -0
  46. package/dist/react/cache-bridge.d.ts +53 -0
  47. package/dist/react/cache-bridge.d.ts.map +1 -0
  48. package/dist/react/cursor-query.d.ts +37 -0
  49. package/dist/react/cursor-query.d.ts.map +1 -0
  50. package/dist/react.d.ts +3 -0
  51. package/dist/react.d.ts.map +1 -0
  52. package/dist/react.js +52 -0
  53. package/dist/server/cache.d.ts +15 -0
  54. package/dist/server/cache.d.ts.map +1 -0
  55. package/dist/server/context.d.ts +9 -0
  56. package/dist/server/context.d.ts.map +1 -0
  57. package/dist/server/create.d.ts +4 -0
  58. package/dist/server/create.d.ts.map +1 -0
  59. package/dist/server/event-bus.d.ts +24 -0
  60. package/dist/server/event-bus.d.ts.map +1 -0
  61. package/dist/server/implement.d.ts +16 -0
  62. package/dist/server/implement.d.ts.map +1 -0
  63. package/dist/server/index.d.ts +17 -0
  64. package/dist/server/index.d.ts.map +1 -0
  65. package/dist/server/index.js +965 -0
  66. package/dist/server/logger.d.ts +21 -0
  67. package/dist/server/logger.d.ts.map +1 -0
  68. package/dist/server/middleware/auth.d.ts +50 -0
  69. package/dist/server/middleware/auth.d.ts.map +1 -0
  70. package/dist/server/middleware/cookies.d.ts +34 -0
  71. package/dist/server/middleware/cookies.d.ts.map +1 -0
  72. package/dist/server/middleware/cors.d.ts +9 -0
  73. package/dist/server/middleware/cors.d.ts.map +1 -0
  74. package/dist/server/multipart.d.ts +14 -0
  75. package/dist/server/multipart.d.ts.map +1 -0
  76. package/dist/server/rate-limit.d.ts +17 -0
  77. package/dist/server/rate-limit.d.ts.map +1 -0
  78. package/dist/server/request.d.ts +22 -0
  79. package/dist/server/request.d.ts.map +1 -0
  80. package/dist/server/router.d.ts +42 -0
  81. package/dist/server/router.d.ts.map +1 -0
  82. package/dist/server/socket-io.d.ts +42 -0
  83. package/dist/server/socket-io.d.ts.map +1 -0
  84. package/dist/server/stream.d.ts +18 -0
  85. package/dist/server/stream.d.ts.map +1 -0
  86. package/dist/server/swept-map.d.ts +22 -0
  87. package/dist/server/swept-map.d.ts.map +1 -0
  88. package/dist/server/types.d.ts +124 -0
  89. package/dist/server/types.d.ts.map +1 -0
  90. package/dist/tools/agent.d.ts +14 -0
  91. package/dist/tools/agent.d.ts.map +1 -0
  92. package/dist/tools/execute.d.ts +21 -0
  93. package/dist/tools/execute.d.ts.map +1 -0
  94. package/dist/tools/mcp-handler.d.ts +21 -0
  95. package/dist/tools/mcp-handler.d.ts.map +1 -0
  96. package/dist/tools/mcp-stdio.d.ts +25 -0
  97. package/dist/tools/mcp-stdio.d.ts.map +1 -0
  98. package/dist/tools/mcp.d.ts +42 -0
  99. package/dist/tools/mcp.d.ts.map +1 -0
  100. package/dist/tools/mount.d.ts +61 -0
  101. package/dist/tools/mount.d.ts.map +1 -0
  102. package/dist/tools/names.d.ts +2 -0
  103. package/dist/tools/names.d.ts.map +1 -0
  104. package/dist/tools/remote.d.ts +22 -0
  105. package/dist/tools/remote.d.ts.map +1 -0
  106. package/dist/tools/schema.d.ts +4 -0
  107. package/dist/tools/schema.d.ts.map +1 -0
  108. package/dist/tools/view-file.d.ts +57 -0
  109. package/dist/tools/view-file.d.ts.map +1 -0
  110. package/dist/tools.d.ts +8 -0
  111. package/dist/tools.d.ts.map +1 -0
  112. package/dist/tools.js +654 -0
  113. package/package.json +136 -4
@@ -0,0 +1,42 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServiceDef } from '../server/types';
3
+ import type { ToolCallHooks } from './execute';
4
+ import { type ToolExtend } from './mount';
5
+ export interface McpMountConfig {
6
+ context?: Record<string, unknown>;
7
+ hooks?: ToolCallHooks;
8
+ extend?: ToolExtend;
9
+ }
10
+ export declare function mountMcp(mcpServer: McpServer, services: ServiceDef | ServiceDef[], config?: McpMountConfig): void;
11
+ /**
12
+ * Transport-neutral build config for an MCP server — everything needed to turn
13
+ * contract services into a live `McpServer`, minus how the identity is
14
+ * resolved. `createMcpHandler` (HTTP) and `createStdioMcpServer` (stdio) each
15
+ * add their own `auth` on top.
16
+ */
17
+ export interface McpServerBuildConfig<TAuth> {
18
+ /** MCP server identity (name + version). */
19
+ serverInfo: {
20
+ name: string;
21
+ version: string;
22
+ };
23
+ /** Contract services exposed as MCP tools — may depend on the identity. */
24
+ services: ServiceDef[] | ((auth: TAuth) => ServiceDef[]);
25
+ /** Context merged into every contract handler (`mountMcp` context). */
26
+ context?: (auth: TAuth) => Record<string, unknown>;
27
+ /** Tool-call lifecycle hooks — `afterToolCall` fires for every result
28
+ * (success and error), so the consuming app can log MCP tool outcomes. */
29
+ hooks?: ToolCallHooks;
30
+ /** Register native (non-contract) MCP tools — receives the `McpServer`
31
+ * directly. For tools returning multimodal content, e.g. `mountViewFile`. */
32
+ nativeTools?: (server: McpServer) => void;
33
+ /** Server instructions — a short (≤2KB) hint to the host on when and how to
34
+ * use these tools. Surfaced to MCP tool-search. */
35
+ instructions?: string;
36
+ }
37
+ /**
38
+ * Build an `McpServer` from contract services for a resolved identity.
39
+ * Transport-agnostic — the shared core behind every MCP transport.
40
+ */
41
+ export declare function buildMcpServer<TAuth>(config: McpServerBuildConfig<TAuth>, auth: TAuth): McpServer;
42
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +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,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AA0B3F,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,wBAAgB,QAAQ,CACtB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,UAAU,GAAG,UAAU,EAAE,EACnC,MAAM,GAAE,cAAmB,GAC1B,IAAI,CA0DN;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CAAC,KAAK;IACzC,4CAA4C;IAC5C,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,2EAA2E;IAC3E,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC,CAAC;IACzD,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD;+EAC2E;IAC3E,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;kFAC8E;IAC9E,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C;wDACoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAClC,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,EACnC,IAAI,EAAE,KAAK,GACV,SAAS,CAWX"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Shared mounting machinery for MCP and agent tools. `mountMcp` and `mountAgent`
3
+ * differ only in their transport SDK — the method walk, the schema merge, the
4
+ * extend handling and the call execution are identical and live here.
5
+ */
6
+ import { z } from 'zod';
7
+ import type { Transport, TransportSource } from '../contract';
8
+ import type { MethodDef, ServiceDef } from '../server/types';
9
+ import { type ToolCallHooks, type ToolResult } from './execute';
10
+ /**
11
+ * Extra arguments folded into a mounted tool's schema — the host supplies them,
12
+ * `resolve` turns them into handler context. Shared by `mountMcp` / `mountAgent`.
13
+ */
14
+ export interface ToolExtend {
15
+ /** Extra Zod fields added to every (matching) tool's input schema. */
16
+ schema: Record<string, z.ZodType>;
17
+ /** Turn the extra arguments into context merged into the handler. */
18
+ resolve: (args: Record<string, unknown>) => Record<string, unknown> | Promise<Record<string, unknown>>;
19
+ /** Limit the extension to specific methods — default: every method. */
20
+ filter?: (service: ServiceDef, method: MethodDef) => boolean;
21
+ }
22
+ /** One contract method resolved for mounting as a tool. */
23
+ export interface MountableTool {
24
+ /** The contract method behind the tool. */
25
+ method: MethodDef<unknown, unknown, unknown>;
26
+ /** Tool name — the `toolName` override, else derived from service + method. */
27
+ name: string;
28
+ /** Merged params + input schema, with the extend fields folded in when they apply. */
29
+ schema: z.ZodObject<z.ZodRawShape>;
30
+ /** Whether `ToolExtend` applies to this method. */
31
+ shouldExtend: boolean;
32
+ }
33
+ /**
34
+ * Walk a service's methods and resolve each one exposed on `transport` to a
35
+ * tool name and schema — the shared front half of `mountMcp` / `mountAgent`.
36
+ */
37
+ export declare function collectTools(service: ServiceDef, transport: Transport, extend: ToolExtend | undefined): MountableTool[];
38
+ /** Per-mount config a tool runner closes over. */
39
+ export interface ToolRunnerConfig {
40
+ /** Transport tag put on every call's context. */
41
+ source: TransportSource;
42
+ /** Extend applied at mount — its arguments are resolved then stripped. */
43
+ extend?: ToolExtend;
44
+ /** Static context merged into every handler. */
45
+ context?: Record<string, unknown>;
46
+ /** Tool-call lifecycle hooks. */
47
+ hooks?: ToolCallHooks;
48
+ }
49
+ /**
50
+ * Build the call executor for a mount — resolve the extend context, strip the
51
+ * extend arguments, execute. The shared back half of `mountMcp` / `mountAgent`.
52
+ */
53
+ export declare function createToolRunner(config: ToolRunnerConfig): (tool: MountableTool, rawArgs: Record<string, unknown>) => Promise<ToolResult>;
54
+ /**
55
+ * Shape a failed `ToolResult` into the `{ error, details?, _hint? }` object
56
+ * both transports return on error.
57
+ */
58
+ export declare function formatToolError(result: Extract<ToolResult, {
59
+ ok: false;
60
+ }>): Record<string, unknown>;
61
+ //# sourceMappingURL=mount.d.ts.map
@@ -0,0 +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,EAAqB,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAInF;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAClC,qEAAqE;IACrE,OAAO,EAAE,CACP,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;IAChE,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,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACnC,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU,GAAG,SAAS,GAC7B,aAAa,EAAE,CAejB;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,iCAAiC;IACjC,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;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,CAkBhF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB"}
@@ -0,0 +1,2 @@
1
+ export declare function toToolName(serviceName: string, methodName: string): string;
2
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/tools/names.ts"],"names":[],"mappings":"AAiBA,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAY1E"}
@@ -0,0 +1,22 @@
1
+ import type { HttpClient } from '../browser/http';
2
+ import type { ContractDef, EndpointDef } from '../contract';
3
+ import type { ServiceDef } from '../server/types';
4
+ export interface ImplementRemoteOptions {
5
+ /**
6
+ * Rewrite a call's arguments before they are forwarded to the remote API.
7
+ * Receives the endpoint key and the merged args, returns the args to send —
8
+ * e.g. to upload a local file referenced in the args and swap in its URL.
9
+ */
10
+ transformArgs?: (endpointKey: string, args: Record<string, unknown>) => Record<string, unknown> | Promise<Record<string, unknown>>;
11
+ }
12
+ /**
13
+ * Bind a contract to a remote HTTP client, producing a `ServiceDef` whose every
14
+ * handler forwards the call to the remote API. The transport twin of
15
+ * `implement`: instead of local business logic, each endpoint proxies to a
16
+ * deployed server.
17
+ *
18
+ * Used to build a thin local MCP / agent server that re-exposes a remote API —
19
+ * `buildMcpServer({ services: contracts.map((c) => implementRemote(c, http)) })`.
20
+ */
21
+ export declare function implementRemote<T extends Record<string, EndpointDef>>(contract: ContractDef<T, string>, http: HttpClient, options?: ImplementRemoteOptions): ServiceDef;
22
+ //# sourceMappingURL=remote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/tools/remote.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE5E,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAc7D,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,CAsCZ"}
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ export declare function withJsonCoercion(schema: z.ZodObject<z.ZodRawShape>): z.ZodObject<z.ZodRawShape>;
3
+ export declare function mergeSchemas(paramsSchema?: z.ZodType<unknown>, inputSchema?: z.ZodType<unknown>): z.ZodObject<z.ZodRawShape>;
4
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GACjC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CA4B5B;AA0DD,wBAAgB,YAAY,CAC1B,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EACjC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAC/B,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAsB5B"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Native MCP `view_file` tool — materialises a media URL/path into MCP content
3
+ * blocks so the model can SEE images and HEAR audio.
4
+ *
5
+ * Native (not contract-based): contract tools return JSON text via
6
+ * `formatMcpResult`; this returns multimodal content (`image` / `audio` blocks).
7
+ *
8
+ * `resolveMedia` is the extractable core — when other tools need inline media
9
+ * it becomes the shared resolver.
10
+ *
11
+ * Inputs are model-controlled, so this tool is guarded: URLs that resolve to a
12
+ * private/internal address are refused (SSRF), local file access is opt-in and
13
+ * sandboxed to a `baseDir`, and downloads are capped before they reach memory.
14
+ */
15
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
16
+ /** An MCP content block — text / image / audio (video cannot be inlined). */
17
+ export type McpMediaContent = {
18
+ type: 'text';
19
+ text: string;
20
+ } | {
21
+ type: 'image';
22
+ data: string;
23
+ mimeType: string;
24
+ } | {
25
+ type: 'audio';
26
+ data: string;
27
+ mimeType: string;
28
+ };
29
+ export interface ViewFileOptions {
30
+ /**
31
+ * Directory that local file paths must resolve within. Omitted → local file
32
+ * access is disabled and only `http(s)` URLs are accepted.
33
+ */
34
+ baseDir?: string;
35
+ /**
36
+ * Allow fetching URLs that resolve to private / loopback / link-local
37
+ * addresses. Default `false` — the SSRF guard. Enable only in a trusted
38
+ * network where the model is allowed to reach internal hosts.
39
+ */
40
+ allowPrivateHosts?: boolean;
41
+ }
42
+ /**
43
+ * Resolve a single media path/URL into MCP content. The extractable core —
44
+ * reusable wherever inline media is needed.
45
+ *
46
+ * - `image/*` / `audio/*` → an inline base64 block — the model sees / hears it;
47
+ * - `video/*` → a text link (MCP has no video block);
48
+ * - anything else, or too large → a text link.
49
+ */
50
+ export declare function resolveMedia(pathOrUrl: string, options?: ViewFileOptions): Promise<McpMediaContent[]>;
51
+ /**
52
+ * Register the native MCP `view_file` tool on a server. Pass to
53
+ * `createMcpHandler` via `nativeTools`. `options` controls the security
54
+ * boundary — see `ViewFileOptions`.
55
+ */
56
+ export declare function mountViewFile(server: McpServer, options?: ViewFileOptions): void;
57
+ //# sourceMappingURL=view-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-file.d.ts","sourceRoot":"","sources":["../../src/tools/view-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,6EAA6E;AAC7E,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AA6HD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,eAAe,EAAE,CAAC,CA+B5B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CA4BpF"}
@@ -0,0 +1,8 @@
1
+ export { type AgentContext, type AgentMountConfig, mountAgent } from './tools/agent';
2
+ export { buildMcpServer, type McpMountConfig, type McpServerBuildConfig, mountMcp, } from './tools/mcp';
3
+ export { createMcpHandler, type McpHandlerConfig } from './tools/mcp-handler';
4
+ export { createStdioMcpServer, type StdioMcpServerConfig } from './tools/mcp-stdio';
5
+ export type { ToolExtend } from './tools/mount';
6
+ export { type ImplementRemoteOptions, implementRemote } from './tools/remote';
7
+ export { type McpMediaContent, mountViewFile, resolveMedia } from './tools/view-file';
8
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACpF,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,sBAAsB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}