@relaymessenger/mcp 0.1.3-staging.7 → 0.1.3-staging.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,125 +1,110 @@
1
1
  # Relay MCP
2
2
 
3
- `@relaymessenger/mcp` is a local MCP v2 stdio server for current Relay v1
4
- Agent tools. It uses `@modelcontextprotocol/server@2` and delegates every
5
- Relay request and response type to `@relaymessenger/sdk`.
3
+ Local MCP v2 stdio server with exactly two tools:
6
4
 
7
- Source is maintained in
8
- [`RelayMessenger/Relay-SDK`](https://github.com/RelayMessenger/Relay-SDK/tree/staging/packages/mcp)
9
- under `packages/mcp`.
10
-
11
- ## Transport and security status
12
-
13
- **Implemented:** local process-spawned stdio, including MCP v2 modern-era
14
- negotiation and legacy client compatibility.
5
+ | Tool | Use |
6
+ | --- | --- |
7
+ | `search_docs` | Find Relay SDK methods, signatures, parameters, and contract descriptions in the packaged documentation. |
8
+ | `execute` | Run TypeScript or JavaScript against the configured Agent's SDK client. |
15
9
 
16
- **Not implemented:** remote HTTP transport and remote OAuth. The package does
17
- not open a port, publish a web address, or claim to sign anyone in remotely.
18
- Those stay out until Relay has a secure authorization, audience, scope,
19
- session, origin, revocation, and deployment design with hosted tests.
10
+ There is no `talk` tool and no per-operation `relay_*` tool list.
20
11
 
21
- The stdio host is the security boundary. Only configure this server in a
22
- trusted local MCP client.
12
+ ## Start
23
13
 
24
- ## Install and configure
14
+ Requires Node.js 22.22.3 or newer.
25
15
 
26
16
  ```sh
27
- npm install --global @relaymessenger/mcp
28
- relay-mcp --version
17
+ npx --yes @relaymessenger/mcp@staging
29
18
  ```
30
19
 
31
- The server resolves an Agent Token locally; it never exposes a token as an MCP
32
- tool argument.
20
+ Agent authentication is unchanged: `RELAY_AGENT_TOKEN`, or the selected Relay
21
+ CLI profile. Select a profile with `--profile`. The API origin resolves from
22
+ `--api-url`, `RELAY_API_URL`, the selected profile, then the package environment:
23
+ `-staging` prereleases use the staging API; plain releases use production.
24
+ An explicit origin is preserved.
25
+ Do not put a token in a tool argument or submitted code. Configure it in the
26
+ server's environment or private Relay profile instead.
33
27
 
34
- Resolution order:
28
+ The server remains local stdio. It does not add HTTP, OAuth, a hosted executor,
29
+ or a new authentication flow.
35
30
 
36
- 1. `RELAY_AGENT_TOKEN`, `RELAY_API_URL`, and `RELAY_PROFILE`;
37
- 2. `${XDG_CONFIG_HOME:-~/.config}/relay/config.json`, shared with
38
- `relaymessenger`;
39
- 3. `https://api.relayapp.im` as the default API URL.
40
-
41
- Example client configuration:
31
+ ## `search_docs`
42
32
 
43
33
  ```json
44
- {
45
- "mcpServers": {
46
- "relay": {
47
- "command": "relay-mcp",
48
- "env": {
49
- "RELAY_PROFILE": "default"
50
- }
51
- }
52
- }
53
- }
34
+ {"query":"send message idempotency","language":"typescript","detail":"default"}
54
35
  ```
55
36
 
56
- For automation, inject `RELAY_AGENT_TOKEN` from the host's secret manager.
57
- Do not put the token in MCP config checked into source control.
58
-
59
- Optional non-secret process flags:
60
-
61
- ```sh
62
- relay-mcp --profile staging
63
- relay-mcp --profile local --api-url http://127.0.0.1:8787
64
- ```
37
+ - `query` is required.
38
+ - `language`: `typescript` (default), `javascript`, or `http`.
39
+ - `detail`: `default` or `verbose`.
65
40
 
66
- There is deliberately no token flag.
41
+ Search is local and does not need a token. Its method index is generated from
42
+ `packages/sdk/src/client.ts`, SDK types, and the canonical
43
+ `contracts/relay-v1-openapi.yaml`. It returns the source contract hash. It does
44
+ not proxy the hosted documentation MCP or invent methods from a search result.
67
45
 
68
- ## Tools
46
+ ## `execute`
69
47
 
70
- The server exposes explicit tools rather than a generic HTTP or operation
71
- proxy:
48
+ ```json
49
+ {
50
+ "code":"async function run(client) { return await client.contactCard.retrieve(); }",
51
+ "intent":"Read this agent's contact card"
52
+ }
53
+ ```
72
54
 
73
- | Capability | Tools |
74
- | --- | --- |
75
- | Read | `relay_list_chats`, `relay_get_chat`, `relay_list_messages`, `relay_get_message`, `relay_get_message_thread` |
76
- | Send | `relay_send_message`, `relay_send_message_to_chat` |
77
- | Reactions | `relay_react_to_message` |
78
- | Typing/read state | `relay_start_typing`, `relay_stop_typing`, `relay_mark_chat_read` |
79
- | Contact Card | `relay_get_contact_card`, `relay_set_contact_card`, `relay_update_contact_card`, `relay_share_contact_card` |
80
-
81
- Message-send tools require a caller-supplied idempotency key. Tool schemas do
82
- not contain Agent Tokens, raw authorization headers, URLs for arbitrary Relay
83
- routes, or copied OpenAPI response definitions.
84
-
85
- Relay Chats contain at most one human user and one or more agents; agent-to-agent
86
- Chats are also supported. Agents and users have the same generic Chat API
87
- permissions. Creating or reusing a user-containing Chat requires every agent
88
- to be that user's added, unblocked Contact, including an agent sender. Participant
89
- additions check the new target and any acting agent; an agent removing others
90
- must remain an added, unblocked Contact. Self-leave keeps its existing rules.
91
- This is admission eligibility, not a new membership-history or un-add revocation
92
- lifecycle: removing a Contact does not imply removal from all groups. Known-Chat
93
- sends retain existing membership and messaging rules. Contacts eligibility does
94
- not require conversational approval or company-policy tables.
95
- Agent-only messaging keeps its existing behavior, with no new per-agent
96
- mutual-Add requirement. Chats allow at most 7 total participants including the
97
- sender; `relay_send_message` accepts at most 6 `recipients`.
98
-
99
- Contact Card tools
100
- configure and share the authenticated agent's card. There is no add request:
101
- an agent's first Message to a user who never wrote to it, or accepted it,
102
- waits as a message request until the user accepts it, and the agent learns
103
- the answer from the `contact.added` event. These are not human contact sharing or invitations:
104
- the server exposes no phone address-book, mutual-contact, human discovery, or
105
- human invite-link tools.
106
-
107
- ## Errors and secrets
108
-
109
- Tool failures return MCP error results with sanitized text. Environment and
110
- locally configured Agent Tokens are redacted from tool errors and stderr.
111
- Successful SDK objects are returned as both JSON text and structured content.
55
+ Define a top-level `run(client)` function. `intent` is optional and does not
56
+ change execution. TypeScript syntax is transpiled; the packaged SDK signatures
57
+ are available through `search_docs`.
58
+
59
+ The result includes `result` and `logs`. `console.log`, `info`, `warn`, `error`,
60
+ and `debug` are captured. SDK and execution failures return `isError: true`.
61
+ Each call starts fresh; variables do not persist between calls.
62
+
63
+ The supplied client exposes the SDK's initialized-client HTTP methods. SDK
64
+ pagination supports `hasNextPage()`, `getNextPage()`, and async iteration over
65
+ an awaited page. Static `Relay.createAgent` is setup documentation, not an
66
+ initialized-client method. WebSocket callbacks and raw attachment upload
67
+ streams are not exposed by this JSON call bridge.
68
+
69
+ Execution uses a separate QuickJS WebAssembly runtime, not Node's `vm` or host
70
+ `eval`. Submitted code cannot access the host filesystem, process, environment,
71
+ imports, shell, or arbitrary `fetch`. Only calls to the generated SDK method
72
+ list cross the boundary. The actual SDK client and its Agent Token stay on the
73
+ host. API arguments and results cross as JSON; known local tokens are redacted
74
+ from returned values, logs, and errors.
75
+
76
+ Calls are limited to 30 seconds, 64 MiB of guest memory, and 1 MiB of accumulated
77
+ SDK/output text. Outstanding SDK requests receive cancellation when a call
78
+ ends. These limits do not undo a request that the API has already accepted.
79
+ Always await SDK calls and reuse a stable idempotency key for the same logical
80
+ message send. `execute` is not read-only: submitted SDK calls can change the
81
+ configured account.
112
82
 
113
83
  ## Development
114
84
 
115
- All Linux execution happens in a fresh Daytona sandbox:
85
+ From the monorepo root, in Daytona for Linux:
116
86
 
117
87
  ```sh
118
88
  npm ci
119
- npm run validate
89
+ npm run build --workspace @relaymessenger/sdk
90
+ npm run docs:generate --workspace @relaymessenger/mcp
91
+ npm run validate:mcp
120
92
  ```
121
93
 
122
- Validation includes type checking, unit and negative tests, the pinned SDK
123
- contract hash, an MCP v2 modern protocol spawn test, MCP Inspector v2
124
- `tools/list --strict`, package packing, isolated tarball installation, and an
125
- installed-bin protocol test.
94
+ `docs:check` proves the packaged method index still matches canonical source.
95
+ The protocol, Inspector, and installed-tarball tests require the exact two-tool
96
+ list and exercise both tools. Unit tests cover real SDK dispatch through
97
+ fixtures, pagination, auth errors, token redaction, guest isolation, and limits.
98
+
99
+ ## Reference semantics
100
+
101
+ The two-tool workflow and `async function run(client)` shape follow Linq's
102
+ primary MCP source at `linq-team/linq-node` commit
103
+ `9f7ada2cf20fde604855dd69eef7d4df5c2f5b48`:
104
+ `packages/mcp-server/src/docs-search-tool.ts`, `code-tool.ts`, and
105
+ `local-docs-search.ts`. Linq's implementation uses Deno; Relay uses QuickJS and
106
+ states its narrower JSON/HTTP boundary above.
107
+
108
+ Photon's `photon-hq/mcp` source at
109
+ `61e3f2a9814b5a2cbe75f843d1cd9a67ae29ac90` documents a different, 67-tool surface.
110
+ Its per-operation list and additional iMessage powers are not copied here.
package/dist/auth.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export declare const DEFAULT_API_URL = "https://api.relayapp.im";
2
+ export declare const STAGING_API_URL = "https://api.staging.relayapp.im";
3
+ export declare const defaultApiURL: (version?: string) => string;
2
4
  export declare const DEFAULT_PROFILE = "default";
3
5
  export interface AuthContext {
4
6
  env?: NodeJS.ProcessEnv;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,4BAA4B,CAAC;AACzD,eAAO,MAAM,eAAe,YAAY,CAAC;AAazC,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAQD,eAAO,MAAM,eAAe,GAAI,UAAS,WAAgB,KAAG,MAY3D,CAAC;AAeF,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAuB9C,CAAC;AA8DF,eAAO,MAAM,gBAAgB,GAC3B,UAAS,WAAgB,KACxB,OAAO,CAAC,iBAAiB,CA+B3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAS,WAAgB,KACxB,OAAO,CAAC,MAAM,EAAE,CAalB,CAAC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,4BAA4B,CAAC;AACzD,eAAO,MAAM,eAAe,oCAAoC,CAAC;AACjE,eAAO,MAAM,aAAa,GAAI,UAAS,MAAoB,KAAG,MACS,CAAC;AACxE,eAAO,MAAM,eAAe,YAAY,CAAC;AAazC,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAQD,eAAO,MAAM,eAAe,GAAI,UAAS,WAAgB,KAAG,MAY3D,CAAC;AAeF,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAuB9C,CAAC;AA8DF,eAAO,MAAM,gBAAgB,GAC3B,UAAS,WAAgB,KACxB,OAAO,CAAC,iBAAiB,CA+B3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAS,WAAgB,KACxB,OAAO,CAAC,MAAM,EAAE,CAalB,CAAC"}
package/dist/auth.js CHANGED
@@ -1,7 +1,10 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { isAbsolute, join, resolve } from "node:path";
4
+ import pkg from "../package.json" with { type: "json" };
4
5
  export const DEFAULT_API_URL = "https://api.relayapp.im";
6
+ export const STAGING_API_URL = "https://api.staging.relayapp.im";
7
+ export const defaultApiURL = (version = pkg.version) => /-staging(?:\.|$)/u.test(version) ? STAGING_API_URL : DEFAULT_API_URL;
5
8
  export const DEFAULT_PROFILE = "default";
6
9
  const isRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7
10
  const envFor = (context) => context.env ?? process.env;
@@ -114,7 +117,7 @@ export const resolveAgentAuth = async (context = {}) => {
114
117
  const apiURL = validateApiURL(context.apiURL
115
118
  ?? env.RELAY_API_URL
116
119
  ?? selected?.api_url
117
- ?? DEFAULT_API_URL);
120
+ ?? defaultApiURL());
118
121
  const environmentToken = env.RELAY_AGENT_TOKEN;
119
122
  const token = environmentToken ?? selected?.agent_token;
120
123
  if (!token) {
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,CAAC,MAAM,eAAe,GAAG,yBAAyB,CAAC;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AA4BzC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,MAAM,GAAG,CAAC,OAAoB,EAAqB,EAAE,CACzD,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;AAE7B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAAuB,EAAE,EAAU,EAAE;IACnE,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,GAAG,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB;WAC5B,GAAG,CAAC,eAAe;WACnB,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE;IAC5C,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAW,EAAE,CAC/C,QAAQ,KAAK,WAAW;OACrB,QAAQ,KAAK,WAAW;OACxB,QAAQ,KAAK,KAAK;OAClB,QAAQ,KAAK,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE;IACtD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,IACE,GAAG,CAAC,QAAQ;WACT,GAAG,CAAC,QAAQ;WACZ,GAAG,CAAC,MAAM;WACV,GAAG,CAAC,IAAI;WACR,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,EAChD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IACE,GAAG,CAAC,QAAQ,KAAK,QAAQ;WACtB,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAC1D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,KAAK,EAC3B,OAAoB,EACc,EAAE;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,MAAM,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CACtC,CAAC;QACb,IACE,CAAC,QAAQ,CAAC,MAAM,CAAC;eACd,MAAM,CAAC,OAAO,KAAK,CAAC;eACpB,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ;eAC1C,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC7B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,QAAQ,GAAiC,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,cAAc,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;YAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC;YAC9B,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,0BAA0B,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,8BAA8B,CAAC,CAAC;YACvE,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,GAAG;gBACf,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC;YACV,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC;YACpD,QAAQ;SACT,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK,YAAY,KAAK;eACnB,MAAM,IAAI,KAAK;eACf,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC1B,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,UAAuB,EAAE,EACG,EAAE;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,WAAW,CACzB,OAAO,CAAC,OAAO;WACV,GAAG,CAAC,aAAa;WACjB,MAAM,EAAE,eAAe;WACvB,eAAe,CACrB,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAM,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,kBAAkB,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,cAAc,CAC3B,OAAO,CAAC,MAAM;WACT,GAAG,CAAC,aAAa;WACjB,QAAQ,EAAE,OAAO;WACjB,eAAe,CACrB,CAAC;IACF,MAAM,gBAAgB,GAAG,GAAG,CAAC,iBAAiB,CAAC;IAC/C,MAAM,KAAK,GAAG,gBAAgB,IAAI,QAAQ,EAAE,WAAW,CAAC;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,oCAAoC,OAAO,kDAAkD,CAC9F,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO;QACP,MAAM;QACN,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;QACxB,MAAM,EAAE,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;QAClE,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC;KACrC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,UAAuB,EAAE,EACN,EAAE;IACrB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC;IAC3D,IAAI,gBAAgB;QAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5D,IAAI,OAAO,CAAC,WAAW;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import Relay from "@relaymessenger/sdk";
2
+ export interface ExecutionLimits {
3
+ timeoutMs: number;
4
+ memoryBytes: number;
5
+ outputBytes: number;
6
+ }
7
+ export declare function executeCode(code: string, client: Relay, secrets: readonly string[], overrides?: Partial<ExecutionLimits>): Promise<{
8
+ result: unknown;
9
+ logs: Array<{
10
+ level: string;
11
+ text: string;
12
+ }>;
13
+ }>;
14
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,qBAAqB,CAAC;AAMvD,MAAM,WAAW,eAAe;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAsBhG,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA4I/M"}
@@ -0,0 +1,198 @@
1
+ import Relay, { RelayPage } from "@relaymessenger/sdk";
2
+ import { getQuickJS } from "quickjs-emscripten";
3
+ import ts from "typescript";
4
+ import { METHOD_DOCS } from "./generated-docs.js";
5
+ import { redact, safeErrorMessage } from "./redact.js";
6
+ const defaults = { timeoutMs: 30_000, memoryBytes: 64 * 1024 * 1024, outputBytes: 1024 * 1024 };
7
+ const methods = new Map(METHOD_DOCS.filter(row => row.executable).map(row => [row.method.slice("client.".length), row]));
8
+ function compile(code) {
9
+ const file = ts.createSourceFile("relay-execute.ts", code, ts.ScriptTarget.Latest, true);
10
+ let invalidModule = false;
11
+ const visit = (node) => {
12
+ if (ts.isImportDeclaration(node) || ts.isImportEqualsDeclaration(node) || ts.isExportDeclaration(node)
13
+ || ts.isExportAssignment(node) || node.kind === ts.SyntaxKind.ImportKeyword
14
+ || (ts.canHaveModifiers(node) && ts.getModifiers(node)?.some(x => x.kind === ts.SyntaxKind.ExportKeyword)))
15
+ invalidModule = true;
16
+ ts.forEachChild(node, visit);
17
+ };
18
+ visit(file);
19
+ if (invalidModule)
20
+ throw new Error("Imports and exports are not available. Define async function run(client) using the supplied client.");
21
+ const compiled = ts.transpileModule(code, { fileName: "relay-execute.ts", reportDiagnostics: true,
22
+ compilerOptions: { target: ts.ScriptTarget.ES2022, module: ts.ModuleKind.ESNext, strict: true } });
23
+ const errors = (compiled.diagnostics ?? []).filter(x => x.category === ts.DiagnosticCategory.Error);
24
+ if (errors.length)
25
+ throw new Error(errors.map(x => ts.flattenDiagnosticMessageText(x.messageText, "\n")).join("\n"));
26
+ return compiled.outputText;
27
+ }
28
+ export async function executeCode(code, client, secrets, overrides = {}) {
29
+ const limits = { ...defaults, ...overrides };
30
+ const javascript = compile(code);
31
+ const QuickJS = await getQuickJS();
32
+ const runtime = QuickJS.newRuntime();
33
+ runtime.setMemoryLimit(limits.memoryBytes);
34
+ runtime.setMaxStackSize(512 * 1024);
35
+ const deadline = Date.now() + limits.timeoutMs;
36
+ const abort = new AbortController();
37
+ runtime.setInterruptHandler(() => Date.now() >= deadline || abort.signal.aborted);
38
+ const vm = runtime.newContext();
39
+ const promises = [];
40
+ const pages = new Map();
41
+ const logs = [];
42
+ let outputBytes = 0;
43
+ let disposed = false;
44
+ let promiseHandle;
45
+ let outputError;
46
+ const limited = (text) => {
47
+ outputBytes += Buffer.byteLength(text);
48
+ if (outputBytes > limits.outputBytes) {
49
+ outputError = new Error("Execution output exceeded the limit.");
50
+ throw outputError;
51
+ }
52
+ return text;
53
+ };
54
+ const encode = (value) => {
55
+ const page = value instanceof RelayPage ? pages.size + 1 : undefined;
56
+ if (page !== undefined)
57
+ pages.set(page, value);
58
+ return limited(redact(JSON.stringify({ value: value ?? null, ...(page === undefined ? {} : { page }) }), secrets));
59
+ };
60
+ async function call(method, args) {
61
+ if (abort.signal.aborted)
62
+ throw new Error("Execution ended.");
63
+ if (method === "__pageNext") {
64
+ const page = pages.get(Number(args[0]));
65
+ if (!page)
66
+ throw new Error("Unknown page in this execution.");
67
+ return page.getNextPage();
68
+ }
69
+ const doc = methods.get(method);
70
+ if (!doc)
71
+ throw new Error(`Unknown SDK method: client.${method}. Use search_docs to find a supported HTTP method.`);
72
+ if (args.length > doc.optionsIndex + 1)
73
+ throw new Error(`Too many arguments for client.${method}.`);
74
+ let target = client;
75
+ const parts = method.split(".");
76
+ for (const part of parts.slice(0, -1))
77
+ target = target[part];
78
+ const fn = target[parts.at(-1)];
79
+ if (typeof fn !== "function")
80
+ throw new Error(`SDK method is unavailable: client.${method}`);
81
+ const options = args[doc.optionsIndex];
82
+ if (options !== undefined && options !== null && (typeof options !== "object" || Array.isArray(options)))
83
+ throw new Error("SDK request options must be a JSON object.");
84
+ args[doc.optionsIndex] = { ...options, signal: abort.signal };
85
+ return Reflect.apply(fn, target, args);
86
+ }
87
+ const bridge = vm.newFunction("relaySdkCall", (methodHandle, argsHandle) => {
88
+ const method = vm.getString(methodHandle);
89
+ const args = JSON.parse(limited(vm.getString(argsHandle)));
90
+ if (!Array.isArray(args))
91
+ throw new Error("SDK arguments must be a JSON array.");
92
+ const promise = vm.newPromise();
93
+ promises.push(promise);
94
+ void call(method, args).then(value => {
95
+ if (disposed)
96
+ return;
97
+ const handle = vm.newString(encode(value));
98
+ promise.resolve(handle);
99
+ handle.dispose();
100
+ }).catch(error => {
101
+ if (disposed)
102
+ return;
103
+ const handle = vm.newError(safeErrorMessage(error, secrets));
104
+ if (error && typeof error === "object" && "status" in error && typeof error.status === "number") {
105
+ const status = vm.newNumber(error.status);
106
+ vm.setProp(handle, "status", status);
107
+ status.dispose();
108
+ }
109
+ promise.reject(handle);
110
+ handle.dispose();
111
+ });
112
+ return promise.handle;
113
+ });
114
+ const logger = vm.newFunction("relayLog", (level, ...values) => {
115
+ const text = limited(redact(values.map(value => {
116
+ const data = vm.dump(value);
117
+ return typeof data === "string" ? data : JSON.stringify(data);
118
+ }).join(" "), secrets));
119
+ logs.push({ level: vm.getString(level), text });
120
+ return vm.undefined;
121
+ });
122
+ vm.setProp(vm.global, "__relayCall", bridge);
123
+ bridge.dispose();
124
+ vm.setProp(vm.global, "__relayLog", logger);
125
+ logger.dispose();
126
+ try {
127
+ vm.unwrapResult(vm.evalCode(`
128
+ ((call, log) => {
129
+ const hydrate = envelope => {
130
+ const value = envelope.value;
131
+ if (envelope.page !== undefined && value !== null) {
132
+ Object.defineProperties(value, {
133
+ hasNextPage: { value: () => value.nextCursor !== null },
134
+ getNextPage: { value: () => invoke('__pageNext', [envelope.page]) },
135
+ [Symbol.asyncIterator]: { value: async function* () {
136
+ let page = value;
137
+ while (page) { yield* page.data; page = await page.getNextPage(); }
138
+ } },
139
+ });
140
+ }
141
+ return value;
142
+ };
143
+ const invoke = (method, args) => call(method, JSON.stringify(args)).then(text => hydrate(JSON.parse(text)));
144
+ const client = Object.create(null);
145
+ for (const method of ${JSON.stringify([...methods.keys()])}) {
146
+ const parts = method.split('.'); let target = client;
147
+ for (const part of parts.slice(0, -1)) target = target[part] ??= Object.create(null);
148
+ target[parts[parts.length - 1]] = (...args) => invoke(method, args);
149
+ }
150
+ client.baseURL = ${JSON.stringify(client.baseURL ?? null)};
151
+ const freeze = value => { for (const key of Object.keys(value)) if (value[key] && typeof value[key] === 'object') freeze(value[key]); return Object.freeze(value); };
152
+ Object.defineProperty(globalThis, '__relayClient', { value: freeze(client) });
153
+ Object.defineProperty(globalThis, 'console', { value: Object.freeze(Object.fromEntries(['log','info','warn','error','debug'].map(level => [level, (...values) => log(level, ...values)]))) });
154
+ })(__relayCall, __relayLog);
155
+ delete globalThis.__relayCall; delete globalThis.__relayLog;
156
+ `, "relay-runtime.js")).dispose();
157
+ promiseHandle = vm.unwrapResult(vm.evalCode(`(async () => {
158
+ ${javascript}
159
+ if (typeof run !== 'function') throw new Error('Define a top-level async function run(client).');
160
+ const result = await run(globalThis.__relayClient);
161
+ return JSON.stringify(result ?? null);
162
+ })()`, "relay-execute.js"));
163
+ for (;;) {
164
+ if (Date.now() >= deadline)
165
+ throw new Error("Execution timed out.");
166
+ if (outputError)
167
+ throw outputError;
168
+ const jobs = runtime.executePendingJobs();
169
+ if (jobs.error) {
170
+ const error = vm.dump(jobs.error);
171
+ jobs.error.dispose();
172
+ throw new Error(`Execution failed: ${JSON.stringify(error)}`);
173
+ }
174
+ const state = vm.getPromiseState(promiseHandle);
175
+ if (state.type === "fulfilled") {
176
+ const text = vm.getString(state.value);
177
+ state.value.dispose();
178
+ return { result: JSON.parse(limited(redact(text, secrets))), logs };
179
+ }
180
+ if (state.type === "rejected") {
181
+ const error = vm.dump(state.error);
182
+ state.error.dispose();
183
+ throw new Error(error?.message ?? JSON.stringify(error));
184
+ }
185
+ await new Promise(resolve => setTimeout(resolve, 2));
186
+ }
187
+ }
188
+ finally {
189
+ disposed = true;
190
+ abort.abort(new Error("Execution ended."));
191
+ promiseHandle?.dispose();
192
+ for (const promise of promises)
193
+ promise.dispose();
194
+ vm.dispose();
195
+ runtime.dispose();
196
+ }
197
+ }
198
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAmD,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGvD,MAAM,QAAQ,GAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC;AACjH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzH,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,IAAI,GAAG,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzF,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;eACjG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;eACxE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAAE,aAAa,GAAG,IAAI,CAAC;QACnI,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,IAAI,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,qGAAqG,CAAC,CAAC;IAC1I,MAAM,QAAQ,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,IAAI;QAC/F,eAAe,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACrG,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACpG,IAAI,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrH,OAAO,QAAQ,CAAC,UAAU,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,MAAa,EAAE,OAA0B,EAAE,YAAsC,EAAE;IACjI,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IACrC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClF,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAChC,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACpD,MAAM,IAAI,GAA2C,EAAE,CAAC;IACxD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,aAAwC,CAAC;IAC7C,IAAI,WAA8B,CAAC;IACnC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE;QACvC,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACrC,WAAW,GAAG,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAChE,MAAM,WAAW,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,KAAc,EAAU,EAAE;QACxC,MAAM,IAAI,GAAG,KAAK,YAAY,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAA2B,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACrH,CAAC,CAAC;IACF,KAAK,UAAU,IAAI,CAAC,MAAc,EAAE,IAAe;QACjD,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC9D,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,oDAAoD,CAAC,CAAC;QACpH,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,GAAG,CAAC,CAAC;QACpG,IAAI,MAAM,GAAY,MAAM,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAE,MAAM,GAAI,MAAkC,CAAC,IAAI,CAAC,CAAC;QAC1F,MAAM,EAAE,GAAI,MAAkC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;QAC9D,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACxK,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,GAAI,OAA+C,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QACvG,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE;QACzE,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI,QAAQ;gBAAE,OAAO;YACrB,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,QAAQ;gBAAE,OAAO;YACrB,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAChG,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpG,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,EAAE,EAAE;QAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC7C,MAAM,IAAI,GAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,OAAO,EAAE,CAAC,SAAS,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC/D,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9D,IAAI,CAAC;QACH,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;+BAkBD,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;;;;;2BAKvC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;;;;;;KAM5D,EAAE,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAClC,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC;QACxC,UAAU;;;;SAIT,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC5B,SAAS,CAAC;YACR,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACpE,IAAI,WAAW;gBAAE,MAAM,WAAW,CAAC;YACnC,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;YAC3I,MAAM,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC9D,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAY,EAAE,IAAI,EAAE,CAAC;YACjF,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAyB,CAAC;gBAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClF,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,QAAQ,GAAG,IAAI,CAAC;QAChB,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC3C,aAAa,EAAE,OAAO,EAAE,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,QAAQ;YAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QAClD,EAAE,CAAC,OAAO,EAAE,CAAC;QAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { MethodDoc } from "./search-docs.js";
2
+ export declare const DOCS_SOURCE: {
3
+ contract: string;
4
+ client: string;
5
+ types: string;
6
+ };
7
+ export declare const METHOD_DOCS: readonly MethodDoc[];
8
+ //# sourceMappingURL=generated-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-docs.d.ts","sourceRoot":"","sources":["../src/generated-docs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,eAAO,MAAM,WAAW;;;;CAIvB,CAAC;AACF,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAg/B3C,CAAC"}