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.
Files changed (77) hide show
  1. package/CLAUDE.md +26 -0
  2. package/README.md +52 -2
  3. package/dist/cli.js +2 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/index.d.ts +1 -0
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +1 -0
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/service.d.ts +3 -0
  10. package/dist/commands/service.d.ts.map +1 -0
  11. package/dist/commands/service.js +154 -0
  12. package/dist/commands/service.js.map +1 -0
  13. package/dist/commands/update.d.ts.map +1 -1
  14. package/dist/commands/update.js +33 -7
  15. package/dist/commands/update.js.map +1 -1
  16. package/dist/utils/version.d.ts +1 -1
  17. package/dist/utils/version.js +1 -1
  18. package/dist/web/client/_app/immutable/chunks/{BH3SFRWG.js → BLo15bFd.js} +1 -1
  19. package/{web/.svelte-kit/output/client/_app/immutable/chunks/BkAy2L0f.js → dist/web/client/_app/immutable/chunks/BgJskxmr.js} +1 -1
  20. package/dist/web/client/_app/immutable/chunks/Bt2k2jRo.js +3 -0
  21. package/{web/.svelte-kit/output/client/_app/immutable/chunks/DtqyE18S.js → dist/web/client/_app/immutable/chunks/C6pWl6HR.js} +1 -1
  22. package/dist/web/client/_app/immutable/entry/{app.r0-ETIJN.js → app.y8oaiZ5C.js} +2 -2
  23. package/dist/web/client/_app/immutable/entry/start.BDsAPvhr.js +1 -0
  24. package/dist/web/client/_app/immutable/nodes/{0.NP7v5jwY.js → 0.B1tBzkNl.js} +1 -1
  25. package/dist/web/client/_app/immutable/nodes/{1.CmX900J8.js → 1.CLTX9SdC.js} +1 -1
  26. package/dist/web/client/_app/immutable/nodes/{2.BQA6OZIp.js → 2.aW0Cuc8S.js} +1 -1
  27. package/dist/web/client/_app/immutable/nodes/{3.bY9l1t_h.js → 3.C4hlMq3g.js} +1 -1
  28. package/dist/web/client/_app/version.json +1 -1
  29. package/dist/web/server/chunks/{0-1j1Fe_oa.js → 0-DbNdYDmp.js} +6 -6
  30. package/dist/web/server/chunks/{0-1j1Fe_oa.js.map → 0-DbNdYDmp.js.map} +1 -1
  31. package/dist/web/server/chunks/{1-D1dSc_vl.js → 1-D9Ac3YXp.js} +3 -3
  32. package/dist/web/server/chunks/{1-D1dSc_vl.js.map → 1-D9Ac3YXp.js.map} +1 -1
  33. package/dist/web/server/chunks/{2-CCOk5pX2.js → 2-C-W2f2_7.js} +5 -5
  34. package/dist/web/server/chunks/{2-CCOk5pX2.js.map → 2-C-W2f2_7.js.map} +1 -1
  35. package/dist/web/server/chunks/{3-DFcJIcL4.js → 3-CqqeZNJY.js} +5 -5
  36. package/dist/web/server/chunks/{3-DFcJIcL4.js.map → 3-CqqeZNJY.js.map} +1 -1
  37. package/dist/web/server/index.js +1 -1
  38. package/dist/web/server/index.js.map +1 -1
  39. package/dist/web/server/manifest.js +9 -9
  40. package/dist/web/server/manifest.js.map +1 -1
  41. package/package.json +1 -1
  42. package/src/cli.ts +2 -0
  43. package/src/commands/index.ts +1 -0
  44. package/src/commands/service.ts +180 -0
  45. package/src/commands/update.ts +34 -6
  46. package/src/utils/version.ts +1 -1
  47. package/web/.svelte-kit/adapter-bun/chunks/internal.js +1 -1
  48. package/web/.svelte-kit/adapter-bun/manifest-full.js +1 -1
  49. package/web/.svelte-kit/adapter-bun/manifest.js +1 -1
  50. package/web/.svelte-kit/adapter-bun/nodes/0.js +1 -1
  51. package/web/.svelte-kit/adapter-bun/nodes/1.js +1 -1
  52. package/web/.svelte-kit/adapter-bun/nodes/2.js +1 -1
  53. package/web/.svelte-kit/adapter-bun/nodes/3.js +1 -1
  54. package/web/.svelte-kit/generated/server/internal.js +1 -1
  55. package/web/.svelte-kit/output/client/.vite/manifest.json +44 -44
  56. package/web/.svelte-kit/output/client/_app/immutable/chunks/{BH3SFRWG.js → BLo15bFd.js} +1 -1
  57. package/{dist/web/client/_app/immutable/chunks/BkAy2L0f.js → web/.svelte-kit/output/client/_app/immutable/chunks/BgJskxmr.js} +1 -1
  58. package/web/.svelte-kit/output/client/_app/immutable/chunks/Bt2k2jRo.js +3 -0
  59. package/{dist/web/client/_app/immutable/chunks/DtqyE18S.js → web/.svelte-kit/output/client/_app/immutable/chunks/C6pWl6HR.js} +1 -1
  60. package/web/.svelte-kit/output/client/_app/immutable/entry/{app.r0-ETIJN.js → app.y8oaiZ5C.js} +2 -2
  61. package/web/.svelte-kit/output/client/_app/immutable/entry/start.BDsAPvhr.js +1 -0
  62. package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.NP7v5jwY.js → 0.B1tBzkNl.js} +1 -1
  63. package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.CmX900J8.js → 1.CLTX9SdC.js} +1 -1
  64. package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.BQA6OZIp.js → 2.aW0Cuc8S.js} +1 -1
  65. package/web/.svelte-kit/output/client/_app/immutable/nodes/{3.bY9l1t_h.js → 3.C4hlMq3g.js} +1 -1
  66. package/web/.svelte-kit/output/client/_app/version.json +1 -1
  67. package/web/.svelte-kit/output/server/chunks/internal.js +1 -1
  68. package/web/.svelte-kit/output/server/manifest-full.js +1 -1
  69. package/web/.svelte-kit/output/server/manifest.js +1 -1
  70. package/web/.svelte-kit/output/server/nodes/0.js +1 -1
  71. package/web/.svelte-kit/output/server/nodes/1.js +1 -1
  72. package/web/.svelte-kit/output/server/nodes/2.js +1 -1
  73. package/web/.svelte-kit/output/server/nodes/3.js +1 -1
  74. package/dist/web/client/_app/immutable/chunks/e3neaX0M.js +0 -3
  75. package/dist/web/client/_app/immutable/entry/start.C4mVhUwG.js +0 -1
  76. package/web/.svelte-kit/output/client/_app/immutable/chunks/e3neaX0M.js +0 -3
  77. 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
- bun install -g claude-mux
71
- # or: npm install -g claude-mux
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":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createServiceCommand(): Command;
3
+ //# sourceMappingURL=service.d.ts.map
@@ -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;AA2EpC,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,CA0ClE;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAS7C"}
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"}
@@ -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 wasRunning = !opts.skipRestart ? findProdPid() : null;
88
- if (wasRunning)
89
- await stopProd(wasRunning);
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 (wasRunning) {
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 (wasRunning) {
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 (!opts.skipRestart) {
108
- console.log("Prod server was not running; skipping restart.");
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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"}
@@ -2,5 +2,5 @@
2
2
  * Central version constant for claude-watch.
3
3
  * Keep in sync with package.json version.
4
4
  */
5
- export declare const VERSION = "0.8.0";
5
+ export declare const VERSION = "0.9.1";
6
6
  //# sourceMappingURL=version.d.ts.map
@@ -2,5 +2,5 @@
2
2
  * Central version constant for claude-watch.
3
3
  * Keep in sync with package.json version.
4
4
  */
5
- export const VERSION = "0.8.0";
5
+ export const VERSION = "0.9.1";
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- import{bn as r,a_ as t,am as i,bb as p}from"./BIuG5Qqu.js";import{L as a}from"./BkAy2L0f.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
+ 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"./e3neaX0M.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=[...`
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(`