claude-mux 0.8.0 → 0.9.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.
- package/CLAUDE.md +26 -0
- package/README.md +52 -2
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/service.d.ts +3 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +154 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +33 -7
- package/dist/commands/update.js.map +1 -1
- package/dist/utils/version.d.ts +1 -1
- package/dist/utils/version.js +1 -1
- package/dist/web/client/_app/immutable/chunks/{BH3SFRWG.js → BLo15bFd.js} +1 -1
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/BkAy2L0f.js → dist/web/client/_app/immutable/chunks/BgJskxmr.js} +1 -1
- package/dist/web/client/_app/immutable/chunks/Bt2k2jRo.js +3 -0
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/DtqyE18S.js → dist/web/client/_app/immutable/chunks/C6pWl6HR.js} +1 -1
- package/dist/web/client/_app/immutable/entry/{app.r0-ETIJN.js → app.y8oaiZ5C.js} +2 -2
- package/dist/web/client/_app/immutable/entry/start.BDsAPvhr.js +1 -0
- package/dist/web/client/_app/immutable/nodes/{0.NP7v5jwY.js → 0.B1tBzkNl.js} +1 -1
- package/dist/web/client/_app/immutable/nodes/{1.CmX900J8.js → 1.CLTX9SdC.js} +1 -1
- package/dist/web/client/_app/immutable/nodes/{2.BQA6OZIp.js → 2.aW0Cuc8S.js} +1 -1
- package/dist/web/client/_app/immutable/nodes/{3.bY9l1t_h.js → 3.C4hlMq3g.js} +1 -1
- package/dist/web/client/_app/version.json +1 -1
- package/dist/web/server/chunks/{0-1j1Fe_oa.js → 0-DbNdYDmp.js} +6 -6
- package/dist/web/server/chunks/{0-1j1Fe_oa.js.map → 0-DbNdYDmp.js.map} +1 -1
- package/dist/web/server/chunks/{1-D1dSc_vl.js → 1-D9Ac3YXp.js} +3 -3
- package/dist/web/server/chunks/{1-D1dSc_vl.js.map → 1-D9Ac3YXp.js.map} +1 -1
- package/dist/web/server/chunks/{2-CCOk5pX2.js → 2-C-W2f2_7.js} +5 -5
- package/dist/web/server/chunks/{2-CCOk5pX2.js.map → 2-C-W2f2_7.js.map} +1 -1
- package/dist/web/server/chunks/{3-DFcJIcL4.js → 3-CqqeZNJY.js} +5 -5
- package/dist/web/server/chunks/{3-DFcJIcL4.js.map → 3-CqqeZNJY.js.map} +1 -1
- package/dist/web/server/index.js +1 -1
- package/dist/web/server/index.js.map +1 -1
- package/dist/web/server/manifest.js +9 -9
- package/dist/web/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/src/cli.ts +2 -0
- package/src/commands/index.ts +1 -0
- package/src/commands/service.ts +180 -0
- package/src/commands/update.ts +34 -6
- package/src/utils/version.ts +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/internal.js +1 -1
- package/web/.svelte-kit/adapter-bun/manifest-full.js +1 -1
- package/web/.svelte-kit/adapter-bun/manifest.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/0.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/1.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/2.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/3.js +1 -1
- package/web/.svelte-kit/generated/server/internal.js +1 -1
- package/web/.svelte-kit/output/client/.vite/manifest.json +44 -44
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{BH3SFRWG.js → BLo15bFd.js} +1 -1
- package/{dist/web/client/_app/immutable/chunks/BkAy2L0f.js → web/.svelte-kit/output/client/_app/immutable/chunks/BgJskxmr.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/Bt2k2jRo.js +3 -0
- package/{dist/web/client/_app/immutable/chunks/DtqyE18S.js → web/.svelte-kit/output/client/_app/immutable/chunks/C6pWl6HR.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/entry/{app.r0-ETIJN.js → app.y8oaiZ5C.js} +2 -2
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.BDsAPvhr.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.NP7v5jwY.js → 0.B1tBzkNl.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.CmX900J8.js → 1.CLTX9SdC.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.BQA6OZIp.js → 2.aW0Cuc8S.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{3.bY9l1t_h.js → 3.C4hlMq3g.js} +1 -1
- package/web/.svelte-kit/output/client/_app/version.json +1 -1
- package/web/.svelte-kit/output/server/chunks/internal.js +1 -1
- package/web/.svelte-kit/output/server/manifest-full.js +1 -1
- package/web/.svelte-kit/output/server/manifest.js +1 -1
- package/web/.svelte-kit/output/server/nodes/0.js +1 -1
- package/web/.svelte-kit/output/server/nodes/1.js +1 -1
- package/web/.svelte-kit/output/server/nodes/2.js +1 -1
- package/web/.svelte-kit/output/server/nodes/3.js +1 -1
- package/dist/web/client/_app/immutable/chunks/e3neaX0M.js +0 -3
- package/dist/web/client/_app/immutable/entry/start.C4mVhUwG.js +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/e3neaX0M.js +0 -3
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.C4mVhUwG.js +0 -1
package/CLAUDE.md
CHANGED
|
@@ -37,6 +37,32 @@ Run a single test file:
|
|
|
37
37
|
bun vitest run tests/db/sessions.test.ts
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
+
## Releasing
|
|
41
|
+
|
|
42
|
+
Releases are fully automated. **Do not `npm publish` manually.**
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm version minor # bumps package.json + src/utils/version.ts, commits, tags vX.Y.Z
|
|
46
|
+
git push origin main
|
|
47
|
+
git push origin vX.Y.Z # tag push triggers .github/workflows/release.yml
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The workflow builds CLI + web, publishes to npm via **OIDC trusted publishing** (no token, no MFA — the trust anchor is `christinoleo/claude-mux` + `release.yml` registered on npmjs.com), and creates a GitHub release. Publish runs as `npx -y npm@latest publish --access public --provenance` because the runner's bundled npm is too old for OIDC.
|
|
51
|
+
|
|
52
|
+
After release, other machines update with: `claude-mux update`.
|
|
53
|
+
|
|
54
|
+
## Service management on remote hosts
|
|
55
|
+
|
|
56
|
+
For machines that should run claude-mux as a long-lived service (e.g. `engage`):
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
claude-mux service install # ~/.config/systemd/user/claude-mux.service, enabled + started
|
|
60
|
+
sudo loginctl enable-linger $USER # one-time: survive logout, start on boot
|
|
61
|
+
journalctl --user -u claude-mux -f # logs
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`update` auto-detects how the server is running and restarts it accordingly: `systemctl --user stop/start claude-mux.service` for systemd-managed hosts, or `nohup claude-mux serve` for hosts started manually. Use `--skip-restart` to leave the server alone.
|
|
65
|
+
|
|
40
66
|
## Architecture
|
|
41
67
|
|
|
42
68
|
claude-mux has three main components:
|
package/README.md
CHANGED
|
@@ -66,9 +66,28 @@
|
|
|
66
66
|
|
|
67
67
|
## Installation
|
|
68
68
|
|
|
69
|
+
**One-liner (recommended)** — installs bun, claude-mux, hooks, and starts the server on `127.0.0.1:3456`:
|
|
70
|
+
|
|
69
71
|
```bash
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
curl -fsSL https://raw.githubusercontent.com/christinoleo/claude-mux/main/scripts/install.sh | bash
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Override defaults with env vars: `CLAUDE_MUX_VERSION`, `CLAUDE_MUX_PORT`, `CLAUDE_MUX_NO_SETUP=1`, `CLAUDE_MUX_NO_SERVE=1`.
|
|
76
|
+
|
|
77
|
+
**Manual** — if you already have a Node/Bun toolchain:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npm install -g claude-mux # or: bun install -g claude-mux
|
|
81
|
+
claude-mux setup # install Claude Code hooks
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
If `npm install -g` fails with `EACCES`, your npm prefix is a system path. Switch to a user prefix (one-time):
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
mkdir -p ~/.npm-global
|
|
88
|
+
npm config set prefix ~/.npm-global
|
|
89
|
+
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
|
|
90
|
+
exec $SHELL -l
|
|
72
91
|
```
|
|
73
92
|
|
|
74
93
|
<details>
|
|
@@ -84,6 +103,33 @@ bun link # makes 'claude-mux' available globally
|
|
|
84
103
|
|
|
85
104
|
---
|
|
86
105
|
|
|
106
|
+
## Updating
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
claude-mux update # npm i -g latest, re-syncs hooks, restarts prod server if running
|
|
110
|
+
claude-mux update --force # reinstall even when already on latest
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
`update` stops the prod server before reinstalling so live module files aren't clobbered, then re-runs `setup --yes` so hook paths stay current.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Running as a service (boot autostart)
|
|
118
|
+
|
|
119
|
+
`claude-mux service install` writes a **systemd user unit** (no root needed for install):
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
claude-mux service install # writes ~/.config/systemd/user/claude-mux.service, enables + starts
|
|
123
|
+
claude-mux service status # systemctl --user status …
|
|
124
|
+
claude-mux service uninstall --purge # disable + remove unit
|
|
125
|
+
|
|
126
|
+
sudo loginctl enable-linger $USER # ONE-TIME sudo: keeps service running after logout / starts on boot
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Logs: `journalctl --user -u claude-mux.service -f`
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
87
133
|
## Quick Start
|
|
88
134
|
|
|
89
135
|
```bash
|
|
@@ -105,6 +151,10 @@ claude-mux serve --port 3456 --host 0.0.0.0
|
|
|
105
151
|
|---------|-------------|
|
|
106
152
|
| `claude-mux serve` | Start web server (`--port`, `--host`, `--auth <password>`) |
|
|
107
153
|
| `claude-mux setup` | Install Claude Code hooks |
|
|
154
|
+
| `claude-mux update` | `npm i -g` latest, re-sync hooks, restart prod server |
|
|
155
|
+
| `claude-mux service install` | Install systemd user unit (boot autostart, no root) |
|
|
156
|
+
| `claude-mux service uninstall` | Disable systemd user unit (`--purge` removes the file) |
|
|
157
|
+
| `claude-mux service status` | Show systemd service status |
|
|
108
158
|
| `claude-mux uninstall` | Remove hooks and configuration |
|
|
109
159
|
| `claude-mux send <target> [text]` | Send text or `--keys` to a session |
|
|
110
160
|
| `claude-mux status <target>` | Get session state as JSON |
|
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { program } from "commander";
|
|
3
|
-
import { createServeCommand, createSetupCommand, createUninstallCommand, createSendCommand, createWaitIdleCommand, createStatusCommand, createCaptureCommand, createNewSessionCommand, createUpdateCommand, runTui, runServe, } from "./commands/index.js";
|
|
3
|
+
import { createServeCommand, createSetupCommand, createUninstallCommand, createSendCommand, createWaitIdleCommand, createStatusCommand, createCaptureCommand, createNewSessionCommand, createUpdateCommand, createServiceCommand, runTui, runServe, } from "./commands/index.js";
|
|
4
4
|
import { runSetup, runCleanup } from "./setup/index.js";
|
|
5
5
|
import { DEFAULT_SERVER_PORT, migrateLegacyDataDir } from "./utils/paths.js";
|
|
6
6
|
import { VERSION } from "./utils/version.js";
|
|
@@ -24,6 +24,7 @@ program.addCommand(createStatusCommand());
|
|
|
24
24
|
program.addCommand(createCaptureCommand());
|
|
25
25
|
program.addCommand(createNewSessionCommand());
|
|
26
26
|
program.addCommand(createUpdateCommand());
|
|
27
|
+
program.addCommand(createServiceCommand());
|
|
27
28
|
// BACKWARD COMPATIBILITY: Support old flags on root command
|
|
28
29
|
program
|
|
29
30
|
.option("--setup", "Run interactive setup wizard (deprecated: use 'setup' command)")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,MAAM,EACN,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,oBAAoB,EAAE,CAAC;AAEvB,6BAA6B;AAC7B,SAAS,kBAAkB,CAAC,OAAe,EAAE,UAAkB;IAC7D,OAAO,CAAC,IAAI,CACV,wBAAwB,OAAO,mCAAmC,UAAU,mBAAmB,CAChG,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnB,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,uBAAuB;AACvB,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC5C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAC9C,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { createStatusCommand } from "./status.js";
|
|
|
9
9
|
export { createCaptureCommand } from "./capture.js";
|
|
10
10
|
export { createNewSessionCommand } from "./new-session.js";
|
|
11
11
|
export { createUpdateCommand, runUpdate } from "./update.js";
|
|
12
|
+
export { createServiceCommand } from "./service.js";
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -9,4 +9,5 @@ export { createStatusCommand } from "./status.js";
|
|
|
9
9
|
export { createCaptureCommand } from "./capture.js";
|
|
10
10
|
export { createNewSessionCommand } from "./new-session.js";
|
|
11
11
|
export { createUpdateCommand, runUpdate } from "./update.js";
|
|
12
|
+
export { createServiceCommand } from "./service.js";
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmJpC,wBAAgB,oBAAoB,IAAI,OAAO,CAgC9C"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { execSync, spawnSync } from "child_process";
|
|
3
|
+
import { existsSync, mkdirSync, writeFileSync, unlinkSync } from "fs";
|
|
4
|
+
import { join, dirname } from "path";
|
|
5
|
+
import { homedir } from "os";
|
|
6
|
+
import { DEFAULT_SERVER_PORT } from "../utils/paths.js";
|
|
7
|
+
const SERVICE_NAME = "claude-mux.service";
|
|
8
|
+
const USER_UNIT_DIR = join(homedir(), ".config", "systemd", "user");
|
|
9
|
+
const UNIT_PATH = join(USER_UNIT_DIR, SERVICE_NAME);
|
|
10
|
+
function which(cmd) {
|
|
11
|
+
try {
|
|
12
|
+
const out = execSync(`command -v ${cmd}`, {
|
|
13
|
+
encoding: "utf-8",
|
|
14
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
15
|
+
}).trim();
|
|
16
|
+
return out || null;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function hasSystemd() {
|
|
23
|
+
return which("systemctl") !== null;
|
|
24
|
+
}
|
|
25
|
+
function buildUnit(port, host) {
|
|
26
|
+
const claudeMuxBin = which("claude-mux");
|
|
27
|
+
if (!claudeMuxBin) {
|
|
28
|
+
throw new Error("`claude-mux` not on PATH; install it first.");
|
|
29
|
+
}
|
|
30
|
+
const bunBin = which("bun");
|
|
31
|
+
const extraPath = bunBin ? `${dirname(bunBin)}:` : "";
|
|
32
|
+
return `[Unit]
|
|
33
|
+
Description=claude-mux serve (web dashboard + WebSocket)
|
|
34
|
+
After=network-online.target
|
|
35
|
+
Wants=network-online.target
|
|
36
|
+
|
|
37
|
+
[Service]
|
|
38
|
+
Type=simple
|
|
39
|
+
Environment=PATH=${extraPath}%h/.npm-global/bin:/usr/local/bin:/usr/bin:/bin
|
|
40
|
+
ExecStart=${claudeMuxBin} serve --port ${port} --host ${host}
|
|
41
|
+
Restart=on-failure
|
|
42
|
+
RestartSec=3
|
|
43
|
+
StandardOutput=journal
|
|
44
|
+
StandardError=journal
|
|
45
|
+
|
|
46
|
+
[Install]
|
|
47
|
+
WantedBy=default.target
|
|
48
|
+
`;
|
|
49
|
+
}
|
|
50
|
+
function systemctlUser(...args) {
|
|
51
|
+
const r = spawnSync("systemctl", ["--user", ...args], { stdio: "inherit" });
|
|
52
|
+
return r.status ?? 1;
|
|
53
|
+
}
|
|
54
|
+
function lingerEnabled() {
|
|
55
|
+
try {
|
|
56
|
+
const user = process.env.USER ?? execSync("whoami", { encoding: "utf-8" }).trim();
|
|
57
|
+
const out = execSync(`loginctl show-user ${user} -p Linger --value 2>/dev/null || true`, {
|
|
58
|
+
encoding: "utf-8",
|
|
59
|
+
}).trim();
|
|
60
|
+
return out === "yes";
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function runInstall(opts) {
|
|
67
|
+
if (!hasSystemd()) {
|
|
68
|
+
console.error("systemctl not found. This command requires systemd (Linux).");
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
const port = Number(opts.port ?? DEFAULT_SERVER_PORT);
|
|
72
|
+
const host = opts.host ?? "127.0.0.1";
|
|
73
|
+
if (!existsSync(USER_UNIT_DIR))
|
|
74
|
+
mkdirSync(USER_UNIT_DIR, { recursive: true });
|
|
75
|
+
const unit = buildUnit(port, host);
|
|
76
|
+
writeFileSync(UNIT_PATH, unit, "utf-8");
|
|
77
|
+
console.log(`Wrote ${UNIT_PATH}`);
|
|
78
|
+
if (systemctlUser("daemon-reload") !== 0) {
|
|
79
|
+
console.error("systemctl --user daemon-reload failed.");
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
const cmd = opts.noStart ? ["enable"] : ["enable", "--now"];
|
|
83
|
+
if (systemctlUser(...cmd, SERVICE_NAME) !== 0) {
|
|
84
|
+
console.error("Failed to enable service.");
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
console.log(`\nService installed. Listening on ${host}:${port}.`);
|
|
88
|
+
console.log("Logs: journalctl --user -u claude-mux.service -f");
|
|
89
|
+
console.log("Status: systemctl --user status claude-mux.service");
|
|
90
|
+
if (!lingerEnabled()) {
|
|
91
|
+
const user = process.env.USER ?? "$USER";
|
|
92
|
+
console.log("");
|
|
93
|
+
console.log("⚠ Linger is OFF — service stops when you log out and does NOT start on boot.");
|
|
94
|
+
console.log(" To survive reboot/logout, run ONCE (requires sudo):");
|
|
95
|
+
console.log(` sudo loginctl enable-linger ${user}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async function runUninstall(opts) {
|
|
99
|
+
if (!hasSystemd()) {
|
|
100
|
+
console.error("systemctl not found.");
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
if (existsSync(UNIT_PATH)) {
|
|
104
|
+
systemctlUser("disable", "--now", SERVICE_NAME);
|
|
105
|
+
if (opts.purge) {
|
|
106
|
+
unlinkSync(UNIT_PATH);
|
|
107
|
+
console.log(`Removed ${UNIT_PATH}`);
|
|
108
|
+
systemctlUser("daemon-reload");
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
console.log(`Disabled ${SERVICE_NAME}. Unit file kept at ${UNIT_PATH} (use --purge to remove).`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
console.log(`No unit file at ${UNIT_PATH}; nothing to uninstall.`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async function runStatus() {
|
|
119
|
+
if (!hasSystemd()) {
|
|
120
|
+
console.error("systemctl not found.");
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
systemctlUser("status", SERVICE_NAME, "--no-pager");
|
|
124
|
+
}
|
|
125
|
+
export function createServiceCommand() {
|
|
126
|
+
const svc = new Command("service").description("Manage claude-mux as a systemd user service");
|
|
127
|
+
svc
|
|
128
|
+
.command("install")
|
|
129
|
+
.description("Install systemd user unit and enable it (does not require sudo)")
|
|
130
|
+
.option("--port <number>", "Listen port", String(DEFAULT_SERVER_PORT))
|
|
131
|
+
.option("--host <address>", "Listen host", "127.0.0.1")
|
|
132
|
+
.option("--no-start", "Enable for boot but do not start now")
|
|
133
|
+
.action(async (opts) => {
|
|
134
|
+
await runInstall(opts);
|
|
135
|
+
process.exit(0);
|
|
136
|
+
});
|
|
137
|
+
svc
|
|
138
|
+
.command("uninstall")
|
|
139
|
+
.description("Disable the systemd user service")
|
|
140
|
+
.option("--purge", "Also remove the unit file")
|
|
141
|
+
.action(async (opts) => {
|
|
142
|
+
await runUninstall(opts);
|
|
143
|
+
process.exit(0);
|
|
144
|
+
});
|
|
145
|
+
svc
|
|
146
|
+
.command("status")
|
|
147
|
+
.description("Show systemd service status")
|
|
148
|
+
.action(async () => {
|
|
149
|
+
await runStatus();
|
|
150
|
+
process.exit(0);
|
|
151
|
+
});
|
|
152
|
+
return svc;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyFpC,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDlE;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAS7C"}
|
package/dist/commands/update.js
CHANGED
|
@@ -17,6 +17,17 @@ function getLatestVersion() {
|
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
+
const SYSTEMD_UNIT = "claude-mux.service";
|
|
21
|
+
function isSystemdManaged() {
|
|
22
|
+
const r = spawnSync("systemctl", ["--user", "is-active", "--quiet", SYSTEMD_UNIT], {
|
|
23
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
24
|
+
});
|
|
25
|
+
return r.status === 0;
|
|
26
|
+
}
|
|
27
|
+
function systemctlUser(...args) {
|
|
28
|
+
const r = spawnSync("systemctl", ["--user", ...args], { stdio: "inherit" });
|
|
29
|
+
return r.status ?? 1;
|
|
30
|
+
}
|
|
20
31
|
function findProdPid() {
|
|
21
32
|
try {
|
|
22
33
|
const out = execSync(`lsof -t -i :${DEFAULT_SERVER_PORT} -sTCP:LISTEN 2>/dev/null || true`, { encoding: "utf-8" }).trim();
|
|
@@ -84,28 +95,43 @@ export async function runUpdate(opts) {
|
|
|
84
95
|
}
|
|
85
96
|
// Stop the running prod server BEFORE `npm i -g` so the install doesn't
|
|
86
97
|
// overwrite module files the live process is still loading lazily.
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
98
|
+
const skipRestart = !!opts.skipRestart;
|
|
99
|
+
const systemdActive = !skipRestart && isSystemdManaged();
|
|
100
|
+
const nohupPid = !skipRestart && !systemdActive ? findProdPid() : null;
|
|
101
|
+
if (systemdActive) {
|
|
102
|
+
console.log(`Stopping ${SYSTEMD_UNIT} (systemd)...`);
|
|
103
|
+
systemctlUser("stop", SYSTEMD_UNIT);
|
|
104
|
+
}
|
|
105
|
+
else if (nohupPid) {
|
|
106
|
+
await stopProd(nohupPid);
|
|
107
|
+
}
|
|
90
108
|
console.log(`\nInstalling claude-mux@${latest} globally via npm...`);
|
|
91
109
|
const install = spawnSync("npm", ["i", "-g", `claude-mux@${latest}`], {
|
|
92
110
|
stdio: "inherit",
|
|
93
111
|
});
|
|
94
112
|
if (install.status !== 0) {
|
|
95
113
|
console.error("npm install failed.");
|
|
96
|
-
if (
|
|
114
|
+
if (systemdActive) {
|
|
115
|
+
console.error(`Old server was stopped; restart it with: systemctl --user start ${SYSTEMD_UNIT}`);
|
|
116
|
+
}
|
|
117
|
+
else if (nohupPid) {
|
|
97
118
|
console.error("Old server was stopped; restart it manually with `claude-mux serve`.");
|
|
98
119
|
}
|
|
99
120
|
process.exit(install.status ?? 1);
|
|
100
121
|
}
|
|
101
122
|
console.log("\nRe-running setup to sync hooks...");
|
|
102
123
|
await runSetup({ yes: true });
|
|
103
|
-
if (
|
|
124
|
+
if (systemdActive) {
|
|
125
|
+
console.log("");
|
|
126
|
+
console.log(`Starting ${SYSTEMD_UNIT} (systemd)...`);
|
|
127
|
+
systemctlUser("start", SYSTEMD_UNIT);
|
|
128
|
+
}
|
|
129
|
+
else if (nohupPid) {
|
|
104
130
|
console.log("");
|
|
105
131
|
startProd();
|
|
106
132
|
}
|
|
107
|
-
else if (!
|
|
108
|
-
console.log("
|
|
133
|
+
else if (!skipRestart) {
|
|
134
|
+
console.log("No running server detected (neither systemd nor nohup); skipping restart.");
|
|
109
135
|
}
|
|
110
136
|
console.log("\nUpdate complete.");
|
|
111
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/version.d.ts
CHANGED
package/dist/utils/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bn as r,a_ as t,am as i,bb as p}from"./BIuG5Qqu.js";import{L as a}from"./
|
|
1
|
+
import{bn as r,a_ as t,am as i,bb as p}from"./BIuG5Qqu.js";import{L as a}from"./BgJskxmr.js";const s=a("claude-mux-preferences",{terminalTheming:!0,keepAwake:!1});class f{#e=r(t(s.load()));get prefs(){return i(this.#e)}set prefs(e){p(this.#e,e,!0)}get terminalTheming(){return this.prefs.terminalTheming}set terminalTheming(e){this.prefs.terminalTheming!==e&&(this.prefs.terminalTheming=e,s.save(this.prefs))}get keepAwake(){return this.prefs.keepAwake}set keepAwake(e){this.prefs.keepAwake!==e&&(this.prefs.keepAwake=e,s.save(this.prefs))}toggle(e){typeof this.prefs[e]=="boolean"&&(this.prefs[e]=!this.prefs[e],s.save(this.prefs))}}const o=new f;export{o as p};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{aH as Kr,au as pi,aU as bc,A as gi,az as te,ax as On,Z as rn,aL as yc,a5 as qt,h as mi,bg as it,as as Jr,am as g,b1 as wc,r as _c,bl as Go,bh as Le,ay as st,d as vi,o as kc,aE as Ko,a6 as At,k as We,_ as Tt,ae as Sc,bj as xc,ac as Ac,X as qr,j as Oc,i as Pc,aR as Cc,bm as Ar,E as Ec,D as Tc,b6 as bi,aX as yi,I as ur,b0 as wi,b as zc,g as Ic,a1 as Nc,aQ as Dc,ad as Pn,at as Or,m as _i,n as Mc,a4 as Rc,w as Fc,Q as ki,br as Si,H as Zc,af as Yr,bv as zt,b4 as xi,a7 as Ai,b9 as Lc,aO as Oi,C as Jo,J as qo,ba as jc,aG as Vc,u as Bc,a as Wc,N as Uc,ar as Hc,t as on,be as Yo,bd as Xo,V as Gc,ak as Kc,Y as Jc,U as qc,F as Yc,W as Xc,aN as Qc,bt as Pi,a2 as $c,bz as Ci,b8 as Qo,by as Te,b7 as el,ab as tl,bn as G,bb as O,a_ as Ge,bx as E,a$ as K,aj as M,aY as J,a0 as we,aT as ne,b5 as _e,bw as $o,aC as Lt,aw as nl,ap as es,bc as rl,ao as ol,ag as sl,bk as It,ai as il,aW as al,bu as cl}from"./BIuG5Qqu.js";import{a as ll}from"./
|
|
1
|
+
import{aH as Kr,au as pi,aU as bc,A as gi,az as te,ax as On,Z as rn,aL as yc,a5 as qt,h as mi,bg as it,as as Jr,am as g,b1 as wc,r as _c,bl as Go,bh as Le,ay as st,d as vi,o as kc,aE as Ko,a6 as At,k as We,_ as Tt,ae as Sc,bj as xc,ac as Ac,X as qr,j as Oc,i as Pc,aR as Cc,bm as Ar,E as Ec,D as Tc,b6 as bi,aX as yi,I as ur,b0 as wi,b as zc,g as Ic,a1 as Nc,aQ as Dc,ad as Pn,at as Or,m as _i,n as Mc,a4 as Rc,w as Fc,Q as ki,br as Si,H as Zc,af as Yr,bv as zt,b4 as xi,a7 as Ai,b9 as Lc,aO as Oi,C as Jo,J as qo,ba as jc,aG as Vc,u as Bc,a as Wc,N as Uc,ar as Hc,t as on,be as Yo,bd as Xo,V as Gc,ak as Kc,Y as Jc,U as qc,F as Yc,W as Xc,aN as Qc,bt as Pi,a2 as $c,bz as Ci,b8 as Qo,by as Te,b7 as el,ab as tl,bn as G,bb as O,a_ as Ge,bx as E,a$ as K,aj as M,aY as J,a0 as we,aT as ne,b5 as _e,bw as $o,aC as Lt,aw as nl,ap as es,bc as rl,ao as ol,ag as sl,bk as It,ai as il,aW as al,bu as cl}from"./BIuG5Qqu.js";import{a as ll}from"./Bt2k2jRo.js";import{b as ul,n as dl,m as fl,h as hl,g as pl,f as gl,p as ml,c as vl,d as B,a as I,j as he,e as Ei,q as xe,r as et,o as bl,u as yl,k as wl}from"./D7LHlC1M.js";import{B as Xr,p as b,i as le,b as Cn,r as ee,a as oe,c as Re}from"./CGb10hB5.js";const _l=[];function kl(t,e=!1,n=!1){return xn(t,new Map,"",_l,null,n)}function xn(t,e,n,r,o=null,s=!1){if(typeof t=="object"&&t!==null){var i=e.get(t);if(i!==void 0)return i;if(t instanceof Map)return new Map(t);if(t instanceof Set)return new Set(t);if(Kr(t)){var a=Array(t.length);e.set(t,a),o!==null&&e.set(o,a);for(var c=0;c<t.length;c+=1){var l=t[c];c in t&&(a[c]=xn(l,e,n,r,null,s))}return a}if(pi(t)===bc){a={},e.set(t,a),o!==null&&e.set(o,a);for(var u of Object.keys(t))a[u]=xn(t[u],e,n,r,null,s);return a}if(t instanceof Date)return structuredClone(t);if(typeof t.toJSON=="function"&&!s)return xn(t.toJSON(),e,n,r,t)}if(t instanceof EventTarget)return t;try{return structuredClone(t)}catch{return t}}function Sl(){return Symbol(gi)}const xl=Symbol("NaN");function Al(t,e,n){te&&On();var r=new Xr(t),o=!yc();rn(()=>{var s=e();s!==s&&(s=xl),o&&s!==null&&typeof s=="object"&&(s={}),r.ensure(s,n)})}function Ol(t,e){return e}function Pl(t,e,n){for(var r=[],o=e.length,s,i=e.length,a=0;a<o;a++){let h=e[a];yi(h,()=>{if(s){if(s.pending.delete(h),s.done.add(h),s.pending.size===0){var d=t.outrogroups;Pr(t,qr(s.done)),d.delete(s),d.size===0&&(t.outrogroups=null)}}else i-=1},!1)}if(i===0){var c=r.length===0&&n!==null;if(c){var l=n,u=l.parentNode;Nc(u),u.append(l),t.items.clear()}Pr(t,e,!c)}else s={pending:new Set(e),done:new Set},(t.outrogroups??=new Set).add(s)}function Pr(t,e,n=!0){var r;if(t.pending.size>0){r=new Set;for(const i of t.pending.values())for(const a of i)r.add(t.items.get(a).e)}for(var o=0;o<e.length;o++){var s=e[o];if(r?.has(s)){s.f|=We;const i=document.createDocumentFragment();Dc(s,i)}else Pn(e[o],n)}}var ts;function Cl(t,e,n,r,o,s=null){var i=t,a=new Map,c=(e&mi)!==0;if(c){var l=t;i=te?it(Jr(l)):l.appendChild(qt())}te&&On();var u=null,h=Ac(()=>{var S=n();return Kr(S)?S:S==null?[]:qr(S)}),d,f=new Map,p=!0;function m(S){(A.effect.f&Tc)===0&&(A.pending.delete(S),A.fallback=u,El(A,d,i,e,r),u!==null&&(d.length===0?(u.f&We)===0?bi(u):(u.f^=We,Gt(u,null,i)):yi(u,()=>{u=null})))}function v(S){A.pending.delete(S)}var y=rn(()=>{d=g(h);var S=d.length;let w=!1;if(te){var P=wc(i)===_c;P!==(S===0)&&(i=Go(),it(i),Le(!1),w=!0)}for(var k=new Set,T=At,x=xc(),F=0;F<S;F+=1){te&&st.nodeType===vi&&st.data===kc&&(i=st,w=!0,Le(!1));var Z=d[F],Y=r(Z,F),X=p?null:a.get(Y);X?(X.v&&Ko(X.v,Z),X.i&&Ko(X.i,F),x&&T.unskip_effect(X.e)):(X=Tl(a,p?i:ts??=qt(),Z,Y,F,o,e,n),p||(X.e.f|=We),a.set(Y,X)),k.add(Y)}if(S===0&&s&&!u&&(p?u=Tt(()=>s(i)):(u=Tt(()=>s(ts??=qt())),u.f|=We)),S>k.size&&Sc(),te&&S>0&&it(Go()),!p)if(f.set(T,k),x){for(const[$,L]of a)k.has($)||T.skip_effect(L.e);T.oncommit(m),T.ondiscard(v)}else m(T);w&&Le(!0),g(h)}),A={effect:y,items:a,pending:f,outrogroups:null,fallback:u};p=!1,te&&(i=st)}function jt(t){for(;t!==null&&(t.f&zc)===0;)t=t.next;return t}function El(t,e,n,r,o){var s=(r&Ic)!==0,i=e.length,a=t.items,c=jt(t.effect.first),l,u=null,h,d=[],f=[],p,m,v,y;if(s)for(y=0;y<i;y+=1)p=e[y],m=o(p,y),v=a.get(m).e,(v.f&We)===0&&(v.nodes?.a?.measure(),(h??=new Set).add(v));for(y=0;y<i;y+=1){if(p=e[y],m=o(p,y),v=a.get(m).e,t.outrogroups!==null)for(const Z of t.outrogroups)Z.pending.delete(v),Z.done.delete(v);if((v.f&ur)!==0&&(bi(v),s&&(v.nodes?.a?.unfix(),(h??=new Set).delete(v))),(v.f&We)!==0)if(v.f^=We,v===c)Gt(v,null,n);else{var A=u?u.next:c;v===t.effect.last&&(t.effect.last=v.prev),v.prev&&(v.prev.next=v.next),v.next&&(v.next.prev=v.prev),rt(t,u,v),rt(t,v,A),Gt(v,A,n),u=v,d=[],f=[],c=jt(u.next);continue}if(v!==c){if(l!==void 0&&l.has(v)){if(d.length<f.length){var S=f[0],w;u=S.prev;var P=d[0],k=d[d.length-1];for(w=0;w<d.length;w+=1)Gt(d[w],S,n);for(w=0;w<f.length;w+=1)l.delete(f[w]);rt(t,P.prev,k.next),rt(t,u,P),rt(t,k,S),c=S,u=k,y-=1,d=[],f=[]}else l.delete(v),Gt(v,c,n),rt(t,v.prev,v.next),rt(t,v,u===null?t.effect.first:u.next),rt(t,u,v),u=v;continue}for(d=[],f=[];c!==null&&c!==v;)(l??=new Set).add(c),f.push(c),c=jt(c.next);if(c===null)continue}(v.f&We)===0&&d.push(v),u=v,c=jt(v.next)}if(t.outrogroups!==null){for(const Z of t.outrogroups)Z.pending.size===0&&(Pr(t,qr(Z.done)),t.outrogroups?.delete(Z));t.outrogroups.size===0&&(t.outrogroups=null)}if(c!==null||l!==void 0){var T=[];if(l!==void 0)for(v of l)(v.f&ur)===0&&T.push(v);for(;c!==null;)(c.f&ur)===0&&c!==t.fallback&&T.push(c),c=jt(c.next);var x=T.length;if(x>0){var F=(r&mi)!==0&&i===0?n:null;if(s){for(y=0;y<x;y+=1)T[y].nodes?.a?.measure();for(y=0;y<x;y+=1)T[y].nodes?.a?.fix()}Pl(t,T,F)}}s&&wi(()=>{if(h!==void 0)for(v of h)v.nodes?.a?.apply()})}function Tl(t,e,n,r,o,s,i,a){var c=(i&Oc)!==0?(i&Pc)===0?Cc(n,!1,!1):Ar(n):null,l=(i&Ec)!==0?Ar(o):null;return{v:c,i:l,e:Tt(()=>(s(e,c??n,l??o,a),()=>{t.delete(r)}))}}function Gt(t,e,n){if(t.nodes)for(var r=t.nodes.start,o=t.nodes.end,s=e&&(e.f&We)===0?e.nodes.start:n;r!==null;){var i=Or(r);if(s.before(r),r===o)return;r=i}}function rt(t,e,n){e===null?t.effect.first=n:e.next=n,n===null?t.effect.last=e:n.prev=e}function q(t,e,...n){var r=new Xr(t);rn(()=>{const o=e()??null;r.ensure(o,o&&(s=>o(s,...n)))},_i)}function zl(t,e,n,r,o,s){let i=te;te&&On();var a=null;te&&st.nodeType===Mc&&(a=st,On());var c=te?st:t,l=new Xr(c,!1);rn(()=>{const u=e()||null;var h=Fc;if(u===null){l.ensure(null,null);return}return l.ensure(u,d=>{if(u){if(a=te?a:Rc(u,h),ul(a,a),r){te&&dl(u)&&a.append(document.createComment(""));var f=te?Jr(a):a.appendChild(qt());te&&(f===null?Le(!1):it(f)),r(a,f)}ki.nodes.end=a,d.before(a)}te&&it(d)}),()=>{}},_i),Si(()=>{}),i&&(Le(!0),it(c))}function Dy(t,e){let n=null,r=te;var o;if(te){n=st;for(var s=Jr(document.head);s!==null&&(s.nodeType!==vi||s.data!==t);)s=Or(s);if(s===null)Le(!1);else{var i=Or(s);s.remove(),it(i)}}te||(o=document.head.appendChild(qt()));try{rn(()=>{var a=Tt(()=>e(o));a.f|=Zc})}finally{r&&(Le(!0),it(n))}}function My(t,e,n){Yr(()=>{var r=zt(()=>e(t,n?.())||{});if(n&&r?.update){var o=!1,s={};xi(()=>{var i=n();Ai(i),o&&Lc(s,i)&&(s=i,r.update(i))}),o=!0}if(r?.destroy)return()=>r.destroy()})}function Il(t,e){var n=void 0,r;Oi(()=>{n!==(n=e())&&(r&&(Pn(r),r=null),n&&(r=Tt(()=>{Yr(()=>n(t))})))})}function Ti(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t)){var o=t.length;for(e=0;e<o;e++)t[e]&&(n=Ti(t[e]))&&(r&&(r+=" "),r+=n)}else for(n in t)t[n]&&(r&&(r+=" "),r+=n);return r}function Yt(){for(var t,e,n=0,r="",o=arguments.length;n<o;n++)(t=arguments[n])&&(e=Ti(t))&&(r&&(r+=" "),r+=e);return r}function Nl(t){return typeof t=="object"?Yt(t):t??""}const ns=[...`
|
|
2
2
|
\r\f \v\uFEFF`];function Dl(t,e,n){var r=t==null?"":""+t;if(e&&(r=r?r+" "+e:e),n){for(var o of Object.keys(n))if(n[o])r=r?r+" "+o:o;else if(r.length)for(var s=o.length,i=0;(i=r.indexOf(o,i))>=0;){var a=i+s;(i===0||ns.includes(r[i-1]))&&(a===r.length||ns.includes(r[a]))?r=(i===0?"":r.substring(0,i))+r.substring(a+1):i=a}}return r===""?null:r}function rs(t,e=!1){var n=e?" !important;":";",r="";for(var o of Object.keys(t)){var s=t[o];s!=null&&s!==""&&(r+=" "+o+": "+s+n)}return r}function dr(t){return t[0]!=="-"||t[1]!=="-"?t.toLowerCase():t}function Ml(t,e){if(e){var n="",r,o;if(Array.isArray(e)?(r=e[0],o=e[1]):r=e,t){t=String(t).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var s=!1,i=0,a=!1,c=[];r&&c.push(...Object.keys(r).map(dr)),o&&c.push(...Object.keys(o).map(dr));var l=0,u=-1;const m=t.length;for(var h=0;h<m;h++){var d=t[h];if(a?d==="/"&&t[h-1]==="*"&&(a=!1):s?s===d&&(s=!1):d==="/"&&t[h+1]==="*"?a=!0:d==='"'||d==="'"?s=d:d==="("?i++:d===")"&&i--,!a&&s===!1&&i===0){if(d===":"&&u===-1)u=h;else if(d===";"||h===m-1){if(u!==-1){var f=dr(t.substring(l,u).trim());if(!c.includes(f)){d!==";"&&h++;var p=t.substring(l,h).trim();n+=" "+p+";"}}l=h+1,u=-1}}}}return r&&(n+=rs(r)),o&&(n+=rs(o,!0)),n=n.trim(),n===""?null:n}return t==null?null:String(t)}function Rl(t,e,n,r,o,s){var i=t[Jo];if(te||i!==n||i===void 0){var a=Dl(n,r,s);(!te||a!==t.getAttribute("class"))&&(a==null?t.removeAttribute("class"):e?t.className=a:t.setAttribute("class",a)),t[Jo]=n}else if(s&&o!==s)for(var c in s){var l=!!s[c];(o==null||l!==!!o[c])&&t.classList.toggle(c,l)}return s}function fr(t,e={},n,r){for(var o in n){var s=n[o];e[o]!==s&&(n[o]==null?t.style.removeProperty(o):t.style.setProperty(o,s,r))}}function Fl(t,e,n,r){var o=t[qo];if(te||o!==e){var s=Ml(e,r);(!te||s!==t.getAttribute("style"))&&(s==null?t.removeAttribute("style"):t.style.cssText=s),t[qo]=e}else r&&(Array.isArray(r)?(fr(t,n?.[0],r[0]),fr(t,n?.[1],r[1],"important")):fr(t,n,r));return r}function Cr(t,e,n=!1){if(t.multiple){if(e==null)return;if(!Kr(e))return jc();for(var r of t.options)r.selected=e.includes(os(r));return}for(r of t.options){var o=os(r);if(Vc(o,e)){r.selected=!0;return}}(!n||e!==void 0)&&(t.selectedIndex=-1)}function Zl(t){var e=new MutationObserver(()=>{Cr(t,t.__value)});e.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Si(()=>{e.disconnect()})}function os(t){return"__value"in t?t.__value:t.value}const Vt=Symbol("class"),Bt=Symbol("style"),zi=Symbol("is custom element"),Ii=Symbol("is html"),Ll=on?"link":"LINK",jl=on?"input":"INPUT",Vl=on?"option":"OPTION",Bl=on?"select":"SELECT",Wl=on?"progress":"PROGRESS";function Ul(t){if(te){var e=!1,n=()=>{if(!e){if(e=!0,t.hasAttribute("value")){var r=t.value;Qt(t,"value",null),t.value=r}if(t.hasAttribute("checked")){var o=t.checked;Qt(t,"checked",null),t.checked=o}}};t[Yc]=n,wi(n),Xc()}}function Ry(t,e){var n=Yn(t);n.value===(n.value=e??void 0)||t.value===e&&(e!==0||t.nodeName!==Wl)||(t.value=e??"")}function Fy(t,e){var n=Yn(t);n.checked!==(n.checked=e??void 0)&&(t.checked=e)}function Hl(t,e){e?t.hasAttribute("selected")||t.setAttribute("selected",""):t.removeAttribute("selected")}function Qt(t,e,n,r){var o=Yn(t);te&&(o[e]=t.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&t.nodeName===Ll)||o[e]!==(o[e]=n)&&(e==="loading"&&(t[Bc]=n),n==null?t.removeAttribute(e):typeof n!="string"&&Qr(t).includes(e)?t[e]=n:t.setAttribute(e,n))}function Zy(t,e,n){var r=Gc,o=ki;let s=te;te&&Le(!1),Yo(null),Xo(null);try{e!=="style"&&(Er.has(t.getAttribute("is")||t.nodeName)||!customElements||customElements.get(t.getAttribute("is")||t.nodeName.toLowerCase())?Qr(t).includes(e):n&&typeof n=="object")?t[e]=n:Qt(t,e,n==null?n:String(n))}finally{Yo(r),Xo(o),s&&Le(!0)}}function Gl(t,e,n,r,o=!1,s=!1){if(te&&o&&t.nodeName===jl){var i=t,a=i.type==="checkbox"?"defaultChecked":"defaultValue";a in n||Ul(i)}var c=Yn(t),l=c[zi],u=!c[Ii];let h=te&&l;h&&Le(!1);var d=e||{},f=t.nodeName===Vl;for(var p in e)p in n||(n[p]=null);n.class?n.class=Nl(n.class):n[Vt]&&(n.class=null),n[Bt]&&(n.style??=null);var m=Qr(t);for(const k in n){let T=n[k];if(f&&k==="value"&&T==null){t.value=t.__value="",d[k]=T;continue}if(k==="class"){var v=t.namespaceURI==="http://www.w3.org/1999/xhtml";Rl(t,v,T,r,e?.[Vt],n[Vt]),d[k]=T,d[Vt]=n[Vt];continue}if(k==="style"){Fl(t,T,e?.[Bt],n[Bt]),d[k]=T,d[Bt]=n[Bt];continue}var y=d[k];if(!(T===y&&!(T===void 0&&t.hasAttribute(k)))){d[k]=T;var A=k[0]+k[1];if(A!=="$$")if(A==="on"){const x={},F="$$"+k;let Z=k.slice(2);var S=vl(Z);if(fl(Z)&&(Z=Z.slice(0,-7),x.capture=!0),!S&&y){if(T!=null)continue;t.removeEventListener(Z,d[F],x),d[F]=null}if(S)hl(Z,t,T),pl([Z]);else if(T!=null){let Y=function(X){d[k].call(this,X)};d[F]=gl(Z,t,Y,x)}}else if(k==="style")Qt(t,k,T);else if(k==="autofocus")Jc(t,!!T);else if(!l&&(k==="__value"||k==="value"&&T!=null))t.value=t.__value=T;else if(k==="selected"&&f)Hl(t,T);else{var w=k;u||(w=ml(w));var P=w==="defaultValue"||w==="defaultChecked";if(T==null&&!l&&!P)if(c[k]=null,w==="value"||w==="checked"){let x=t;const F=e===void 0;if(w==="value"){let Z=x.defaultValue;x.removeAttribute(w),x.defaultValue=Z,x.value=x.__value=F?Z:null}else{let Z=x.defaultChecked;x.removeAttribute(w),x.defaultChecked=Z,x.checked=F?Z:!1}}else t.removeAttribute(k);else P||m.includes(w)&&(l||typeof T!="string")?(t[w]=T,w in c&&(c[w]=qc)):typeof T!="function"&&Qt(t,w,T)}}}return h&&Le(!0),d}function ge(t,e,n=[],r=[],o=[],s,i=!1,a=!1){Kc(o,n,r,c=>{var l=void 0,u={},h=t.nodeName===Bl,d=!1;if(Oi(()=>{var p=e(...c.map(g)),m=Gl(t,l,p,s,i,a);d&&h&&"value"in p&&Cr(t,p.value);for(let y of Object.getOwnPropertySymbols(u))p[y]||Pn(u[y]);for(let y of Object.getOwnPropertySymbols(p)){var v=p[y];y.description===gi&&(!l||v!==l[y])&&(u[y]&&Pn(u[y]),u[y]=Tt(()=>Il(t,()=>v))),m[y]=v}l=m}),h){var f=t;Yr(()=>{Cr(f,l.value,!0),Zl(f)})}d=!0})}function Yn(t){return t[Wc]??={[zi]:t.nodeName.includes("-"),[Ii]:t.namespaceURI===Uc}}var Er=new Map;function Qr(t){var e=t.getAttribute("is")||t.nodeName,n=Er.get(e);if(n)return n;Er.set(e,n=[]);for(var r,o=t,s=Element.prototype;s!==o;){r=Hc(o);for(var i in r)r[i].set&&i!=="innerHTML"&&i!=="textContent"&&i!=="innerText"&&n.push(i);o=pi(o)}return n}function Kl(t,e,n=e){var r=new WeakSet;Qc(t,"input",async o=>{var s=o?t.defaultValue:t.value;if(s=hr(t)?pr(s):s,n(s),At!==null&&r.add(At),await Pi(),s!==(s=e())){var i=t.selectionStart,a=t.selectionEnd,c=t.value.length;if(t.value=s??"",a!==null){var l=t.value.length;i===a&&a===c&&l>c?(t.selectionStart=l,t.selectionEnd=l):(t.selectionStart=i,t.selectionEnd=Math.min(a,l))}}}),(te&&t.defaultValue!==t.value||zt(e)==null&&t.value)&&(n(hr(t)?pr(t.value):t.value),At!==null&&r.add(At)),xi(()=>{var o=e();if(t===document.activeElement){var s=At;if(r.has(s))return}hr(t)&&o===pr(t.value)||t.type==="date"&&!o&&!t.value||o!==t.value&&(t.value=o??"")})}function hr(t){var e=t.type;return e==="number"||e==="range"}function pr(t){return t===""?null:+t}function Jl(t=!1){const e=$c,n=e.l.u;if(!n)return;let r=()=>Ai(e.s);if(t){let o=0,s={};const i=tl(()=>{let a=!1;const c=e.s;for(const l in c)c[l]!==s[l]&&(s[l]=c[l],a=!0);return a&&o++,o});r=()=>g(i)}n.b.length&&Ci(()=>{ss(e,r),Qo(n.b)}),Te(()=>{const o=zt(()=>n.m.map(el));return()=>{for(const s of o)typeof s=="function"&&s()}}),n.a.length&&Te(()=>{ss(e,r),Qo(n.a)})}function ss(t,e){if(t.l.s)for(const n of t.l.s)g(n);e()}const ql=()=>{const t=ll;return{page:{subscribe:t.page.subscribe},navigating:{subscribe:t.navigating.subscribe},updated:t.updated}},Ly={subscribe(t){return ql().page.subscribe(t)}},Yl={pingInterval:3e4,pongTimeout:1e4,baseReconnectDelay:1e3,maxReconnectDelay:3e4};class Xl{#e=G(!1);get connected(){return g(this.#e)}set connected(e){O(this.#e,e,!0)}ws=null;pingTimer=null;reconnectTimer=null;lastPong=0;reconnectAttempts=0;visibilityHandler=null;config;constructor(e){this.config={...Yl,...e}}shouldReconnect(){return!0}onConnected(){}onDisconnected(){}doConnect(){if(this.ws)return;const e=this.getWsUrl();this.ws=new WebSocket(e),this.ws.onopen=()=>{this.connected=!0,this.reconnectAttempts=0,this.lastPong=Date.now(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.startPingTimer(),this.setupVisibilityHandler(),this.onConnected()},this.ws.onmessage=n=>{if(n.data==="pong"){this.lastPong=Date.now();return}this.handleMessage(n)},this.ws.onclose=()=>{this.connected=!1,this.ws=null,this.stopPingTimer(),this.onDisconnected(),this.shouldReconnect()&&this.scheduleReconnect()},this.ws.onerror=()=>{this.ws?.close()}}doDisconnect(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.stopPingTimer(),this.removeVisibilityHandler(),this.connected=!1,this.reconnectAttempts=0,this.ws&&(this.ws.onopen=null,this.ws.onclose=null,this.ws.onerror=null,this.ws.onmessage=null,this.ws.readyState!==WebSocket.CLOSED&&this.ws.close(),this.ws=null)}forceReconnect(){this.reconnectAttempts=0,this.ws&&(this.ws.onclose=null,this.ws.close(),this.ws=null),this.stopPingTimer(),this.connected=!1,this.doConnect()}startPingTimer(){this.stopPingTimer(),this.pingTimer=setInterval(()=>{if(this.ws?.readyState===WebSocket.OPEN){if(Date.now()-this.lastPong>this.config.pingInterval+this.config.pongTimeout){this.ws?.close();return}this.ws.send("ping")}},this.config.pingInterval)}stopPingTimer(){this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=null)}scheduleReconnect(){if(this.reconnectTimer)return;const e=Math.min(this.config.baseReconnectDelay*Math.pow(2,this.reconnectAttempts)+Math.random()*1e3,this.config.maxReconnectDelay);this.reconnectAttempts++,this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.doConnect()},e)}setupVisibilityHandler(){this.visibilityHandler||(this.visibilityHandler=()=>{document.visibilityState==="visible"&&this.shouldReconnect()&&(!this.ws||this.ws.readyState!==WebSocket.OPEN?this.forceReconnect():this.ws.send("ping"))},document.addEventListener("visibilitychange",this.visibilityHandler))}removeVisibilityHandler(){this.visibilityHandler&&(document.removeEventListener("visibilitychange",this.visibilityHandler),this.visibilityHandler=null)}}function is(t){return Array.isArray(t)?[...t]:t&&typeof t=="object"?{...t}:t}function as(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Ni(t,e){return{load(){try{const n=localStorage.getItem(t);if(n===null)return is(e);const r=JSON.parse(n);return as(e)&&as(r)?{...e,...r}:r}catch{return is(e)}},save(n){try{localStorage.setItem(t,JSON.stringify(n))}catch{}}}}var cs;function _(t,e,n){function r(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(t))return;a._zod.traits.add(t),e(a,c);const l=i.prototype,u=Object.keys(l);for(let h=0;h<u.length;h++){const d=u[h];d in a||(a[d]=l[d].bind(a))}}const o=n?.Parent??Object;class s extends o{}Object.defineProperty(s,"name",{value:t});function i(a){var c;const l=n?.Parent?new s:this;r(l,a),(c=l._zod).deferred??(c.deferred=[]);for(const u of l._zod.deferred)u();return l}return Object.defineProperty(i,"init",{value:r}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>n?.Parent&&a instanceof n.Parent?!0:a?._zod?.traits?.has(t)}),Object.defineProperty(i,"name",{value:t}),i}class Ct extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class Di extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}}(cs=globalThis).__zod_globalConfig??(cs.__zod_globalConfig={});const $r=globalThis.__zod_globalConfig;function bt(t){return $r}function Mi(t){const e=Object.values(t).filter(r=>typeof r=="number");return Object.entries(t).filter(([r,o])=>e.indexOf(+r)===-1).map(([r,o])=>o)}function Tr(t,e){return typeof e=="bigint"?e.toString():e}function Xn(t){return{get value(){{const e=t();return Object.defineProperty(this,"value",{value:e}),e}}}}function eo(t){return t==null}function to(t){const e=t.startsWith("^")?1:0,n=t.endsWith("$")?t.length-1:t.length;return t.slice(e,n)}function Ql(t,e){const n=t/e,r=Math.round(n),o=Number.EPSILON*Math.max(Math.abs(n),1);return Math.abs(n-r)<o?0:n-r}const ls=Symbol("evaluating");function re(t,e,n){let r;Object.defineProperty(t,e,{get(){if(r!==ls)return r===void 0&&(r=ls,r=n()),r},set(o){Object.defineProperty(t,e,{value:o})},configurable:!0})}function kt(t,e,n){Object.defineProperty(t,e,{value:n,writable:!0,enumerable:!0,configurable:!0})}function lt(...t){const e={};for(const n of t){const r=Object.getOwnPropertyDescriptors(n);Object.assign(e,r)}return Object.defineProperties({},e)}function us(t){return JSON.stringify(t)}function $l(t){return t.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const Ri="captureStackTrace"in Error?Error.captureStackTrace:(...t)=>{};function $t(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}const eu=Xn(()=>{if($r.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const t=Function;return new t(""),!0}catch{return!1}});function en(t){if($t(t)===!1)return!1;const e=t.constructor;if(e===void 0||typeof e!="function")return!0;const n=e.prototype;return!($t(n)===!1||Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)}function Fi(t){return en(t)?{...t}:Array.isArray(t)?[...t]:t instanceof Map?new Map(t):t instanceof Set?new Set(t):t}const tu=new Set(["string","number","symbol"]);function Nt(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ut(t,e,n){const r=new t._zod.constr(e??t._zod.def);return(!e||n?.parent)&&(r._zod.parent=t),r}function W(t){const e=t;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function nu(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}const ru={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ou(t,e){const n=t._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const s=lt(t._zod.def,{get shape(){const i={};for(const a in e){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&(i[a]=n.shape[a])}return kt(this,"shape",i),i},checks:[]});return ut(t,s)}function su(t,e){const n=t._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const s=lt(t._zod.def,{get shape(){const i={...t._zod.def.shape};for(const a in e){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);e[a]&&delete i[a]}return kt(this,"shape",i),i},checks:[]});return ut(t,s)}function iu(t,e){if(!en(e))throw new Error("Invalid input to extend: expected a plain object");const n=t._zod.def.checks;if(n&&n.length>0){const s=t._zod.def.shape;for(const i in e)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const o=lt(t._zod.def,{get shape(){const s={...t._zod.def.shape,...e};return kt(this,"shape",s),s}});return ut(t,o)}function au(t,e){if(!en(e))throw new Error("Invalid input to safeExtend: expected a plain object");const n=lt(t._zod.def,{get shape(){const r={...t._zod.def.shape,...e};return kt(this,"shape",r),r}});return ut(t,n)}function cu(t,e){if(t._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");const n=lt(t._zod.def,{get shape(){const r={...t._zod.def.shape,...e._zod.def.shape};return kt(this,"shape",r),r},get catchall(){return e._zod.def.catchall},checks:e._zod.def.checks??[]});return ut(t,n)}function lu(t,e,n){const o=e._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const i=lt(e._zod.def,{get shape(){const a=e._zod.def.shape,c={...a};if(n)for(const l in n){if(!(l in a))throw new Error(`Unrecognized key: "${l}"`);n[l]&&(c[l]=t?new t({type:"optional",innerType:a[l]}):a[l])}else for(const l in a)c[l]=t?new t({type:"optional",innerType:a[l]}):a[l];return kt(this,"shape",c),c},checks:[]});return ut(e,i)}function uu(t,e,n){const r=lt(e._zod.def,{get shape(){const o=e._zod.def.shape,s={...o};if(n)for(const i in n){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);n[i]&&(s[i]=new t({type:"nonoptional",innerType:o[i]}))}else for(const i in o)s[i]=new t({type:"nonoptional",innerType:o[i]});return kt(this,"shape",s),s}});return ut(e,r)}function Pt(t,e=0){if(t.aborted===!0)return!0;for(let n=e;n<t.issues.length;n++)if(t.issues[n]?.continue!==!0)return!0;return!1}function du(t,e=0){if(t.aborted===!0)return!0;for(let n=e;n<t.issues.length;n++)if(t.issues[n]?.continue===!1)return!0;return!1}function Zi(t,e){return e.map(n=>{var r;return(r=n).path??(r.path=[]),n.path.unshift(t),n})}function pn(t){return typeof t=="string"?t:t?.message}function yt(t,e,n){const r=t.message?t.message:pn(t.inst?._zod.def?.error?.(t))??pn(e?.error?.(t))??pn(n.customError?.(t))??pn(n.localeError?.(t))??"Invalid input",{inst:o,continue:s,input:i,...a}=t;return a.path??(a.path=[]),a.message=r,e?.reportInput&&(a.input=i),a}function no(t){return Array.isArray(t)?"array":typeof t=="string"?"string":"unknown"}function tn(...t){const[e,n,r]=t;return typeof e=="string"?{message:e,code:"custom",input:n,inst:r}:{...e}}const Li=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),t.message=JSON.stringify(e,Tr,2),Object.defineProperty(t,"toString",{value:()=>t.message,enumerable:!1})},ji=_("$ZodError",Li),Vi=_("$ZodError",Li,{Parent:Error});function fu(t,e=n=>n.message){const n={},r=[];for(const o of t.issues)o.path.length>0?(n[o.path[0]]=n[o.path[0]]||[],n[o.path[0]].push(e(o))):r.push(e(o));return{formErrors:r,fieldErrors:n}}function hu(t,e=n=>n.message){const n={_errors:[]},r=(o,s=[])=>{for(const i of o.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(a=>r({issues:a},[...s,...i.path]));else if(i.code==="invalid_key")r({issues:i.issues},[...s,...i.path]);else if(i.code==="invalid_element")r({issues:i.issues},[...s,...i.path]);else{const a=[...s,...i.path];if(a.length===0)n._errors.push(e(i));else{let c=n,l=0;for(;l<a.length;){const u=a[l];l===a.length-1?(c[u]=c[u]||{_errors:[]},c[u]._errors.push(e(i))):c[u]=c[u]||{_errors:[]},c=c[u],l++}}}};return r(t),n}const ro=t=>(e,n,r,o)=>{const s=r?{...r,async:!1}:{async:!1},i=e._zod.run({value:n,issues:[]},s);if(i instanceof Promise)throw new Ct;if(i.issues.length){const a=new(o?.Err??t)(i.issues.map(c=>yt(c,s,bt())));throw Ri(a,o?.callee),a}return i.value},oo=t=>async(e,n,r,o)=>{const s=r?{...r,async:!0}:{async:!0};let i=e._zod.run({value:n,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){const a=new(o?.Err??t)(i.issues.map(c=>yt(c,s,bt())));throw Ri(a,o?.callee),a}return i.value},Qn=t=>(e,n,r)=>{const o=r?{...r,async:!1}:{async:!1},s=e._zod.run({value:n,issues:[]},o);if(s instanceof Promise)throw new Ct;return s.issues.length?{success:!1,error:new(t??ji)(s.issues.map(i=>yt(i,o,bt())))}:{success:!0,data:s.value}},pu=Qn(Vi),$n=t=>async(e,n,r)=>{const o=r?{...r,async:!0}:{async:!0};let s=e._zod.run({value:n,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new t(s.issues.map(i=>yt(i,o,bt())))}:{success:!0,data:s.value}},gu=$n(Vi),mu=t=>(e,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return ro(t)(e,n,o)},vu=t=>(e,n,r)=>ro(t)(e,n,r),bu=t=>async(e,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return oo(t)(e,n,o)},yu=t=>async(e,n,r)=>oo(t)(e,n,r),wu=t=>(e,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return Qn(t)(e,n,o)},_u=t=>(e,n,r)=>Qn(t)(e,n,r),ku=t=>async(e,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return $n(t)(e,n,o)},Su=t=>async(e,n,r)=>$n(t)(e,n,r),xu=/^[cC][0-9a-z]{6,}$/,Au=/^[0-9a-z]+$/,Ou=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Pu=/^[0-9a-vA-V]{20}$/,Cu=/^[A-Za-z0-9]{27}$/,Eu=/^[a-zA-Z0-9_-]{21}$/,Tu=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,zu=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ds=t=>t?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Iu=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Nu="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function Du(){return new RegExp(Nu,"u")}const Mu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ru=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Fu=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Zu=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Lu=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Bi=/^[A-Za-z0-9_-]*$/,ju=/^https?$/,Vu=/^\+[1-9]\d{6,14}$/,Wi="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Bu=new RegExp(`^${Wi}$`);function Ui(t){const e="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof t.precision=="number"?t.precision===-1?`${e}`:t.precision===0?`${e}:[0-5]\\d`:`${e}:[0-5]\\d\\.\\d{${t.precision}}`:`${e}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Wu(t){return new RegExp(`^${Ui(t)}$`)}function Uu(t){const e=Ui({precision:t.precision}),n=["Z"];t.local&&n.push(""),t.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const r=`${e}(?:${n.join("|")})`;return new RegExp(`^${Wi}T(?:${r})$`)}const Hu=t=>{const e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)},Gu=/^-?\d+$/,Ku=/^-?\d+(?:\.\d+)?$/,Ju=/^(?:true|false)$/i,qu=/^[^A-Z]*$/,Yu=/^[^a-z]*$/,ze=_("$ZodCheck",(t,e)=>{var n;t._zod??(t._zod={}),t._zod.def=e,(n=t._zod).onattach??(n.onattach=[])}),Hi={number:"number",bigint:"bigint",object:"date"},Gi=_("$ZodCheckLessThan",(t,e)=>{ze.init(t,e);const n=Hi[typeof e.value];t._zod.onattach.push(r=>{const o=r._zod.bag,s=(e.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;e.value<s&&(e.inclusive?o.maximum=e.value:o.exclusiveMaximum=e.value)}),t._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:n,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),Ki=_("$ZodCheckGreaterThan",(t,e)=>{ze.init(t,e);const n=Hi[typeof e.value];t._zod.onattach.push(r=>{const o=r._zod.bag,s=(e.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>s&&(e.inclusive?o.minimum=e.value:o.exclusiveMinimum=e.value)}),t._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:n,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}}),Xu=_("$ZodCheckMultipleOf",(t,e)=>{ze.init(t,e),t._zod.onattach.push(n=>{var r;(r=n._zod.bag).multipleOf??(r.multipleOf=e.value)}),t._zod.check=n=>{if(typeof n.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof n.value=="bigint"?n.value%e.value===BigInt(0):Ql(n.value,e.value)===0)||n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:e.value,input:n.value,inst:t,continue:!e.abort})}}),Qu=_("$ZodCheckNumberFormat",(t,e)=>{ze.init(t,e),e.format=e.format||"float64";const n=e.format?.includes("int"),r=n?"int":"number",[o,s]=ru[e.format];t._zod.onattach.push(i=>{const a=i._zod.bag;a.format=e.format,a.minimum=o,a.maximum=s,n&&(a.pattern=Gu)}),t._zod.check=i=>{const a=i.value;if(n){if(!Number.isInteger(a)){i.issues.push({expected:r,format:e.format,code:"invalid_type",continue:!1,input:a,inst:t});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:r,inclusive:!0,continue:!e.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:r,inclusive:!0,continue:!e.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:t,continue:!e.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:t,continue:!e.abort})}}),$u=_("$ZodCheckMaxLength",(t,e)=>{var n;ze.init(t,e),(n=t._zod.def).when??(n.when=r=>{const o=r.value;return!eo(o)&&o.length!==void 0}),t._zod.onattach.push(r=>{const o=r._zod.bag.maximum??Number.POSITIVE_INFINITY;e.maximum<o&&(r._zod.bag.maximum=e.maximum)}),t._zod.check=r=>{const o=r.value;if(o.length<=e.maximum)return;const i=no(o);r.issues.push({origin:i,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:t,continue:!e.abort})}}),ed=_("$ZodCheckMinLength",(t,e)=>{var n;ze.init(t,e),(n=t._zod.def).when??(n.when=r=>{const o=r.value;return!eo(o)&&o.length!==void 0}),t._zod.onattach.push(r=>{const o=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;e.minimum>o&&(r._zod.bag.minimum=e.minimum)}),t._zod.check=r=>{const o=r.value;if(o.length>=e.minimum)return;const i=no(o);r.issues.push({origin:i,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:t,continue:!e.abort})}}),td=_("$ZodCheckLengthEquals",(t,e)=>{var n;ze.init(t,e),(n=t._zod.def).when??(n.when=r=>{const o=r.value;return!eo(o)&&o.length!==void 0}),t._zod.onattach.push(r=>{const o=r._zod.bag;o.minimum=e.length,o.maximum=e.length,o.length=e.length}),t._zod.check=r=>{const o=r.value,s=o.length;if(s===e.length)return;const i=no(o),a=s>e.length;r.issues.push({origin:i,...a?{code:"too_big",maximum:e.length}:{code:"too_small",minimum:e.length},inclusive:!0,exact:!0,input:r.value,inst:t,continue:!e.abort})}}),er=_("$ZodCheckStringFormat",(t,e)=>{var n,r;ze.init(t,e),t._zod.onattach.push(o=>{const s=o._zod.bag;s.format=e.format,e.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(e.pattern))}),e.pattern?(n=t._zod).check??(n.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(r=t._zod).check??(r.check=()=>{})}),nd=_("$ZodCheckRegex",(t,e)=>{er.init(t,e),t._zod.check=n=>{e.pattern.lastIndex=0,!e.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:e.pattern.toString(),inst:t,continue:!e.abort})}}),rd=_("$ZodCheckLowerCase",(t,e)=>{e.pattern??(e.pattern=qu),er.init(t,e)}),od=_("$ZodCheckUpperCase",(t,e)=>{e.pattern??(e.pattern=Yu),er.init(t,e)}),sd=_("$ZodCheckIncludes",(t,e)=>{ze.init(t,e);const n=Nt(e.includes),r=new RegExp(typeof e.position=="number"?`^.{${e.position}}${n}`:n);e.pattern=r,t._zod.onattach.push(o=>{const s=o._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(r)}),t._zod.check=o=>{o.value.includes(e.includes,e.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:e.includes,input:o.value,inst:t,continue:!e.abort})}}),id=_("$ZodCheckStartsWith",(t,e)=>{ze.init(t,e);const n=new RegExp(`^${Nt(e.prefix)}.*`);e.pattern??(e.pattern=n),t._zod.onattach.push(r=>{const o=r._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),t._zod.check=r=>{r.value.startsWith(e.prefix)||r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:e.prefix,input:r.value,inst:t,continue:!e.abort})}}),ad=_("$ZodCheckEndsWith",(t,e)=>{ze.init(t,e);const n=new RegExp(`.*${Nt(e.suffix)}$`);e.pattern??(e.pattern=n),t._zod.onattach.push(r=>{const o=r._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),t._zod.check=r=>{r.value.endsWith(e.suffix)||r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:e.suffix,input:r.value,inst:t,continue:!e.abort})}}),cd=_("$ZodCheckOverwrite",(t,e)=>{ze.init(t,e),t._zod.check=n=>{n.value=e.tx(n.value)}});class ld{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e=="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}const r=e.split(`
|
|
3
3
|
`).filter(i=>i),o=Math.min(...r.map(i=>i.length-i.trimStart().length)),s=r.map(i=>i.slice(o)).map(i=>" ".repeat(this.indent*2)+i);for(const i of s)this.content.push(i)}compile(){const e=Function,n=this?.args,o=[...(this?.content??[""]).map(s=>` ${s}`)];return new e(...n,o.join(`
|
|
4
4
|
`))}}const ud={major:4,minor:4,patch:3},ue=_("$ZodType",(t,e)=>{var n;t??(t={}),t._zod.def=e,t._zod.bag=t._zod.bag||{},t._zod.version=ud;const r=[...t._zod.def.checks??[]];t._zod.traits.has("$ZodCheck")&&r.unshift(t);for(const o of r)for(const s of o._zod.onattach)s(t);if(r.length===0)(n=t._zod).deferred??(n.deferred=[]),t._zod.deferred?.push(()=>{t._zod.run=t._zod.parse});else{const o=(i,a,c)=>{let l=Pt(i),u;for(const h of a){if(h._zod.def.when){if(du(i)||!h._zod.def.when(i))continue}else if(l)continue;const d=i.issues.length,f=h._zod.check(i);if(f instanceof Promise&&c?.async===!1)throw new Ct;if(u||f instanceof Promise)u=(u??Promise.resolve()).then(async()=>{await f,i.issues.length!==d&&(l||(l=Pt(i,d)))});else{if(i.issues.length===d)continue;l||(l=Pt(i,d))}}return u?u.then(()=>i):i},s=(i,a,c)=>{if(Pt(i))return i.aborted=!0,i;const l=o(a,r,c);if(l instanceof Promise){if(c.async===!1)throw new Ct;return l.then(u=>t._zod.parse(u,c))}return t._zod.parse(l,c)};t._zod.run=(i,a)=>{if(a.skipChecks)return t._zod.parse(i,a);if(a.direction==="backward"){const l=t._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return l instanceof Promise?l.then(u=>s(u,i,a)):s(l,i,a)}const c=t._zod.parse(i,a);if(c instanceof Promise){if(a.async===!1)throw new Ct;return c.then(l=>o(l,r,a))}return o(c,r,a)}}re(t,"~standard",()=>({validate:o=>{try{const s=pu(t,o);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return gu(t,o).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),so=_("$ZodString",(t,e)=>{ue.init(t,e),t._zod.pattern=[...t?._zod.bag?.patterns??[]].pop()??Hu(t._zod.bag),t._zod.parse=(n,r)=>{if(e.coerce)try{n.value=String(n.value)}catch{}return typeof n.value=="string"||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:t}),n}}),ae=_("$ZodStringFormat",(t,e)=>{er.init(t,e),so.init(t,e)}),dd=_("$ZodGUID",(t,e)=>{e.pattern??(e.pattern=zu),ae.init(t,e)}),fd=_("$ZodUUID",(t,e)=>{if(e.version){const r={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[e.version];if(r===void 0)throw new Error(`Invalid UUID version: "${e.version}"`);e.pattern??(e.pattern=ds(r))}else e.pattern??(e.pattern=ds());ae.init(t,e)}),hd=_("$ZodEmail",(t,e)=>{e.pattern??(e.pattern=Iu),ae.init(t,e)}),pd=_("$ZodURL",(t,e)=>{ae.init(t,e),t._zod.check=n=>{try{const r=n.value.trim();if(!e.normalize&&e.protocol?.source===ju.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:n.value,inst:t,continue:!e.abort});return}const o=new URL(r);e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(o.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:n.value,inst:t,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:n.value,inst:t,continue:!e.abort})),e.normalize?n.value=o.href:n.value=r;return}catch{n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:t,continue:!e.abort})}}}),gd=_("$ZodEmoji",(t,e)=>{e.pattern??(e.pattern=Du()),ae.init(t,e)}),md=_("$ZodNanoID",(t,e)=>{e.pattern??(e.pattern=Eu),ae.init(t,e)}),vd=_("$ZodCUID",(t,e)=>{e.pattern??(e.pattern=xu),ae.init(t,e)}),bd=_("$ZodCUID2",(t,e)=>{e.pattern??(e.pattern=Au),ae.init(t,e)}),yd=_("$ZodULID",(t,e)=>{e.pattern??(e.pattern=Ou),ae.init(t,e)}),wd=_("$ZodXID",(t,e)=>{e.pattern??(e.pattern=Pu),ae.init(t,e)}),_d=_("$ZodKSUID",(t,e)=>{e.pattern??(e.pattern=Cu),ae.init(t,e)}),kd=_("$ZodISODateTime",(t,e)=>{e.pattern??(e.pattern=Uu(e)),ae.init(t,e)}),Sd=_("$ZodISODate",(t,e)=>{e.pattern??(e.pattern=Bu),ae.init(t,e)}),xd=_("$ZodISOTime",(t,e)=>{e.pattern??(e.pattern=Wu(e)),ae.init(t,e)}),Ad=_("$ZodISODuration",(t,e)=>{e.pattern??(e.pattern=Tu),ae.init(t,e)}),Od=_("$ZodIPv4",(t,e)=>{e.pattern??(e.pattern=Mu),ae.init(t,e),t._zod.bag.format="ipv4"}),Pd=_("$ZodIPv6",(t,e)=>{e.pattern??(e.pattern=Ru),ae.init(t,e),t._zod.bag.format="ipv6",t._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:t,continue:!e.abort})}}}),Cd=_("$ZodCIDRv4",(t,e)=>{e.pattern??(e.pattern=Fu),ae.init(t,e)}),Ed=_("$ZodCIDRv6",(t,e)=>{e.pattern??(e.pattern=Zu),ae.init(t,e),t._zod.check=n=>{const r=n.value.split("/");try{if(r.length!==2)throw new Error;const[o,s]=r;if(!s)throw new Error;const i=Number(s);if(`${i}`!==s)throw new Error;if(i<0||i>128)throw new Error;new URL(`http://[${o}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:t,continue:!e.abort})}}});function Ji(t){if(t==="")return!0;if(/\s/.test(t)||t.length%4!==0)return!1;try{return atob(t),!0}catch{return!1}}const Td=_("$ZodBase64",(t,e)=>{e.pattern??(e.pattern=Lu),ae.init(t,e),t._zod.bag.contentEncoding="base64",t._zod.check=n=>{Ji(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:t,continue:!e.abort})}});function zd(t){if(!Bi.test(t))return!1;const e=t.replace(/[-_]/g,r=>r==="-"?"+":"/"),n=e.padEnd(Math.ceil(e.length/4)*4,"=");return Ji(n)}const Id=_("$ZodBase64URL",(t,e)=>{e.pattern??(e.pattern=Bi),ae.init(t,e),t._zod.bag.contentEncoding="base64url",t._zod.check=n=>{zd(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:t,continue:!e.abort})}}),Nd=_("$ZodE164",(t,e)=>{e.pattern??(e.pattern=Vu),ae.init(t,e)});function Dd(t,e=null){try{const n=t.split(".");if(n.length!==3)return!1;const[r]=n;if(!r)return!1;const o=JSON.parse(atob(r));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||e&&(!("alg"in o)||o.alg!==e))}catch{return!1}}const Md=_("$ZodJWT",(t,e)=>{ae.init(t,e),t._zod.check=n=>{Dd(n.value,e.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:t,continue:!e.abort})}}),qi=_("$ZodNumber",(t,e)=>{ue.init(t,e),t._zod.pattern=t._zod.bag.pattern??Ku,t._zod.parse=(n,r)=>{if(e.coerce)try{n.value=Number(n.value)}catch{}const o=n.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return n;const s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return n.issues.push({expected:"number",code:"invalid_type",input:o,inst:t,...s?{received:s}:{}}),n}}),Rd=_("$ZodNumberFormat",(t,e)=>{Qu.init(t,e),qi.init(t,e)}),Fd=_("$ZodBoolean",(t,e)=>{ue.init(t,e),t._zod.pattern=Ju,t._zod.parse=(n,r)=>{if(e.coerce)try{n.value=!!n.value}catch{}const o=n.value;return typeof o=="boolean"||n.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:t}),n}}),Zd=_("$ZodUnknown",(t,e)=>{ue.init(t,e),t._zod.parse=n=>n}),Ld=_("$ZodNever",(t,e)=>{ue.init(t,e),t._zod.parse=(n,r)=>(n.issues.push({expected:"never",code:"invalid_type",input:n.value,inst:t}),n)});function fs(t,e,n){t.issues.length&&e.issues.push(...Zi(n,t.issues)),e.value[n]=t.value}const jd=_("$ZodArray",(t,e)=>{ue.init(t,e),t._zod.parse=(n,r)=>{const o=n.value;if(!Array.isArray(o))return n.issues.push({expected:"array",code:"invalid_type",input:o,inst:t}),n;n.value=Array(o.length);const s=[];for(let i=0;i<o.length;i++){const a=o[i],c=e.element._zod.run({value:a,issues:[]},r);c instanceof Promise?s.push(c.then(l=>fs(l,n,i))):fs(c,n,i)}return s.length?Promise.all(s).then(()=>n):n}});function En(t,e,n,r,o,s){const i=n in r;if(t.issues.length){if(o&&s&&!i)return;e.issues.push(...Zi(n,t.issues))}if(!i&&!o){t.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[n]});return}t.value===void 0?i&&(e.value[n]=void 0):e.value[n]=t.value}function Yi(t){const e=Object.keys(t.shape);for(const r of e)if(!t.shape?.[r]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${r}": expected a Zod schema`);const n=nu(t.shape);return{...t,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(n)}}function Xi(t,e,n,r,o,s){const i=[],a=o.keySet,c=o.catchall._zod,l=c.def.type,u=c.optin==="optional",h=c.optout==="optional";for(const d in e){if(d==="__proto__"||a.has(d))continue;if(l==="never"){i.push(d);continue}const f=c.run({value:e[d],issues:[]},r);f instanceof Promise?t.push(f.then(p=>En(p,n,d,e,u,h))):En(f,n,d,e,u,h)}return i.length&&n.issues.push({code:"unrecognized_keys",keys:i,input:e,inst:s}),t.length?Promise.all(t).then(()=>n):n}const Vd=_("$ZodObject",(t,e)=>{if(ue.init(t,e),!Object.getOwnPropertyDescriptor(e,"shape")?.get){const a=e.shape;Object.defineProperty(e,"shape",{get:()=>{const c={...a};return Object.defineProperty(e,"shape",{value:c}),c}})}const r=Xn(()=>Yi(e));re(t._zod,"propValues",()=>{const a=e.shape,c={};for(const l in a){const u=a[l]._zod;if(u.values){c[l]??(c[l]=new Set);for(const h of u.values)c[l].add(h)}}return c});const o=$t,s=e.catchall;let i;t._zod.parse=(a,c)=>{i??(i=r.value);const l=a.value;if(!o(l))return a.issues.push({expected:"object",code:"invalid_type",input:l,inst:t}),a;a.value={};const u=[],h=i.shape;for(const d of i.keys){const f=h[d],p=f._zod.optin==="optional",m=f._zod.optout==="optional",v=f._zod.run({value:l[d],issues:[]},c);v instanceof Promise?u.push(v.then(y=>En(y,a,d,l,p,m))):En(v,a,d,l,p,m)}return s?Xi(u,l,a,c,r.value,t):u.length?Promise.all(u).then(()=>a):a}}),Bd=_("$ZodObjectJIT",(t,e)=>{Vd.init(t,e);const n=t._zod.parse,r=Xn(()=>Yi(e)),o=d=>{const f=new ld(["shape","payload","ctx"]),p=r.value,m=S=>{const w=us(S);return`shape[${w}]._zod.run({ value: input[${w}], issues: [] }, ctx)`};f.write("const input = payload.value;");const v=Object.create(null);let y=0;for(const S of p.keys)v[S]=`key_${y++}`;f.write("const newResult = {};");for(const S of p.keys){const w=v[S],P=us(S),k=d[S],T=k?._zod?.optin==="optional",x=k?._zod?.optout==="optional";f.write(`const ${w} = ${m(S)};`),T&&x?f.write(`
|