@parallax-rn/mcp 0.0.0-stage → 0.1.0-beta.2

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/LICENSE ADDED
@@ -0,0 +1,72 @@
1
+ PARALLAX LICENSE (BETA TERMS, VERSION 1, 2026-10-28)
2
+
3
+ Copyright (c) 2026 Valiantsin Tsikhamirau. All rights reserved.
4
+ Contact: zemantservices@gmail.com, https://parallax-rn.dev
5
+
6
+ 1. Definitions
7
+ "Software" means this package of Parallax for React Native, including its code, documentation and any updates the Licensor supplies. "You" means the person or
8
+ organization that installs or uses the Software. "Licensor" means Valiantsin Tsikhamirau, the author of the Software. "Your Applications" means software that You
9
+ develop or maintain.
10
+
11
+ 2. Grant of license
12
+ The Licensor grants You a worldwide, non-exclusive, non-transferable, revocable, royalty-free license, free of charge, to install and use the Software
13
+ for Your own personal or internal business purposes, including the commercial development, testing and debugging of Your Applications. This includes:
14
+ (a) adding the in-app SDK and the Babel plugin of the Software to Your Applications as development dependencies;
15
+ (b) building, distributing and selling Your Applications, even when a build of Your Application contains code of the SDK or of the Babel plugin, as long
16
+ as that code stays a part of Your Application and is not offered on its own;
17
+ (c) keeping copies of the Software in Your organization's internal package mirrors, registries, caches, continuous integration systems, lock files and
18
+ vendored dependency folders, for use under this license by Your own staff and contractors;
19
+ (d) installing it on any number of machines used by You, Your staff or Your contractors working on Your Applications.
20
+
21
+ 3. Restrictions
22
+ Except as this license expressly allows or as mandatory law allows despite this limit, You may not:
23
+ (a) modify, adapt, translate or create derivative works of the Software;
24
+ (b) distribute, sublicense, sell, rent, lease, lend, host as a service or otherwise make the Software or any part of it available to others outside Your
25
+ organization, including by publishing it to a public package registry or repository, except as section 2 allows;
26
+ (c) reverse engineer, decompile or disassemble the Software, or try to obtain its source code;
27
+ (d) use the Software, its output or its documentation to build, train or benchmark a product or service that competes with the Software, or give the
28
+ Software to a person for that purpose;
29
+ (e) remove or change any copyright, license or other notice in the Software.
30
+
31
+ 4. Third-party components
32
+ The Software contains third-party components under their own licenses, listed in the file THIRD_PARTY_NOTICES where the package contains one. Those licenses,
33
+ not this one, govern those components.
34
+
35
+ 5. Ownership
36
+ The Software is licensed, not sold. The Licensor keeps all rights not expressly granted. This license grants no right to the Licensor's name or marks.
37
+ Your Applications, their data and the output of Your agents stay Yours.
38
+
39
+ 6. Data
40
+ The Software runs on Your machine. It has no account, no telemetry and no analytics, and it does not send data to the Licensor. What it reads from Your
41
+ application and simulator or emulator (the screen, the component tree, logs, errors, network requests, state and navigation) is returned to the AI agent
42
+ You connect to it, such as Claude Code or Codex, and that agent sends what it receives to its own provider under that provider's terms. The Licensor does
43
+ not control that. The Software removes known secrets from network and state data before an agent receives them; logs and errors are passed on as Your
44
+ application wrote them.
45
+
46
+ 7. Beta software
47
+ The Software is a beta. It may change, stop working or be withdrawn at any time, and later versions may come under different terms, including paid terms
48
+ for some parts. A version You received under this license stays under this license.
49
+
50
+ 8. Termination
51
+ This license ends automatically if You breach it. Then You must stop using the Software and delete all copies, except copies inside builds of Your
52
+ Applications that section 2(b) allows. You may end it at any time by deleting the Software. Sections 3, 5, 9, 10 and 11 survive.
53
+
54
+ 9. No warranty
55
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
56
+ PURPOSE AND NON-INFRINGEMENT.
57
+
58
+ 10. Limitation of liability
59
+ TO THE EXTENT THE LAW ALLOWS, THE LICENSOR IS NOT LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES, OR FOR LOST PROFITS OR DATA,
60
+ ARISING FROM THE SOFTWARE OR ITS USE, AND THE LICENSOR'S TOTAL LIABILITY IS LIMITED TO THE AMOUNT YOU PAID FOR THE SOFTWARE (ZERO FOR THE FREE LICENSE).
61
+ NOTHING IN THIS LICENSE LIMITS LIABILITY FOR INTENT OR GROSS NEGLIGENCE, OR ANY LIABILITY THAT CANNOT BE LIMITED BY LAW.
62
+
63
+ 11. General
64
+ (a) Governing law and courts. This license is governed by the law of the Republic of Belarus, without regard to its conflict of laws rules. The courts of
65
+ Minsk, Belarus, have jurisdiction over any dispute about it. If You are a consumer, nothing in this license takes away a protection that the law of the
66
+ country where You live gives You and that cannot be waived by agreement, including Your right to bring a claim in Your own courts.
67
+ (b) Severability. If a court finds a part of this license invalid, that part is limited to the minimum extent needed and the rest stays in force.
68
+ (c) Entire agreement. This license is the entire agreement between You and the Licensor about the Software and replaces any earlier statement about it.
69
+ A paid tier, if one is offered later, comes with its own terms.
70
+ (d) Export. You must comply with the export control and sanctions laws that apply to You when You use or move the Software.
71
+ (e) No waiver. If the Licensor does not enforce a term, the Licensor keeps the right to enforce it later.
72
+ (f) Language. This license is written in English; a translation is for convenience only.
package/README.md CHANGED
@@ -1,3 +1,65 @@
1
- # Temporary Holding Version
1
+ # @parallax-rn/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
+ The MCP server (stdio, decision 0006): `parallax-mcp`. Stage 1 steps S8 and S9 provide the tool layer, the device tools, `status`, `doctor` and the app tools; the app tools (`app_logs`, `app_errors`, `app_reload`, `app_commands`, `app_command_run`) are S9; `app_tree`, the component tree, is S11.
4
+
5
+ ## Run
6
+ ```
7
+ parallax-mcp [--metro-url <url>] # the server on stdio (Metro default http://localhost:8081, or PARALLAX_METRO_URL)
8
+ parallax-mcp doctor [--metro-url <url>] # the checklist, exit code 1 when a check fails
9
+ parallax-mcp --version
10
+ ```
11
+ stdout carries only the protocol; messages go to stderr. The server exits when the agent closes the pipe.
12
+
13
+ ## Layers (decisions 0001 and 0006)
14
+ - `src/tools/` is the tool layer: a `ToolDefinition` (name, title, description, zod input schema, annotations, handler) per tool, with handlers that call the connection layer and shape the answer as text (plus an image for screenshots) and structured data. It does not know MCP, CDP or AXe.
15
+ - `src/server.ts` is the only file that knows the MCP SDK: it registers the tools and converts results. `src/cli.ts` attaches stdio.
16
+ - `src/app-access.ts` is what `status` and `doctor` need to know about the app, behind an interface; `LiveApp` connects lazily and never throws from `status()`.
17
+
18
+ ## Tools (S8)
19
+ | Tool | Annotations | What it does |
20
+ |---|---|---|
21
+ | `status` | read-only | Metro (and the project root that file paths are relative to), React Native version, app connection, SDK version and protocol, warnings |
22
+ | `doctor` | read-only | checklist with a fix line per failed or warned check; device tools and app tools are reported ready or not ready separately; a missing SDK or plugin is a warning |
23
+ | `device_list`, `device_screenshot`, `device_ui` | read-only | simulators; a downscaled PNG (1024 px, `full` for native); the compact element list (default 80 lines, at most 200, `filter`) |
24
+ | `device_boot` | not read-only, not destructive, idempotent | boots a simulator |
25
+ | `device_tap`, `device_type`, `device_swipe`, `app_launch` | not read-only, destructive | act on the simulator; each answer says what changed on the screen |
26
+ | `device_open_url` | not read-only, destructive, **open world** | opens a URL or deep link (a web URL opens Safari, so it can leave the app) |
27
+ | `app_logs`, `app_errors`, `app_commands`, `app_tree` | read-only | console logs across reloads; the Metro build error and the uncaught JS errors (grouped, symbolicated); the commands the app registered; the component tree (see below) |
28
+ | `app_reload` | not read-only, destructive | reloads the app through Metro and waits for it and the SDK; does nothing when the bundle does not build and says why |
29
+ | `app_command_run` | not read-only, destructive | runs a command the app registered through the SDK |
30
+ Every tool sets all four annotation hints; `openWorldHint` is `false` except for `device_open_url`. How Claude Code and Codex treat them: `docs/spikes/0009-tool-annotations-and-permissions.md` (Codex prompts only for destructive or open-world tools; Claude Code 2.1.259 prompts for every MCP tool until a permission rule allows it, whatever the annotations say).
31
+
32
+ Errors come back as `isError` results whose text starts with the stable code (`element_not_found`, `device_not_booted`, `axe_missing`, ...), then the message and a `Fix:` line. The server sends text only (and an image for screenshots): Claude Code shows the model `structuredContent` instead of the text when both are present, and the structured data is not the full answer (spike 0009). The tool layer still produces structured data; `createServer(context, tools, { structuredContent: true })` sends it.
33
+
34
+ ## Privacy
35
+ **App logs and errors are sent to your agent's model provider** (they are tool results) **and may contain whatever the app logs: tokens, personal data, payloads.** Parallax does not filter them. Do not run it against an app or a build whose console output must not leave the machine.
36
+
37
+ ## What the app tools return (caps, cursors, states)
38
+ - `app_logs`: newest 50 entries (limit up to 200), oldest first, messages cut at 500 characters, repeated lines collapsed, the whole answer at most 12,000 characters (about 3,500 tokens; Claude Code warns at 10,000 tokens). It ends with `next: e<epoch>:<seq>`; pass it as `since` to read only newer entries. The epoch counts the app's JS contexts (a reload or a restart); marker lines show where the app reloaded and where the connection was lost. `level` is the lowest level shown (default `log`).
39
+ - `app_errors`: the build error first (`BUILD ERROR (SyntaxError) src/App.tsx:25:77`, 1-based, a 5-line code frame and a Fix line; shown even without the SDK), then up to 10 groups (limit up to 25) of uncaught errors, newest first, up to 8 application frames mapped to source files, library frames counted, a 5-line code frame, at most 12,000 characters. `next` and `since` work as for logs. A stack from before a file edit is mapped by the current bundle, so its lines may have moved.
40
+ - File paths are relative to the project root that `status` shows; files outside it (monorepo packages) start with `../`.
41
+ - No SDK: `sdk_missing` with the install Fix (`app_errors` still reports a build error). Right after a reload, before the SDK answers: the history with a note, or `sdk_not_ready`. After a native crash: the history with a note and a marker, and `reconnecting` for the tools that need the live app. Metro away: `metro_unreachable`. VM paused in a debugger: the history with a warning for `app_logs` and `app_errors`; `vm_paused` at once for `app_commands`, `app_command_run` and `app_reload`. Nothing here ever resumes the VM.
42
+ - `app_reload` asks Metro to reload every connected app, so it also reloads other devices on the same Metro.
43
+
44
+ ## The component tree (`app_tree`, S11)
45
+ Reads React's fiber tree through the DevTools global hook with one injected script (read only: no getter or function of the app is called, nothing is rendered or written; spike 0012). **It was checked on RN 0.85, 0.86 and 0.87 / React 19.2.3 only** (`doctor` says so, and `status` when the version differs; another React version only adds a warning, a shape it does not understand is `tree_unavailable` with a reason (`no_hook`, `no_renderer`, `no_roots`, `unexpected_shape`) and a Fix, never a guessed tree).
46
+ - What it shows: the project's own components (the ones the build plugin's tables declare) and the screen elements that have a testID, accessibility label or text; library internals are folded into `⋯N` marks. With the plugin each component shows where it is declared (`@src/Home.tsx:26:17`, relative to the project root) and each element with a testID where it is written (`@src/Home.tsx:52:9 <IconButton>`); without it there is no file:line and library components are included (the answer says so). Tables from another plugin version give no file:line and the S10 warning with the cache-reset Fix. A path that is not on disk is marked `path?`.
47
+ - Size: at most 150 lines and 16,000 characters (about 4,500 tokens); the deepest levels are cut first and `(+N below)` marks what is not shown. Narrow with `root` (`#12` from an answer, or a component name), `depth` or `filter`. Measured on a real home screen (884 fibers, 69 KB raw): 100 lines and 7.1 KB with the plugin, 108 lines and 5.3 KB without it.
48
+ - Screen to code: pass a `device_ui` id, label or text as `filter`. An exact match wins over a partial one; several different nodes are reported as `AMBIGUOUS` and listed with the components they are in, never resolved silently.
49
+ - LogBox is left out by default (`roots: all` shows it); every React root is labelled in the answer.
50
+ - The tree lists mounted components, not what is visible: a screen of another tab that stays mounted (react-native-screens keeps it) is in it too.
51
+ - Values: a text field's `value` and `defaultValue` are replaced by `[redacted]` in the app when it has `secureTextEntry`, as is any prop named like a secret (password, token, otp, pin, ...), so they never leave the app. Other texts and props are shown, and **they go to your agent's model provider like the logs do**.
52
+ - Cost: one read took 4–10 ms of the app's JS thread (402 and 884 fibers), with a 30 ms budget; past it the answer is marked PARTIAL.
53
+
54
+ ## Without the SDK and the plugin
55
+ The device tools, `status` and `doctor` need neither; `app_tree` needs no SDK and, without the plugin, works with names only. `status` answers at once (an SDK that has not been found yet is "not detected yet"); `doctor` waits up to a few seconds for the SDK to show up after a connect (it starts a moment after the app's JS context), then reports it as missing.
56
+
57
+ ## Trying it without a simulator
58
+ `node packages/mcp/scripts/fake-server.mjs` is the same server on an in-memory fake device (`PARALLAX_FAKE_PROBES=1` adds do-nothing probe tools for every annotation combination; `PARALLAX_FAKE_LOG=<file>` records the device calls that ran).
59
+
60
+ ## Registering in an agent
61
+ `parallax-mcp setup <claude|codex>` registers the server (through the agent's own `mcp add`), installs the skill (`skills/parallax/SKILL.md`), and with `--allow-read-only-tools` adds the read-only tools to Claude Code's allow list. It prints every change as a diff and asks before applying (`--yes` skips only the question, `--dry-run` changes nothing); `--undo` removes what it added the same way; `--update` changes an existing Parallax registration or skill to this version; `--scope project` (Claude Code) registers in the project's `.mcp.json`. Nothing that is not Parallax's is touched. Full guide: `docs/guide.md`.
62
+
63
+ The package is one minified bundled file with no runtime dependencies (`bundle/parallax-mcp.js`, `THIRD_PARTY_NOTICES`, the skill and the `LICENSE`); `node packages/mcp/scripts/bundle.mjs` builds it from `dist/`, and writes the source map to the private `packages/mcp/private-maps/` instead of the package (decision 0014); `symbolicate.mjs` reads a stack trace back with it. License: proprietary, free to use, the beta terms, version 1 (`LICENSE`). `npm run check` checks the tarball. `setup` run without a terminal refuses to touch the real agent configuration unless `--real-config` is given. Tested on React Native 0.87.1.
64
+
65
+ `doctor` has a `Parallax versions` row: the server, the sdk and the plugin must have the same version while the protocol major is 0, and it names the older side and the command.
@@ -0,0 +1,259 @@
1
+ THIRD-PARTY NOTICES
2
+
3
+ @parallax-rn/mcp contains the code of the following third-party packages, bundled into one file. Each is distributed under the license shown, whose notice is reproduced below as the license requires.
4
+
5
+ - @modelcontextprotocol/sdk@1.32.0 (MIT)
6
+ - ajv@8.20.0 (MIT)
7
+ - ajv-formats@3.0.1 (MIT)
8
+ - fast-deep-equal@3.1.3 (MIT)
9
+ - fast-uri@3.1.8 (BSD-3-Clause)
10
+ - json-schema-traverse@1.0.0 (MIT)
11
+ - ws@8.22.0 (MIT)
12
+ - zod@4.6.5 (MIT)
13
+ - zod-to-json-schema@3.25.2 (ISC)
14
+
15
+ ==============================================================================
16
+ @modelcontextprotocol/sdk@1.32.0
17
+ License: MIT
18
+ Source: https://github.com/modelcontextprotocol/typescript-sdk.git
19
+
20
+ MIT License
21
+
22
+ Copyright (c) 2024 Anthropic, PBC
23
+
24
+ Permission is hereby granted, free of charge, to any person obtaining a copy
25
+ of this software and associated documentation files (the "Software"), to deal
26
+ in the Software without restriction, including without limitation the rights
27
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
28
+ copies of the Software, and to permit persons to whom the Software is
29
+ furnished to do so, subject to the following conditions:
30
+
31
+ The above copyright notice and this permission notice shall be included in all
32
+ copies or substantial portions of the Software.
33
+
34
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
35
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
36
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
37
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
38
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
39
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
40
+ SOFTWARE.
41
+
42
+ ==============================================================================
43
+ ajv@8.20.0
44
+ License: MIT
45
+ Source: ajv-validator/ajv
46
+
47
+ The MIT License (MIT)
48
+
49
+ Copyright (c) 2015-2021 Evgeny Poberezkin
50
+
51
+ Permission is hereby granted, free of charge, to any person obtaining a copy
52
+ of this software and associated documentation files (the "Software"), to deal
53
+ in the Software without restriction, including without limitation the rights
54
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
55
+ copies of the Software, and to permit persons to whom the Software is
56
+ furnished to do so, subject to the following conditions:
57
+
58
+ The above copyright notice and this permission notice shall be included in all
59
+ copies or substantial portions of the Software.
60
+
61
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
62
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
63
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
64
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
65
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
66
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
67
+ SOFTWARE.
68
+
69
+ ==============================================================================
70
+ ajv-formats@3.0.1
71
+ License: MIT
72
+ Source: https://github.com/ajv-validator/ajv-formats.git
73
+
74
+ MIT License
75
+
76
+ Copyright (c) 2020 Evgeny Poberezkin
77
+
78
+ Permission is hereby granted, free of charge, to any person obtaining a copy
79
+ of this software and associated documentation files (the "Software"), to deal
80
+ in the Software without restriction, including without limitation the rights
81
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
82
+ copies of the Software, and to permit persons to whom the Software is
83
+ furnished to do so, subject to the following conditions:
84
+
85
+ The above copyright notice and this permission notice shall be included in all
86
+ copies or substantial portions of the Software.
87
+
88
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
89
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
90
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
91
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
92
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
93
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
94
+ SOFTWARE.
95
+
96
+ ==============================================================================
97
+ fast-deep-equal@3.1.3
98
+ License: MIT
99
+ Source: https://github.com/epoberezkin/fast-deep-equal.git
100
+
101
+ MIT License
102
+
103
+ Copyright (c) 2017 Evgeny Poberezkin
104
+
105
+ Permission is hereby granted, free of charge, to any person obtaining a copy
106
+ of this software and associated documentation files (the "Software"), to deal
107
+ in the Software without restriction, including without limitation the rights
108
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
109
+ copies of the Software, and to permit persons to whom the Software is
110
+ furnished to do so, subject to the following conditions:
111
+
112
+ The above copyright notice and this permission notice shall be included in all
113
+ copies or substantial portions of the Software.
114
+
115
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
116
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
117
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
118
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
119
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
120
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
121
+ SOFTWARE.
122
+
123
+ ==============================================================================
124
+ fast-uri@3.1.8
125
+ License: BSD-3-Clause
126
+ Source: https://github.com/fastify/fast-uri.git
127
+
128
+ Copyright (c) 2011-2021, Gary Court until https://github.com/garycourt/uri-js/commit/a1acf730b4bba3f1097c9f52e7d9d3aba8cdcaae
129
+ Copyright (c) 2021-present The Fastify team <https://github.com/fastify/fastify#team>
130
+ All rights reserved.
131
+
132
+ Redistribution and use in source and binary forms, with or without
133
+ modification, are permitted provided that the following conditions are met:
134
+ * Redistributions of source code must retain the above copyright
135
+ notice, this list of conditions and the following disclaimer.
136
+ * Redistributions in binary form must reproduce the above copyright
137
+ notice, this list of conditions and the following disclaimer in the
138
+ documentation and/or other materials provided with the distribution.
139
+ * The names of any contributors may not be used to endorse or promote
140
+ products derived from this software without specific prior written
141
+ permission.
142
+
143
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
144
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
145
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
146
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
147
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
148
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
149
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
150
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
151
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
152
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
153
+
154
+ * * *
155
+
156
+ The complete list of contributors can be found at:
157
+ - https://github.com/garycourt/uri-js/graphs/contributors
158
+
159
+ ==============================================================================
160
+ json-schema-traverse@1.0.0
161
+ License: MIT
162
+ Source: https://github.com/epoberezkin/json-schema-traverse.git
163
+
164
+ MIT License
165
+
166
+ Copyright (c) 2017 Evgeny Poberezkin
167
+
168
+ Permission is hereby granted, free of charge, to any person obtaining a copy
169
+ of this software and associated documentation files (the "Software"), to deal
170
+ in the Software without restriction, including without limitation the rights
171
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
172
+ copies of the Software, and to permit persons to whom the Software is
173
+ furnished to do so, subject to the following conditions:
174
+
175
+ The above copyright notice and this permission notice shall be included in all
176
+ copies or substantial portions of the Software.
177
+
178
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
179
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
180
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
181
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
182
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
183
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
184
+ SOFTWARE.
185
+
186
+ ==============================================================================
187
+ ws@8.22.0
188
+ License: MIT
189
+ Source: https://github.com/websockets/ws.git
190
+
191
+ Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>
192
+ Copyright (c) 2013 Arnout Kazemier and contributors
193
+ Copyright (c) 2016 Luigi Pinca and contributors
194
+
195
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
196
+ this software and associated documentation files (the "Software"), to deal in
197
+ the Software without restriction, including without limitation the rights to
198
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
199
+ the Software, and to permit persons to whom the Software is furnished to do so,
200
+ subject to the following conditions:
201
+
202
+ The above copyright notice and this permission notice shall be included in all
203
+ copies or substantial portions of the Software.
204
+
205
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
206
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
207
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
208
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
209
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
210
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
211
+
212
+ ==============================================================================
213
+ zod@4.6.5
214
+ License: MIT
215
+ Source: https://github.com/colinhacks/zod.git
216
+
217
+ MIT License
218
+
219
+ Copyright (c) 2025 Colin McDonnell
220
+
221
+ Permission is hereby granted, free of charge, to any person obtaining a copy
222
+ of this software and associated documentation files (the "Software"), to deal
223
+ in the Software without restriction, including without limitation the rights
224
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
225
+ copies of the Software, and to permit persons to whom the Software is
226
+ furnished to do so, subject to the following conditions:
227
+
228
+ The above copyright notice and this permission notice shall be included in all
229
+ copies or substantial portions of the Software.
230
+
231
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
232
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
233
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
234
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
235
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
236
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
237
+ SOFTWARE.
238
+
239
+ ==============================================================================
240
+ zod-to-json-schema@3.25.2
241
+ License: ISC
242
+ Source: https://github.com/StefanTerdell/zod-to-json-schema
243
+
244
+ ISC License
245
+
246
+ Copyright (c) 2020, Stefan Terdell
247
+
248
+ Permission to use, copy, modify, and/or distribute this software for any
249
+ purpose with or without fee is hereby granted, provided that the above
250
+ copyright notice and this permission notice appear in all copies.
251
+
252
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
253
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
254
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
255
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
256
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
257
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
258
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
259
+