@fractaal/pi-mcp 0.0.0-stage → 0.86.1

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 (76) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/LICENSES/modelcontextprotocol-typescript-sdk.txt +21 -0
  3. package/README.md +135 -2
  4. package/dist/auth-provider.d.ts +15 -0
  5. package/dist/auth-provider.d.ts.map +1 -0
  6. package/dist/auth-provider.js +2 -0
  7. package/dist/auth-provider.js.map +1 -0
  8. package/dist/client.d.ts +89 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +457 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/index.d.ts +9 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +7 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/oauth/callback.d.ts +48 -0
  17. package/dist/oauth/callback.d.ts.map +1 -0
  18. package/dist/oauth/callback.js +115 -0
  19. package/dist/oauth/callback.js.map +1 -0
  20. package/dist/oauth/discovery.d.ts +27 -0
  21. package/dist/oauth/discovery.d.ts.map +1 -0
  22. package/dist/oauth/discovery.js +153 -0
  23. package/dist/oauth/discovery.js.map +1 -0
  24. package/dist/oauth/errors.d.ts +24 -0
  25. package/dist/oauth/errors.d.ts.map +1 -0
  26. package/dist/oauth/errors.js +46 -0
  27. package/dist/oauth/errors.js.map +1 -0
  28. package/dist/oauth/flow.d.ts +98 -0
  29. package/dist/oauth/flow.d.ts.map +1 -0
  30. package/dist/oauth/flow.js +323 -0
  31. package/dist/oauth/flow.js.map +1 -0
  32. package/dist/oauth/index.d.ts +7 -0
  33. package/dist/oauth/index.d.ts.map +1 -0
  34. package/dist/oauth/index.js +6 -0
  35. package/dist/oauth/index.js.map +1 -0
  36. package/dist/oauth/provider.d.ts +62 -0
  37. package/dist/oauth/provider.d.ts.map +1 -0
  38. package/dist/oauth/provider.js +118 -0
  39. package/dist/oauth/provider.js.map +1 -0
  40. package/dist/oauth/types.d.ts +82 -0
  41. package/dist/oauth/types.d.ts.map +1 -0
  42. package/dist/oauth/types.js +109 -0
  43. package/dist/oauth/types.js.map +1 -0
  44. package/dist/protocol/content.d.ts +82 -0
  45. package/dist/protocol/content.d.ts.map +1 -0
  46. package/dist/protocol/content.js +41 -0
  47. package/dist/protocol/content.js.map +1 -0
  48. package/dist/protocol/jsonrpc.d.ts +59 -0
  49. package/dist/protocol/jsonrpc.d.ts.map +1 -0
  50. package/dist/protocol/jsonrpc.js +67 -0
  51. package/dist/protocol/jsonrpc.js.map +1 -0
  52. package/dist/protocol/types.d.ts +123 -0
  53. package/dist/protocol/types.d.ts.map +1 -0
  54. package/dist/protocol/types.js +7 -0
  55. package/dist/protocol/types.js.map +1 -0
  56. package/dist/testing/index.d.ts +2 -0
  57. package/dist/testing/index.d.ts.map +1 -0
  58. package/dist/testing/index.js +2 -0
  59. package/dist/testing/index.js.map +1 -0
  60. package/dist/transports/in-memory.d.ts +19 -0
  61. package/dist/transports/in-memory.d.ts.map +1 -0
  62. package/dist/transports/in-memory.js +50 -0
  63. package/dist/transports/in-memory.js.map +1 -0
  64. package/dist/transports/stdio.d.ts +32 -0
  65. package/dist/transports/stdio.d.ts.map +1 -0
  66. package/dist/transports/stdio.js +201 -0
  67. package/dist/transports/stdio.js.map +1 -0
  68. package/dist/transports/streamable-http.d.ts +96 -0
  69. package/dist/transports/streamable-http.d.ts.map +1 -0
  70. package/dist/transports/streamable-http.js +456 -0
  71. package/dist/transports/streamable-http.js.map +1 -0
  72. package/dist/transports/transport.d.ts +28 -0
  73. package/dist/transports/transport.d.ts.map +1 -0
  74. package/dist/transports/transport.js +38 -0
  75. package/dist/transports/transport.js.map +1 -0
  76. package/package.json +64 -5
package/CHANGELOG.md ADDED
@@ -0,0 +1,56 @@
1
+ # Changelog
2
+
3
+ ## [0.86.1] - 2026-10-06
4
+
5
+ ## [0.86.0] - 2026-10-06
6
+
7
+ ## [1.0.4] - 2026-10-05
8
+
9
+ ### Fixed
10
+
11
+ - Fixed dynamic client registration failing on OpenID Connect authorization servers with `invalid_redirect_uri` for loopback redirect URIs. `registerClient()` now sends `application_type` (MCP SEP-837), derived from `redirect_uris` when `OAuthClientMetadata.application_type` is not set: `native` for loopback hosts and custom schemes, otherwise `web` ([#10493](https://github.com/earendil-works/pi/issues/10493))
12
+
13
+ ## [1.0.3] - 2026-10-05
14
+
15
+ ## [1.0.2] - 2026-10-04
16
+
17
+ ## [1.0.1] - 2026-10-03
18
+
19
+ ### Breaking Changes
20
+
21
+ - `OAuthClientProvider.clientMetadataUrl` is replaced by `clientMetadataDocument(metadata)`, which returns the document URL and its redirect URI per authorization server, or `undefined` to register dynamically. It is called whenever no client information is stored, also when the server does not advertise support, and the document is no longer stored as client information ([#10302](https://github.com/earendil-works/pi/issues/10302))
22
+
23
+ ### Added
24
+
25
+ - `McpOAuthProviderOptions.clientMetadataDocument`, `OAuthCallbackServerOptions.extraPaths`, and a `path` argument for `OAuthCallbackServer.waitForCallback` that rejects responses on other paths ([#10302](https://github.com/earendil-works/pi/issues/10302))
26
+
27
+ ## [1.0.0] - 2026-10-01
28
+
29
+ ### Added
30
+
31
+ - Added an `authorizationServerMetadataUrl` option to `authorizeMcp()` to use a configured authorization server metadata document instead of discovery ([#10172](https://github.com/earendil-works/pi/issues/10172)).
32
+ - Added an `iss` option to `authorizeMcp()`. The authorization code is only exchanged when `iss` names the flow's authorization server, or is absent and the server's metadata does not set `authorization_response_iss_parameter_supported` (RFC 9207).
33
+ - Added `stepUpScope()`, which combines the scopes of an `insufficient_scope` challenge with the scopes granted so far.
34
+
35
+ ### Fixed
36
+
37
+ - Fixed OAuth token and client registration responses with an empty or `null` optional field (such as `"scope": ""`) failing with `Invalid scope` and similar errors; such fields are now treated as absent ([#10266](https://github.com/earendil-works/pi/issues/10266)).
38
+ - Fixed `expires_in: null` in a token response marking the access token as already expired.
39
+ - Fixed invalid URLs in protected resource metadata aborting OAuth discovery instead of falling back to the MCP server's origin.
40
+ - Fixed an empty requested scope, from `scope=""` in a `WWW-Authenticate` challenge or an empty `scopes_supported`, overriding the next scope source.
41
+ - Fixed list pagination failing with a duplicate cursor error when a server ends pagination with `nextCursor: ""` or `null`.
42
+ - Fixed step-up authorization in `adaptOAuthProvider()` requesting only the scopes of the `insufficient_scope` challenge. The new token lost the scopes granted before, so other requests failed with `insufficient_scope` again. Tokens now record their granted scope, which is the requested scope when the token response omits `scope`.
43
+
44
+ ## [0.99.2] - 2026-09-30
45
+
46
+ ### Fixed
47
+
48
+ - Fixed `StreamableHttpTransport` failing every request on Cloudflare Workers with `Illegal invocation` by calling `fetch`, including `UnauthorizedContext.fetch`, without a receiver ([#10188](https://github.com/earendil-works/pi/issues/10188))
49
+
50
+ ## [0.99.1] - 2026-09-29
51
+
52
+ ## [0.99.0] - 2026-09-29
53
+
54
+ ### Added
55
+
56
+ - Added a standalone MCP client with JSON-RPC lifecycle, tool discovery and calls, cancellation, progress, roots, stdio and Streamable HTTP transports, and an in-memory testing transport.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Anthropic, PBC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,136 @@
1
- # Temporary Holding Version
1
+ # @earendil-works/pi-mcp
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ A small, standalone Model Context Protocol client. It does not depend on the official MCP SDK or other pi packages.
4
+
5
+ The package provides a transport-neutral client core, stdio and Streamable HTTP transports, and an in-memory testing transport.
6
+
7
+ ## Usage
8
+
9
+ ```typescript
10
+ import { McpClient, StdioTransport } from "@earendil-works/pi-mcp";
11
+
12
+ const transport = new StdioTransport({
13
+ command: "npx",
14
+ args: ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
15
+ });
16
+ const client = new McpClient({
17
+ name: "my-client",
18
+ version: "1.0.0",
19
+ roots: [{ uri: "file:///workspace", name: "workspace" }],
20
+ });
21
+
22
+ await client.connect(transport);
23
+ const tools = await client.listTools();
24
+ const result = await client.callTool("search", { query: "MCP" });
25
+ await client.close();
26
+ ```
27
+
28
+ For a remote server, use `new StreamableHttpTransport({ url, headers })`. Fetch can be injected for proxying or custom networking.
29
+
30
+ ### Tools for an LLM
31
+
32
+ `toLlmContent(result)` converts a `CallToolResult` to text and image content for a model, in the shape of `@earendil-works/pi-ai`'s `TextContent` and `ImageContent`. Text and images pass through, embedded text and image resources are unwrapped, and audio, resource links, and binary resources become short text placeholders. A result without content blocks but with `structuredContent` becomes its JSON.
33
+
34
+ Wrapping an MCP tool as a `pi-agent-core` `AgentTool`:
35
+
36
+ ```typescript
37
+ import type { AgentTool } from "@earendil-works/pi-agent-core";
38
+ import { toLlmContent } from "@earendil-works/pi-mcp";
39
+ import { Type } from "typebox";
40
+
41
+ const tools: AgentTool[] = (await client.listTools()).map((tool) => ({
42
+ // Providers allow at most 64 characters of [A-Za-z0-9_-].
43
+ name: `mcp_${tool.name}`.replace(/[^A-Za-z0-9_-]/g, "_").slice(0, 64),
44
+ label: tool.title ?? tool.name,
45
+ description: tool.description ?? tool.name,
46
+ // Providers require an object schema, and some reject one without `properties`.
47
+ parameters: Type.Unsafe({ ...tool.inputSchema, type: "object", properties: tool.inputSchema.properties ?? {} }),
48
+ execute: async (_toolCallId, params, signal) => {
49
+ const result = await client.callTool(tool.name, params as Record<string, unknown>, { signal });
50
+ // MCP reports tool failures in the result instead of as a protocol error.
51
+ return { content: toLlmContent(result), details: undefined, isError: result.isError === true };
52
+ },
53
+ }));
54
+ ```
55
+
56
+ The [mcp-codemode example](https://github.com/earendil-works/pi/tree/main/packages/agent/examples/mcp-codemode) also forwards progress, passes `structuredContent` through, and lets `@earendil-works/pi-codemode` scripts call the tools.
57
+
58
+ ### OAuth
59
+
60
+ `@earendil-works/pi-mcp/oauth` provides the MCP OAuth client subset without depending on the official SDK:
61
+
62
+ ```typescript
63
+ import { McpClient, StreamableHttpTransport } from "@earendil-works/pi-mcp";
64
+ import {
65
+ adaptOAuthProvider,
66
+ authorizeMcp,
67
+ McpOAuthAuthorizationRequiredError,
68
+ McpOAuthProvider,
69
+ OAuthCallbackServer,
70
+ } from "@earendil-works/pi-mcp/oauth";
71
+
72
+ const serverUrl = "https://mcp.example.com/mcp";
73
+ const callback = await OAuthCallbackServer.listen();
74
+ let authorizationUrl: URL | undefined;
75
+ const oauth = new McpOAuthProvider({
76
+ serverUrl,
77
+ redirectUrl: callback.redirectUrl,
78
+ clientMetadata: { client_name: "My MCP client" },
79
+ onRedirect: (url) => {
80
+ authorizationUrl = url;
81
+ },
82
+ });
83
+
84
+ const connect = () => {
85
+ const client = new McpClient({ name: "my-client", version: "1.0.0" });
86
+ return {
87
+ client,
88
+ connected: client.connect(
89
+ new StreamableHttpTransport({ url: serverUrl, authProvider: adaptOAuthProvider(oauth) }),
90
+ ),
91
+ };
92
+ };
93
+
94
+ const first = connect();
95
+ try {
96
+ await first.connected;
97
+ } catch (error) {
98
+ if (!(error instanceof McpOAuthAuthorizationRequiredError)) throw error;
99
+ const state = await oauth.state();
100
+ const result = callback.waitForCallback(state);
101
+ // Open authorizationUrl in the user's browser here.
102
+ const { code } = await result;
103
+ await authorizeMcp(oauth, { serverUrl, authorizationCode: code });
104
+ }
105
+
106
+ const { client, connected } = connect();
107
+ await connected;
108
+ ```
109
+
110
+ Inject `McpOAuthStateStore` into `McpOAuthProvider` for durable credentials. The package does not open a browser or choose where credentials are stored.
111
+
112
+ The OAuth implementation is adapted from the MIT-licensed Model Context Protocol TypeScript SDK v1.29.0. Its license is included under `LICENSES/`.
113
+
114
+ An MCP transport owns framing and I/O. It delivers individual JSON-RPC messages to `McpClient`; the client owns request correlation, initialization, timeouts, cancellation, server requests, and protocol-level helpers.
115
+
116
+ ## Supported protocol surface
117
+
118
+ - MCP protocol version `2025-11-25`, accepting servers that negotiate `2025-06-18`, `2025-03-26`, or `2024-11-05`
119
+ - initialization and `notifications/initialized`
120
+ - ping
121
+ - paginated `tools/list`
122
+ - `tools/call`, including structured content
123
+ - progress notifications and timeout renewal
124
+ - request cancellation
125
+ - Streamable HTTP sessions, the server-to-client GET stream with reconnection, and resumption of dropped response streams with `Last-Event-ID`
126
+ - stdio shutdown per the spec (close stdin, then SIGTERM, then SIGKILL), applied to the server's whole process group
127
+ - server `ping` and `roots/list` requests
128
+ - logging and tool-list-change notifications through the generic notification API
129
+ - OAuth protected-resource and authorization-server discovery
130
+ - PKCE authorization code flow, dynamic client registration, token refresh (one refresh shared by concurrent 401s), and step-up authorization for `insufficient_scope`
131
+
132
+ Batch JSON-RPC messages, legacy HTTP+SSE, servers, sampling, and tasks are outside the initial core.
133
+
134
+ ## Testing
135
+
136
+ `@earendil-works/pi-mcp/testing` exports `createInMemoryTransportPair()` for client and adapter tests.
@@ -0,0 +1,15 @@
1
+ export type McpFetch = (input: string | URL, init?: RequestInit) => Promise<Response>;
2
+ export interface UnauthorizedContext {
3
+ /** The 401 response, or a 403 response whose challenge reports `insufficient_scope`. */
4
+ response: Response;
5
+ serverUrl: URL;
6
+ fetch: McpFetch;
7
+ /** Access token the rejected request carried, if any. A different current token means another request already refreshed it. */
8
+ token?: string;
9
+ }
10
+ /** Supplies bearer tokens to an MCP HTTP transport and may refresh them after a 401 response. */
11
+ export interface AuthProvider {
12
+ token(): Promise<string | undefined>;
13
+ onUnauthorized?(context: UnauthorizedContext): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=auth-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../src/auth-provider.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEtF,MAAM,WAAW,mBAAmB;IACnC,wFAAwF;IACxF,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,QAAQ,CAAC;IAChB,+HAA+H;IAC/H,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC5B,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACrC,cAAc,CAAC,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../src/auth-provider.ts"],"names":[],"mappings":"","sourcesContent":["export type McpFetch = (input: string | URL, init?: RequestInit) => Promise<Response>;\n\nexport interface UnauthorizedContext {\n\t/** The 401 response, or a 403 response whose challenge reports `insufficient_scope`. */\n\tresponse: Response;\n\tserverUrl: URL;\n\tfetch: McpFetch;\n\t/** Access token the rejected request carried, if any. A different current token means another request already refreshed it. */\n\ttoken?: string;\n}\n\n/** Supplies bearer tokens to an MCP HTTP transport and may refresh them after a 401 response. */\nexport interface AuthProvider {\n\ttoken(): Promise<string | undefined>;\n\tonUnauthorized?(context: UnauthorizedContext): Promise<void>;\n}\n"]}
@@ -0,0 +1,89 @@
1
+ import type { CallToolResult } from "./protocol/content.ts";
2
+ import { type ClientCapabilities, type Implementation, type InitializeResult, type ListResourcesResult, type ListResourceTemplatesResult, type ProgressNotification, type ReadResourceResult, type Resource, type ResourceTemplate, type Root, type ServerCapabilities, type SupportedProtocolVersion, type Tool } from "./protocol/types.ts";
3
+ import type { McpTransport } from "./transports/transport.ts";
4
+ type ClientState = "idle" | "connecting" | "connected" | "closed";
5
+ type NotificationListener = (params: unknown) => void;
6
+ type ErrorListener = (error: Error) => void;
7
+ type CloseListener = () => void;
8
+ type RequestHandler = (params: unknown, context: {
9
+ signal: AbortSignal;
10
+ }) => unknown | Promise<unknown>;
11
+ export interface McpClientOptions extends Implementation {
12
+ capabilities?: ClientCapabilities;
13
+ protocolVersion?: SupportedProtocolVersion;
14
+ requestTimeoutMs?: number;
15
+ roots?: readonly Root[] | (() => readonly Root[] | Promise<readonly Root[]>);
16
+ }
17
+ export interface McpRequestOptions {
18
+ signal?: AbortSignal;
19
+ timeoutMs?: number;
20
+ onProgress?: (progress: ProgressNotification) => void;
21
+ }
22
+ export declare class McpClient {
23
+ readonly options: Readonly<McpClientOptions>;
24
+ private state;
25
+ private transport;
26
+ private nextRequestId;
27
+ private serverInfoValue;
28
+ private serverCapabilitiesValue;
29
+ private instructionsValue;
30
+ private protocolVersionValue;
31
+ private pending;
32
+ private progressRequests;
33
+ private incoming;
34
+ private requestHandlers;
35
+ private notificationListeners;
36
+ private errorListeners;
37
+ private closeListeners;
38
+ private disposers;
39
+ constructor(options: McpClientOptions);
40
+ get connectionState(): ClientState;
41
+ get serverInfo(): Implementation | undefined;
42
+ get serverCapabilities(): ServerCapabilities | undefined;
43
+ get instructions(): string | undefined;
44
+ get protocolVersion(): string | undefined;
45
+ connect(transport: McpTransport): Promise<InitializeResult>;
46
+ request<Result = unknown>(method: string, params?: Record<string, unknown>, options?: McpRequestOptions): Promise<Result>;
47
+ notify(method: string, params?: Record<string, unknown>): Promise<void>;
48
+ setRequestHandler(method: string, handler: RequestHandler): () => void;
49
+ onNotification(method: string, listener: NotificationListener): () => void;
50
+ onError(listener: ErrorListener): () => void;
51
+ /** Called once when the connection closes, whether the transport dropped or `close()` was called. */
52
+ onClose(listener: CloseListener): () => void;
53
+ ping(options?: McpRequestOptions): Promise<void>;
54
+ listTools(options?: McpRequestOptions): Promise<Tool[]>;
55
+ /** Every resource, following `nextCursor` through all pages. */
56
+ listResources(options?: McpRequestOptions): Promise<Resource[]>;
57
+ /** One page of resources, starting at `cursor`. */
58
+ listResourcesPage(cursor?: string, options?: McpRequestOptions): Promise<ListResourcesResult>;
59
+ /** Every resource template, following `nextCursor` through all pages. */
60
+ listResourceTemplates(options?: McpRequestOptions): Promise<ResourceTemplate[]>;
61
+ /** One page of resource templates, starting at `cursor`. */
62
+ listResourceTemplatesPage(cursor?: string, options?: McpRequestOptions): Promise<ListResourceTemplatesResult>;
63
+ readResource(uri: string, options?: McpRequestOptions): Promise<ReadResourceResult>;
64
+ private listPage;
65
+ /** Every item of a paginated list method. */
66
+ private listAll;
67
+ callTool(name: string, args?: Record<string, unknown>, options?: McpRequestOptions): Promise<CallToolResult>;
68
+ close(): Promise<void>;
69
+ private requestInternal;
70
+ private notifyInternal;
71
+ private requireTransport;
72
+ private handleMessage;
73
+ private handleResponse;
74
+ private handleRequest;
75
+ private handleNotification;
76
+ private handleProgress;
77
+ private handleCancelled;
78
+ private armTimeout;
79
+ private cancelPending;
80
+ private removePending;
81
+ private rejectPending;
82
+ private handleTransportClose;
83
+ /** Idempotent: rejects in-flight requests, aborts server requests we are serving, and flips the state. */
84
+ private markClosed;
85
+ private emitError;
86
+ private disposeTransportListeners;
87
+ }
88
+ export {};
89
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAkB5D,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAErB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,IAAI,EACT,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAC7B,KAAK,IAAI,EACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,KAAK,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;AAClE,KAAK,oBAAoB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AACtD,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAC5C,KAAK,aAAa,GAAG,MAAM,IAAI,CAAC;AAChC,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAExG,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACvD,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,GAAG,CAAC,MAAM,SAAS,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACtD;AA+FD,qBAAa,SAAS;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,uBAAuB,CAAiC;IAChE,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,qBAAqB,CAAgD;IAC7E,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,SAAS,CAAsB;IAEvC,YAAY,OAAO,EAAE,gBAAgB,EASpC;IAED,IAAI,eAAe,IAAI,WAAW,CAEjC;IAED,IAAI,UAAU,IAAI,cAAc,GAAG,SAAS,CAE3C;IAED,IAAI,kBAAkB,IAAI,kBAAkB,GAAG,SAAS,CAEvD;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,IAAI,eAAe,IAAI,MAAM,GAAG,SAAS,CAExC;IAEK,OAAO,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8ChE;IAED,OAAO,CAAC,MAAM,GAAG,OAAO,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAEjB;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;IAED,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,IAAI,CAKrE;IAED,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAQzE;IAED,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAG3C;IAED,qGAAqG;IACrG,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAG3C;IAEK,IAAI,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzD;IAEK,SAAS,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAEhE;IAED,gEAAgE;IAC1D,aAAa,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAExE;IAED,mDAAmD;IAC7C,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAGtG;IAED,yEAAyE;IACnE,qBAAqB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAQxF;IAED,4DAA4D;IACtD,yBAAyB,CAC9B,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,2BAA2B,CAAC,CAStC;IAEK,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE5F;YAEa,QAAQ;IAetB,6CAA6C;YAC/B,OAAO;IAqBf,QAAQ,CACb,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAIzB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAM3B;YAEa,eAAe;YA+Cf,cAAc;IAY5B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,cAAc;YAWR,aAAa;IAgC3B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,oBAAoB;IAI5B,0GAA0G;IAC1G,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,yBAAyB;CAGjC"}