@bd7pil/ocrc 0.12.3 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![Release](https://img.shields.io/github/v/release/BD7PIL/ocrc?color=10b981)](https://github.com/BD7PIL/ocrc/releases)
8
8
  [![License: MIT](https://img.shields.io/github/license/BD7PIL/ocrc?color=10b981)](LICENSE)
9
9
  [![CI](https://img.shields.io/github/actions/workflow/status/BD7PIL/ocrc/ci.yml?branch=main&label=CI)](https://github.com/BD7PIL/ocrc/actions)
10
- [![opencode plugin](https://img.shields.io/badge/opencode-plugin-10b981)](https://opencode.ai)
10
+ [![tests](https://img.shields.io/badge/tests-479%20backend%20%2B%20120%20web-10b981)](CHANGELOG.md)
11
11
 
12
12
  A fork of [agentjoey/opencode-remote-control](https://github.com/agentjoey/opencode-remote-control)
13
13
  (MIT); the Telegram interaction model is inspired by
@@ -15,314 +15,172 @@ A fork of [agentjoey/opencode-remote-control](https://github.com/agentjoey/openc
15
15
  Full attribution in [NOTICE](NOTICE). npm `@bd7pil/ocrc` · config `~/.ocrc/` · CLI `ocrc`.
16
16
 
17
17
  <p align="center">
18
- <img src="docs/assets/ocrc-web.png" width="840" alt="OCRC — the Web PWA driving a live opencode session (sessions, live chat, task & cost inspector)">
18
+ <img src="docs/assets/ocrc-web.png" width="840" alt="ocrc — the Web PWA driving a live opencode session (sessions, live chat, task & cost inspector)">
19
19
  </p>
20
20
 
21
- Install once; it auto-starts in-process with opencode. Same sessions stream live to
22
- **Telegram** and a desktop **PWA** at the same time — switch surfaces mid-task without
23
- losing context.
21
+ ## What it is
24
22
 
25
- ## ⚡ Quick start (5 minutes)
23
+ - **One process.** The plugin loads inside opencode — no daemon, no extra
24
+ services. Telegram and the Web PWA start with opencode and die with it
25
+ (an optional supervisor is available, see [Lifecycle](#lifecycle)).
26
+ - **Two surfaces, one session.** Prompts in from either side; streaming
27
+ output, tool calls, diffs, todos, costs mirror to both in real time.
28
+ - **Local-first, single-user.** Runs on your machine against your local
29
+ opencode server. One allowlisted Telegram user; the web panel is gated by a
30
+ device token. No cloud, no shared backend.
31
+ - **Honest channel status.** Telegram and Web are implemented and stable.
32
+ Feishu / WeChat have a configuration panel pre-wired but the transports
33
+ themselves are **not implemented yet**.
26
34
 
27
- Requires **opencode 1.17+** and **Node 20+** (or Bun). Install from npm —
28
- `npm i -g @bd7pil/ocrc` — or build from source below. (The
29
- `opencode-remote-control` name on npm is an unrelated package — don't `npx` it.)
35
+ ## Quick start
30
36
 
31
- There are two ways to run it — pick one:
32
-
33
- ### Mode A — Plugin (default; controls opencode)
37
+ Requires **opencode 1.17+** (verified on 1.18.32) and **Node 20+**.
34
38
 
35
39
  ```bash
36
- # 1. Install globally, then run the interactive installer
40
+ # 1. Install
37
41
  npm i -g @bd7pil/ocrc
38
- ocrc install # paste your Telegram bot token + user id
39
-
40
- # 2. Run opencode from any directory — the plugin auto-starts
41
- opencode
42
- ```
43
-
44
- Prefer building from source?
42
+ ocrc install # interactive: Telegram bot token + your user id
43
+ # (the `opencode-remote-control` name on npm is an
44
+ # unrelated package — don't npx it)
45
45
 
46
- ```bash
47
- git clone https://github.com/BD7PIL/ocrc
48
- cd ocrc
49
- npm install && npm run build:all
50
- node dist/cli/install.js # interactive — paste your Telegram bot token + user id
46
+ # 2. Start (supervised: crash auto-restart)
47
+ ocrc start --watch /path/to/your/project
51
48
 
52
- opencode
49
+ # 3. Talk to it
50
+ # Telegram: send "hello" to your bot
51
+ # Web: open http://<host>:4099 and pair (see below)
53
52
  ```
54
53
 
55
- `install.js` writes a plugin bridge to `~/.config/opencode/plugins/` and your
56
- config to `.env`. The plugin then loads in-process whenever opencode runs.
54
+ Upgrades: `npm i -g @bd7pil/ocrc@<version>` + restart. The opencode binary
55
+ itself is yours to manage (`opencode upgrade <version>` — pin the version).
57
56
 
58
- - **Telegram:** make a bot with [@BotFather](https://t.me/BotFather); get your numeric id from [@userinfobot](https://t.me/userinfobot) (the installer asks for both). Send "hello" → the assistant replies.
59
- - **Web PWA:** enabled by default. Run `ocrc pair` (or send `/pair` in Telegram) → open the URL/QR it prints. Auth is a device **token** (persisted at `~/.ocrc/token`) — no Cloudflare Access needed.
60
- - **From another device:** the web binds to `localhost`, so expose it over a tunnel or VPN — e.g. `tailscale serve 17081`. See [Remote access without a domain](#remote-access-without-a-domain).
57
+ ## Pairing a device
61
58
 
62
- ## 🔁 Production lifecycle
59
+ Web access is gated by a device token. Two ways to pair — **Telegram is not
60
+ required**:
63
61
 
64
- ```bash
65
- ocrc start --watch /path/to/project # start under the supervisor (crash auto-restart)
66
- ocrc status # server / watcher / web panel at a glance
67
- ocrc stop # graceful stop (watcher first, then the instance)
68
- ocrc restore # boot-time re-launch — optional @reboot cron line:
69
- # @reboot sleep 60 && ocrc restore >> ~/.ocrc/prod.log 2>&1
70
- ```
62
+ 1. **From the host terminal** (works always, no Telegram):
63
+ ```bash
64
+ ocrc pair # prints a QR + link — scan or open on the device
65
+ ```
66
+ 2. **From Telegram** (once the bot is running): send `/pair`, open the link.
71
67
 
72
- ### Mode B — Standalone multi-backend host (opencode + ACP agents)
68
+ Links carry a *pending* token — valid **5 minutes, single use**, and issuing
69
+ a new one invalidates the old (refresh = new code). The device exchanges it
70
+ for the real access token on first open; the token never appears in a URL
71
+ again. Already-paired sessions can onboard further devices from the web
72
+ panel's QR (机器人面板 → 配对新设备).
73
73
 
74
- Run OCRC as its own process serving **multiple agents at once** (opencode + any
75
- [ACP](https://agentclientprotocol.com) agent like Kimi) with an in-UI switcher —
76
- no opencode plugin needed. Requires the ACP agent to be installed and logged in
77
- (e.g. `kimi login`).
74
+ ## Lifecycle
78
75
 
79
76
  ```bash
80
- git clone https://github.com/BD7PIL/ocrc
81
- cd ocrc
82
- npm install && npm run build:all
83
-
84
- cp .env.acp.example .env.acp # set WEB_TOKEN; OCRC_BACKENDS="opencode, kimi=kimi acp"
85
- scripts/run-acp-host.sh # run in a real terminal (needs full PATH to spawn agents)
77
+ ocrc start <dir> # start (detached, no supervision)
78
+ ocrc start --watch <dir> # start under the supervisor (recommended)
79
+ ocrc status # server / watcher / web panel at a glance
80
+ ocrc stop # graceful stop (watcher first, then the instance)
81
+ ocrc restart [dir] # restart, keeping the current mode
82
+ ocrc restore # re-launch the last instance under --watch
86
83
  ```
87
84
 
88
- For an always-on service (auto-start + crash-restart), install the launchd unit
89
- from `deploy/com.ocrc.host.plist`. Full runbook: [`docs/OPS.md`](docs/OPS.md).
90
-
91
- > Note: `ocrc` isn't on your PATH by default — use `node dist/cli/index.js <cmd>`
92
- > (e.g. `node dist/cli/index.js pair`), or `npm link` to get the `ocrc` shim.
93
-
94
- ## How we're different
95
-
96
- - **Runs as an opencode plugin, in-process.** One install, no extra process, no
97
- daemon to babysit — it starts and stops with `opencode` itself.
98
- - **Telegram + Web from a single codebase.** The same sessions stream live to
99
- Telegram and a desktop PWA simultaneously; switch surfaces mid-task without
100
- losing context.
101
- - **SDK-native.** Built on `@opencode-ai/sdk` and the opencode plugin event
102
- hook — it speaks opencode's own protocol rather than scraping a UI, so agent /
103
- model overrides, approvals, diffs, and cost/token metadata all come through
104
- first-class.
105
- - **Transport-agnostic core.** A channel-neutral `CardBus` carries structured
106
- cards; each transport renders them independently. Adding a new channel
107
- (Discord, Slack, …) doesn't touch the relay core.
108
- - **Local-first & single-user.** It runs on your machine against your local
109
- opencode server, stores state in a local file, and answers to one allowlisted
110
- user. No cloud, no shared backend.
111
-
112
- ## Architecture
85
+ `--watch` is a foreground supervisor with octg-proven semantics: adopts an
86
+ already-running instance, restarts the child after a crash (default 5 s,
87
+ `OCRC_WATCH_DELAY`), and treats SIGKILL / segfaults as crashes — an OOM kill
88
+ self-heals. SIGTERM or the stop file means "stop for real". Boot-time
89
+ recovery is opt-in:
113
90
 
114
91
  ```
115
- ┌──────────────────────────────────────────────────────┐
116
- │ opencode (single process) │
117
- │ │
118
- │ ┌──────────────────┐ ┌───────────────────────────┐ │
119
- │ │ AI engine :4096 │ │ plugin: remote-control │ │
120
- │ │ │ │ ├─ Telegraf (Telegram) │ │
121
- │ │ event hook ────┼──┼─►├─ Hono + WS (Web PWA) │ │
122
- │ │ │ │ └─ relay + CardBus │ │
123
- │ └──────────────────┘ └──────────┬────────────────┘ │
124
- │ ▼ │
125
- │ Telegram / Web (PWA) │
126
- └──────────────────────────────────────────────────────┘
92
+ @reboot sleep 60 && ocrc restore >> ~/.ocrc/prod.log 2>&1
127
93
  ```
128
94
 
129
- The plugin loads inside opencode and is driven by the plugin **event hook**: it
130
- submits prompts via the SDK, consumes streaming events, and renders structured
131
- cards to whichever transports are enabled. A TUI, if you run one, is just
132
- another client of the same opencode server.
133
-
134
- Full deep-dive: [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).
135
-
136
- ## Quick Start (Telegram)
137
-
138
- 1. **Create a bot** with [@BotFather](https://t.me/BotFather), get a token.
139
- 2. **Find your user ID** — message [@userinfobot](https://t.me/userinfobot).
140
- 3. **Build and install the plugin** (opencode 1.17+):
141
- ```bash
142
- npm install && npm run build
143
- node dist/cli/install.js
144
- ```
145
- The installer writes a plugin bridge to `~/.config/opencode/plugins/`
146
- (opencode 1.17 loads local plugins from there — directory paths in
147
- `opencode.json` no longer work), ensures that dir's `package.json` has
148
- `"type": "module"`, and saves `TELEGRAM_BOT_TOKEN` / `ALLOWED_USER_IDS` /
149
- `WEB_ENABLED` / `WEB_PORT` to the repo's `.env`.
150
- 4. **Run opencode** from any directory — the plugin loads globally:
151
- ```bash
152
- opencode
153
- ```
154
- The plugin auto-starts. For an always-on remote-control hub, run it from a
155
- small/empty directory (e.g. `~/ocrc-hub`) so opencode's file watcher stays
156
- fast. You can run several opencode instances — they elect one **PRIMARY**
157
- (atomic lock at `~/.ocrc/primary.lock`) to own the web (`:4099`) and
158
- Telegram singletons; the rest stand down PASSIVE. The web/bot can switch
159
- between the workspaces of the running instances.
160
- 5. **Send "hello"** in Telegram → the assistant responds.
161
-
162
- ## Web UI (PWA)
95
+ ## Telegram
163
96
 
164
- The Web UI runs alongside Telegram and shows the same sessions in real time
165
- (full streaming), installable as a desktop/mobile PWA.
97
+ ~34 commands, grouped: sessions (`/sessions /session /new /rename /workspaces
98
+ /projects /cleanup`), running work (`/skills /ls /open /worktree /diff /todo
99
+ /context /subs`), controls (`/agent /model /mode /task /tasks /tasklist
100
+ /taskdel /mcps /commands /messages /detach`), ops (`/start /status /version
101
+ /pair /channels /help`), plus `/abort` and plain text relay. Send any text to
102
+ drive the agent; approvals and interactive questions arrive as buttons.
166
103
 
167
- 1. Set `WEB_ENABLED=true` (and `WEB_PORT` — default `17081`, since opencode's
168
- own server occupies `7081`).
169
- 2. Build the web app: `cd web && npm run build`.
170
- 3. The plugin serves the PWA at `http://127.0.0.1:17081`.
104
+ ## Web panel
171
105
 
172
- ### Auth — pair a device (default, no Cloudflare Access needed)
106
+ PWA (installable), token-gated, with a live inspector per session: todos,
107
+ MCP servers, schedules, usage/cost, context, working-dir diff, skills, file
108
+ browser, worktrees — plus a floating plan HUD for subagent jumps. The bot
109
+ channels panel configures reply granularity, workspace scope, and shows the
110
+ pairing QR.
173
111
 
174
- Auth defaults to an app **token** (`WEB_AUTH=token`). Onboard a device with
175
- `ocrc pair` (or Telegram `/pair`): it prints a URL + QR with the token in the
176
- fragment (`https://<host>/#token=…`). Open it once — the app stores the token
177
- and attaches it to every request thereafter. The token is persisted at
178
- `~/.ocrc/token`, so it survives restarts and re-installs.
112
+ ## Remote access
179
113
 
180
- > Behind a tunnel, keep `WEB_CF_ACCESS_DEV_BYPASS=false`: `cloudflared` connects
181
- > from loopback, so a loopback bypass would trust all tunnel traffic.
182
-
183
- Prefer Cloudflare Access instead? Set `WEB_AUTH=cf-access` with
184
- `WEB_CF_ACCESS_TEAM` / `WEB_CF_ACCESS_AUD` — see [`docs/OPS.md`](docs/OPS.md).
185
-
186
- ### Remote access without a domain
187
-
188
- A PWA install needs a **secure context** (HTTPS, or `http://localhost`). To
189
- reach the hub from another machine without owning a domain:
114
+ The web binds `0.0.0.0:4099` by default (token-gated). For a PWA install you
115
+ need a secure context:
190
116
 
191
117
  | Method | Command | Notes |
192
118
  |---|---|---|
193
- | **Tailscale** (recommended) | `tailscale serve 17081` | Stable `https://<host>.ts.net`, device-level auth, survives restarts |
194
- | **cloudflared quick tunnel** | `cloudflared tunnel --url http://localhost:17081` | Free `https://*.trycloudflare.com`; URL changes each run |
195
- | **SSH port-forward** | `ssh -L 17081:localhost:17081 <host>` | Then open `http://127.0.0.1:17081` (localhost = secure context) |
196
-
197
- Set `WEB_PUBLIC_URL` to the resulting HTTPS URL so `/pair` emits the right
198
- links. (If you already run a `cloudflared` tunnel to `:4099`, `/pair`
199
- auto-detects its hostname from `~/.cloudflared`.) Plain `http://<LAN-IP>` is
200
- **not** a secure context — Chrome won't install it as an app.
201
-
202
- ### Install as an app
203
-
204
- In Chrome: the omnibox install icon, or **⋮ → Cast, save, and share → Install
205
- page as app…**. The installed PWA reuses the browser's stored token, so it stays
206
- signed in.
207
-
208
- ## Commands
209
-
210
- | Command | Description |
211
- |---|---|
212
- | `/start` | Handshake + health check |
213
- | `/status` | Server health, session count, pinned session |
214
- | `/sessions` | List all sessions with pin buttons |
215
- | `/session <id>` | Pin a specific session |
216
- | `/workspaces` | List known workspaces (directories) |
217
- | `/new` | Start a new session in the active workspace |
218
- | `/rename <title>` | Rename the pinned session |
219
- | `/files` | Files touched in the last session |
220
- | `/diff` | Pending git diff for the session |
221
- | `/todo` | Session todo list |
222
- | `/context` | Tokens + cost + model for the session |
223
- | `/agent` | Set next agent (sticky until cleared) |
224
- | `/model` | Set next model (sticky until cleared) |
225
- | `/current` | Show pinned session |
226
- | `/abort` | Stop the current generation |
227
- | `/pair` | Pair a device (URL + QR with token) for the Web PWA |
228
- | `/version` | Plugin version + uptime |
229
- | `/help` | Show this list |
230
-
231
- Send any text to relay it into opencode.
232
-
233
- ## Push notifications
234
-
235
- The plugin watches opencode sessions and proactively pushes summaries:
236
-
237
- | Trigger | When | Content |
238
- |---|---|---|
239
- | Session finished | >60s run completes | Duration + assistant text summary (first 300 chars) |
240
- | Test failure | Bash output contains FAIL/FAILED | Last 200 chars of output |
119
+ | **LAN, plain HTTP** | open `http://<lan-ip>:4099` | Works in-browser; PWA install needs HTTPS |
120
+ | **Tailscale** | `tailscale serve 4099` | Stable `https://<host>.ts.net`, device auth |
121
+ | **cloudflared** | `cloudflared tunnel --url http://localhost:4099` | Free, URL rotates; set `OCRC_WEB_PUBLIC_URL` |
241
122
 
242
- Rate limits: max 10 notifications/hour, 5-min cooldown per session. A session
243
- the foreground UI just delivered is skipped (no double-ping).
123
+ ## Security model
124
+
125
+ - One allowlisted Telegram user; web devices hold a token generated at first
126
+ start (persisted `0600` at `~/.ocrc/token`), verified with constant-time
127
+ compare on HTTP and WS.
128
+ - Pairing QR links carry a pending token (5 min, single use) — never the
129
+ permanent credential.
130
+ - If the opencode server itself runs with `OPENCODE_SERVER_PASSWORD`, ocrc
131
+ authenticates its server calls with HTTP Basic (same env, no extra config).
132
+ - No cloud. Everything stays on the machine except Telegram API traffic.
244
133
 
245
- ## Multi-transport
134
+ ## Configuration
246
135
 
247
- Telegram and Web run simultaneously and share the same opencode session state,
248
- relaying output to every connected channel in real time.
136
+ Settings live in `~/.ocrc/config.env` (`0600`; `KEY=VALUE`). Highlights:
249
137
 
250
- | Transport | Status | Notes |
138
+ | Key | Default | Notes |
251
139
  |---|---|---|
252
- | Telegram | ✅ Stable | Final-result delivery, pagination, approvals |
253
- | Web (PWA) | ✅ Stable | SvelteKit, full streaming, token auth (default) / Cloudflare Access |
140
+ | `TELEGRAM_BOT_TOKEN` | — | required for the Telegram surface |
141
+ | `ALLOWED_USER_IDS` | — | comma-separated Telegram user ids |
142
+ | `OCRC_WEB_ENABLED` | `true` | web panel on/off |
143
+ | `OCRC_WEB_PORT` | `4099` | web panel port |
144
+ | `OCRC_WEB_HOST` | `0.0.0.0` | bind address |
145
+ | `OCRC_SERVER_PORT` | `4096` | opencode server port (lifecycle commands) |
146
+ | `OCRC_SERVER_BIN` | `~/.local/bin/opencode` | binary used by `ocrc start` |
147
+ | `OCRC_WATCH_DELAY` | `5` | supervisor restart delay (s) |
148
+ | `OPENCODE_SERVER_PASSWORD` | — | enables HTTP Basic for server calls |
149
+ | `LOG_LEVEL` | `info` | `debug` / `info` / `warn` / `error` |
150
+
151
+ Legacy `WEB_*` names are honored as fallbacks. Full list:
152
+ [`docs/OPS.md`](docs/OPS.md).
254
153
 
255
- To add another channel, see
256
- [`docs/transports/CONTRIBUTING-NEW-TRANSPORT.md`](docs/transports/CONTRIBUTING-NEW-TRANSPORT.md).
154
+ ## Architecture
257
155
 
258
- ## Security model
156
+ ```
157
+ ┌────────────────────────────────────────────────────┐
158
+ │ opencode (single process) │
159
+ │ │
160
+ │ ┌─────────────────┐ ┌──────────────────────────┐ │
161
+ │ │ AI engine :4096 │ │ plugin: ocrc │ │
162
+ │ │ │ │ ├─ grammY (Telegram) │ │
163
+ │ │ event hook ────┼──┼─►├─ Hono + WS (Web PWA) │ │
164
+ │ │ │ │ └─ relay + CardBus │ │
165
+ │ └─────────────────┘ └─────────┬────────────────┘ │
166
+ │ ▼ │
167
+ │ Telegram / Web (PWA) │
168
+ └────────────────────────────────────────────────────┘
169
+ ```
259
170
 
260
- - **Single-user per install.** Only the Telegram IDs in `ALLOWED_USER_IDS` can
261
- interact with the bot.
262
- - **Local-first.** Runs on your machine, talks to your local opencode server,
263
- stores state in a local JSON file (`data/state.json`).
264
- - **No secrets in repo.** `.env` is gitignored; `.env.example` documents every
265
- variable.
266
- - **Web auth is pluggable.** Default is an app **token** (auto-generated,
267
- persisted `0600` at `~/.ocrc/token`), verified on HTTP and WS with a
268
- constant-time compare; `WEB_AUTH=cf-access` switches to Cloudflare Access. The
269
- dev bypass only trusts a real loopback peer (never the bind address) and is
270
- **off by default**.
271
-
272
- ## Environment variables
273
-
274
- | Variable | Default | Description |
275
- |---|---|---|
276
- | `TELEGRAM_BOT_TOKEN` | — (required) | Telegram bot token from @BotFather |
277
- | `ALLOWED_USER_IDS` | — (required) | Comma-separated allowed Telegram user IDs |
278
- | `OPENCODE_BASE_URL` | — | opencode server URL. Unused in plugin mode (the SDK client is injected); legacy/sidecar only |
279
- | `CHAT_TIMEOUT_MS` | `600000` | Per-message timeout (ms) |
280
- | `TUI_VISIBLE` | `true` | Navigate the TUI to the target session; `false` = pure direct API |
281
- | `STATE_PATH` | `./data/state.json` | Persistent state file |
282
- | `LOG_LEVEL` | `info` | `debug` \| `info` \| `warn` \| `error` |
283
- | `TG_CHUNK_SOFT_LIMIT` | `3500` | Telegram message pagination soft limit |
284
- | **Web** |||
285
- | `WEB_ENABLED` | `false` | Enable the Web transport |
286
- | `WEB_HOST` | `127.0.0.1` | Web bind address (keep loopback; front with a tunnel) |
287
- | `WEB_PORT` | `17081` | Web port (opencode 1.17's own server occupies `7081`) |
288
- | `WEB_AUTH` | `token` | Auth strategy: `token` (app token) or `cf-access` |
289
- | `WEB_TOKEN` | auto | App token; auto-generated and persisted `0600` at `~/.ocrc/token` if unset |
290
- | `WEB_PUBLIC_URL` | — | Public URL for pairing/QR; falls back to LAN, then loopback |
291
- | `WEB_STATIC_ROOT` | `<repo>/web/dist` | Built PWA path (resolved from the plugin dir, cwd-independent) |
292
- | `WEB_SESSION_CACHE_SIZE` | `100` | Per-session card ring-buffer size |
293
- | `WEB_CF_ACCESS_TEAM` | — | Cloudflare Access team name (when `WEB_AUTH=cf-access`) |
294
- | `WEB_CF_ACCESS_AUD` | — | Cloudflare Access app AUD tag (when `WEB_AUTH=cf-access`) |
295
- | `WEB_CF_ACCESS_DEV_BYPASS` | `false` | Bypass auth **only for a loopback socket peer** |
296
-
297
- ## opencode 1.17+ notes
298
-
299
- opencode 1.17 changed plugin loading; this project accounts for all of it:
300
-
301
- - **Local plugins load from `~/.config/opencode/plugins/`**, not from directory
302
- paths in `opencode.json`. The installer writes a bridge file there that
303
- re-invokes the built `dist/` (the source of truth — rebuild + restart to
304
- update). 1.17 also only calls functions *defined* in the loaded module, so the
305
- bridge wraps the plugin in a local function rather than re-exporting it.
306
- - **Plugins run in a worker thread.** An unhandled rejection would otherwise
307
- crash the worker (`Worker has been terminated`), taking down the web server.
308
- The plugin installs absorbing guards so it survives.
309
- - **Web runs on `17081`** because opencode's own server occupies `7081`. Point
310
- your tunnel ingress at `17081`.
311
- - **PRIMARY election.** Web (`:4099`) and the Telegram bot are global
312
- singletons. Multiple opencode instances elect one PRIMARY (atomic lock at
313
- `~/.ocrc/primary.lock`) to own them; the others stand down PASSIVE.
314
- Run the hub from a small/empty directory so the file watcher stays fast.
315
-
316
- ## Testing
171
+ Deep dive: [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).
172
+
173
+ ## Development
317
174
 
318
175
  ```bash
319
- npm test # backend unit tests
320
- npx tsc --noEmit # backend type-check
321
- cd web && npm run check # web type-check (svelte-check)
322
- cd web && npm test # web unit tests
323
- cd web && npm run build # build PWA
176
+ npm install && npm run build:all # plugin + web
177
+ npm test # backend (vitest)
178
+ cd web && npm test # web (vitest)
179
+ bash scripts/spike-restart.sh # isolated dev instance (never touches prod)
324
180
  ```
325
181
 
326
- ## License
182
+ ## Credits & license
327
183
 
328
- MIT — see [LICENSE](LICENSE).
184
+ MIT — see [LICENSE](LICENSE) and [NOTICE](NOTICE): forked from
185
+ [agentjoey/opencode-remote-control](https://github.com/agentjoey/opencode-remote-control);
186
+ Telegram UX model from [@grinev/opencode-telegram-bot](https://github.com/grinev/opencode-telegram-bot).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bd7pil/ocrc",
3
- "version": "0.12.3",
3
+ "version": "0.12.4",
4
4
  "description": "OpenCode plugin — remote-control your local opencode from Telegram and a mobile web console (channels, schedules, skills, files, worktrees).",
5
5
  "type": "module",
6
6
  "main": "dist/plugin/entry.js",
@@ -0,0 +1 @@
1
+ var tt=e=>{throw TypeError(e)};var Dt=(e,t,n)=>t.has(e)||tt("Cannot "+n);var y=(e,t,n)=>(Dt(e,t,"read from private field"),n?n.call(e):t.get(e)),A=(e,t,n)=>t.has(e)?tt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);import{b8 as Ve,az as nt,aX as T,a8 as I,aO as P,b1 as _e,aZ as qt,aS as Vt}from"./BjY4dxcB.js";class Me{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Be{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Ke extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Mt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Bt(e){return e.split("%25").map(decodeURI).join("%25")}function Kt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function Pe({href:e}){return e.split("#")[0]}function j(){}function Ft(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function Gt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const Ht=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&X.delete(Fe(e)),Ht(e,t));const X=new Map;function Wt(e,t){const n=Fe(e,t),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const o=a.getAttribute("data-ttl");return o&&X.set(n,{body:r,init:i,ttl:1e3*Number(o)}),a.getAttribute("data-b64")!==null&&(r=Gt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function zt(e,t,n){if(X.size>0){const a=Fe(e,n),r=X.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(r.body,r.init);X.delete(a)}}return window.fetch(t,n)}function Fe(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${Ft(...r)}"]`}return a}const Jt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Yt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Zt(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const o=a.split(/\[(.+?)\](?!\])/);return"/"+o.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return Oe(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return Oe(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=Jt.exec(l),[,u,w,p,f]=d;return t.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&o[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return Oe(l)}).join("")}).join("")}/?$`),params:t}}function Xt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Zt(e){return e.slice(1).split("/").filter(Xt)}function Qt(e,t,n){const a={},r=e.slice(1),i=r.filter(s=>s!==void 0);let o=0;for(let s=0;s<t.length;s+=1){const l=t[s];let c=r[s-o];if(l.chained&&l.rest&&o&&(c=r.slice(s-o,s+1).filter(d=>d).join("/"),o=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=t[s+1],u=r[s+1];d&&!d.rest&&d.optional&&u&&l.chained&&(o=0),!d&&!u&&Object.keys(a).length===i.length&&(o=0);continue}if(l.optional&&l.chained){o++;continue}return}if(!o)return a}function Oe(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function en({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([s,[l,c,d]])=>{const{pattern:u,params:w}=Yt(s),p={id:s,exec:f=>{const m=u.exec(f);if(m)return Qt(m,w,a)},errors:[1,...d||[]].map(f=>e[f]),layouts:[0,...c||[]].map(o),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(s){const l=s<0;return l&&(s=~s),[l,e[s]]}function o(s){return s===void 0?s:[r.has(s),e[s]]}}function mt(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function rt(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}var ut;const U=((ut=globalThis.__sveltekit_8l7x78)==null?void 0:ut.base)??"";var dt;const tn=((dt=globalThis.__sveltekit_8l7x78)==null?void 0:dt.assets)??U??"",nn="1790624441186",_t="sveltekit:snapshot",wt="sveltekit:scroll",vt="sveltekit:states",rn="sveltekit:pageurl",F="sveltekit:history",Z="sveltekit:navigation",V={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Le=location.origin;function Ge(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function M(){return{x:pageXOffset,y:pageYOffset}}function K(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const at={...V,"":V.hover};function yt(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function bt(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=yt(e)}}function je(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";a.hash=`#${s}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||Ue(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=(a==null?void 0:a.origin)===Le&&e.hasAttribute("download");return{url:a,external:i,target:r,download:o}}function we(e){let t=null,n=null,a=null,r=null,i=null,o=null,s=e;for(;s&&s!==document.documentElement;)a===null&&(a=K(s,"preload-code")),r===null&&(r=K(s,"preload-data")),t===null&&(t=K(s,"keepfocus")),n===null&&(n=K(s,"noscroll")),i===null&&(i=K(s,"reload")),o===null&&(o=K(s,"replacestate")),s=yt(s);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:at[a??"off"],preload_data:at[r??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(o)}}function ot(e){const t=Ve(e);let n=!0;function a(){n=!0,t.update(o=>o)}function r(o){n=!1,t.set(o)}function i(o){let s;return t.subscribe(l=>{(s===void 0||n&&l!==s)&&o(s=l)})}return{notify:a,set:r,subscribe:i}}const kt={v:j};function an(){const{set:e,subscribe:t}=Ve(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${tn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const o=(await r.json()).version!==nn;return o&&(e(!0),kt.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:a}}function Ue(e,t,n){return e.origin!==Le||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function On(e){}const St=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...St];const on=new Set([...St]);[...on];function sn(e){return e.filter(t=>t!=null)}function ge(e,t){return e+"/"+t}function He(e){return e instanceof Me||e instanceof Ke?e.status:500}function ln(e){return e instanceof Ke?e.text:"Internal Error"}let x,Q,$e;const cn=nt.toString().includes("$$")||/function \w+\(\) \{\}/.test(nt.toString()),st="a:";var ae,oe,se,ie,le,ce,fe,ue,ht,de,pt,he,gt;cn?(x={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(st)},Q={current:null},$e={current:!1}):(x=new(ht=class{constructor(){A(this,ae,T({}));A(this,oe,T(null));A(this,se,T(null));A(this,ie,T({}));A(this,le,T({id:null}));A(this,ce,T({}));A(this,fe,T(-1));A(this,ue,T(new URL(st)))}get data(){return I(y(this,ae))}set data(t){P(y(this,ae),t)}get form(){return I(y(this,oe))}set form(t){P(y(this,oe),t)}get error(){return I(y(this,se))}set error(t){P(y(this,se),t)}get params(){return I(y(this,ie))}set params(t){P(y(this,ie),t)}get route(){return I(y(this,le))}set route(t){P(y(this,le),t)}get state(){return I(y(this,ce))}set state(t){P(y(this,ce),t)}get status(){return I(y(this,fe))}set status(t){P(y(this,fe),t)}get url(){return I(y(this,ue))}set url(t){P(y(this,ue),t)}},ae=new WeakMap,oe=new WeakMap,se=new WeakMap,ie=new WeakMap,le=new WeakMap,ce=new WeakMap,fe=new WeakMap,ue=new WeakMap,ht),Q=new(pt=class{constructor(){A(this,de,T(null))}get current(){return I(y(this,de))}set current(t){P(y(this,de),t)}},de=new WeakMap,pt),$e=new(gt=class{constructor(){A(this,he,T(!1))}get current(){return I(y(this,he))}set current(t){P(y(this,he),t)}},he=new WeakMap,gt),kt.v=()=>$e.current=!0);function Et(e){Object.assign(x,e)}const{onMount:fn}=qt,un=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const D=mt(wt)??{},ee=mt(_t)??{},N={url:ot({}),page:ot({}),navigating:Ve(null),updated:an()};function We(e){D[e]=M()}function dn(e,t){let n=e+1;for(;D[n];)delete D[n],n+=1;for(n=t+1;ee[n];)delete ee[n],n+=1}function te(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(j)}async function Rt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}let ze,Ne,ve,O,De,S;const ye=[],be=[];let v=null;function ke(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const me=new Map,xt=new Set,hn=new Set,G=new Set;let _={branch:[],error:null,url:null},Lt=!1,Se=!1,it=!0,ne=!1,Y=!1,Ut=!1,Je=!1,At,k,L,C;const Ee=new Set,lt=new Map,ct=new Map;async function Nn(e,t,n){var i,o,s,l;globalThis.__sveltekit_8l7x78&&(globalThis.__sveltekit_8l7x78.query,globalThis.__sveltekit_8l7x78.prerender),document.URL!==location.href&&(location.href=location.href),S=e,await((o=(i=e.hooks).init)==null?void 0:o.call(i)),ze=en(e),O=document.documentElement,De=t,Ne=e.nodes[0],ve=e.nodes[1],Ne(),ve(),k=(s=history.state)==null?void 0:s[F],L=(l=history.state)==null?void 0:l[Z],k||(k=L=Date.now(),history.replaceState({...history.state,[F]:k,[Z]:L},""));const a=D[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Ln(De,n)):(await H({type:"enter",url:Ge(S.hash?Tn(new URL(location.href)):location.href),replace_state:!0}),r()),xn()}function pn(){ye.length=0,Je=!1}function Tt(e){be.some(t=>t==null?void 0:t.snapshot)&&(ee[e]=be.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function It(e){var t;(t=ee[e])==null||t.forEach((n,a)=>{var r,i;(i=(r=be[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function ft(){We(k),rt(wt,D),Tt(L),rt(_t,ee)}async function Pt(e,t,n,a){let r,i;t.invalidateAll&&ke(),await H({type:"goto",url:Ge(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{if(t.invalidateAll){Je=!0,r=new Set;for(const[o,s]of lt)for(const l of s.keys())r.add(ge(o,l));i=new Set;for(const[o,s]of ct)for(const l of s.keys())i.add(ge(o,l))}t.invalidate&&t.invalidate.forEach(Rn)}}),t.invalidateAll&&_e().then(_e).then(()=>{for(const[o,s]of lt)for(const[l,{resource:c}]of s)r!=null&&r.has(ge(o,l))&&c.refresh();for(const[o,s]of ct)for(const[l,{resource:c}]of s)i!=null&&i.has(ge(o,l))&&c.reconnect()})}async function gn(e){if(e.id!==(v==null?void 0:v.id)){ke();const t={};Ee.add(t),v={id:e.id,token:t,promise:$t({...e,preload:t}).then(n=>(Ee.delete(t),n.type==="loaded"&&n.state.error&&ke(),n)),fork:null}}return v.promise}async function Ce(e){var n;const t=(n=await Ae(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(a=>a[1]()))}async function Ot(e,t,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...e.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Et(e.props.page),At=new S.root({target:t,props:{...e.props,stores:N,components:be},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),It(L),n){const o={from:null,to:{...a,scroll:D[k]??M()},willUnload:!1,type:"enter",complete:Promise.resolve()};G.forEach(s=>s(o))}Se=!0}async function Re({url:e,params:t,branch:n,errors:a,status:r,error:i,route:o,form:s}){let l="never";if(U&&(e.pathname===U||e.pathname===U+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);e.pathname=Mt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:o},props:{constructors:sn(n).map(f=>f.node.component),page:et(x)}};s!==void 0&&(c.props.form=s);let d={},u=!x,w=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const m=n[f],h=_.branch[f];(m==null?void 0:m.data)!==(h==null?void 0:h.data)&&(u=!0),m&&(d={...d,...m.data},u&&(c.props[`data_${w}`]=d),w+=1)}return(!_.url||e.href!==_.url.href||_.error!==i||s!==void 0&&s!==x.form||u)&&(c.props.page={error:i,params:t,route:{id:(o==null?void 0:o.id)??null},state:{},status:r,url:new URL(e),form:s??null,data:u?d:x.data}),c}async function Ye({loader:e,parent:t,url:n,params:a,route:r,server_data_node:i}){var c,d;let o=null;const s={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:o,uses:s}:null,data:o??(i==null?void 0:i.data)??null,slash:((d=l.universal)==null?void 0:d.trailingSlash)??(i==null?void 0:i.slash)}}function mn(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const i=Se?zt(a,r.href,t):Wt(a,t);return{resolved:r,promise:i}}function _n(e,t,n,a,r,i){if(Je)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const o of r.search_params)if(a.has(o))return!0;for(const o of r.params)if(i[o]!==_.params[o])return!0;for(const o of r.dependencies)if(ye.some(s=>s(new URL(o))))return!0;return!1}function Xe(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function wn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(o=>i.includes(o))&&i.every(o=>r.includes(o))&&n.delete(a)}return n}function vn({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:et(x),constructors:[]}}}async function $t({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if((v==null?void 0:v.id)===e)return Ee.delete(v.token),v.promise;const{errors:o,layouts:s,leaf:l}=r,c=[...s,l];o.forEach(h=>h==null?void 0:h().catch(j)),c.forEach(h=>h==null?void 0:h[1]().catch(j));const d=_.url?e!==xe(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=wn(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var $;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!_n(p,u,d,w,($=b.universal)==null?void 0:$.uses,a)?b:(p=!0,Ye({loader:h[1],url:n,params:a,route:r,parent:async()=>{var pe;const q={};for(let B=0;B<g;B+=1)Object.assign(q,(pe=await f[B])==null?void 0:pe.data);return q},server_data_node:Xe(h[0]?{type:"skip"}:null,h[0]?b==null?void 0:b.server:void 0)}))});for(const h of f)h.catch(j);const m=[];for(let h=0;h<c.length;h+=1)if(c[h])try{m.push(await f[h])}catch(g){if(g instanceof Be)return{type:"redirect",location:g.location};if(Ee.has(i))return vn({error:await re(g,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let b=He(g),R;if(g instanceof Me)R=g.body;else{if(await N.updated.check())return await Rt(),await te(n);R=await re(g,{params:a,url:n,route:{id:r.id}})}const $=await yn(h,m,o);return $?Re({url:n,params:a,branch:m.slice(0,$.idx).concat($.node),errors:o,status:b,error:R,route:r}):await jt(n,{id:r.id},R,b)}else m.push(void 0);return Re({url:n,params:a,branch:m,errors:o,status:200,error:null,route:r,form:t?void 0:null})}async function yn(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ze({status:e,error:t,url:n,route:a}){const r={};let i=null;try{const o=await Ye({loader:Ne,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:Xe(i)}),s={node:await ve(),loader:ve,universal:null,server:null,data:null};return Re({url:n,params:r,branch:[o,s],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Be)return Pt(new URL(o.location,location.href),{},0);throw o}}async function bn(e){const t=e.href;if(me.has(t))return me.get(t);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(e),fetch:async(i,o)=>mn(i,o,e).promise})??e;if(typeof r=="string"){const i=new URL(e);S.hash?i.hash=r:i.pathname=r,r=i}return r})();me.set(t,a),n=await a}catch{me.delete(t);return}return n}async function Ae(e,t){if(e&&!Ue(e,U,S.hash)){const n=await bn(e);if(!n)return;const a=kn(n);for(const r of ze){const i=r.exec(a);if(i)return{id:xe(e),invalidating:t,route:r,params:Kt(i),url:e}}}}function kn(e){return Bt(S.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function xe(e){return(S.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function Ct({url:e,type:t,intent:n,delta:a,event:r,scroll:i}){let o=!1;const s=Qe(_,n,e,t,i??null);a!==void 0&&(s.navigation.delta=a),r!==void 0&&(s.navigation.event=r);const l={...s.navigation,cancel:()=>{o=!0,s.reject(new Error("navigation cancelled"))}};return ne||xt.forEach(c=>c(l)),o?null:s}async function H({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o={},redirect_count:s=0,nav_token:l={},accept:c=j,block:d=j,event:u}){var B;const w=C;C=l;const p=await Ae(t,!1),f=e==="enter"?Qe(_,p,t,e):Ct({url:t,type:e,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),C===l&&(C=w);return}const m=k,h=L;c(),ne=!0,Se&&f.navigation.type!=="enter"&&N.navigating.set(Q.current=f.navigation);let g=p&&await $t(p);if(!g){if(Ue(t,U,S.hash))return await te(t,i);g=await jt(t,{id:null},await re(new Ke(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(p==null?void 0:p.url)||t,C!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(s<20){await H({type:e,url:new URL(g.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o,redirect_count:s+1,nav_token:l}),f.fulfil(void 0);return}g=await Ze({status:500,error:await re(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await N.updated.check()&&(await Rt(),await te(t,i));if(pn(),We(m),Tt(h),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),o=n?n.state:o,!n){const E=i?0:1,W={[F]:k+=E,[Z]:L+=E,[vt]:o};(i?history.replaceState:history.pushState).call(history,W,"",t),i||dn(k,L)}const b=p&&(v==null?void 0:v.id)===p.id?v.fork:null;v!=null&&v.fork&&!b&&ke(),v=null,g.props.page.state=o;let R;if(Se){const E=(await Promise.all(Array.from(hn,z=>z(f.navigation)))).filter(z=>typeof z=="function");if(E.length>0){let z=function(){E.forEach(Ie=>{G.delete(Ie)})};E.push(z),E.forEach(Ie=>{G.add(Ie)})}const W=f.navigation.to;_={...g.state,nav:{params:W.params,route:W.route,url:W.url}},g.props.page&&(g.props.page.url=t);const Te=b&&await b;Te?R=Te.commit():(J=null,At.$set(g.props),J&&Object.assign(g.props.page,J),Et(g.props.page),R=(B=Vt)==null?void 0:B()),Ut=!0}else await Ot(g,De,!1);const{activeElement:$}=document;if(await R,await _e(),await _e(),C!==l)return f.reject(new Error("navigation aborted")),!1;g.props.page&&J&&Object.assign(g.props.page,J);let q=null;if(it){const E=n?n.scroll:r?M():null;E?scrollTo(E.x,E.y):(q=t.hash&&document.getElementById(Nt(t)))?q.scrollIntoView():scrollTo(0,0)}const pe=document.activeElement!==$&&document.activeElement!==document.body;!a&&!pe&&An(t,!q),it=!0,ne=!1,e==="popstate"&&It(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=M()),G.forEach(E=>E(f.navigation)),N.navigating.set(Q.current=null)}async function jt(e,t,n,a,r){return e.origin===Le&&e.pathname===location.pathname&&!Lt?await Ze({status:a,error:n,url:e,route:t}):await te(e,r)}function Sn(){let e,t={element:void 0,href:void 0},n;O.addEventListener("mousemove",s=>{const l=s.target;clearTimeout(e),e=setTimeout(()=>{i(l,V.hover)},20)});function a(s){s.defaultPrevented||i(s.composedPath()[0],V.tap)}O.addEventListener("mousedown",a),O.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(s=>{for(const l of s)l.isIntersecting&&(Ce(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(s,l){const c=bt(s,O),d=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=je(c,U,S.hash);if(w||p)return;const f=we(c),m=u&&xe(_.url)===xe(u);if(!(f.reload||m))if(l<=f.preload_data){t={element:c,href:c.href},n=V.tap;const h=await Ae(u,!1);if(!h)return;gn(h)}else l<=f.preload_code&&(t={element:c,href:c.href},n=l,Ce(u))}function o(){r.disconnect();for(const s of O.querySelectorAll("a")){const{url:l,external:c,download:d}=je(s,U,S.hash);if(c||d)continue;const u=we(s);u.reload||(u.preload_code===V.viewport&&r.observe(s),u.preload_code===V.eager&&Ce(l))}}G.add(o),o()}function re(e,t){if(e instanceof Me)return e.body;const n=He(e),a=ln(e);return S.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function En(e,t){fn(()=>(e.add(t),()=>{e.delete(t)}))}function Dn(e){En(G,e)}function qn(e,t={}){return e=new URL(Ge(e)),e.origin!==Le?Promise.reject(new Error("goto: invalid URL")):Pt(e,t,0)}function Rn(e){if(typeof e=="function")ye.push(e);else{const{href:t}=new URL(e,location.href);ye.push(n=>n.href===t)}}function xn(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(ft(),!ne){const r=Qe(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};xt.forEach(o=>o(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ft()}),(t=navigator.connection)!=null&&t.saveData||Sn(),O.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=bt(n.composedPath()[0],O);if(!a)return;const{url:r,external:i,target:o,download:s}=je(a,U,S.hash);if(!r)return;if(o==="_parent"||o==="_top"){if(window.parent!==window)return}else if(o&&o!=="_self")return;const l=we(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||s)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===Pe(location);if(i||l.reload&&(!w||!u)){Ct({url:r,type:"link",event:n})?ne=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,We(k),e(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await H({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),O.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const s=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Ue(s,U,!1))return;const l=n.target,c=we(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);s.search=new URLSearchParams(d).toString(),H({type:"form",url:s,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??s.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!qe){if((a=n.state)!=null&&a[F]){const r=n.state[F];if(C={},r===k)return;const i=D[r],o=n.state[vt]??{},s=new URL(n.state[rn]??location.href),l=n.state[Z],c=_.url?Pe(location)===Pe(_.url):!1;if(l===L&&(Ut||c)){o!==x.state&&(x.state=o),e(s),D[k]=M(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await H({type:"popstate",url:s,popped:{state:o,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:C,event:n})}else if(!Y){const r=new URL(location.href);e(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[F]:++k,[Z]:L},"",location.href))});for(const n of document.querySelectorAll("link"))un.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&N.navigating.set(Q.current=null)});function e(n){_.url=x.url=n,N.page.set(et(x)),N.page.notify()}}async function Ln(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:o,data:s,form:l}){Lt=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await Ae(c,!1)||{}),d=ze.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=s[h];return g!=null&&g.uses&&(g.uses=Un(g.uses)),Ye({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let R=0;R<h;R+=1)Object.assign(b,(await p[R]).data);return b},server_data_node:Xe(g)})}),f=await Promise.all(p);if(d){const m=d.layouts;for(let h=0;h<m.length;h++)m[h]||f.splice(h,0,void 0)}u=await Re({url:c,params:r,branch:f,status:t,error:n,errors:d==null?void 0:d.errors,form:l,route:d??null})}catch(p){if(p instanceof Be){await te(new URL(p.location,location.href));return}u=await Ze({status:He(p),error:await re(p,{url:c,params:r,route:i}),url:c,route:i}),e.textContent="",w=!1}finally{}u.props.page&&(u.props.page.state={}),await Ot(u,e,w)}function Un(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let qe=!1;function An(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=Nt(e);if(a&&document.getElementById(a)){const{x:i,y:o}=M();setTimeout(()=>{const s=history.state;qe=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(s,"",e),t&&scrollTo(i,o),qe=!1})}else{const i=document.body,o=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),o!==null?i.setAttribute("tabindex",o):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let o=0;o<r.rangeCount;o+=1)i.push(r.getRangeAt(o));setTimeout(()=>{if(r.rangeCount===i.length){for(let o=0;o<r.rangeCount;o+=1){const s=i[o],l=r.getRangeAt(o);if(s.commonAncestorContainer!==l.commonAncestorContainer||s.startContainer!==l.startContainer||s.endContainer!==l.endContainer||s.startOffset!==l.startOffset||s.endOffset!==l.endOffset)return}r.removeAllRanges()}})}}}function Qe(e,t,n,a,r=null){var c,d;let i,o;const s=new Promise((u,w)=>{i=u,o=w});return s.catch(j),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:M()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((d=t==null?void 0:t.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!t,type:a,complete:s},fulfil:i,reject:o}}function et(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Tn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Nt(e){let t;if(S.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Dn as a,N as b,qn as g,On as l,x as p,Nn as s};
@@ -1,2 +1,2 @@
1
- import{z as Ne,ai as p,ag as Z,a8 as ie,aG as Re,k as He,aV as fe,aP as F,aQ as K,ah as D,a as _e,H as Ie,ak as le,U as I,T as U,g as b,G as $,a0 as Oe,aT as De,Z as ze,am as Pe,x as ee,f as Fe,e as xe,au as Ge,aW as oe,E as Ve,D as Be,aL as Me,aA as me,I as q,B as Ye,K as Ke,at as Ue,_ as qe,ac as O,aF as B,ad as Ee,d as Ae,c as We,a$ as Se,u as Xe,y as W,aH as Je,aj as Qe,i as Ze,R as $e,o as je,n as er,C as ce,t as ue,m as rr,A as ar,N as nr,ae as tr,ab as sr,l as be,F as ir,v as fr,ar as Te,b1 as lr,b4 as we,aJ as ke,al as or,a_ as cr,b8 as m,w as ur,a7 as dr,V as vr,aK as hr}from"./BjY4dxcB.js";import{b as pr}from"./C_8ke_Oe.js";import"./CWj6FrbW.js";import"./COhEGSJl.js";import{p as de}from"./C2FuqD3s.js";function Pr(e,r){return r}function gr(e,r,a){for(var n=[],s=r.length,i,t=r.length,u=0;u<s;u++){let _=r[u];me(_,()=>{if(i){if(i.pending.delete(_),i.done.add(_),i.pending.size===0){var d=e.outrogroups;j(e,ee(i.done)),d.delete(i),d.size===0&&(e.outrogroups=null)}}else t-=1},!1)}if(t===0){var c=n.length===0&&a!==null;if(c){var f=a,o=f.parentNode;Ke(o),o.append(f),e.items.clear()}j(e,r,!c)}else i={pending:new Set(r),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(i)}function j(e,r,a=!0){var n;if(e.pending.size>0){n=new Set;for(const t of e.pending.values())for(const u of t)n.add(e.items.get(u).e)}for(var s=0;s<r.length;s++){var i=r[s];if(n!=null&&n.has(i)){i.f|=b;const t=document.createDocumentFragment();Ue(i,t)}else qe(r[s],a)}}var ve;function Fr(e,r,a,n,s,i=null){var t=e,u=new Map,c=(r&Ae)!==0;if(c){var f=e;t=p?F(O(f)):f.appendChild(U())}p&&Z();var o=null,_=ze(()=>{var h=a();return Pe(h)?h:h==null?[]:ee(h)}),d,M=new Map,g=!0;function L(h){w.effect.f&Be||(w.pending.delete(h),w.fallback=o,_r(w,d,t,r,n),o!==null&&(d.length===0?o.f&b?(o.f^=b,P(o,null,t)):Me(o):me(o,()=>{o=null})))}function l(h){w.pending.delete(h)}var v=Ne(()=>{d=ie(_);var h=d.length;let A=!1;if(p){var x=Re(t)===He;x!==(h===0)&&(t=fe(),F(t),K(!1),A=!0)}for(var k=new Set,E=I,R=De(),C=0;C<h;C+=1){p&&D.nodeType===_e&&D.data===Ie&&(t=D,A=!0,K(!1));var H=d[C],N=n(H,C),S=g?null:u.get(N);S?(S.v&&le(S.v,H),S.i&&le(S.i,C),R&&E.unskip_effect(S.e)):(S=Mr(u,g?t:ve??(ve=U()),H,N,C,s,r,a),g||(S.e.f|=b),u.set(N,S)),k.add(N)}if(h===0&&i&&!o&&(g?o=$(()=>i(t)):(o=$(()=>i(ve??(ve=U()))),o.f|=b)),h>k.size&&Oe(),p&&h>0&&F(fe()),!g)if(M.set(E,k),R){for(const[G,V]of u)k.has(G)||E.skip_effect(V.e);E.oncommit(L),E.ondiscard(l)}else L(E);A&&K(!0),ie(_)}),w={effect:v,items:u,pending:M,outrogroups:null,fallback:o};g=!1,p&&(t=D)}function z(e){for(;e!==null&&!(e.f&Ye);)e=e.next;return e}function _r(e,r,a,n,s){var H,N,S,G,V,re,ae,ne,te;var i=(n&We)!==0,t=r.length,u=e.items,c=z(e.effect.first),f,o=null,_,d=[],M=[],g,L,l,v;if(i)for(v=0;v<t;v+=1)g=r[v],L=s(g,v),l=u.get(L).e,l.f&b||((N=(H=l.nodes)==null?void 0:H.a)==null||N.measure(),(_??(_=new Set)).add(l));for(v=0;v<t;v+=1){if(g=r[v],L=s(g,v),l=u.get(L).e,e.outrogroups!==null)for(const T of e.outrogroups)T.pending.delete(l),T.done.delete(l);if(l.f&q&&(Me(l),i&&((G=(S=l.nodes)==null?void 0:S.a)==null||G.unfix(),(_??(_=new Set)).delete(l))),l.f&b)if(l.f^=b,l===c)P(l,null,a);else{var w=o?o.next:c;l===e.effect.last&&(e.effect.last=l.prev),l.prev&&(l.prev.next=l.next),l.next&&(l.next.prev=l.prev),y(e,o,l),y(e,l,w),P(l,w,a),o=l,d=[],M=[],c=z(o.next);continue}if(l!==c){if(f!==void 0&&f.has(l)){if(d.length<M.length){var h=M[0],A;o=h.prev;var x=d[0],k=d[d.length-1];for(A=0;A<d.length;A+=1)P(d[A],h,a);for(A=0;A<M.length;A+=1)f.delete(M[A]);y(e,x.prev,k.next),y(e,o,x),y(e,k,h),c=h,o=k,v-=1,d=[],M=[]}else f.delete(l),P(l,c,a),y(e,l.prev,l.next),y(e,l,o===null?e.effect.first:o.next),y(e,o,l),o=l;continue}for(d=[],M=[];c!==null&&c!==l;)(f??(f=new Set)).add(c),M.push(c),c=z(c.next);if(c===null)continue}l.f&b||d.push(l),o=l,c=z(l.next)}if(e.outrogroups!==null){for(const T of e.outrogroups)T.pending.size===0&&(j(e,ee(T.done)),(V=e.outrogroups)==null||V.delete(T));e.outrogroups.size===0&&(e.outrogroups=null)}if(c!==null||f!==void 0){var E=[];if(f!==void 0)for(l of f)l.f&q||E.push(l);for(;c!==null;)!(c.f&q)&&c!==e.fallback&&E.push(c),c=z(c.next);var R=E.length;if(R>0){var C=n&Ae&&t===0?a:null;if(i){for(v=0;v<R;v+=1)(ae=(re=E[v].nodes)==null?void 0:re.a)==null||ae.measure();for(v=0;v<R;v+=1)(te=(ne=E[v].nodes)==null?void 0:ne.a)==null||te.fix()}gr(e,E,C)}}i&&B(()=>{var T,se;if(_!==void 0)for(l of _)(se=(T=l.nodes)==null?void 0:T.a)==null||se.apply()})}function Mr(e,r,a,n,s,i,t,u){var c=t&Fe?t&xe?oe(a):Ge(a,!1,!1):null,f=t&Ve?oe(s):null;return{v:c,i:f,e:$(()=>(i(r,c??a,f??s,u),()=>{e.delete(n)}))}}function P(e,r,a){if(e.nodes)for(var n=e.nodes.start,s=e.nodes.end,i=r&&!(r.f&b)?r.nodes.start:a;n!==null;){var t=Ee(n);if(i.before(n),n===s)return;n=t}}function y(e,r,a){r===null?e.effect.first=a:r.next=a,a===null?e.effect.last=r:a.prev=r}function mr(e,r,a=!1,n=!1,s=!1,i=!1){var t=e,u="";if(a){var c=e;p&&(t=F(O(c)))}Se(()=>{var f=Xe;if(u===(u=r()??"")){p&&Z();return}if(a&&!p){f.nodes=null,c.innerHTML=u,u!==""&&W(O(c),c.lastChild);return}if(f.nodes!==null&&(Je(f.nodes.start,f.nodes.end),f.nodes=null),u!==""){if(p){D.data;for(var o=Z(),_=o;o!==null&&(o.nodeType!==_e||o.data!=="");)_=o,o=Ee(o);if(o===null)throw Qe(),Ze;W(D,_),t=F(o);return}var d=n?je:s?er:void 0,M=$e(n?"svg":s?"math":"template",d);M.innerHTML=u;var g=n||s?M:M.content;if(W(O(g),g.lastChild),n||s)for(;O(g);)t.before(O(g));else t.before(g)}})}const he=[...`
1
+ import{z as Ne,ai as p,ag as Z,a8 as ie,aG as Re,k as He,aV as fe,aP as F,aQ as K,ah as D,a as _e,H as Ie,ak as le,U as I,T as U,g as b,G as $,a0 as Oe,aT as De,Z as ze,am as Pe,x as ee,f as Fe,e as xe,au as Ge,aW as oe,E as Ve,D as Be,aL as Me,aA as me,I as q,B as Ye,K as Ke,at as Ue,_ as qe,ac as O,aF as B,ad as Ee,d as Ae,c as We,a$ as Se,u as Xe,y as W,aH as Je,aj as Qe,i as Ze,R as $e,o as je,n as er,C as ce,t as ue,m as rr,A as ar,N as nr,ae as tr,ab as sr,l as be,F as ir,v as fr,ar as Te,b1 as lr,b4 as we,aJ as ke,al as or,a_ as cr,b8 as m,w as ur,a7 as dr,V as vr,aK as hr}from"./BjY4dxcB.js";import{b as pr}from"./9FNwjwpR.js";import"./CWj6FrbW.js";import"./COhEGSJl.js";import{p as de}from"./C2FuqD3s.js";function Pr(e,r){return r}function gr(e,r,a){for(var n=[],s=r.length,i,t=r.length,u=0;u<s;u++){let _=r[u];me(_,()=>{if(i){if(i.pending.delete(_),i.done.add(_),i.pending.size===0){var d=e.outrogroups;j(e,ee(i.done)),d.delete(i),d.size===0&&(e.outrogroups=null)}}else t-=1},!1)}if(t===0){var c=n.length===0&&a!==null;if(c){var f=a,o=f.parentNode;Ke(o),o.append(f),e.items.clear()}j(e,r,!c)}else i={pending:new Set(r),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(i)}function j(e,r,a=!0){var n;if(e.pending.size>0){n=new Set;for(const t of e.pending.values())for(const u of t)n.add(e.items.get(u).e)}for(var s=0;s<r.length;s++){var i=r[s];if(n!=null&&n.has(i)){i.f|=b;const t=document.createDocumentFragment();Ue(i,t)}else qe(r[s],a)}}var ve;function Fr(e,r,a,n,s,i=null){var t=e,u=new Map,c=(r&Ae)!==0;if(c){var f=e;t=p?F(O(f)):f.appendChild(U())}p&&Z();var o=null,_=ze(()=>{var h=a();return Pe(h)?h:h==null?[]:ee(h)}),d,M=new Map,g=!0;function L(h){w.effect.f&Be||(w.pending.delete(h),w.fallback=o,_r(w,d,t,r,n),o!==null&&(d.length===0?o.f&b?(o.f^=b,P(o,null,t)):Me(o):me(o,()=>{o=null})))}function l(h){w.pending.delete(h)}var v=Ne(()=>{d=ie(_);var h=d.length;let A=!1;if(p){var x=Re(t)===He;x!==(h===0)&&(t=fe(),F(t),K(!1),A=!0)}for(var k=new Set,E=I,R=De(),C=0;C<h;C+=1){p&&D.nodeType===_e&&D.data===Ie&&(t=D,A=!0,K(!1));var H=d[C],N=n(H,C),S=g?null:u.get(N);S?(S.v&&le(S.v,H),S.i&&le(S.i,C),R&&E.unskip_effect(S.e)):(S=Mr(u,g?t:ve??(ve=U()),H,N,C,s,r,a),g||(S.e.f|=b),u.set(N,S)),k.add(N)}if(h===0&&i&&!o&&(g?o=$(()=>i(t)):(o=$(()=>i(ve??(ve=U()))),o.f|=b)),h>k.size&&Oe(),p&&h>0&&F(fe()),!g)if(M.set(E,k),R){for(const[G,V]of u)k.has(G)||E.skip_effect(V.e);E.oncommit(L),E.ondiscard(l)}else L(E);A&&K(!0),ie(_)}),w={effect:v,items:u,pending:M,outrogroups:null,fallback:o};g=!1,p&&(t=D)}function z(e){for(;e!==null&&!(e.f&Ye);)e=e.next;return e}function _r(e,r,a,n,s){var H,N,S,G,V,re,ae,ne,te;var i=(n&We)!==0,t=r.length,u=e.items,c=z(e.effect.first),f,o=null,_,d=[],M=[],g,L,l,v;if(i)for(v=0;v<t;v+=1)g=r[v],L=s(g,v),l=u.get(L).e,l.f&b||((N=(H=l.nodes)==null?void 0:H.a)==null||N.measure(),(_??(_=new Set)).add(l));for(v=0;v<t;v+=1){if(g=r[v],L=s(g,v),l=u.get(L).e,e.outrogroups!==null)for(const T of e.outrogroups)T.pending.delete(l),T.done.delete(l);if(l.f&q&&(Me(l),i&&((G=(S=l.nodes)==null?void 0:S.a)==null||G.unfix(),(_??(_=new Set)).delete(l))),l.f&b)if(l.f^=b,l===c)P(l,null,a);else{var w=o?o.next:c;l===e.effect.last&&(e.effect.last=l.prev),l.prev&&(l.prev.next=l.next),l.next&&(l.next.prev=l.prev),y(e,o,l),y(e,l,w),P(l,w,a),o=l,d=[],M=[],c=z(o.next);continue}if(l!==c){if(f!==void 0&&f.has(l)){if(d.length<M.length){var h=M[0],A;o=h.prev;var x=d[0],k=d[d.length-1];for(A=0;A<d.length;A+=1)P(d[A],h,a);for(A=0;A<M.length;A+=1)f.delete(M[A]);y(e,x.prev,k.next),y(e,o,x),y(e,k,h),c=h,o=k,v-=1,d=[],M=[]}else f.delete(l),P(l,c,a),y(e,l.prev,l.next),y(e,l,o===null?e.effect.first:o.next),y(e,o,l),o=l;continue}for(d=[],M=[];c!==null&&c!==l;)(f??(f=new Set)).add(c),M.push(c),c=z(c.next);if(c===null)continue}l.f&b||d.push(l),o=l,c=z(l.next)}if(e.outrogroups!==null){for(const T of e.outrogroups)T.pending.size===0&&(j(e,ee(T.done)),(V=e.outrogroups)==null||V.delete(T));e.outrogroups.size===0&&(e.outrogroups=null)}if(c!==null||f!==void 0){var E=[];if(f!==void 0)for(l of f)l.f&q||E.push(l);for(;c!==null;)!(c.f&q)&&c!==e.fallback&&E.push(c),c=z(c.next);var R=E.length;if(R>0){var C=n&Ae&&t===0?a:null;if(i){for(v=0;v<R;v+=1)(ae=(re=E[v].nodes)==null?void 0:re.a)==null||ae.measure();for(v=0;v<R;v+=1)(te=(ne=E[v].nodes)==null?void 0:ne.a)==null||te.fix()}gr(e,E,C)}}i&&B(()=>{var T,se;if(_!==void 0)for(l of _)(se=(T=l.nodes)==null?void 0:T.a)==null||se.apply()})}function Mr(e,r,a,n,s,i,t,u){var c=t&Fe?t&xe?oe(a):Ge(a,!1,!1):null,f=t&Ve?oe(s):null;return{v:c,i:f,e:$(()=>(i(r,c??a,f??s,u),()=>{e.delete(n)}))}}function P(e,r,a){if(e.nodes)for(var n=e.nodes.start,s=e.nodes.end,i=r&&!(r.f&b)?r.nodes.start:a;n!==null;){var t=Ee(n);if(i.before(n),n===s)return;n=t}}function y(e,r,a){r===null?e.effect.first=a:r.next=a,a===null?e.effect.last=r:a.prev=r}function mr(e,r,a=!1,n=!1,s=!1,i=!1){var t=e,u="";if(a){var c=e;p&&(t=F(O(c)))}Se(()=>{var f=Xe;if(u===(u=r()??"")){p&&Z();return}if(a&&!p){f.nodes=null,c.innerHTML=u,u!==""&&W(O(c),c.lastChild);return}if(f.nodes!==null&&(Je(f.nodes.start,f.nodes.end),f.nodes=null),u!==""){if(p){D.data;for(var o=Z(),_=o;o!==null&&(o.nodeType!==_e||o.data!=="");)_=o,o=Ee(o);if(o===null)throw Qe(),Ze;W(D,_),t=F(o);return}var d=n?je:s?er:void 0,M=$e(n?"svg":s?"math":"template",d);M.innerHTML=u;var g=n||s?M:M.content;if(W(O(g),g.lastChild),n||s)for(;O(g);)t.before(O(g));else t.before(g)}})}const he=[...`
2
2
  \r\f \v\uFEFF`];function Er(e,r,a){var n=e==null?"":""+e;if(r&&(n=n?n+" "+r:r),a){for(var s of Object.keys(a))if(a[s])n=n?n+" "+s:s;else if(n.length)for(var i=s.length,t=0;(t=n.indexOf(s,t))>=0;){var u=t+i;(t===0||he.includes(n[t-1]))&&(u===n.length||he.includes(n[u]))?n=(t===0?"":n.substring(0,t))+n.substring(u+1):t=u}}return n===""?null:n}function Ar(e,r){return e==null?null:String(e)}function xr(e,r,a,n,s,i){var t=e[ce];if(p||t!==a||t===void 0){var u=Er(a,n,i);(!p||u!==e.getAttribute("class"))&&(u==null?e.removeAttribute("class"):r?e.className=u:e.setAttribute("class",u)),e[ce]=a}else if(i&&s!==i)for(var c in i){var f=!!i[c];(s==null||f!==!!s[c])&&e.classList.toggle(c,f)}return i}function Gr(e,r,a,n){var s=e[ue];if(p||s!==r){var i=Ar(r);(!p||i!==e.getAttribute("style"))&&(i==null?e.removeAttribute("style"):e.style.cssText=i),e[ue]=r}return n}const Sr=Symbol("is custom element"),br=Symbol("is html"),Tr=be?"link":"LINK",wr=be?"progress":"PROGRESS";function Vr(e){if(p){var r=!1,a=()=>{if(!r){if(r=!0,e.hasAttribute("value")){var n=e.value;Y(e,"value",null),e.value=n}if(e.hasAttribute("checked")){var s=e.checked;Y(e,"checked",null),e.checked=s}}};e[ir]=a,B(a),fr()}}function Br(e,r){var a=Ce(e);a.value===(a.value=r??void 0)||e.value===r&&(r!==0||e.nodeName!==wr)||(e.value=r??"")}function Y(e,r,a,n){var s=Ce(e);p&&(s[r]=e.getAttribute(r),r==="src"||r==="srcset"||r==="href"&&e.nodeName===Tr)||s[r]!==(s[r]=a)&&(r==="loading"&&(e[rr]=a),a==null?e.removeAttribute(r):typeof a!="string"&&kr(e).includes(r)?e[r]=a:e.setAttribute(r,a))}function Ce(e){var r;return e[r=ar]??(e[r]={[Sr]:e.nodeName.includes("-"),[br]:e.namespaceURI===nr})}var pe=new Map;function kr(e){var r=e.getAttribute("is")||e.nodeName,a=pe.get(r);if(a)return a;pe.set(r,a=[]);for(var n,s=e,i=Element.prototype;i!==s;){n=sr(s);for(var t in n)n[t].set&&t!=="innerHTML"&&t!=="textContent"&&t!=="innerText"&&a.push(t);s=tr(s)}return a}function Yr(e,r,a=r){var n=new WeakSet;Te(e,"input",async s=>{var i=s?e.defaultValue:e.value;if(i=J(e)?Q(i):i,a(i),I!==null&&n.add(I),await lr(),i!==(i=r())){var t=e.selectionStart,u=e.selectionEnd,c=e.value.length;if(e.value=i??"",u!==null){var f=e.value.length;t===u&&u===c&&f>c?(e.selectionStart=f,e.selectionEnd=f):(e.selectionStart=t,e.selectionEnd=Math.min(u,f))}}}),(p&&e.defaultValue!==e.value||we(r)==null&&e.value)&&(a(J(e)?Q(e.value):e.value),I!==null&&n.add(I)),ke(()=>{var s=r();if(e===document.activeElement){var i=I;if(n.has(i))return}J(e)&&s===Q(e.value)||e.type==="date"&&!s&&!e.value||s!==e.value&&(e.value=s??"")})}const X=new Set;function Kr(e,r,a,n,s=n){var i=a.getAttribute("type")==="checkbox",t=e;let u=!1;if(r!==null)for(var c of r)t=t[c]??(t[c]=[]);t.push(a),Te(a,"change",()=>{var f=a.__value;i&&(f=ge(t,f,a.checked)),s(f)},()=>s(i?[]:null)),ke(()=>{var f=n();if(p&&a.defaultChecked!==a.checked){u=!0;return}i?(f=f||[],a.checked=f.includes(a.__value)):a.checked=or(a.__value,f)}),cr(()=>{var f=t.indexOf(a);f!==-1&&t.splice(f,1)}),X.has(t)||(X.add(t),B(()=>{t.sort((f,o)=>f.compareDocumentPosition(o)===4?-1:1),X.delete(t)})),B(()=>{if(u){var f;if(i)f=ge(t,f,a.checked);else{var o=t.find(_=>_.checked);f=o==null?void 0:o.__value}s(f)}})}function ge(e,r,a){for(var n=new Set,s=0;s<e.length;s+=1)e[s].checked&&n.add(e[s].__value);return a||n.delete(r),Array.from(n)}function J(e){var r=e.type;return r==="number"||r==="range"}function Q(e){return e===""?null:+e}function Ur(e){return function(...r){var a=r[0];return a.stopPropagation(),e==null?void 0:e.apply(this,r)}}function qr(e){return function(...r){var a=r[0];return a.preventDefault(),e==null?void 0:e.apply(this,r)}}const Cr=()=>{const e=pr;return{page:{subscribe:e.page.subscribe},navigating:{subscribe:e.navigating.subscribe},updated:e.updated}},Wr={subscribe(e){return Cr().page.subscribe(e)}},Xr=m("offline"),Jr=m(0),Qr=m(!1),Zr=m(!0),$r=m(!1),jr=m(!1),ea=m(!1),ra=m(!1),aa=m(!1),na=m(void 0),ta=m(!0),yr="ocrc-theme";function ye(){if(typeof document<"u"){const e=document.documentElement.getAttribute("data-theme");if(e==="light"||e==="dark")return e}return typeof matchMedia<"u"&&matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}function Le(e){const r=e==="light"?"#faf9f6":"#0d0d0d";document.querySelectorAll('meta[name="theme-color"]').forEach(a=>a.setAttribute("content",r))}const Lr=m(ye());typeof document<"u"&&Le(ye());function sa(){Lr.update(e=>{const r=e==="light"?"dark":"light";try{localStorage.setItem(yr,r)}catch{}return document.documentElement.setAttribute("data-theme",r),Le(r),r})}var Nr=dr('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"></svg>');function ia(e,r){const a={menu:'<path d="M4 7h16M4 12h16M4 17h16"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/>',moon:'<path d="M21 12.8A9 9 0 1 1 11.2 3 7 7 0 0 0 21 12.8z"/>',"caret-down":'<path d="M6 9l6 6 6-6"/>',"caret-right":'<path d="M9 6l6 6-6 6"/>',search:'<circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/>',check:'<path d="M20 6L9 17l-5-5"/>',copy:'<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>',refresh:'<path d="M20.5 15a9 9 0 1 1-2.2-9.5L21 8"/><path d="M21 3v5h-5"/>',alert:'<path d="M12 3l10 17H2L12 3z"/><path d="M12 10v4"/><path d="M12 17.6v.4"/>',close:'<path d="M6 6l12 12M18 6L6 18"/>',gear:'<circle cx="12" cy="12" r="3"/><path d="M12 2v3M12 19v3M4.6 4.6l2.1 2.1M17.3 17.3l2.1 2.1M2 12h3M19 12h3M4.6 19.4l2.1-2.1M17.3 6.7l2.1-2.1"/>',bolt:'<path d="M13 2L4 14h6l-1 8 9-12h-6l1-8z"/>',cpu:'<rect x="5" y="5" width="14" height="14" rx="2"/><rect x="10" y="10" width="4" height="4"/><path d="M9 2v3M15 2v3M9 19v3M15 19v3M2 9h3M2 15h3M19 9h3M19 15h3"/>',plus:'<path d="M12 5v14M5 12h14"/>',"arrow-down":'<path d="M12 5v14"/><path d="M19 12l-7 7-7-7"/>'};let n=de(r,"name",8,""),s=de(r,"size",8,16);var i=Nr();mr(i,()=>(vr(n()),we(()=>a[n()]??"")),!0),hr(i),Se(()=>{Y(i,"width",s()),Y(i,"height",s())}),ur(e,i)}const fa=m([]),la=m(null);function Rr(e){const r=String(e??"").toLowerCase();return r==="completed"||r==="done"?"done":r==="in_progress"||r==="running"||r==="active"?"running":"pending"}function oa(e){const a=(Array.isArray(e)?e:[]).map(n=>({text:String((n==null?void 0:n.content)??(n==null?void 0:n.text)??(n==null?void 0:n.title)??""),status:Rr(n==null?void 0:n.status)}));return{total:a.length,done:a.filter(n=>n.status==="done").length,items:a}}export{Lr as A,sa as B,fa as C,ia as I,la as a,Kr as b,Yr as c,ea as d,na as e,ta as f,Xr as g,Fr as h,aa as i,mr as j,Pr as k,ra as l,Jr as m,Zr as n,jr as o,Wr as p,Qr as q,$r as r,qr as s,Vr as t,Y as u,xr as v,Gr as w,Br as x,Ur as y,oa as z};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.CarUzRxC.js","../chunks/CWj6FrbW.js","../chunks/COhEGSJl.js","../chunks/BjY4dxcB.js","../chunks/DIEDQ_hk.js","../chunks/Cf5UwiSA.js","../chunks/C_8ke_Oe.js","../chunks/C2FuqD3s.js","../assets/0.D_Csy85O.css","../nodes/1.B_ZltGId.js","../nodes/2.DT4UfYmo.js","../assets/2.BNuGfmZP.css","../nodes/3.CGvR1ek8.js","../assets/3.CTDprntu.css"])))=>i.map(i=>d[i]);
2
- var F=r=>{throw TypeError(r)};var G=(r,e,a)=>e.has(r)||F("Cannot "+a);var u=(r,e,a)=>(G(r,e,"read from private field"),a?a.call(r):e.get(r)),L=(r,e,a)=>e.has(r)?F("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,a),j=(r,e,a,n)=>(G(r,e,"write to private field"),n?n.call(r,a):e.set(r,a),a);import{ai as N,ag as X,z as Z,h as $,aG as ee,aV as te,aP as re,aQ as W,j as ae,ah as se,aO as S,L as ne,a8 as v,af as oe,as as ie,a5 as ce,W as le,b3 as ue,au as de,aE as fe,b7 as me,b6 as he,az as _e,b1 as ve,a4 as x,aU as ge,w,aB as ye,aX as C,M as B,J as be,aK as Ee,a6 as H,b0 as Re,a$ as Pe,aR as we,b5 as I}from"../chunks/BjY4dxcB.js";import"../chunks/CWj6FrbW.js";import{B as Oe,i as D}from"../chunks/DIEDQ_hk.js";import{p as V,b as U}from"../chunks/C2FuqD3s.js";function p(r,e,a){var n;N&&(n=se,X());var o=new Oe(r);Z(()=>{var i=e()??null;if(N){var s=ee(n),t=s===ae,d=i!==null;if(t!==d){var l=te();re(l),o.anchor=l,W(!1),o.ensure(i,i&&(f=>a(f,i))),W(!0);return}}o.ensure(i,i&&(f=>a(f,i)))},$)}function ke(r){return class extends xe{constructor(e){super({component:r,...e})}}}var g,m;class xe{constructor(e){L(this,g);L(this,m);var i;var a=new Map,n=(s,t)=>{var d=de(t,!1,!1);return a.set(s,d),d};const o=new Proxy({...e.props||{},$$events:{}},{get(s,t){return v(a.get(t)??n(t,Reflect.get(s,t)))},has(s,t){return t===ne?!0:(v(a.get(t)??n(t,Reflect.get(s,t))),Reflect.has(s,t))},set(s,t,d){return S(a.get(t)??n(t,d),d),Reflect.set(s,t,d)}});j(this,m,(e.hydrate?oe:ie)(e.component,{target:e.target,anchor:e.anchor,props:o,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError})),(!((i=e==null?void 0:e.props)!=null&&i.$$host)||e.sync===!1)&&ce(),j(this,g,o.$$events);for(const s of Object.keys(u(this,m)))s==="$set"||s==="$destroy"||s==="$on"||le(this,s,{get(){return u(this,m)[s]},set(t){u(this,m)[s]=t},enumerable:!0});u(this,m).$set=s=>{Object.assign(o,s)},u(this,m).$destroy=()=>{ue(u(this,m))}}$set(e){u(this,m).$set(e)}$on(e,a){u(this,g)[e]=u(this,g)[e]||[];const n=(...o)=>a.call(this,...o);return u(this,g)[e].push(n),()=>{u(this,g)[e]=u(this,g)[e].filter(o=>o!==n)}}$destroy(){u(this,m).$destroy()}}g=new WeakMap,m=new WeakMap;const Ae="modulepreload",Se=function(r,e){return new URL(r,e).href},Y={},A=function(e,a,n){let o=Promise.resolve();if(a&&a.length>0){const s=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),d=(t==null?void 0:t.nonce)||(t==null?void 0:t.getAttribute("nonce"));o=Promise.allSettled(a.map(l=>{if(l=Se(l,n),l in Y)return;Y[l]=!0;const f=l.endsWith(".css"),T=f?'[rel="stylesheet"]':"";if(!!n)for(let y=s.length-1;y>=0;y--){const c=s[y];if(c.href===l&&(!f||c.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${T}`))return;const _=document.createElement("link");if(_.rel=f?"stylesheet":Ae,f||(_.as="script"),_.crossOrigin="",_.href=l,d&&_.setAttribute("nonce",d),document.head.appendChild(_),f)return new Promise((y,c)=>{_.addEventListener("load",y),_.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${l}`)))})}))}function i(s){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=s,window.dispatchEvent(t),!t.defaultPrevented)throw s}return o.then(s=>{for(const t of s||[])t.status==="rejected"&&i(t.reason);return e().catch(i)})},qe={};var Te=H('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),Le=H("<!> <!>",1);function je(r,e){fe(e,!0);let a=V(e,"components",23,()=>[]),n=V(e,"data_0",3,null),o=V(e,"data_1",3,null);me(()=>e.stores.page.set(e.page)),he(()=>{e.stores,e.page,e.constructors,a(),e.form,n(),o(),e.stores.page.notify()});let i=C(!1),s=C(!1),t=C(null);_e(()=>{const c=e.stores.page.subscribe(()=>{v(i)&&(S(s,!0),ve().then(()=>{S(t,document.title||"untitled page",!0)}))});return S(i,!0),c});const d=I(()=>e.constructors[1]);var l=Le(),f=x(l);{var T=c=>{const b=I(()=>e.constructors[0]);var E=B(),O=x(E);p(O,()=>v(b),(R,P)=>{U(P(R,{get data(){return n()},get form(){return e.form},get params(){return e.page.params},children:(h,Be)=>{var z=B(),K=x(z);p(K,()=>v(d),(M,Q)=>{U(Q(M,{get data(){return o()},get form(){return e.form},get params(){return e.page.params}}),k=>a()[1]=k,()=>{var k;return(k=a())==null?void 0:k[1]})}),w(h,z)},$$slots:{default:!0}}),h=>a()[0]=h,()=>{var h;return(h=a())==null?void 0:h[0]})}),w(c,E)},q=c=>{const b=I(()=>e.constructors[0]);var E=B(),O=x(E);p(O,()=>v(b),(R,P)=>{U(P(R,{get data(){return n()},get form(){return e.form},get params(){return e.page.params}}),h=>a()[0]=h,()=>{var h;return(h=a())==null?void 0:h[0]})}),w(c,E)};D(f,c=>{e.constructors[1]?c(T):c(q,-1)})}var _=ge(f,2);{var y=c=>{var b=Te(),E=be(b);{var O=R=>{var P=Re();Pe(()=>we(P,v(t))),w(R,P)};D(E,R=>{v(s)&&R(O)})}Ee(b),w(c,b)};D(_,c=>{v(i)&&c(y)})}w(r,l),ye()}const ze=ke(je),Fe=[()=>A(()=>import("../nodes/0.CarUzRxC.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),()=>A(()=>import("../nodes/1.B_ZltGId.js"),__vite__mapDeps([9,1,3,6]),import.meta.url),()=>A(()=>import("../nodes/2.DT4UfYmo.js"),__vite__mapDeps([10,1,2,3,4,6,11]),import.meta.url),()=>A(()=>import("../nodes/3.CGvR1ek8.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,13]),import.meta.url)],Ge=[],Ne={"/":[2],"/[sessionId]":[3]},J={handleError:({error:r})=>{console.error(r)},reroute:()=>{},transport:{}},Ce=Object.fromEntries(Object.entries(J.transport).map(([r,e])=>[r,e.decode])),We=Object.fromEntries(Object.entries(J.transport).map(([r,e])=>[r,e.encode])),Ye=!1,He=(r,e)=>Ce[r](e);export{He as decode,Ce as decoders,Ne as dictionary,We as encoders,Ye as hash,J as hooks,qe as matchers,Fe as nodes,ze as root,Ge as server_loads};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.D8zDxzVz.js","../chunks/CWj6FrbW.js","../chunks/COhEGSJl.js","../chunks/BjY4dxcB.js","../chunks/DIEDQ_hk.js","../chunks/CEn8-WG3.js","../chunks/9FNwjwpR.js","../chunks/C2FuqD3s.js","../assets/0.D_Csy85O.css","../nodes/1.DDBSIioJ.js","../nodes/2.CQexb4qk.js","../assets/2.BNuGfmZP.css","../nodes/3.DPl0KnmZ.js","../assets/3.CTDprntu.css"])))=>i.map(i=>d[i]);
2
+ var F=r=>{throw TypeError(r)};var G=(r,e,a)=>e.has(r)||F("Cannot "+a);var u=(r,e,a)=>(G(r,e,"read from private field"),a?a.call(r):e.get(r)),L=(r,e,a)=>e.has(r)?F("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,a),j=(r,e,a,n)=>(G(r,e,"write to private field"),n?n.call(r,a):e.set(r,a),a);import{ai as N,ag as X,z as Z,h as $,aG as ee,aV as te,aP as re,aQ as W,j as ae,ah as se,aO as S,L as ne,a8 as v,af as oe,as as ie,a5 as ce,W as le,b3 as ue,au as de,aE as fe,b7 as me,b6 as he,az as _e,b1 as ve,a4 as x,aU as ge,w,aB as ye,aX as C,M as B,J as be,aK as Ee,a6 as H,b0 as Re,a$ as Pe,aR as we,b5 as I}from"../chunks/BjY4dxcB.js";import"../chunks/CWj6FrbW.js";import{B as Oe,i as D}from"../chunks/DIEDQ_hk.js";import{p as V,b as U}from"../chunks/C2FuqD3s.js";function p(r,e,a){var n;N&&(n=se,X());var o=new Oe(r);Z(()=>{var i=e()??null;if(N){var s=ee(n),t=s===ae,d=i!==null;if(t!==d){var l=te();re(l),o.anchor=l,W(!1),o.ensure(i,i&&(f=>a(f,i))),W(!0);return}}o.ensure(i,i&&(f=>a(f,i)))},$)}function ke(r){return class extends xe{constructor(e){super({component:r,...e})}}}var g,m;class xe{constructor(e){L(this,g);L(this,m);var i;var a=new Map,n=(s,t)=>{var d=de(t,!1,!1);return a.set(s,d),d};const o=new Proxy({...e.props||{},$$events:{}},{get(s,t){return v(a.get(t)??n(t,Reflect.get(s,t)))},has(s,t){return t===ne?!0:(v(a.get(t)??n(t,Reflect.get(s,t))),Reflect.has(s,t))},set(s,t,d){return S(a.get(t)??n(t,d),d),Reflect.set(s,t,d)}});j(this,m,(e.hydrate?oe:ie)(e.component,{target:e.target,anchor:e.anchor,props:o,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError})),(!((i=e==null?void 0:e.props)!=null&&i.$$host)||e.sync===!1)&&ce(),j(this,g,o.$$events);for(const s of Object.keys(u(this,m)))s==="$set"||s==="$destroy"||s==="$on"||le(this,s,{get(){return u(this,m)[s]},set(t){u(this,m)[s]=t},enumerable:!0});u(this,m).$set=s=>{Object.assign(o,s)},u(this,m).$destroy=()=>{ue(u(this,m))}}$set(e){u(this,m).$set(e)}$on(e,a){u(this,g)[e]=u(this,g)[e]||[];const n=(...o)=>a.call(this,...o);return u(this,g)[e].push(n),()=>{u(this,g)[e]=u(this,g)[e].filter(o=>o!==n)}}$destroy(){u(this,m).$destroy()}}g=new WeakMap,m=new WeakMap;const Ae="modulepreload",Se=function(r,e){return new URL(r,e).href},Y={},A=function(e,a,n){let o=Promise.resolve();if(a&&a.length>0){const s=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),d=(t==null?void 0:t.nonce)||(t==null?void 0:t.getAttribute("nonce"));o=Promise.allSettled(a.map(l=>{if(l=Se(l,n),l in Y)return;Y[l]=!0;const f=l.endsWith(".css"),T=f?'[rel="stylesheet"]':"";if(!!n)for(let y=s.length-1;y>=0;y--){const c=s[y];if(c.href===l&&(!f||c.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${T}`))return;const _=document.createElement("link");if(_.rel=f?"stylesheet":Ae,f||(_.as="script"),_.crossOrigin="",_.href=l,d&&_.setAttribute("nonce",d),document.head.appendChild(_),f)return new Promise((y,c)=>{_.addEventListener("load",y),_.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${l}`)))})}))}function i(s){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=s,window.dispatchEvent(t),!t.defaultPrevented)throw s}return o.then(s=>{for(const t of s||[])t.status==="rejected"&&i(t.reason);return e().catch(i)})},qe={};var Te=H('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),Le=H("<!> <!>",1);function je(r,e){fe(e,!0);let a=V(e,"components",23,()=>[]),n=V(e,"data_0",3,null),o=V(e,"data_1",3,null);me(()=>e.stores.page.set(e.page)),he(()=>{e.stores,e.page,e.constructors,a(),e.form,n(),o(),e.stores.page.notify()});let i=C(!1),s=C(!1),t=C(null);_e(()=>{const c=e.stores.page.subscribe(()=>{v(i)&&(S(s,!0),ve().then(()=>{S(t,document.title||"untitled page",!0)}))});return S(i,!0),c});const d=I(()=>e.constructors[1]);var l=Le(),f=x(l);{var T=c=>{const b=I(()=>e.constructors[0]);var E=B(),O=x(E);p(O,()=>v(b),(R,P)=>{U(P(R,{get data(){return n()},get form(){return e.form},get params(){return e.page.params},children:(h,Be)=>{var z=B(),K=x(z);p(K,()=>v(d),(M,Q)=>{U(Q(M,{get data(){return o()},get form(){return e.form},get params(){return e.page.params}}),k=>a()[1]=k,()=>{var k;return(k=a())==null?void 0:k[1]})}),w(h,z)},$$slots:{default:!0}}),h=>a()[0]=h,()=>{var h;return(h=a())==null?void 0:h[0]})}),w(c,E)},q=c=>{const b=I(()=>e.constructors[0]);var E=B(),O=x(E);p(O,()=>v(b),(R,P)=>{U(P(R,{get data(){return n()},get form(){return e.form},get params(){return e.page.params}}),h=>a()[0]=h,()=>{var h;return(h=a())==null?void 0:h[0]})}),w(c,E)};D(f,c=>{e.constructors[1]?c(T):c(q,-1)})}var _=ge(f,2);{var y=c=>{var b=Te(),E=be(b);{var O=R=>{var P=Re();Pe(()=>we(P,v(t))),w(R,P)};D(E,R=>{v(s)&&R(O)})}Ee(b),w(c,b)};D(_,c=>{v(i)&&c(y)})}w(r,l),ye()}const ze=ke(je),Fe=[()=>A(()=>import("../nodes/0.D8zDxzVz.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),()=>A(()=>import("../nodes/1.DDBSIioJ.js"),__vite__mapDeps([9,1,3,6]),import.meta.url),()=>A(()=>import("../nodes/2.CQexb4qk.js"),__vite__mapDeps([10,1,2,3,4,6,11]),import.meta.url),()=>A(()=>import("../nodes/3.DPl0KnmZ.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,13]),import.meta.url)],Ge=[],Ne={"/":[2],"/[sessionId]":[3]},J={handleError:({error:r})=>{console.error(r)},reroute:()=>{},transport:{}},Ce=Object.fromEntries(Object.entries(J.transport).map(([r,e])=>[r,e.decode])),We=Object.fromEntries(Object.entries(J.transport).map(([r,e])=>[r,e.encode])),Ye=!1,He=(r,e)=>Ce[r](e);export{He as decode,Ce as decoders,Ne as dictionary,We as encoders,Ye as hash,J as hooks,qe as matchers,Fe as nodes,ze as root,Ge as server_loads};
@@ -0,0 +1 @@
1
+ import{l as o,s as r}from"../chunks/9FNwjwpR.js";export{o as load_css,r as start};
@@ -1,3 +1,3 @@
1
- import"../chunks/CWj6FrbW.js";import{q as _a,r as He,z as vt,p as qt,f as $e,j as Nt,d as ma,a as gt,b as at,c as yt,e as kt,C as Ut,A as Bt,n as ga,B as Dt,l as ea,k as ia,m as ya,g as Gt,v as ka,o as wa,E as xa,h as Kt,u as $a,t as Ia,G as Sa,x as ta,D as Ft,F as za,s as Aa}from"../chunks/COhEGSJl.js";import{ai as qa,ag as Ca,a1 as $t,b4 as l,a_ as Ta,aa as Ea,am as La,aE as Ve,ap as W,aO as s,V as re,a8 as e,aq as nt,J as a,aK as t,aU as n,aw as bt,a$ as J,aR as T,a3 as N,w as b,aB as Je,au as u,Z as mt,a6 as $,M as xt,a4 as Ze,b0 as Pt,b8 as Ma,b5 as ht,$ as Tt,aI as ja,ay as ca,Q as Oa,b1 as Ba,az as va,av as aa,a9 as At}from"../chunks/BjY4dxcB.js";import{i as K,a as qe,s as lt}from"../chunks/DIEDQ_hk.js";import{m as da,g as Lt,I as wt,v as be,u as Ne,r as It,d as Ht,B as Da,A as Pa,h as st,a as Na,t as pt,c as _t,w as ot,n as Vt,k as Jt,q as St,z as Ra,b as sa,p as ua,o as zt,C as Wa,y as Ka,j as Fa,l as jt,i as na}from"../chunks/Cf5UwiSA.js";import{p as Ee,b as Rt}from"../chunks/C2FuqD3s.js";import{g as Xt,a as Ua}from"../chunks/C_8ke_Oe.js";function Ga(j,v,p,z,B){var w;qa&&Ca();var i=(w=v.$$slots)==null?void 0:w[p],C=!1;i===!0&&(i=v.children,C=!0),i===void 0||i(j,C?()=>z:z)}function Yt(j,v,p){$t(()=>{var z=l(()=>v(j,p==null?void 0:p())||{});if(z!=null&&z.destroy)return()=>z.destroy()})}function Ha(j,v,p){var z=Ea(j,v);z&&z.set&&(j[v]=p,Ta(()=>{j[v]=null}))}function Va(j,v){var i;var p=(i=j.$$events)==null?void 0:i[v.type],z=La(p)?p.slice():p==null?[]:[p];for(var B of z)B.call(this,v)}const Ja=!1,Xa=!1,Ya="always",Rr=Object.freeze(Object.defineProperty({__proto__:null,prerender:Xa,ssr:Ja,trailingSlash:Ya},Symbol.toStringTag,{value:"Module"})),ra=[2e3,4e3,8e3,16e3,3e4];function Qa(j){const v=_a();if(!v)return j;const p=j.includes("?")?"&":"?";return`${j}${p}token=${encodeURIComponent(v)}`}function Za(j){let v=null,p=0,z=null,B=null,i=null,C=0,w=!1,y=!1;const f=[];function x(L){var D;Lt.set(L),(D=j.onStatus)==null||D.call(j,L)}function g(){z&&(clearTimeout(z),z=null),B&&(clearTimeout(B),B=null),i&&(clearTimeout(i),i=null)}function M(){B=setTimeout(()=>{(v==null?void 0:v.readyState)===WebSocket.OPEN&&(C=performance.now(),v.send(JSON.stringify({type:"ping"})),i=setTimeout(()=>{v==null||v.close(),O()},45e3))},25e3)}function k(){if(!w){x("reconnecting");try{v=new WebSocket(Qa(j.url))}catch{O();return}v.onopen=()=>{var L;p=0,x("connected");for(const D of f.splice(0))v==null||v.send(D);y&&((L=j.onReconnect)==null||L.call(j)),y=!0,M()},v.onmessage=L=>{var D;try{const X=JSON.parse(L.data);if(X.type==="pong"){i&&(clearTimeout(i),i=null),C&&da.set(Math.round(performance.now()-C)),M();return}(D=j.onMessage)==null||D.call(j,X)}catch{}},v.onclose=()=>{g(),w||O()},v.onerror=()=>{v==null||v.close()}}}function O(){if(g(),w)return;x("reconnecting");const L=ra[Math.min(p,ra.length-1)];p+=1,z=setTimeout(()=>void k(),L)}return k(),{send(L){const D=JSON.stringify(L);(v==null?void 0:v.readyState)===WebSocket.OPEN?v.send(D):f.push(D)},close(){w=!0,g(),f.length=0,v==null||v.close(),v=null,x("offline")}}}let la=new Map;const Ct=new Set;let pa,Et,Ot=!1;function Qt(){if(typeof document>"u")return;const j=document.title.replace(/^(🔔 [\d]+ 新动态 — )/,"")||"ocrc";if(Ct.size===0){Et&&(clearInterval(Et),Et=void 0),Ot=!1,document.title=j;return}Et||(document.title=`🔔 ${Ct.size} 新动态 — ${j}`,Et=setInterval(()=>{Ot=!Ot,document.title=Ot?`🔔 ${Ct.size} 新动态 — ${j}`:j},1200))}function es(j){pa=j,j&&(Ct.delete(j),Qt())}function ts(j){for(const v of j){const p=la.get(v.id);la.set(v.id,v.lastActiveAt),!(p===void 0||v.id===pa)&&v.lastActiveAt>p+1500&&(Ct.add(v.id),Qt())}}typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&(Ct.clear(),Qt())});var as=$('<span class="dot-ring svelte-hhath1"></span>'),ss=$('<span class="connection-latency mono svelte-hhath1"> </span>'),ns=$('<button class="install svelte-hhath1">Install</button>'),rs=$('<header class="titlebar svelte-hhath1"><button aria-label="Sessions"><!></button> <div class="brand svelte-hhath1" title="ocrc"><svg class="brand-mark svelte-hhath1" viewBox="0 0 64 64" fill="none" stroke-width="8" stroke-linecap="round" aria-hidden="true"><path d="M46 15 A24 24 0 1 0 54 32" stroke="var(--text)"></path><circle cx="49" cy="20" r="6" fill="var(--accent)" stroke="none"></circle></svg> <span class="wordmark svelte-hhath1"><b class="svelte-hhath1">ocrc</b></span></div> <button class="new-session svelte-hhath1" title="新建会话、命令面板…"><span class="new-icon svelte-hhath1" aria-hidden="true">+</span> <span class="new-label svelte-hhath1">新建</span> <span class="new-caret svelte-hhath1" aria-hidden="true"><!></span></button> <button class="palette-trigger svelte-hhath1" title="搜索会话与命令 (⌘K)"><span class="palette-icon svelte-hhath1" aria-hidden="true"><!></span> <span class="palette-label svelte-hhath1">搜索会话与命令…</span> <kbd class="palette-keycap mono svelte-hhath1">⌘K</kbd></button> <span class="spacer svelte-hhath1"></span> <button class="themebtn svelte-hhath1" title="机器人与通道" aria-label="机器人与通道"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="10" rx="2"></rect><circle cx="12" cy="5" r="2"></circle><path d="M12 7v4"></path><path d="M8 16h0M16 16h0"></path></svg></button> <button class="themebtn svelte-hhath1" aria-label="Toggle color theme"><!></button> <span><span class="dot-wrap svelte-hhath1" aria-hidden="true"><span class="dot svelte-hhath1"></span> <!></span> <span class="connection-state svelte-hhath1"> </span> <!></span> <!> <button aria-label="Inspector"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="7" x2="20" y2="7"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="17" x2="14" y2="17"></line></svg></button> <div class="user svelte-hhath1"><span class="user-email mono svelte-hhath1"> </span> <span class="avatar mono svelte-hhath1" aria-hidden="true"> </span></div></header>');function ls(j,v){Ve(v,!1);const p=()=>qe(Pa,"$theme",i),z=()=>qe(Lt,"$connection",i),B=()=>qe(da,"$latency",i),[i,C]=lt(),w=u(),y=u();let f=Ee(v,"email",8,""),x=Ee(v,"onPalette",8),g=Ee(v,"installEvent",8,null),M=Ee(v,"onInstall",8,()=>{}),k=Ee(v,"drawerLeft",8,!1),O=Ee(v,"drawerRight",8,!1),L=Ee(v,"onToggleLeft",8,()=>{}),D=Ee(v,"onToggleRight",8,()=>{}),X=Ee(v,"newButtonAnchor",12,null);function te(q){return q==="connected"?"live":q==="reconnecting"?"reconnecting":"offline"}W(()=>re(f()),()=>{s(w,f()||"you@local")}),W(()=>e(w),()=>{s(y,e(w).charAt(0).toUpperCase())}),nt(),He();var Y=rs(),S=a(Y);let G;var P=a(S);wt(P,{name:"menu",size:18}),t(S);var H=n(S,4),ve=n(a(H),4),ye=a(ve);wt(ye,{name:"caret-down",size:9}),t(ve),t(H),Rt(H,q=>X(q),()=>X());var ke=n(H,2),le=a(ke),we=a(le);wt(we,{name:"search",size:14}),t(le),bt(4),t(ke);var h=n(ke,4),c=n(h,2),o=a(c);{let q=mt(()=>p()==="light"?"moon":"sun");wt(o,{get name(){return e(q)},size:15})}t(c);var d=n(c,2),r=a(d),m=n(a(r),2);{var ee=q=>{var U=as();b(q,U)};K(m,q=>{z()==="connected"&&q(ee)})}t(r);var oe=n(r,2),ge=a(oe,!0);t(oe);var Se=n(oe,2);{var se=q=>{var U=ss(),pe=a(U);t(U),J(()=>T(pe,`${B()??""}ms`)),b(q,U)};K(Se,q=>{z()==="connected"&&q(se)})}t(d);var ue=n(d,2);{var Le=q=>{var U=ns();N("click",U,function(...pe){var Ce;(Ce=M())==null||Ce.apply(this,pe)}),b(q,U)};K(ue,q=>{g()&&q(Le)})}var Re=n(ue,2);let De;var A=n(Re,2),Q=a(A),fe=a(Q,!0);t(Q);var Ie=n(Q,2),_=a(Ie,!0);t(Ie),t(A),t(Y),J((q,U)=>{G=be(S,1,"iconbtn svelte-hhath1",null,G,{active:k()}),Ne(c,"title",p()==="light"?"Switch to dark":"Switch to light"),be(d,1,`connection-pill ${z()??""}`,"svelte-hhath1"),Ne(d,"title",`WebSocket: ${q??""}`),T(ge,U),De=be(Re,1,"iconbtn svelte-hhath1",null,De,{active:O()}),T(fe,e(w)),T(_,e(y))},[()=>(z(),l(()=>te(z()))),()=>(z(),l(()=>te(z())))]),N("click",S,function(...q){var U;(U=L())==null||U.apply(this,q)}),N("click",H,()=>It.update(q=>!q)),N("click",ke,function(...q){var U;(U=x())==null||U.apply(this,q)}),N("click",h,()=>Ht.set(!0)),N("click",c,function(...q){var U;(U=Da)==null||U.apply(this,q)}),N("click",Re,function(...q){var U;(U=D())==null||U.apply(this,q)}),b(j,Y),Je(),C()}var os=$('<div role="status"><!></div>');function is(j){const v=()=>qe(Lt,"$connection",p),[p,z]=lt();var B=xt(),i=Ze(B);{var C=w=>{var y=os();let f;var x=a(y);{var g=k=>{var O=Pt("Reconnecting…");b(k,O)},M=k=>{var O=Pt("Offline — live updates paused");b(k,O)};K(x,k=>{v()==="reconnecting"?k(g):k(M,-1)})}t(y),J(()=>f=be(y,1,"banner svelte-l46k7l",null,f,{offline:v()==="offline"})),b(w,y)};K(i,w=>{v()!=="connected"&&w(C)})}b(j,B),z()}const fa="ocrc.pinnedSessions";function cs(){if(typeof localStorage>"u")return[];try{const j=localStorage.getItem(fa),v=j?JSON.parse(j):[];return Array.isArray(v)?v.filter(p=>typeof p=="string"):[]}catch{return[]}}function vs(j){if(!(typeof localStorage>"u"))try{localStorage.setItem(fa,JSON.stringify(j))}catch{}}function ds(){const{subscribe:j,update:v}=Ma(cs());return{subscribe:j,toggle(p){v(z=>{const B=z.includes(p)?z.filter(i=>i!==p):[...z,p];return vs(B),B})}}}const oa=ds();function us(j,v){return v?j.filter(p=>(p.directory??"")===v):j}var ps=$('<input class="rename-input svelte-1h8243g" placeholder="Session title" aria-label="Session title"/>'),fs=$('<span class="pin-dot svelte-1h8243g" aria-label="已钉住">●</span>'),hs=$('<span class="title svelte-1h8243g"> </span> <!> <span class="actions svelte-1h8243g"><button class="act rename svelte-1h8243g" title="重命名会话" aria-label="重命名会话"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"></path><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z"></path></svg></button> <button aria-label="钉住会话"><svg width="13" height="13" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 4h6l-1 6 3 3v2H7v-2l3-3-1-6z"></path><line x1="12" y1="15" x2="12" y2="21"></line></svg></button> <button class="act trash svelte-1h8243g" title="删除会话" aria-label="删除会话"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6M10 11v6M14 11v6M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"></path></svg></button></span>',1),bs=$('<span class="sep svelte-1h8243g">·</span><span class="repo svelte-1h8243g"> </span>',1),_s=$('<span class="add svelte-1h8243g"> </span>'),ms=$('<span class="del svelte-1h8243g"> </span>'),gs=$('<span class="sep svelte-1h8243g">·</span> <!> <!>',1),ys=$('<div class="progress svelte-1h8243g" aria-hidden="true"><span class="progress-fill svelte-1h8243g"></span></div>'),ks=$('<a><div class="line1 svelte-1h8243g"><span><span class="sr-only svelte-1h8243g"> </span></span> <!></div> <div class="meta mono svelte-1h8243g"><span class="id svelte-1h8243g"> </span> <!> <span class="sep svelte-1h8243g">·</span><span> </span> <!></div> <!></a>'),ws=$('<div class="group-header mono svelte-1h8243g"><span class="gh-label svelte-1h8243g"> </span> <span class="gh-line svelte-1h8243g" aria-hidden="true"></span> <span class="gh-count svelte-1h8243g"> </span></div> <!>',1),xs=$('<div class="empty mono svelte-1h8243g"> </div>'),$s=$('<div class="sidebar svelte-1h8243g"><!> <!></div>');function Is(j,v){Ve(v,!1);const p=()=>qe(vt,"$sessionList",w),z=()=>qe(qt,"$feeds",w),B=()=>qe(Lt,"$connection",w),i=()=>qe(Na,"$activeWorkspace",w),C=()=>qe(oa,"$pinnedSessions",w),[w,y]=lt(),f=u(),x=u(),g=u(),M=u(),k=u(),O=u(),L=u();let D=Ee(v,"activeId",8,void 0),X=Ee(v,"onSelect",8,void 0),te=Ee(v,"agentId",8,void 0),Y=Ee(v,"agentName",8,void 0);const S=24*60*60*1e3;function G(A,Q){return Q==="connected"&&Date.now()-A<S}function P(A,Q){const fe=Q[A];if(!fe||fe.order.length===0)return!1;const Ie=fe.byId[fe.order[fe.order.length-1]];return(Ie==null?void 0:Ie.kind)==="thinking"||(Ie==null?void 0:Ie.kind)==="streaming"||(Ie==null?void 0:Ie.kind)==="think-stream"}function H(A,Q){const fe=Q[A];if(!fe||fe.order.length===0)return!1;const Ie=fe.byId[fe.order[fe.order.length-1]];return(Ie==null?void 0:Ie.kind)==="approval"}function ve(A,Q,fe){return P(A.id,Q)?"busy":H(A.id,Q)?"wait":G(A.lastActiveAt,fe)?"idle":"offline"}function ye(A){const Q=Date.now()-A,fe=Math.floor(Q/6e4);if(fe<1)return"now";if(fe<60)return`${fe}m`;const Ie=Math.floor(fe/60);return Ie<24?`${Ie}h`:`${Math.floor(Ie/24)}d`}function ke(A){return(A.includes("_")?A.slice(A.indexOf("_")+1):A).slice(-8)}function le(A){if(!A)return"";const Q=A.replace(/\/+$/,"").split("/");return Q[Q.length-1]||""}function we(A,Q){X()&&(A.preventDefault(),X()(Q))}function h(A,Q){A.preventDefault(),A.stopPropagation(),oa.toggle(Q)}let c=u(null),o=u(""),d=u(null);function r(A,Q){A.preventDefault(),A.stopPropagation(),s(c,Q.id),s(o,Q.title||"")}function m(){s(c,null),s(o,"")}async function ee(A){const Q=e(o).trim();if(!Q||e(d)){m();return}s(d,A);try{await $e.renameSession(A,Q),vt.set(await $e.sessions())}catch(fe){alert(`重命名失败:${fe.message}`)}finally{s(d,null),s(c,null),s(o,"")}}function oe(A,Q){A.key==="Enter"?(A.preventDefault(),ee(Q)):A.key==="Escape"&&(A.preventDefault(),m())}function ge(A){A.focus(),A.select()}let Se=u(null);async function se(A,Q){if(A.preventDefault(),A.stopPropagation(),!e(Se)&&confirm("Delete this session? This cannot be undone.")){s(Se,Q);try{await $e.deleteSession(Q),vt.set(await $e.sessions()),D()===Q&&Xt("/")}catch(fe){alert(`删除失败:${fe.message}`)}finally{s(Se,null)}}}W(()=>(p(),z(),B()),()=>{s(f,new Map(p().map(A=>[A.id,ve(A,z(),B())])))}),W(()=>(re(te()),p()),()=>{s(x,te()?p().filter(A=>A.backendId===te()||!A.backendId&&te()==="opencode"):p())}),W(()=>(e(x),i()),()=>{s(g,us(e(x),i()))}),W(()=>e(g),()=>{s(M,[...e(g)].sort((A,Q)=>Q.lastActiveAt-A.lastActiveAt))}),W(()=>(e(M),C()),()=>{s(k,e(M).filter(A=>C().includes(A.id)))}),W(()=>(e(M),C()),()=>{s(O,e(M).filter(A=>!C().includes(A.id)))}),W(()=>(e(k),e(O)),()=>{s(L,[{key:"pinned",label:"Pinned",rows:e(k)},{key:"recent",label:"Recent",rows:e(O)}])}),nt(),He();var ue=$s(),Le=a(ue);st(Le,1,()=>e(L),A=>A.key,(A,Q)=>{var fe=xt(),Ie=Ze(fe);{var _=q=>{var U=ws(),pe=Ze(U),Ce=a(pe),Me=a(Ce,!0);t(Ce);var F=n(Ce,4),ae=a(F,!0);t(F),t(pe);var V=n(pe,2);st(V,1,()=>(e(Q),l(()=>e(Q).rows)),_e=>_e.id,(_e,E)=>{var Te=ks();let I;var Z=a(Te),he=a(Z),ze=a(he),ne=a(ze,!0);t(ze),t(he);var ie=n(he,2);{var Oe=ce=>{var de=ps();pt(de),$t(()=>_t(de,()=>e(o),me=>s(o,me))),Yt(de,me=>ge==null?void 0:ge(me)),$t(()=>N("click",de,me=>me.preventDefault())),$t(()=>N("keydown",de,me=>oe(me,e(E).id))),$t(()=>N("blur",de,()=>ee(e(E).id))),J(()=>de.disabled=(e(d),e(E),l(()=>e(d)===e(E).id))),b(ce,de)},je=ce=>{var de=hs(),me=Ze(de),tt=a(me,!0);t(me);var Ge=n(me,2);{var dt=ut=>{var Wt=fs();b(ut,Wt)},rt=ht(()=>(C(),e(E),l(()=>C().includes(e(E).id))));K(Ge,ut=>{e(rt)&&ut(dt)})}var it=n(Ge,2),ct=a(it),ft=n(ct,2);let Mt;var ha=a(ft);t(ft);var Zt=n(ft,2);t(it),J((ut,Wt,ba)=>{T(tt,(e(E),l(()=>e(E).title||"Untitled session"))),Mt=be(ft,1,"act pin svelte-1h8243g",null,Mt,ut),Ne(ft,"title",Wt),Ne(ha,"fill",ba),Zt.disabled=(e(Se),e(E),l(()=>e(Se)===e(E).id))},[()=>({on:C().includes(e(E).id)}),()=>(C(),e(E),l(()=>C().includes(e(E).id)?"取消钉住":"钉住")),()=>(C(),e(E),l(()=>C().includes(e(E).id)?"currentColor":"none"))]),N("click",ct,ut=>r(ut,e(E))),N("click",ft,ut=>h(ut,e(E).id)),N("click",Zt,ut=>se(ut,e(E).id)),b(ce,de)};K(ie,ce=>{e(c),e(E),l(()=>e(c)===e(E).id)?ce(Oe):ce(je,-1)})}t(Z);var R=n(Z,2),Xe=a(R),Ke=a(Xe,!0);t(Xe);var Fe=n(Xe,2);{var xe=ce=>{var de=bs(),me=n(Ze(de)),tt=a(me,!0);t(me),J(Ge=>T(tt,Ge),[()=>(e(E),l(()=>le(e(E).directory)))]),b(ce,de)},Be=ht(()=>(e(E),l(()=>le(e(E).directory))));K(Fe,ce=>{e(Be)&&ce(xe)})}var et=n(Fe,3),Pe=a(et,!0);t(et);var Ae=n(et,2);{var We=ce=>{var de=gs(),me=n(Ze(de),2);{var tt=rt=>{var it=_s(),ct=a(it);t(it),J(()=>T(ct,`+${e(E),l(()=>e(E).additions)??""}`)),b(rt,it)};K(me,rt=>{e(E),l(()=>e(E).additions)&&rt(tt)})}var Ge=n(me,2);{var dt=rt=>{var it=ms(),ct=a(it);t(it),J(()=>T(ct,`−${e(E),l(()=>e(E).deletions)??""}`)),b(rt,it)};K(Ge,rt=>{e(E),l(()=>e(E).deletions)&&rt(dt)})}b(ce,de)};K(Ae,ce=>{e(E),l(()=>e(E).additions||e(E).deletions)&&ce(We)})}t(R);var Ue=n(R,2);{var Ye=ce=>{var de=ys();b(ce,de)},Qe=ht(()=>(e(f),e(E),l(()=>e(f).get(e(E).id)==="busy")));K(Ue,ce=>{e(Qe)&&ce(Ye)})}t(Te),J((ce,de,me,tt,Ge)=>{Ne(Te,"href",`/${e(E),l(()=>e(E).id)??""}/`),I=be(Te,1,"session svelte-1h8243g",null,I,ce),be(he,1,`dot ${de??""}`,"svelte-1h8243g"),T(ne,me),T(Ke,tt),T(Pe,Ge)},[()=>({active:D()===e(E).id,busy:e(f).get(e(E).id)==="busy"}),()=>(e(f),e(E),l(()=>e(f).get(e(E).id)??"offline")),()=>(e(f),e(E),l(()=>e(f).get(e(E).id)??"offline")),()=>(e(E),l(()=>ke(e(E).id))),()=>(e(E),l(()=>ye(e(E).lastActiveAt)))]),N("click",Te,ce=>we(ce,e(E).id)),b(_e,Te)}),J(()=>{T(Me,(e(Q),l(()=>e(Q).label))),T(ae,(e(Q),l(()=>e(Q).rows.length)))}),b(q,U)};K(Ie,q=>{e(Q),l(()=>e(Q).rows.length)&&q(_)})}b(A,fe)});var Re=n(Le,2);{var De=A=>{var Q=xs(),fe=a(Q);t(Q),J(()=>T(fe,`no sessions on ${Y()??"this agent"??""} yet`)),b(A,Q)};K(Re,A=>{e(g),l(()=>e(g).length===0)&&A(De)})}t(ue),b(j,ue),Je(),y()}var Ss=$('<span class="host mono svelte-wmno67"> </span>'),zs=$('<button class="collapse svelte-wmno67" title="收起面板" aria-label="收起面板"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 18l-6-6 6-6"></path></svg></button>'),As=$('<span class="check svelte-wmno67">✓</span>'),qs=$('<button><span class="row-tile svelte-wmno67"> </span> <span class="row-info svelte-wmno67"><span class="row-name mono svelte-wmno67"> </span> <span class="row-host mono svelte-wmno67"> </span></span> <span><span class="sr-only svelte-wmno67"> </span></span> <!></button>'),Cs=$("<button></button>"),Ts=$('<div class="picker svelte-wmno67" role="dialog" aria-label="Agent 选择"><div class="picker-list svelte-wmno67"></div> <div class="picker-footer svelte-wmno67"><div class="theme-row svelte-wmno67"><span class="theme-label mono svelte-wmno67"> </span> <div class="swatches svelte-wmno67"><!> <button>auto</button></div></div></div></div>'),Es=$('<button><span class="switch-tile svelte-wmno67"> </span> <span><span class="sr-only svelte-wmno67"> </span></span> <span class="switch-name mono svelte-wmno67"> </span> <span class="switch-count mono svelte-wmno67"> </span></button>'),Ls=$('<div class="agents-label svelte-wmno67">Agents</div> <div class="switcher-row svelte-wmno67"></div>',1),Ms=$('<button class="mobile-search svelte-wmno67"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="7"></circle><path d="M21 21l-4.3-4.3"></path></svg> <span>搜索会话与命令</span></button>'),js=$('<div><div class="panel svelte-wmno67"><div class="header svelte-wmno67"><button class="agent-pill svelte-wmno67" aria-haspopup="true"><span class="glyph-tile svelte-wmno67"> </span> <span><span class="sr-only svelte-wmno67"> </span></span> <span class="name mono svelte-wmno67"> </span> <!> <span class="caret svelte-wmno67" aria-hidden="true"><!></span></button> <!> <!></div> <!> <!> <div class="list svelte-wmno67"><!></div> <div class="footer mono svelte-wmno67"><span> </span> <span class="sep svelte-wmno67">·</span> <span> </span></div></div></div>');function Os(j,v){Ve(v,!1);const p=()=>qe(Nt,"$backends",C),z=()=>qe(vt,"$sessionList",C),B=()=>qe(Lt,"$connection",C),i=()=>qe(ma,"$accentOverrides",C),[C,w]=lt(),y=u(),f=u(),x=u(),g=u(),M=u(),k=u(),O=u(),L=u();let D=Ee(v,"activeId",8,void 0),X=Ee(v,"drawer",8,!1),te=u(!1);function Y(I){const Z=I.split(/[\s\-_:./]+/).filter(Boolean);return Z.length>=2?(Z[0][0]+Z[1][0]).toUpperCase():I.slice(0,2).toUpperCase()}function S(I){return Y((I==null?void 0:I.name)||(I==null?void 0:I.id)||"OC")}function G(I){return I==="online"||I==="connected"?"online":I==="connecting"||I==="reconnecting"?"connecting":I==="offline"?"offline":"online"}async function P(I){s(te,!1),await Dt(I)}function H(){s(te,!e(te))}async function ve(I){await Dt(I)}function ye(I){I.key==="Escape"&&s(te,!1)}const ke=24*60*60*1e3;function le(I,Z){return Z==="connected"&&Date.now()-I<ke}function we(I,Z){return kt(Z)}W(()=>p(),()=>{var I,Z,he;s(y,((I=p())==null?void 0:I.activeId)??((he=(Z=p())==null?void 0:Z.backends[0])==null?void 0:he.id)??"opencode")}),W(()=>(p(),e(y)),()=>{var I;s(f,(I=p())==null?void 0:I.backends.find(Z=>Z.id===e(y)))}),W(()=>p(),()=>{var I;s(x,((I=p())==null?void 0:I.backends)??[])}),W(()=>(p(),z()),()=>{var I;s(g,Object.fromEntries((((I=p())==null?void 0:I.backends)??[]).map(Z=>[Z.id,z().filter(he=>he.backendId===Z.id||!he.backendId&&Z.id==="opencode").length])))}),W(()=>(z(),e(y),B()),()=>{s(M,z().filter(I=>(I.backendId===e(y)||!I.backendId&&e(y)==="opencode")&&le(I.lastActiveAt,B())).length)}),W(()=>(z(),e(y)),()=>{s(k,z().filter(I=>(I.backendId===e(y)||!I.backendId&&e(y)==="opencode")&&(I.additions||I.deletions)).length)}),W(()=>(i(),e(y)),()=>{s(O,we(i(),e(y)))}),W(()=>(e(x),i()),()=>{s(L,Object.fromEntries(e(x).map(I=>[I.id,we(i(),I.id)])))}),nt(),He();var h=js();N("keydown",Tt,ye);let c;var o=a(h),d=a(o),r=a(d),m=a(r),ee=a(m,!0);t(m);var oe=n(m,2),ge=a(oe),Se=a(ge,!0);t(ge),t(oe);var se=n(oe,2),ue=a(se,!0);t(se);var Le=n(se,2);{var Re=I=>{var Z=Ss(),he=a(Z,!0);t(Z),J(()=>T(he,(e(f),l(()=>e(f).host)))),b(I,Z)};K(Le,I=>{e(f),l(()=>{var Z;return(Z=e(f))==null?void 0:Z.host})&&I(Re)})}var De=n(Le,2),A=a(De);wt(A,{name:"caret-down",size:11}),t(De),t(r);var Q=n(r,2);{var fe=I=>{var Z=zs();N("click",Z,()=>Vt.set(!1)),b(I,Z)};K(Q,I=>{X()||I(fe)})}var Ie=n(Q,2);{var _=I=>{var Z=Ts(),he=a(Z);st(he,5,()=>e(x),Fe=>Fe.id,(Fe,xe)=>{const Be=mt(()=>(e(L),e(xe),re(kt),l(()=>e(L)[e(xe).id]??kt(e(xe).id)))),et=mt(()=>(e(xe),e(y),l(()=>e(xe).id===e(y))));var Pe=qs();let Ae;var We=a(Pe),Ue=a(We,!0);t(We);var Ye=n(We,2),Qe=a(Ye),ce=a(Qe,!0);t(Qe);var de=n(Qe,2),me=a(de);t(de),t(Ye);var tt=n(Ye,2),Ge=a(tt),dt=a(Ge,!0);t(Ge),t(tt);var rt=n(tt,2);{var it=ct=>{var ft=As();b(ct,ft)};K(rt,ct=>{e(et)&&ct(it)})}t(Pe),J((ct,ft,Mt)=>{Ae=be(Pe,1,"agent-row svelte-wmno67",null,Ae,{selected:e(et)}),ot(We,`background:${re(gt),re(e(Be)),l(()=>gt[e(Be)])??""}; color:${re(at),re(e(Be)),l(()=>at[e(Be)])??""}; border-color:${re(yt),re(e(Be)),l(()=>yt[e(Be)])??""}`),T(Ue,ct),T(ce,(e(xe),l(()=>e(xe).name??e(xe).id))),T(me,`${e(xe),l(()=>e(xe).host??"local")??""} · ${e(g),e(xe),l(()=>e(g)[e(xe).id]??0)??""} ses`),be(tt,1,`status-dot ${ft??""}`,"svelte-wmno67"),ot(tt,`--dot:${re(at),re(e(Be)),l(()=>at[e(Be)])??""}`),T(dt,Mt)},[()=>(e(xe),l(()=>S(e(xe)))),()=>(e(xe),l(()=>G(e(xe).status))),()=>(e(xe),l(()=>G(e(xe).status)))]),N("click",Pe,()=>P(e(xe).id)),b(Fe,Pe)}),t(he);var ze=n(he,2),ne=a(ze),ie=a(ne),Oe=a(ie);t(ie);var je=n(ie,2),R=a(je);st(R,1,()=>Bt,Jt,(Fe,xe)=>{var Be=Cs();let et;J(()=>{et=be(Be,1,"swatch svelte-wmno67",null,et,{active:e(O)===e(xe)}),Ne(Be,"aria-label",`设置 ${e(xe)??""} 主题`),ot(Be,`background:${re(at),e(xe),l(()=>at[e(xe)])??""}`)}),N("click",Be,()=>Ut(e(y),e(xe))),b(Fe,Be)});var Xe=n(R,2);let Ke;t(je),t(ne),t(ze),t(Z),J(Fe=>{T(Oe,`Theme · ${e(f),l(()=>{var xe,Be;return((xe=e(f))==null?void 0:xe.name)??((Be=e(f))==null?void 0:Be.id)??"Agent"})??""}`),Ke=be(Xe,1,"auto svelte-wmno67",null,Ke,Fe)},[()=>({active:e(O)===ga(e(y))})]),N("click",Xe,()=>Ut(e(y),null)),b(I,Z)};K(Ie,I=>{e(te)&&I(_)})}t(d);var q=n(d,2);{var U=I=>{var Z=Ls(),he=n(Ze(Z),2);st(he,5,()=>e(x),ze=>ze.id,(ze,ne)=>{const ie=mt(()=>(e(L),e(ne),re(kt),l(()=>e(L)[e(ne).id]??kt(e(ne).id))));var Oe=Es();let je;var R=a(Oe),Xe=a(R,!0);t(R);var Ke=n(R,2),Fe=a(Ke),xe=a(Fe,!0);t(Fe),t(Ke);var Be=n(Ke,2),et=a(Be,!0);t(Be);var Pe=n(Be,2),Ae=a(Pe,!0);t(Pe),t(Oe),J((We,Ue,Ye)=>{je=be(Oe,1,"switch-pill svelte-wmno67",null,je,{active:e(ne).id===e(y)}),ot(R,`background:${re(gt),re(e(ie)),l(()=>gt[e(ie)])??""}; color:${re(at),re(e(ie)),l(()=>at[e(ie)])??""}; border-color:${re(yt),re(e(ie)),l(()=>yt[e(ie)])??""}`),T(Xe,We),be(Ke,1,`status-dot ${Ue??""}`,"svelte-wmno67"),ot(Ke,`--dot:${re(at),re(e(ie)),l(()=>at[e(ie)])??""}`),T(xe,Ye),T(et,(e(ne),l(()=>e(ne).name??e(ne).id))),T(Ae,(e(g),e(ne),l(()=>e(g)[e(ne).id]??0)))},[()=>(e(ne),l(()=>S(e(ne)))),()=>(e(ne),l(()=>G(e(ne).status))),()=>(e(ne),l(()=>G(e(ne).status)))]),N("click",Oe,()=>ve(e(ne).id)),b(ze,Oe)}),t(he),b(I,Z)};K(q,I=>{re(X()),e(x),l(()=>X()&&e(x).length>1)&&I(U)})}var pe=n(q,2);{var Ce=I=>{var Z=Ms();N("click",Z,()=>St.set(!0)),b(I,Z)};K(pe,I=>{X()&&I(Ce)})}var Me=n(pe,2),F=a(Me);{let I=mt(()=>(e(f),l(()=>{var Z,he;return((Z=e(f))==null?void 0:Z.name)??((he=e(f))==null?void 0:he.id)})));Is(F,{get activeId(){return D()},get agentId(){return e(y)},get agentName(){return e(I)}})}t(Me);var ae=n(Me,2),V=a(ae),_e=a(V);t(V);var E=n(V,4),Te=a(E);t(E),t(ae),t(o),t(h),J((I,Z,he)=>{c=be(h,1,"agent-panel svelte-wmno67",null,c,{drawer:X()}),Ne(r,"aria-expanded",e(te)),ot(m,`background:${re(gt),e(O),l(()=>gt[e(O)])??""}; color:${re(at),e(O),l(()=>at[e(O)])??""}; border-color:${re(yt),e(O),l(()=>yt[e(O)])??""}`),T(ee,I),be(oe,1,`status-dot ${Z??""}`,"svelte-wmno67"),ot(oe,`--dot:${re(at),e(O),l(()=>at[e(O)])??""}`),T(Se,he),T(ue,(e(f),l(()=>{var ze,ne;return((ze=e(f))==null?void 0:ze.name)??((ne=e(f))==null?void 0:ne.id)??"Agent"}))),T(_e,`${e(M)??""} 活跃`),T(Te,`${e(k)??""} 已推送`)},[()=>(e(f),l(()=>S(e(f)))),()=>(e(f),l(()=>{var I;return G((I=e(f))==null?void 0:I.status)})),()=>(e(f),l(()=>{var I;return G((I=e(f))==null?void 0:I.status)}))]),N("click",r,H),b(j,h),Je(),w()}var Bs=$('<span class="meta svelte-1h1y2gb"> </span>'),Ds=$('<div class="bar svelte-1h1y2gb"><div class="fill svelte-1h1y2gb"></div></div>'),Ps=$('<button type="button"><span class="box svelte-1h1y2gb"><span class="dot svelte-1h1y2gb"></span> <span class="check svelte-1h1y2gb">✓</span></span> <span class="tx svelte-1h1y2gb"> </span></button>'),Ns=$('<div class="section-label svelte-1h1y2gb">暂无任务</div>'),Rs=$('<div class="task svelte-1h1y2gb"><div class="hd svelte-1h1y2gb"><span class="section-label svelte-1h1y2gb">任务</span> <!></div> <!> <div class="items svelte-1h1y2gb"><!> <!></div></div>');function Ws(j,v){Ve(v,!1);const p=u(),z=u(),B=u();let i=Ee(v,"sessionId",8,void 0),C=Ee(v,"tick",8,0),w=u({total:0,done:0,items:[]}),y=u(new Set),f;async function x(P){if(!P){s(w,{total:0,done:0,items:[]}),s(y,new Set);return}P!==f&&(f=P,s(y,new Set));try{const H=await $e.todo(P);if(P!==i())return;s(w,Ra(H))}catch{}}function g(P){e(y).has(P)?e(y).delete(P):e(y).add(P),s(y,e(y))}W(()=>(re(i()),re(C())),()=>{x(i()),C()}),W(()=>(e(w),e(y)),()=>{s(p,e(w).items.map((P,H)=>({...P,status:e(y).has(H)?P.status==="done"?"pending":"done":P.status})))}),W(()=>e(p),()=>{s(z,e(p).filter(P=>P.status==="done").length)}),W(()=>(e(w),e(z)),()=>{s(B,e(w).total?Math.round(e(z)/e(w).total*100):0)}),nt(),He();var M=Rs(),k=a(M),O=n(a(k),2);{var L=P=>{var H=Bs(),ve=a(H);t(H),J(()=>T(ve,`${e(z)??""}/${e(w),l(()=>e(w).total)??""}`)),b(P,H)};K(O,P=>{e(w),l(()=>e(w).total)&&P(L)})}t(k);var D=n(k,2);{var X=P=>{var H=Ds(),ve=a(H);t(H),J(()=>ot(ve,`transform:scaleX(${e(B)/100})`)),b(P,H)};K(D,P=>{e(w),l(()=>e(w).total)&&P(X)})}var te=n(D,2),Y=a(te);st(Y,3,()=>e(p),(P,H)=>P.text+"-"+H,(P,H,ve)=>{var ye=Ps(),ke=n(a(ye),2),le=a(ke,!0);t(ke),t(ye),J(()=>{be(ye,1,`row ${e(H),l(()=>e(H).status)??""}`,"svelte-1h1y2gb"),T(le,(e(H),l(()=>e(H).text)))}),N("click",ye,()=>g(e(ve))),b(P,ye)});var S=n(Y,2);{var G=P=>{var H=Ns();b(P,H)};K(S,P=>{e(w),l(()=>e(w).total===0)&&P(G)})}t(te),t(M),b(j,M),Je()}var Ks=$('<div><span class="dot svelte-ehf8ic" aria-hidden="true"></span><span> </span><span class="sr-only svelte-ehf8ic"> </span></div>'),Fs=$('<div class="label">未配置</div>'),Us=$('<div class="mcp svelte-ehf8ic"><div class="label">MCP</div> <div class="list svelte-ehf8ic"><!> <!></div></div>');function Gs(j,v){Ve(v,!1);let p=Ee(v,"tick",8,0),z=u([]);async function B(){try{s(z,await $e.mcp())}catch{}}W(()=>re(p()),()=>{B(),p()}),nt(),He();var i=Us(),C=n(a(i),2),w=a(C);st(w,1,()=>e(z),Jt,(x,g)=>{var M=Ks();let k;var O=n(a(M)),L=a(O,!0);t(O);var D=n(O),X=a(D,!0);t(D),t(M),J(()=>{k=be(M,1,"row svelte-ehf8ic",null,k,{off:e(g).status==="disabled"}),T(L,(e(g),l(()=>e(g).name))),T(X,(e(g),l(()=>e(g).status)))}),b(x,M)});var y=n(w,2);{var f=x=>{var g=Fs();b(x,g)};K(y,x=>{e(z),l(()=>e(z).length===0)&&x(f)})}t(C),t(i),b(j,i),Je()}var Hs=$('<div><button><span class="dot svelte-pijcyq" aria-hidden="true"></span></button> <div class="txt svelte-pijcyq"><div class="prompt svelte-pijcyq"> </div> <div class="spec mono svelte-pijcyq"> </div></div> <button> </button></div>'),Vs=$('<div class="label svelte-pijcyq">暂无</div>'),Js=$('<div class="err svelte-pijcyq"> </div>'),Xs=$('<div class="form svelte-pijcyq"><textarea class="prompt-in svelte-pijcyq" rows="2" placeholder="让 agent 做什么?"></textarea> <div class="kind svelte-pijcyq"><label><input type="radio" class="svelte-pijcyq"/> 每 <input class="num svelte-pijcyq" type="number" min="1" max="10080"/> 分钟</label> <label><input type="radio" class="svelte-pijcyq"/> 每天 <input class="time svelte-pijcyq" type="time"/></label></div> <!> <button class="go svelte-pijcyq">创建</button></div>'),Ys=$('<div class="schedules svelte-pijcyq"><div class="hd svelte-pijcyq"><div class="label svelte-pijcyq">定时任务</div> <button class="add svelte-pijcyq"> </button></div> <div class="list svelte-pijcyq"><!> <!></div> <!></div>');function Qs(j,v){Ve(v,!1);const p=[];let z=Ee(v,"tick",8,0),B=u([]),i=u(!1),C=u(""),w=u("every"),y=u(30),f=u("09:00"),x=u(""),g=u(),M;async function k(){try{s(B,(await $e.schedules()).schedules??[])}catch{}}function O(h){return h.kind==="every"?h.minutes>=60&&h.minutes%60===0?`every ${h.minutes/60}h`:`every ${h.minutes}m`:`daily ${h.time}`}function L(h){return h.name||h.prompt}async function D(){if(!e(C).trim())return;s(x,"");const h=e(w)==="every"?{kind:"every",minutes:Math.max(1,Math.round(e(y)))}:{kind:"daily",time:e(f)};try{const c=await $e.addSchedule({prompt:e(C).trim(),spec:h});if(c.error){s(x,c.error);return}s(C,""),s(i,!1),await k()}catch(c){s(x,c.message)}}async function X(h){s(B,e(B).map(c=>c.id===h.id?{...c,enabled:!c.enabled}:c));try{await $e.setScheduleEnabled(h.id,!h.enabled),await k()}catch{await k()}}async function te(h){if(e(g)!==h){s(g,h),clearTimeout(M),M=setTimeout(()=>s(g,void 0),3e3);return}clearTimeout(M),s(g,void 0);try{await $e.deleteSchedule(h),await k()}catch{}}W(()=>re(z()),()=>{k(),z()}),nt(),He();var Y=Ys(),S=a(Y),G=n(a(S),2),P=a(G,!0);t(G),t(S);var H=n(S,2),ve=a(H);st(ve,1,()=>e(B),h=>h.id,(h,c)=>{var o=Hs();let d;var r=a(o);let m;var ee=n(r,2),oe=a(ee),ge=a(oe,!0);t(oe);var Se=n(oe,2),se=a(Se,!0);t(Se),t(ee);var ue=n(ee,2);let Le;var Re=a(ue,!0);t(ue),t(o),J((De,A,Q,fe)=>{d=be(o,1,"row svelte-pijcyq",null,d,{off:!e(c).enabled}),m=be(r,1,"switch svelte-pijcyq",null,m,{on:e(c).enabled}),Ne(r,"aria-pressed",(e(c),l(()=>e(c).enabled))),Ne(r,"aria-label",De),T(ge,A),T(se,Q),Le=be(ue,1,"del svelte-pijcyq",null,Le,{arm:e(g)===e(c).id}),Ne(ue,"aria-label",`删除 ${fe??""}`),T(Re,(e(g),e(c),l(()=>e(g)===e(c).id?"确认?":"✕")))},[()=>(e(c),l(()=>`${e(c).enabled?"停用":"启用"} ${L(e(c))}`)),()=>(e(c),l(()=>L(e(c)))),()=>(e(c),l(()=>O(e(c).spec))),()=>(e(c),l(()=>L(e(c))))]),N("click",r,()=>X(e(c))),N("click",ue,()=>te(e(c).id)),b(h,o)});var ye=n(ve,2);{var ke=h=>{var c=Vs();b(h,c)};K(ye,h=>{e(B),e(i),l(()=>e(B).length===0&&!e(i))&&h(ke)})}t(H);var le=n(H,2);{var we=h=>{var c=Xs(),o=a(c);ja(o);var d=n(o,2),r=a(d);let m;var ee=a(r);pt(ee),ee.value=ee.__value="every";var oe=n(ee,2);pt(oe),bt(),t(r);var ge=n(r,2);let Se;var se=a(ge);pt(se),se.value=se.__value="daily";var ue=n(se,2);pt(ue),t(ge),t(d);var Le=n(d,2);{var Re=A=>{var Q=Js(),fe=a(Q,!0);t(Q),J(()=>T(fe,e(x))),b(A,Q)};K(Le,A=>{e(x)&&A(Re)})}var De=n(Le,2);t(c),J(A=>{m=be(r,1,"svelte-pijcyq",null,m,{sel:e(w)==="every"}),oe.disabled=e(w)!=="every",Se=be(ge,1,"svelte-pijcyq",null,Se,{sel:e(w)==="daily"}),ue.disabled=e(w)!=="daily",De.disabled=A},[()=>(e(C),l(()=>!e(C).trim()))]),_t(o,()=>e(C),A=>s(C,A)),sa(p,[],ee,()=>e(w),A=>s(w,A)),_t(oe,()=>e(y),A=>s(y,A)),sa(p,[],se,()=>e(w),A=>s(w,A)),_t(ue,()=>e(f),A=>s(f,A)),N("click",De,D),b(h,c)};K(le,h=>{e(i)&&h(we)})}t(Y),J(()=>{Ne(G,"aria-label",e(i)?"取消新建计划":"新建计划"),T(P,e(i)?"×":"+")}),N("click",G,()=>s(i,!e(i))),b(j,Y),Je()}var Zs=$('<div class="row svelte-taxat6"><span class="name svelte-taxat6"> </span></div>'),en=$('<div class="rows svelte-taxat6"></div>'),tn=$('<div class="label svelte-taxat6">none</div>'),an=$('<div class="skills svelte-taxat6"><div class="label svelte-taxat6">Skills</div> <div class="list svelte-taxat6"><!></div></div>');function sn(j,v){Ve(v,!1);let p=Ee(v,"tick",8,0),z=u([]);async function B(){try{s(z,(await $e.skills()).skills??[])}catch{}}W(()=>re(p()),()=>{B(),p()}),nt(),He();var i=an(),C=n(a(i),2),w=a(C);{var y=x=>{var g=en();st(g,5,()=>e(z),M=>M.name,(M,k)=>{var O=Zs(),L=a(O),D=a(L,!0);t(L),t(O),J(()=>{Ne(O,"title",(e(k),l(()=>e(k).description))),T(D,(e(k),l(()=>e(k).name)))}),b(M,O)}),t(g),b(x,g)},f=x=>{var g=tn();b(x,g)};K(w,x=>{e(z),l(()=>e(z).length>0)?x(y):x(f,-1)})}t(C),t(i),b(j,i),Je()}var nn=$('<button class="up svelte-tp0rgj" aria-label="上级目录"> </button>'),rn=$('<span class="mono"> </span>'),ln=$('<button class="row svelte-tp0rgj"><span class="ico svelte-tp0rgj"> </span> <span class="name svelte-tp0rgj"> </span></button>'),on=$('<div class="label svelte-tp0rgj">empty</div>'),cn=$('<div class="label svelte-tp0rgj">…</div>'),vn=$('<div class="preview-scrim svelte-tp0rgj" role="button" tabindex="0"><div class="preview svelte-tp0rgj" role="dialog" aria-label="File preview" tabindex="-1"><div class="p-hd svelte-tp0rgj"><span class="mono"> </span> <button class="p-close svelte-tp0rgj" aria-label="关闭预览">✕</button></div> <pre> </pre></div></div>'),dn=$('<div class="files svelte-tp0rgj"><div class="label svelte-tp0rgj">Files</div> <div class="crumb mono svelte-tp0rgj"><!></div> <div class="list svelte-tp0rgj"><!> <!> <!></div> <!></div>');function un(j,v){Ve(v,!1);const p=()=>qe(vt,"$sessionList",z),[z,B]=lt(),i=u();let C=Ee(v,"sessionId",8,void 0),w=Ee(v,"tick",8,0),y=u([]),f=u("."),x=u(null),g=u(!1),M=u(!1);async function k(){if(e(i)){s(M,!0);try{s(y,(await $e.browse(e(i),e(f))).files??[])}catch{s(y,[])}finally{s(M,!1)}}}function O(){const c=e(f).replace(/(^|\/)[^/]+\/?$/,"")||".";s(f,c),k()}async function L(c){if(c.type==="directory"){s(f,c.path),await k();return}try{const o=await $e.fileContent(e(i),c.path);if(o.type!=="text"){s(x,{path:c.path,content:"(二进制文件,无法预览)"}),s(g,!0);return}s(g,!1),s(x,{path:c.path,content:o.content.length>800?o.content.slice(0,800)+`
1
+ import"../chunks/CWj6FrbW.js";import{q as _a,r as He,z as vt,p as qt,f as $e,j as Nt,d as ma,a as gt,b as at,c as yt,e as kt,C as Ut,A as Bt,n as ga,B as Dt,l as ea,k as ia,m as ya,g as Gt,v as ka,o as wa,E as xa,h as Kt,u as $a,t as Ia,G as Sa,x as ta,D as Ft,F as za,s as Aa}from"../chunks/COhEGSJl.js";import{ai as qa,ag as Ca,a1 as $t,b4 as l,a_ as Ta,aa as Ea,am as La,aE as Ve,ap as W,aO as s,V as re,a8 as e,aq as nt,J as a,aK as t,aU as n,aw as bt,a$ as J,aR as T,a3 as N,w as b,aB as Je,au as u,Z as mt,a6 as $,M as xt,a4 as Ze,b0 as Pt,b8 as Ma,b5 as ht,$ as Tt,aI as ja,ay as ca,Q as Oa,b1 as Ba,az as va,av as aa,a9 as At}from"../chunks/BjY4dxcB.js";import{i as K,a as qe,s as lt}from"../chunks/DIEDQ_hk.js";import{m as da,g as Lt,I as wt,v as be,u as Ne,r as It,d as Ht,B as Da,A as Pa,h as st,a as Na,t as pt,c as _t,w as ot,n as Vt,k as Jt,q as St,z as Ra,b as sa,p as ua,o as zt,C as Wa,y as Ka,j as Fa,l as jt,i as na}from"../chunks/CEn8-WG3.js";import{p as Ee,b as Rt}from"../chunks/C2FuqD3s.js";import{g as Xt,a as Ua}from"../chunks/9FNwjwpR.js";function Ga(j,v,p,z,B){var w;qa&&Ca();var i=(w=v.$$slots)==null?void 0:w[p],C=!1;i===!0&&(i=v.children,C=!0),i===void 0||i(j,C?()=>z:z)}function Yt(j,v,p){$t(()=>{var z=l(()=>v(j,p==null?void 0:p())||{});if(z!=null&&z.destroy)return()=>z.destroy()})}function Ha(j,v,p){var z=Ea(j,v);z&&z.set&&(j[v]=p,Ta(()=>{j[v]=null}))}function Va(j,v){var i;var p=(i=j.$$events)==null?void 0:i[v.type],z=La(p)?p.slice():p==null?[]:[p];for(var B of z)B.call(this,v)}const Ja=!1,Xa=!1,Ya="always",Rr=Object.freeze(Object.defineProperty({__proto__:null,prerender:Xa,ssr:Ja,trailingSlash:Ya},Symbol.toStringTag,{value:"Module"})),ra=[2e3,4e3,8e3,16e3,3e4];function Qa(j){const v=_a();if(!v)return j;const p=j.includes("?")?"&":"?";return`${j}${p}token=${encodeURIComponent(v)}`}function Za(j){let v=null,p=0,z=null,B=null,i=null,C=0,w=!1,y=!1;const f=[];function x(L){var D;Lt.set(L),(D=j.onStatus)==null||D.call(j,L)}function g(){z&&(clearTimeout(z),z=null),B&&(clearTimeout(B),B=null),i&&(clearTimeout(i),i=null)}function M(){B=setTimeout(()=>{(v==null?void 0:v.readyState)===WebSocket.OPEN&&(C=performance.now(),v.send(JSON.stringify({type:"ping"})),i=setTimeout(()=>{v==null||v.close(),O()},45e3))},25e3)}function k(){if(!w){x("reconnecting");try{v=new WebSocket(Qa(j.url))}catch{O();return}v.onopen=()=>{var L;p=0,x("connected");for(const D of f.splice(0))v==null||v.send(D);y&&((L=j.onReconnect)==null||L.call(j)),y=!0,M()},v.onmessage=L=>{var D;try{const X=JSON.parse(L.data);if(X.type==="pong"){i&&(clearTimeout(i),i=null),C&&da.set(Math.round(performance.now()-C)),M();return}(D=j.onMessage)==null||D.call(j,X)}catch{}},v.onclose=()=>{g(),w||O()},v.onerror=()=>{v==null||v.close()}}}function O(){if(g(),w)return;x("reconnecting");const L=ra[Math.min(p,ra.length-1)];p+=1,z=setTimeout(()=>void k(),L)}return k(),{send(L){const D=JSON.stringify(L);(v==null?void 0:v.readyState)===WebSocket.OPEN?v.send(D):f.push(D)},close(){w=!0,g(),f.length=0,v==null||v.close(),v=null,x("offline")}}}let la=new Map;const Ct=new Set;let pa,Et,Ot=!1;function Qt(){if(typeof document>"u")return;const j=document.title.replace(/^(🔔 [\d]+ 新动态 — )/,"")||"ocrc";if(Ct.size===0){Et&&(clearInterval(Et),Et=void 0),Ot=!1,document.title=j;return}Et||(document.title=`🔔 ${Ct.size} 新动态 — ${j}`,Et=setInterval(()=>{Ot=!Ot,document.title=Ot?`🔔 ${Ct.size} 新动态 — ${j}`:j},1200))}function es(j){pa=j,j&&(Ct.delete(j),Qt())}function ts(j){for(const v of j){const p=la.get(v.id);la.set(v.id,v.lastActiveAt),!(p===void 0||v.id===pa)&&v.lastActiveAt>p+1500&&(Ct.add(v.id),Qt())}}typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&(Ct.clear(),Qt())});var as=$('<span class="dot-ring svelte-hhath1"></span>'),ss=$('<span class="connection-latency mono svelte-hhath1"> </span>'),ns=$('<button class="install svelte-hhath1">Install</button>'),rs=$('<header class="titlebar svelte-hhath1"><button aria-label="Sessions"><!></button> <div class="brand svelte-hhath1" title="ocrc"><svg class="brand-mark svelte-hhath1" viewBox="0 0 64 64" fill="none" stroke-width="8" stroke-linecap="round" aria-hidden="true"><path d="M46 15 A24 24 0 1 0 54 32" stroke="var(--text)"></path><circle cx="49" cy="20" r="6" fill="var(--accent)" stroke="none"></circle></svg> <span class="wordmark svelte-hhath1"><b class="svelte-hhath1">ocrc</b></span></div> <button class="new-session svelte-hhath1" title="新建会话、命令面板…"><span class="new-icon svelte-hhath1" aria-hidden="true">+</span> <span class="new-label svelte-hhath1">新建</span> <span class="new-caret svelte-hhath1" aria-hidden="true"><!></span></button> <button class="palette-trigger svelte-hhath1" title="搜索会话与命令 (⌘K)"><span class="palette-icon svelte-hhath1" aria-hidden="true"><!></span> <span class="palette-label svelte-hhath1">搜索会话与命令…</span> <kbd class="palette-keycap mono svelte-hhath1">⌘K</kbd></button> <span class="spacer svelte-hhath1"></span> <button class="themebtn svelte-hhath1" title="机器人与通道" aria-label="机器人与通道"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="10" rx="2"></rect><circle cx="12" cy="5" r="2"></circle><path d="M12 7v4"></path><path d="M8 16h0M16 16h0"></path></svg></button> <button class="themebtn svelte-hhath1" aria-label="Toggle color theme"><!></button> <span><span class="dot-wrap svelte-hhath1" aria-hidden="true"><span class="dot svelte-hhath1"></span> <!></span> <span class="connection-state svelte-hhath1"> </span> <!></span> <!> <button aria-label="Inspector"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="7" x2="20" y2="7"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="17" x2="14" y2="17"></line></svg></button> <div class="user svelte-hhath1"><span class="user-email mono svelte-hhath1"> </span> <span class="avatar mono svelte-hhath1" aria-hidden="true"> </span></div></header>');function ls(j,v){Ve(v,!1);const p=()=>qe(Pa,"$theme",i),z=()=>qe(Lt,"$connection",i),B=()=>qe(da,"$latency",i),[i,C]=lt(),w=u(),y=u();let f=Ee(v,"email",8,""),x=Ee(v,"onPalette",8),g=Ee(v,"installEvent",8,null),M=Ee(v,"onInstall",8,()=>{}),k=Ee(v,"drawerLeft",8,!1),O=Ee(v,"drawerRight",8,!1),L=Ee(v,"onToggleLeft",8,()=>{}),D=Ee(v,"onToggleRight",8,()=>{}),X=Ee(v,"newButtonAnchor",12,null);function te(q){return q==="connected"?"live":q==="reconnecting"?"reconnecting":"offline"}W(()=>re(f()),()=>{s(w,f()||"you@local")}),W(()=>e(w),()=>{s(y,e(w).charAt(0).toUpperCase())}),nt(),He();var Y=rs(),S=a(Y);let G;var P=a(S);wt(P,{name:"menu",size:18}),t(S);var H=n(S,4),ve=n(a(H),4),ye=a(ve);wt(ye,{name:"caret-down",size:9}),t(ve),t(H),Rt(H,q=>X(q),()=>X());var ke=n(H,2),le=a(ke),we=a(le);wt(we,{name:"search",size:14}),t(le),bt(4),t(ke);var h=n(ke,4),c=n(h,2),o=a(c);{let q=mt(()=>p()==="light"?"moon":"sun");wt(o,{get name(){return e(q)},size:15})}t(c);var d=n(c,2),r=a(d),m=n(a(r),2);{var ee=q=>{var U=as();b(q,U)};K(m,q=>{z()==="connected"&&q(ee)})}t(r);var oe=n(r,2),ge=a(oe,!0);t(oe);var Se=n(oe,2);{var se=q=>{var U=ss(),pe=a(U);t(U),J(()=>T(pe,`${B()??""}ms`)),b(q,U)};K(Se,q=>{z()==="connected"&&q(se)})}t(d);var ue=n(d,2);{var Le=q=>{var U=ns();N("click",U,function(...pe){var Ce;(Ce=M())==null||Ce.apply(this,pe)}),b(q,U)};K(ue,q=>{g()&&q(Le)})}var Re=n(ue,2);let De;var A=n(Re,2),Q=a(A),fe=a(Q,!0);t(Q);var Ie=n(Q,2),_=a(Ie,!0);t(Ie),t(A),t(Y),J((q,U)=>{G=be(S,1,"iconbtn svelte-hhath1",null,G,{active:k()}),Ne(c,"title",p()==="light"?"Switch to dark":"Switch to light"),be(d,1,`connection-pill ${z()??""}`,"svelte-hhath1"),Ne(d,"title",`WebSocket: ${q??""}`),T(ge,U),De=be(Re,1,"iconbtn svelte-hhath1",null,De,{active:O()}),T(fe,e(w)),T(_,e(y))},[()=>(z(),l(()=>te(z()))),()=>(z(),l(()=>te(z())))]),N("click",S,function(...q){var U;(U=L())==null||U.apply(this,q)}),N("click",H,()=>It.update(q=>!q)),N("click",ke,function(...q){var U;(U=x())==null||U.apply(this,q)}),N("click",h,()=>Ht.set(!0)),N("click",c,function(...q){var U;(U=Da)==null||U.apply(this,q)}),N("click",Re,function(...q){var U;(U=D())==null||U.apply(this,q)}),b(j,Y),Je(),C()}var os=$('<div role="status"><!></div>');function is(j){const v=()=>qe(Lt,"$connection",p),[p,z]=lt();var B=xt(),i=Ze(B);{var C=w=>{var y=os();let f;var x=a(y);{var g=k=>{var O=Pt("Reconnecting…");b(k,O)},M=k=>{var O=Pt("Offline — live updates paused");b(k,O)};K(x,k=>{v()==="reconnecting"?k(g):k(M,-1)})}t(y),J(()=>f=be(y,1,"banner svelte-l46k7l",null,f,{offline:v()==="offline"})),b(w,y)};K(i,w=>{v()!=="connected"&&w(C)})}b(j,B),z()}const fa="ocrc.pinnedSessions";function cs(){if(typeof localStorage>"u")return[];try{const j=localStorage.getItem(fa),v=j?JSON.parse(j):[];return Array.isArray(v)?v.filter(p=>typeof p=="string"):[]}catch{return[]}}function vs(j){if(!(typeof localStorage>"u"))try{localStorage.setItem(fa,JSON.stringify(j))}catch{}}function ds(){const{subscribe:j,update:v}=Ma(cs());return{subscribe:j,toggle(p){v(z=>{const B=z.includes(p)?z.filter(i=>i!==p):[...z,p];return vs(B),B})}}}const oa=ds();function us(j,v){return v?j.filter(p=>(p.directory??"")===v):j}var ps=$('<input class="rename-input svelte-1h8243g" placeholder="Session title" aria-label="Session title"/>'),fs=$('<span class="pin-dot svelte-1h8243g" aria-label="已钉住">●</span>'),hs=$('<span class="title svelte-1h8243g"> </span> <!> <span class="actions svelte-1h8243g"><button class="act rename svelte-1h8243g" title="重命名会话" aria-label="重命名会话"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"></path><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z"></path></svg></button> <button aria-label="钉住会话"><svg width="13" height="13" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 4h6l-1 6 3 3v2H7v-2l3-3-1-6z"></path><line x1="12" y1="15" x2="12" y2="21"></line></svg></button> <button class="act trash svelte-1h8243g" title="删除会话" aria-label="删除会话"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6M10 11v6M14 11v6M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"></path></svg></button></span>',1),bs=$('<span class="sep svelte-1h8243g">·</span><span class="repo svelte-1h8243g"> </span>',1),_s=$('<span class="add svelte-1h8243g"> </span>'),ms=$('<span class="del svelte-1h8243g"> </span>'),gs=$('<span class="sep svelte-1h8243g">·</span> <!> <!>',1),ys=$('<div class="progress svelte-1h8243g" aria-hidden="true"><span class="progress-fill svelte-1h8243g"></span></div>'),ks=$('<a><div class="line1 svelte-1h8243g"><span><span class="sr-only svelte-1h8243g"> </span></span> <!></div> <div class="meta mono svelte-1h8243g"><span class="id svelte-1h8243g"> </span> <!> <span class="sep svelte-1h8243g">·</span><span> </span> <!></div> <!></a>'),ws=$('<div class="group-header mono svelte-1h8243g"><span class="gh-label svelte-1h8243g"> </span> <span class="gh-line svelte-1h8243g" aria-hidden="true"></span> <span class="gh-count svelte-1h8243g"> </span></div> <!>',1),xs=$('<div class="empty mono svelte-1h8243g"> </div>'),$s=$('<div class="sidebar svelte-1h8243g"><!> <!></div>');function Is(j,v){Ve(v,!1);const p=()=>qe(vt,"$sessionList",w),z=()=>qe(qt,"$feeds",w),B=()=>qe(Lt,"$connection",w),i=()=>qe(Na,"$activeWorkspace",w),C=()=>qe(oa,"$pinnedSessions",w),[w,y]=lt(),f=u(),x=u(),g=u(),M=u(),k=u(),O=u(),L=u();let D=Ee(v,"activeId",8,void 0),X=Ee(v,"onSelect",8,void 0),te=Ee(v,"agentId",8,void 0),Y=Ee(v,"agentName",8,void 0);const S=24*60*60*1e3;function G(A,Q){return Q==="connected"&&Date.now()-A<S}function P(A,Q){const fe=Q[A];if(!fe||fe.order.length===0)return!1;const Ie=fe.byId[fe.order[fe.order.length-1]];return(Ie==null?void 0:Ie.kind)==="thinking"||(Ie==null?void 0:Ie.kind)==="streaming"||(Ie==null?void 0:Ie.kind)==="think-stream"}function H(A,Q){const fe=Q[A];if(!fe||fe.order.length===0)return!1;const Ie=fe.byId[fe.order[fe.order.length-1]];return(Ie==null?void 0:Ie.kind)==="approval"}function ve(A,Q,fe){return P(A.id,Q)?"busy":H(A.id,Q)?"wait":G(A.lastActiveAt,fe)?"idle":"offline"}function ye(A){const Q=Date.now()-A,fe=Math.floor(Q/6e4);if(fe<1)return"now";if(fe<60)return`${fe}m`;const Ie=Math.floor(fe/60);return Ie<24?`${Ie}h`:`${Math.floor(Ie/24)}d`}function ke(A){return(A.includes("_")?A.slice(A.indexOf("_")+1):A).slice(-8)}function le(A){if(!A)return"";const Q=A.replace(/\/+$/,"").split("/");return Q[Q.length-1]||""}function we(A,Q){X()&&(A.preventDefault(),X()(Q))}function h(A,Q){A.preventDefault(),A.stopPropagation(),oa.toggle(Q)}let c=u(null),o=u(""),d=u(null);function r(A,Q){A.preventDefault(),A.stopPropagation(),s(c,Q.id),s(o,Q.title||"")}function m(){s(c,null),s(o,"")}async function ee(A){const Q=e(o).trim();if(!Q||e(d)){m();return}s(d,A);try{await $e.renameSession(A,Q),vt.set(await $e.sessions())}catch(fe){alert(`重命名失败:${fe.message}`)}finally{s(d,null),s(c,null),s(o,"")}}function oe(A,Q){A.key==="Enter"?(A.preventDefault(),ee(Q)):A.key==="Escape"&&(A.preventDefault(),m())}function ge(A){A.focus(),A.select()}let Se=u(null);async function se(A,Q){if(A.preventDefault(),A.stopPropagation(),!e(Se)&&confirm("Delete this session? This cannot be undone.")){s(Se,Q);try{await $e.deleteSession(Q),vt.set(await $e.sessions()),D()===Q&&Xt("/")}catch(fe){alert(`删除失败:${fe.message}`)}finally{s(Se,null)}}}W(()=>(p(),z(),B()),()=>{s(f,new Map(p().map(A=>[A.id,ve(A,z(),B())])))}),W(()=>(re(te()),p()),()=>{s(x,te()?p().filter(A=>A.backendId===te()||!A.backendId&&te()==="opencode"):p())}),W(()=>(e(x),i()),()=>{s(g,us(e(x),i()))}),W(()=>e(g),()=>{s(M,[...e(g)].sort((A,Q)=>Q.lastActiveAt-A.lastActiveAt))}),W(()=>(e(M),C()),()=>{s(k,e(M).filter(A=>C().includes(A.id)))}),W(()=>(e(M),C()),()=>{s(O,e(M).filter(A=>!C().includes(A.id)))}),W(()=>(e(k),e(O)),()=>{s(L,[{key:"pinned",label:"Pinned",rows:e(k)},{key:"recent",label:"Recent",rows:e(O)}])}),nt(),He();var ue=$s(),Le=a(ue);st(Le,1,()=>e(L),A=>A.key,(A,Q)=>{var fe=xt(),Ie=Ze(fe);{var _=q=>{var U=ws(),pe=Ze(U),Ce=a(pe),Me=a(Ce,!0);t(Ce);var F=n(Ce,4),ae=a(F,!0);t(F),t(pe);var V=n(pe,2);st(V,1,()=>(e(Q),l(()=>e(Q).rows)),_e=>_e.id,(_e,E)=>{var Te=ks();let I;var Z=a(Te),he=a(Z),ze=a(he),ne=a(ze,!0);t(ze),t(he);var ie=n(he,2);{var Oe=ce=>{var de=ps();pt(de),$t(()=>_t(de,()=>e(o),me=>s(o,me))),Yt(de,me=>ge==null?void 0:ge(me)),$t(()=>N("click",de,me=>me.preventDefault())),$t(()=>N("keydown",de,me=>oe(me,e(E).id))),$t(()=>N("blur",de,()=>ee(e(E).id))),J(()=>de.disabled=(e(d),e(E),l(()=>e(d)===e(E).id))),b(ce,de)},je=ce=>{var de=hs(),me=Ze(de),tt=a(me,!0);t(me);var Ge=n(me,2);{var dt=ut=>{var Wt=fs();b(ut,Wt)},rt=ht(()=>(C(),e(E),l(()=>C().includes(e(E).id))));K(Ge,ut=>{e(rt)&&ut(dt)})}var it=n(Ge,2),ct=a(it),ft=n(ct,2);let Mt;var ha=a(ft);t(ft);var Zt=n(ft,2);t(it),J((ut,Wt,ba)=>{T(tt,(e(E),l(()=>e(E).title||"Untitled session"))),Mt=be(ft,1,"act pin svelte-1h8243g",null,Mt,ut),Ne(ft,"title",Wt),Ne(ha,"fill",ba),Zt.disabled=(e(Se),e(E),l(()=>e(Se)===e(E).id))},[()=>({on:C().includes(e(E).id)}),()=>(C(),e(E),l(()=>C().includes(e(E).id)?"取消钉住":"钉住")),()=>(C(),e(E),l(()=>C().includes(e(E).id)?"currentColor":"none"))]),N("click",ct,ut=>r(ut,e(E))),N("click",ft,ut=>h(ut,e(E).id)),N("click",Zt,ut=>se(ut,e(E).id)),b(ce,de)};K(ie,ce=>{e(c),e(E),l(()=>e(c)===e(E).id)?ce(Oe):ce(je,-1)})}t(Z);var R=n(Z,2),Xe=a(R),Ke=a(Xe,!0);t(Xe);var Fe=n(Xe,2);{var xe=ce=>{var de=bs(),me=n(Ze(de)),tt=a(me,!0);t(me),J(Ge=>T(tt,Ge),[()=>(e(E),l(()=>le(e(E).directory)))]),b(ce,de)},Be=ht(()=>(e(E),l(()=>le(e(E).directory))));K(Fe,ce=>{e(Be)&&ce(xe)})}var et=n(Fe,3),Pe=a(et,!0);t(et);var Ae=n(et,2);{var We=ce=>{var de=gs(),me=n(Ze(de),2);{var tt=rt=>{var it=_s(),ct=a(it);t(it),J(()=>T(ct,`+${e(E),l(()=>e(E).additions)??""}`)),b(rt,it)};K(me,rt=>{e(E),l(()=>e(E).additions)&&rt(tt)})}var Ge=n(me,2);{var dt=rt=>{var it=ms(),ct=a(it);t(it),J(()=>T(ct,`−${e(E),l(()=>e(E).deletions)??""}`)),b(rt,it)};K(Ge,rt=>{e(E),l(()=>e(E).deletions)&&rt(dt)})}b(ce,de)};K(Ae,ce=>{e(E),l(()=>e(E).additions||e(E).deletions)&&ce(We)})}t(R);var Ue=n(R,2);{var Ye=ce=>{var de=ys();b(ce,de)},Qe=ht(()=>(e(f),e(E),l(()=>e(f).get(e(E).id)==="busy")));K(Ue,ce=>{e(Qe)&&ce(Ye)})}t(Te),J((ce,de,me,tt,Ge)=>{Ne(Te,"href",`/${e(E),l(()=>e(E).id)??""}/`),I=be(Te,1,"session svelte-1h8243g",null,I,ce),be(he,1,`dot ${de??""}`,"svelte-1h8243g"),T(ne,me),T(Ke,tt),T(Pe,Ge)},[()=>({active:D()===e(E).id,busy:e(f).get(e(E).id)==="busy"}),()=>(e(f),e(E),l(()=>e(f).get(e(E).id)??"offline")),()=>(e(f),e(E),l(()=>e(f).get(e(E).id)??"offline")),()=>(e(E),l(()=>ke(e(E).id))),()=>(e(E),l(()=>ye(e(E).lastActiveAt)))]),N("click",Te,ce=>we(ce,e(E).id)),b(_e,Te)}),J(()=>{T(Me,(e(Q),l(()=>e(Q).label))),T(ae,(e(Q),l(()=>e(Q).rows.length)))}),b(q,U)};K(Ie,q=>{e(Q),l(()=>e(Q).rows.length)&&q(_)})}b(A,fe)});var Re=n(Le,2);{var De=A=>{var Q=xs(),fe=a(Q);t(Q),J(()=>T(fe,`no sessions on ${Y()??"this agent"??""} yet`)),b(A,Q)};K(Re,A=>{e(g),l(()=>e(g).length===0)&&A(De)})}t(ue),b(j,ue),Je(),y()}var Ss=$('<span class="host mono svelte-wmno67"> </span>'),zs=$('<button class="collapse svelte-wmno67" title="收起面板" aria-label="收起面板"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 18l-6-6 6-6"></path></svg></button>'),As=$('<span class="check svelte-wmno67">✓</span>'),qs=$('<button><span class="row-tile svelte-wmno67"> </span> <span class="row-info svelte-wmno67"><span class="row-name mono svelte-wmno67"> </span> <span class="row-host mono svelte-wmno67"> </span></span> <span><span class="sr-only svelte-wmno67"> </span></span> <!></button>'),Cs=$("<button></button>"),Ts=$('<div class="picker svelte-wmno67" role="dialog" aria-label="Agent 选择"><div class="picker-list svelte-wmno67"></div> <div class="picker-footer svelte-wmno67"><div class="theme-row svelte-wmno67"><span class="theme-label mono svelte-wmno67"> </span> <div class="swatches svelte-wmno67"><!> <button>auto</button></div></div></div></div>'),Es=$('<button><span class="switch-tile svelte-wmno67"> </span> <span><span class="sr-only svelte-wmno67"> </span></span> <span class="switch-name mono svelte-wmno67"> </span> <span class="switch-count mono svelte-wmno67"> </span></button>'),Ls=$('<div class="agents-label svelte-wmno67">Agents</div> <div class="switcher-row svelte-wmno67"></div>',1),Ms=$('<button class="mobile-search svelte-wmno67"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="7"></circle><path d="M21 21l-4.3-4.3"></path></svg> <span>搜索会话与命令</span></button>'),js=$('<div><div class="panel svelte-wmno67"><div class="header svelte-wmno67"><button class="agent-pill svelte-wmno67" aria-haspopup="true"><span class="glyph-tile svelte-wmno67"> </span> <span><span class="sr-only svelte-wmno67"> </span></span> <span class="name mono svelte-wmno67"> </span> <!> <span class="caret svelte-wmno67" aria-hidden="true"><!></span></button> <!> <!></div> <!> <!> <div class="list svelte-wmno67"><!></div> <div class="footer mono svelte-wmno67"><span> </span> <span class="sep svelte-wmno67">·</span> <span> </span></div></div></div>');function Os(j,v){Ve(v,!1);const p=()=>qe(Nt,"$backends",C),z=()=>qe(vt,"$sessionList",C),B=()=>qe(Lt,"$connection",C),i=()=>qe(ma,"$accentOverrides",C),[C,w]=lt(),y=u(),f=u(),x=u(),g=u(),M=u(),k=u(),O=u(),L=u();let D=Ee(v,"activeId",8,void 0),X=Ee(v,"drawer",8,!1),te=u(!1);function Y(I){const Z=I.split(/[\s\-_:./]+/).filter(Boolean);return Z.length>=2?(Z[0][0]+Z[1][0]).toUpperCase():I.slice(0,2).toUpperCase()}function S(I){return Y((I==null?void 0:I.name)||(I==null?void 0:I.id)||"OC")}function G(I){return I==="online"||I==="connected"?"online":I==="connecting"||I==="reconnecting"?"connecting":I==="offline"?"offline":"online"}async function P(I){s(te,!1),await Dt(I)}function H(){s(te,!e(te))}async function ve(I){await Dt(I)}function ye(I){I.key==="Escape"&&s(te,!1)}const ke=24*60*60*1e3;function le(I,Z){return Z==="connected"&&Date.now()-I<ke}function we(I,Z){return kt(Z)}W(()=>p(),()=>{var I,Z,he;s(y,((I=p())==null?void 0:I.activeId)??((he=(Z=p())==null?void 0:Z.backends[0])==null?void 0:he.id)??"opencode")}),W(()=>(p(),e(y)),()=>{var I;s(f,(I=p())==null?void 0:I.backends.find(Z=>Z.id===e(y)))}),W(()=>p(),()=>{var I;s(x,((I=p())==null?void 0:I.backends)??[])}),W(()=>(p(),z()),()=>{var I;s(g,Object.fromEntries((((I=p())==null?void 0:I.backends)??[]).map(Z=>[Z.id,z().filter(he=>he.backendId===Z.id||!he.backendId&&Z.id==="opencode").length])))}),W(()=>(z(),e(y),B()),()=>{s(M,z().filter(I=>(I.backendId===e(y)||!I.backendId&&e(y)==="opencode")&&le(I.lastActiveAt,B())).length)}),W(()=>(z(),e(y)),()=>{s(k,z().filter(I=>(I.backendId===e(y)||!I.backendId&&e(y)==="opencode")&&(I.additions||I.deletions)).length)}),W(()=>(i(),e(y)),()=>{s(O,we(i(),e(y)))}),W(()=>(e(x),i()),()=>{s(L,Object.fromEntries(e(x).map(I=>[I.id,we(i(),I.id)])))}),nt(),He();var h=js();N("keydown",Tt,ye);let c;var o=a(h),d=a(o),r=a(d),m=a(r),ee=a(m,!0);t(m);var oe=n(m,2),ge=a(oe),Se=a(ge,!0);t(ge),t(oe);var se=n(oe,2),ue=a(se,!0);t(se);var Le=n(se,2);{var Re=I=>{var Z=Ss(),he=a(Z,!0);t(Z),J(()=>T(he,(e(f),l(()=>e(f).host)))),b(I,Z)};K(Le,I=>{e(f),l(()=>{var Z;return(Z=e(f))==null?void 0:Z.host})&&I(Re)})}var De=n(Le,2),A=a(De);wt(A,{name:"caret-down",size:11}),t(De),t(r);var Q=n(r,2);{var fe=I=>{var Z=zs();N("click",Z,()=>Vt.set(!1)),b(I,Z)};K(Q,I=>{X()||I(fe)})}var Ie=n(Q,2);{var _=I=>{var Z=Ts(),he=a(Z);st(he,5,()=>e(x),Fe=>Fe.id,(Fe,xe)=>{const Be=mt(()=>(e(L),e(xe),re(kt),l(()=>e(L)[e(xe).id]??kt(e(xe).id)))),et=mt(()=>(e(xe),e(y),l(()=>e(xe).id===e(y))));var Pe=qs();let Ae;var We=a(Pe),Ue=a(We,!0);t(We);var Ye=n(We,2),Qe=a(Ye),ce=a(Qe,!0);t(Qe);var de=n(Qe,2),me=a(de);t(de),t(Ye);var tt=n(Ye,2),Ge=a(tt),dt=a(Ge,!0);t(Ge),t(tt);var rt=n(tt,2);{var it=ct=>{var ft=As();b(ct,ft)};K(rt,ct=>{e(et)&&ct(it)})}t(Pe),J((ct,ft,Mt)=>{Ae=be(Pe,1,"agent-row svelte-wmno67",null,Ae,{selected:e(et)}),ot(We,`background:${re(gt),re(e(Be)),l(()=>gt[e(Be)])??""}; color:${re(at),re(e(Be)),l(()=>at[e(Be)])??""}; border-color:${re(yt),re(e(Be)),l(()=>yt[e(Be)])??""}`),T(Ue,ct),T(ce,(e(xe),l(()=>e(xe).name??e(xe).id))),T(me,`${e(xe),l(()=>e(xe).host??"local")??""} · ${e(g),e(xe),l(()=>e(g)[e(xe).id]??0)??""} ses`),be(tt,1,`status-dot ${ft??""}`,"svelte-wmno67"),ot(tt,`--dot:${re(at),re(e(Be)),l(()=>at[e(Be)])??""}`),T(dt,Mt)},[()=>(e(xe),l(()=>S(e(xe)))),()=>(e(xe),l(()=>G(e(xe).status))),()=>(e(xe),l(()=>G(e(xe).status)))]),N("click",Pe,()=>P(e(xe).id)),b(Fe,Pe)}),t(he);var ze=n(he,2),ne=a(ze),ie=a(ne),Oe=a(ie);t(ie);var je=n(ie,2),R=a(je);st(R,1,()=>Bt,Jt,(Fe,xe)=>{var Be=Cs();let et;J(()=>{et=be(Be,1,"swatch svelte-wmno67",null,et,{active:e(O)===e(xe)}),Ne(Be,"aria-label",`设置 ${e(xe)??""} 主题`),ot(Be,`background:${re(at),e(xe),l(()=>at[e(xe)])??""}`)}),N("click",Be,()=>Ut(e(y),e(xe))),b(Fe,Be)});var Xe=n(R,2);let Ke;t(je),t(ne),t(ze),t(Z),J(Fe=>{T(Oe,`Theme · ${e(f),l(()=>{var xe,Be;return((xe=e(f))==null?void 0:xe.name)??((Be=e(f))==null?void 0:Be.id)??"Agent"})??""}`),Ke=be(Xe,1,"auto svelte-wmno67",null,Ke,Fe)},[()=>({active:e(O)===ga(e(y))})]),N("click",Xe,()=>Ut(e(y),null)),b(I,Z)};K(Ie,I=>{e(te)&&I(_)})}t(d);var q=n(d,2);{var U=I=>{var Z=Ls(),he=n(Ze(Z),2);st(he,5,()=>e(x),ze=>ze.id,(ze,ne)=>{const ie=mt(()=>(e(L),e(ne),re(kt),l(()=>e(L)[e(ne).id]??kt(e(ne).id))));var Oe=Es();let je;var R=a(Oe),Xe=a(R,!0);t(R);var Ke=n(R,2),Fe=a(Ke),xe=a(Fe,!0);t(Fe),t(Ke);var Be=n(Ke,2),et=a(Be,!0);t(Be);var Pe=n(Be,2),Ae=a(Pe,!0);t(Pe),t(Oe),J((We,Ue,Ye)=>{je=be(Oe,1,"switch-pill svelte-wmno67",null,je,{active:e(ne).id===e(y)}),ot(R,`background:${re(gt),re(e(ie)),l(()=>gt[e(ie)])??""}; color:${re(at),re(e(ie)),l(()=>at[e(ie)])??""}; border-color:${re(yt),re(e(ie)),l(()=>yt[e(ie)])??""}`),T(Xe,We),be(Ke,1,`status-dot ${Ue??""}`,"svelte-wmno67"),ot(Ke,`--dot:${re(at),re(e(ie)),l(()=>at[e(ie)])??""}`),T(xe,Ye),T(et,(e(ne),l(()=>e(ne).name??e(ne).id))),T(Ae,(e(g),e(ne),l(()=>e(g)[e(ne).id]??0)))},[()=>(e(ne),l(()=>S(e(ne)))),()=>(e(ne),l(()=>G(e(ne).status))),()=>(e(ne),l(()=>G(e(ne).status)))]),N("click",Oe,()=>ve(e(ne).id)),b(ze,Oe)}),t(he),b(I,Z)};K(q,I=>{re(X()),e(x),l(()=>X()&&e(x).length>1)&&I(U)})}var pe=n(q,2);{var Ce=I=>{var Z=Ms();N("click",Z,()=>St.set(!0)),b(I,Z)};K(pe,I=>{X()&&I(Ce)})}var Me=n(pe,2),F=a(Me);{let I=mt(()=>(e(f),l(()=>{var Z,he;return((Z=e(f))==null?void 0:Z.name)??((he=e(f))==null?void 0:he.id)})));Is(F,{get activeId(){return D()},get agentId(){return e(y)},get agentName(){return e(I)}})}t(Me);var ae=n(Me,2),V=a(ae),_e=a(V);t(V);var E=n(V,4),Te=a(E);t(E),t(ae),t(o),t(h),J((I,Z,he)=>{c=be(h,1,"agent-panel svelte-wmno67",null,c,{drawer:X()}),Ne(r,"aria-expanded",e(te)),ot(m,`background:${re(gt),e(O),l(()=>gt[e(O)])??""}; color:${re(at),e(O),l(()=>at[e(O)])??""}; border-color:${re(yt),e(O),l(()=>yt[e(O)])??""}`),T(ee,I),be(oe,1,`status-dot ${Z??""}`,"svelte-wmno67"),ot(oe,`--dot:${re(at),e(O),l(()=>at[e(O)])??""}`),T(Se,he),T(ue,(e(f),l(()=>{var ze,ne;return((ze=e(f))==null?void 0:ze.name)??((ne=e(f))==null?void 0:ne.id)??"Agent"}))),T(_e,`${e(M)??""} 活跃`),T(Te,`${e(k)??""} 已推送`)},[()=>(e(f),l(()=>S(e(f)))),()=>(e(f),l(()=>{var I;return G((I=e(f))==null?void 0:I.status)})),()=>(e(f),l(()=>{var I;return G((I=e(f))==null?void 0:I.status)}))]),N("click",r,H),b(j,h),Je(),w()}var Bs=$('<span class="meta svelte-1h1y2gb"> </span>'),Ds=$('<div class="bar svelte-1h1y2gb"><div class="fill svelte-1h1y2gb"></div></div>'),Ps=$('<button type="button"><span class="box svelte-1h1y2gb"><span class="dot svelte-1h1y2gb"></span> <span class="check svelte-1h1y2gb">✓</span></span> <span class="tx svelte-1h1y2gb"> </span></button>'),Ns=$('<div class="section-label svelte-1h1y2gb">暂无任务</div>'),Rs=$('<div class="task svelte-1h1y2gb"><div class="hd svelte-1h1y2gb"><span class="section-label svelte-1h1y2gb">任务</span> <!></div> <!> <div class="items svelte-1h1y2gb"><!> <!></div></div>');function Ws(j,v){Ve(v,!1);const p=u(),z=u(),B=u();let i=Ee(v,"sessionId",8,void 0),C=Ee(v,"tick",8,0),w=u({total:0,done:0,items:[]}),y=u(new Set),f;async function x(P){if(!P){s(w,{total:0,done:0,items:[]}),s(y,new Set);return}P!==f&&(f=P,s(y,new Set));try{const H=await $e.todo(P);if(P!==i())return;s(w,Ra(H))}catch{}}function g(P){e(y).has(P)?e(y).delete(P):e(y).add(P),s(y,e(y))}W(()=>(re(i()),re(C())),()=>{x(i()),C()}),W(()=>(e(w),e(y)),()=>{s(p,e(w).items.map((P,H)=>({...P,status:e(y).has(H)?P.status==="done"?"pending":"done":P.status})))}),W(()=>e(p),()=>{s(z,e(p).filter(P=>P.status==="done").length)}),W(()=>(e(w),e(z)),()=>{s(B,e(w).total?Math.round(e(z)/e(w).total*100):0)}),nt(),He();var M=Rs(),k=a(M),O=n(a(k),2);{var L=P=>{var H=Bs(),ve=a(H);t(H),J(()=>T(ve,`${e(z)??""}/${e(w),l(()=>e(w).total)??""}`)),b(P,H)};K(O,P=>{e(w),l(()=>e(w).total)&&P(L)})}t(k);var D=n(k,2);{var X=P=>{var H=Ds(),ve=a(H);t(H),J(()=>ot(ve,`transform:scaleX(${e(B)/100})`)),b(P,H)};K(D,P=>{e(w),l(()=>e(w).total)&&P(X)})}var te=n(D,2),Y=a(te);st(Y,3,()=>e(p),(P,H)=>P.text+"-"+H,(P,H,ve)=>{var ye=Ps(),ke=n(a(ye),2),le=a(ke,!0);t(ke),t(ye),J(()=>{be(ye,1,`row ${e(H),l(()=>e(H).status)??""}`,"svelte-1h1y2gb"),T(le,(e(H),l(()=>e(H).text)))}),N("click",ye,()=>g(e(ve))),b(P,ye)});var S=n(Y,2);{var G=P=>{var H=Ns();b(P,H)};K(S,P=>{e(w),l(()=>e(w).total===0)&&P(G)})}t(te),t(M),b(j,M),Je()}var Ks=$('<div><span class="dot svelte-ehf8ic" aria-hidden="true"></span><span> </span><span class="sr-only svelte-ehf8ic"> </span></div>'),Fs=$('<div class="label">未配置</div>'),Us=$('<div class="mcp svelte-ehf8ic"><div class="label">MCP</div> <div class="list svelte-ehf8ic"><!> <!></div></div>');function Gs(j,v){Ve(v,!1);let p=Ee(v,"tick",8,0),z=u([]);async function B(){try{s(z,await $e.mcp())}catch{}}W(()=>re(p()),()=>{B(),p()}),nt(),He();var i=Us(),C=n(a(i),2),w=a(C);st(w,1,()=>e(z),Jt,(x,g)=>{var M=Ks();let k;var O=n(a(M)),L=a(O,!0);t(O);var D=n(O),X=a(D,!0);t(D),t(M),J(()=>{k=be(M,1,"row svelte-ehf8ic",null,k,{off:e(g).status==="disabled"}),T(L,(e(g),l(()=>e(g).name))),T(X,(e(g),l(()=>e(g).status)))}),b(x,M)});var y=n(w,2);{var f=x=>{var g=Fs();b(x,g)};K(y,x=>{e(z),l(()=>e(z).length===0)&&x(f)})}t(C),t(i),b(j,i),Je()}var Hs=$('<div><button><span class="dot svelte-pijcyq" aria-hidden="true"></span></button> <div class="txt svelte-pijcyq"><div class="prompt svelte-pijcyq"> </div> <div class="spec mono svelte-pijcyq"> </div></div> <button> </button></div>'),Vs=$('<div class="label svelte-pijcyq">暂无</div>'),Js=$('<div class="err svelte-pijcyq"> </div>'),Xs=$('<div class="form svelte-pijcyq"><textarea class="prompt-in svelte-pijcyq" rows="2" placeholder="让 agent 做什么?"></textarea> <div class="kind svelte-pijcyq"><label><input type="radio" class="svelte-pijcyq"/> 每 <input class="num svelte-pijcyq" type="number" min="1" max="10080"/> 分钟</label> <label><input type="radio" class="svelte-pijcyq"/> 每天 <input class="time svelte-pijcyq" type="time"/></label></div> <!> <button class="go svelte-pijcyq">创建</button></div>'),Ys=$('<div class="schedules svelte-pijcyq"><div class="hd svelte-pijcyq"><div class="label svelte-pijcyq">定时任务</div> <button class="add svelte-pijcyq"> </button></div> <div class="list svelte-pijcyq"><!> <!></div> <!></div>');function Qs(j,v){Ve(v,!1);const p=[];let z=Ee(v,"tick",8,0),B=u([]),i=u(!1),C=u(""),w=u("every"),y=u(30),f=u("09:00"),x=u(""),g=u(),M;async function k(){try{s(B,(await $e.schedules()).schedules??[])}catch{}}function O(h){return h.kind==="every"?h.minutes>=60&&h.minutes%60===0?`every ${h.minutes/60}h`:`every ${h.minutes}m`:`daily ${h.time}`}function L(h){return h.name||h.prompt}async function D(){if(!e(C).trim())return;s(x,"");const h=e(w)==="every"?{kind:"every",minutes:Math.max(1,Math.round(e(y)))}:{kind:"daily",time:e(f)};try{const c=await $e.addSchedule({prompt:e(C).trim(),spec:h});if(c.error){s(x,c.error);return}s(C,""),s(i,!1),await k()}catch(c){s(x,c.message)}}async function X(h){s(B,e(B).map(c=>c.id===h.id?{...c,enabled:!c.enabled}:c));try{await $e.setScheduleEnabled(h.id,!h.enabled),await k()}catch{await k()}}async function te(h){if(e(g)!==h){s(g,h),clearTimeout(M),M=setTimeout(()=>s(g,void 0),3e3);return}clearTimeout(M),s(g,void 0);try{await $e.deleteSchedule(h),await k()}catch{}}W(()=>re(z()),()=>{k(),z()}),nt(),He();var Y=Ys(),S=a(Y),G=n(a(S),2),P=a(G,!0);t(G),t(S);var H=n(S,2),ve=a(H);st(ve,1,()=>e(B),h=>h.id,(h,c)=>{var o=Hs();let d;var r=a(o);let m;var ee=n(r,2),oe=a(ee),ge=a(oe,!0);t(oe);var Se=n(oe,2),se=a(Se,!0);t(Se),t(ee);var ue=n(ee,2);let Le;var Re=a(ue,!0);t(ue),t(o),J((De,A,Q,fe)=>{d=be(o,1,"row svelte-pijcyq",null,d,{off:!e(c).enabled}),m=be(r,1,"switch svelte-pijcyq",null,m,{on:e(c).enabled}),Ne(r,"aria-pressed",(e(c),l(()=>e(c).enabled))),Ne(r,"aria-label",De),T(ge,A),T(se,Q),Le=be(ue,1,"del svelte-pijcyq",null,Le,{arm:e(g)===e(c).id}),Ne(ue,"aria-label",`删除 ${fe??""}`),T(Re,(e(g),e(c),l(()=>e(g)===e(c).id?"确认?":"✕")))},[()=>(e(c),l(()=>`${e(c).enabled?"停用":"启用"} ${L(e(c))}`)),()=>(e(c),l(()=>L(e(c)))),()=>(e(c),l(()=>O(e(c).spec))),()=>(e(c),l(()=>L(e(c))))]),N("click",r,()=>X(e(c))),N("click",ue,()=>te(e(c).id)),b(h,o)});var ye=n(ve,2);{var ke=h=>{var c=Vs();b(h,c)};K(ye,h=>{e(B),e(i),l(()=>e(B).length===0&&!e(i))&&h(ke)})}t(H);var le=n(H,2);{var we=h=>{var c=Xs(),o=a(c);ja(o);var d=n(o,2),r=a(d);let m;var ee=a(r);pt(ee),ee.value=ee.__value="every";var oe=n(ee,2);pt(oe),bt(),t(r);var ge=n(r,2);let Se;var se=a(ge);pt(se),se.value=se.__value="daily";var ue=n(se,2);pt(ue),t(ge),t(d);var Le=n(d,2);{var Re=A=>{var Q=Js(),fe=a(Q,!0);t(Q),J(()=>T(fe,e(x))),b(A,Q)};K(Le,A=>{e(x)&&A(Re)})}var De=n(Le,2);t(c),J(A=>{m=be(r,1,"svelte-pijcyq",null,m,{sel:e(w)==="every"}),oe.disabled=e(w)!=="every",Se=be(ge,1,"svelte-pijcyq",null,Se,{sel:e(w)==="daily"}),ue.disabled=e(w)!=="daily",De.disabled=A},[()=>(e(C),l(()=>!e(C).trim()))]),_t(o,()=>e(C),A=>s(C,A)),sa(p,[],ee,()=>e(w),A=>s(w,A)),_t(oe,()=>e(y),A=>s(y,A)),sa(p,[],se,()=>e(w),A=>s(w,A)),_t(ue,()=>e(f),A=>s(f,A)),N("click",De,D),b(h,c)};K(le,h=>{e(i)&&h(we)})}t(Y),J(()=>{Ne(G,"aria-label",e(i)?"取消新建计划":"新建计划"),T(P,e(i)?"×":"+")}),N("click",G,()=>s(i,!e(i))),b(j,Y),Je()}var Zs=$('<div class="row svelte-taxat6"><span class="name svelte-taxat6"> </span></div>'),en=$('<div class="rows svelte-taxat6"></div>'),tn=$('<div class="label svelte-taxat6">none</div>'),an=$('<div class="skills svelte-taxat6"><div class="label svelte-taxat6">Skills</div> <div class="list svelte-taxat6"><!></div></div>');function sn(j,v){Ve(v,!1);let p=Ee(v,"tick",8,0),z=u([]);async function B(){try{s(z,(await $e.skills()).skills??[])}catch{}}W(()=>re(p()),()=>{B(),p()}),nt(),He();var i=an(),C=n(a(i),2),w=a(C);{var y=x=>{var g=en();st(g,5,()=>e(z),M=>M.name,(M,k)=>{var O=Zs(),L=a(O),D=a(L,!0);t(L),t(O),J(()=>{Ne(O,"title",(e(k),l(()=>e(k).description))),T(D,(e(k),l(()=>e(k).name)))}),b(M,O)}),t(g),b(x,g)},f=x=>{var g=tn();b(x,g)};K(w,x=>{e(z),l(()=>e(z).length>0)?x(y):x(f,-1)})}t(C),t(i),b(j,i),Je()}var nn=$('<button class="up svelte-tp0rgj" aria-label="上级目录"> </button>'),rn=$('<span class="mono"> </span>'),ln=$('<button class="row svelte-tp0rgj"><span class="ico svelte-tp0rgj"> </span> <span class="name svelte-tp0rgj"> </span></button>'),on=$('<div class="label svelte-tp0rgj">empty</div>'),cn=$('<div class="label svelte-tp0rgj">…</div>'),vn=$('<div class="preview-scrim svelte-tp0rgj" role="button" tabindex="0"><div class="preview svelte-tp0rgj" role="dialog" aria-label="File preview" tabindex="-1"><div class="p-hd svelte-tp0rgj"><span class="mono"> </span> <button class="p-close svelte-tp0rgj" aria-label="关闭预览">✕</button></div> <pre> </pre></div></div>'),dn=$('<div class="files svelte-tp0rgj"><div class="label svelte-tp0rgj">Files</div> <div class="crumb mono svelte-tp0rgj"><!></div> <div class="list svelte-tp0rgj"><!> <!> <!></div> <!></div>');function un(j,v){Ve(v,!1);const p=()=>qe(vt,"$sessionList",z),[z,B]=lt(),i=u();let C=Ee(v,"sessionId",8,void 0),w=Ee(v,"tick",8,0),y=u([]),f=u("."),x=u(null),g=u(!1),M=u(!1);async function k(){if(e(i)){s(M,!0);try{s(y,(await $e.browse(e(i),e(f))).files??[])}catch{s(y,[])}finally{s(M,!1)}}}function O(){const c=e(f).replace(/(^|\/)[^/]+\/?$/,"")||".";s(f,c),k()}async function L(c){if(c.type==="directory"){s(f,c.path),await k();return}try{const o=await $e.fileContent(e(i),c.path);if(o.type!=="text"){s(x,{path:c.path,content:"(二进制文件,无法预览)"}),s(g,!0);return}s(g,!1),s(x,{path:c.path,content:o.content.length>800?o.content.slice(0,800)+`
2
2
  …`:o.content})}catch{s(x,{path:c.path,content:"(读取失败)"}),s(g,!1)}}function D(){s(x,null),s(g,!1)}W(()=>(p(),re(C())),()=>{var c;s(i,((c=p().find(o=>o.id===C()))==null?void 0:c.directory)??"")}),W(()=>(e(i),e(f),re(w())),()=>{e(i)&&(e(i),e(f),w(),k())}),nt(),He();var X=dn(),te=n(a(X),2),Y=a(te);{var S=c=>{var o=nn(),d=a(o);t(o),J(()=>T(d,`↰ ${e(f)??""}`)),N("click",o,O),b(c,o)},G=c=>{var o=rn(),d=a(o,!0);t(o),J(r=>T(d,r),[()=>(e(i),l(()=>e(i).split("/").pop()||"/"))]),b(c,o)};K(Y,c=>{e(f)!=="."?c(S):c(G,-1)})}t(te);var P=n(te,2),H=a(P);st(H,1,()=>e(y),c=>c.path,(c,o)=>{var d=ln(),r=a(d),m=a(r,!0);t(r);var ee=n(r,2),oe=a(ee,!0);t(ee),t(d),J(()=>{T(m,(e(o),l(()=>e(o).type==="directory"?"📁":"📄"))),T(oe,(e(o),l(()=>e(o).name)))}),N("click",d,()=>L(e(o))),b(c,d)});var ve=n(H,2);{var ye=c=>{var o=on();b(c,o)};K(ve,c=>{e(M),e(y),l(()=>!e(M)&&e(y).length===0)&&c(ye)})}var ke=n(ve,2);{var le=c=>{var o=cn();b(c,o)};K(ke,c=>{e(M)&&c(le)})}t(P);var we=n(P,2);{var h=c=>{var o=vn(),d=a(o),r=a(d),m=a(r),ee=a(m,!0);t(m);var oe=n(m,2);t(r);var ge=n(r,2);let Se;var se=a(ge,!0);t(ge),t(d),t(o),J(()=>{T(ee,(e(x),l(()=>e(x).path))),Se=be(ge,1,"p-body mono svelte-tp0rgj",null,Se,{binary:e(g)}),T(se,(e(x),l(()=>e(x).content)))}),N("click",oe,D),N("click",o,D),N("keydown",o,ue=>ue.key==="Escape"&&D()),b(c,o)};K(we,c=>{e(x)&&c(h)})}t(X),b(j,X),Je(),B()}var pn=$('<div class="row svelte-148ev8e"><span class="ico svelte-148ev8e" aria-hidden="true">🌿</span> <span class="name svelte-148ev8e"> </span> <button> </button></div>'),fn=$('<div class="rows svelte-148ev8e"></div>'),hn=$('<div class="label svelte-148ev8e">none</div>'),bn=$('<div class="err svelte-148ev8e"> </div>'),_n=$('<div class="form svelte-148ev8e"><input class="name-in mono svelte-148ev8e" placeholder="worktree 名称"/> <!> <button class="go svelte-148ev8e">创建</button></div>'),mn=$('<div class="wt svelte-148ev8e"><div class="hd svelte-148ev8e"><div class="label svelte-148ev8e">Worktrees · beta</div> <button class="add svelte-148ev8e"> </button></div> <div class="list svelte-148ev8e"><!></div> <!></div>');function gn(j,v){Ve(v,!1);const p=()=>qe(vt,"$sessionList",z),[z,B]=lt(),i=u();let C=Ee(v,"sessionId",8,void 0),w=Ee(v,"tick",8,0),y=u([]),f=u(!1),x=u(""),g=u(""),M=u(),k;async function O(){if(e(i))try{s(y,(await $e.worktrees(e(i))).worktrees??[])}catch{}}async function L(){if(e(x).trim()){s(g,"");try{const le=await $e.createWorktree(e(i),e(x).trim());if(le.error){s(g,le.error);return}s(x,""),s(f,!1),await O()}catch(le){s(g,le.message)}}}async function D(le){if(e(M)!==le){s(M,le),clearTimeout(k),k=setTimeout(()=>s(M,void 0),3e3);return}clearTimeout(k),s(M,void 0);try{await $e.removeWorktree(e(i),le),await O()}catch{}}W(()=>(p(),re(C())),()=>{var le;s(i,((le=p().find(we=>we.id===C()))==null?void 0:le.directory)??"")}),W(()=>(re(w()),e(i)),()=>{O(),w(),e(i)}),nt(),He();var X=mn(),te=a(X),Y=n(a(te),2),S=a(Y,!0);t(Y),t(te);var G=n(te,2),P=a(G);{var H=le=>{var we=fn();st(we,5,()=>e(y),h=>h.name,(h,c)=>{var o=pn(),d=n(a(o),2),r=a(d,!0);t(d);var m=n(d,2);let ee;var oe=a(m,!0);t(m),t(o),J(()=>{T(r,(e(c),l(()=>e(c).name))),ee=be(m,1,"del svelte-148ev8e",null,ee,{arm:e(M)===e(c).name}),Ne(m,"aria-label",`删除 ${e(c),l(()=>e(c).name)??""}`),T(oe,(e(M),e(c),l(()=>e(M)===e(c).name?"确认?":"✕")))}),N("click",m,()=>D(e(c).name)),b(h,o)}),t(we),b(le,we)},ve=le=>{var we=hn();b(le,we)};K(P,le=>{e(y),l(()=>e(y).length>0)?le(H):e(f)||le(ve,1)})}t(G);var ye=n(G,2);{var ke=le=>{var we=_n(),h=a(we);pt(h);var c=n(h,2);{var o=r=>{var m=bn(),ee=a(m,!0);t(m),J(()=>T(ee,e(g))),b(r,m)};K(c,r=>{e(g)&&r(o)})}var d=n(c,2);t(we),J(r=>d.disabled=r,[()=>(e(x),l(()=>!e(x).trim()))]),_t(h,()=>e(x),r=>s(x,r)),N("click",d,L),b(le,we)};K(ye,le=>{e(f)&&le(ke)})}t(X),J(()=>{Ne(Y,"aria-label",e(f)?"取消新建":"新建 worktree"),T(S,e(f)?"×":"+")}),N("click",Y,()=>s(f,!e(f))),b(j,X),Je(),B()}var yn=$('<div class="usage svelte-q9r9ub"><div class="hd svelte-q9r9ub"><span class="section-label svelte-q9r9ub">用量</span></div> <div class="tiles svelte-q9r9ub"><div class="tile svelte-q9r9ub"><div class="label svelte-q9r9ub">输入 tokens</div> <div class="num mono svelte-q9r9ub"> </div></div> <div class="tile svelte-q9r9ub"><div class="label svelte-q9r9ub">输出 tokens</div> <div class="num mono svelte-q9r9ub"> </div></div></div> <div class="spend mono svelte-q9r9ub"> </div></div>');function kn(j,v){Ve(v,!1);const p=()=>qe(qt,"$feeds",z),[z,B]=lt(),i=u(),C=u(),w=u(),y=u(),f=u(),x=u(),g=u(),M=u();let k=Ee(v,"sessionId",8,void 0),O=Ee(v,"tick",8,0),L=u({});async function D(o){if(!o){s(L,{});return}try{const d=await $e.context(o);if(o!==k())return;s(L,d)}catch{}}let X=u(""),te=u({in:0,out:0,cost:0});function Y(o){return o==null?"—":o.toLocaleString()}function S(o){return o==null?"—":`$${o.toFixed(3)}`}W(()=>(re(k()),re(O())),()=>{D(k()),O()}),W(()=>e(L),()=>{var o,d,r,m;s(i,typeof((d=(o=e(L))==null?void 0:o.tokens)==null?void 0:d.input)=="number"||typeof((m=(r=e(L))==null?void 0:r.tokens)==null?void 0:m.output)=="number")}),W(()=>e(L),()=>{var o,d;s(C,typeof((d=(o=e(L))==null?void 0:o.tokens)==null?void 0:d.input)=="number"?e(L).tokens.input:void 0)}),W(()=>e(L),()=>{var o,d;s(w,typeof((d=(o=e(L))==null?void 0:o.tokens)==null?void 0:d.output)=="number"?e(L).tokens.output:void 0)}),W(()=>e(L),()=>{var o;s(y,typeof((o=e(L))==null?void 0:o.cost)=="number"?e(L).cost:void 0)}),W(()=>(re(k()),p()),()=>{s(f,k()?p()[k()]:void 0)}),W(()=>(e(i),re(k()),e(f),e(X),ea),()=>{var d,r;const o=e(i)?"":`${k()}:${((d=e(f))==null?void 0:d.lastSeq)??0}:${((r=e(f))==null?void 0:r.order.length)??0}`;o!==e(X)&&(s(X,o),s(te,o===""?{in:0,out:0,cost:0}:ea(e(f)).filter(m=>m.kind==="assistant").reduce((m,ee)=>{var ge,Se;const oe=ee.meta??{};return typeof((ge=oe.tokens)==null?void 0:ge.input)=="number"&&(m.in+=oe.tokens.input),typeof((Se=oe.tokens)==null?void 0:Se.output)=="number"&&(m.out+=oe.tokens.output),typeof oe.cost=="number"&&(m.cost+=oe.cost),m},{in:0,out:0,cost:0})))}),W(()=>(e(i),e(C),e(te)),()=>{s(x,e(i)?e(C):e(te).in||void 0)}),W(()=>(e(i),e(w),e(te)),()=>{s(g,e(i)?e(w):e(te).out||void 0)}),W(()=>(e(y),e(te)),()=>{s(M,e(y)??(e(te).cost||void 0))}),nt(),He();var G=yn(),P=n(a(G),2),H=a(P),ve=n(a(H),2),ye=a(ve,!0);t(ve),t(H);var ke=n(H,2),le=n(a(ke),2),we=a(le,!0);t(le),t(ke),t(P);var h=n(P,2),c=a(h);t(h),t(G),J((o,d,r)=>{T(ye,o),T(we,d),T(c,`est. spend ${r??""}`)},[()=>(e(x),l(()=>Y(e(x)))),()=>(e(g),l(()=>Y(e(g)))),()=>(e(M),l(()=>S(e(M))))]),b(j,G),Je(),B()}var wn=$('<span class="pct svelte-1h7zxuf"> </span>'),xn=$('<span class="max svelte-1h7zxuf"> </span>'),$n=$('<span class="max svelte-1h7zxuf">tokens</span>'),In=$('<div class="bar svelte-1h7zxuf"><div class="fill svelte-1h7zxuf"></div></div>'),Sn=$('<div class="model mono svelte-1h7zxuf"><span class="sq svelte-1h7zxuf"></span> </div>'),zn=$('<div class="cache mono svelte-1h7zxuf"><span class="cdot svelte-1h7zxuf"></span> </div>'),An=$('<div class="ctx svelte-1h7zxuf"><div class="hd svelte-1h7zxuf"><span class="section-label svelte-1h7zxuf">Context</span> <!></div> <div class="body mono svelte-1h7zxuf"><span class="big svelte-1h7zxuf"> </span> <!></div> <!> <!> <!></div>');function qn(j,v){Ve(v,!1);const p=u(),z=u(),B=u(),i=u(),C=u(),w=u(),y=u(),f=u(),x=u();let g=Ee(v,"sessionId",8,void 0),M=Ee(v,"tick",8,0),k=u({});async function O(r){if(!r){s(k,{});return}try{s(k,await $e.context(r))}catch{}}function L(r){return r==null?"—":r.toLocaleString()}function D(r){return r==null?"—":r>=1e6?(r/1e6).toFixed(1)+"M":r>=1e3?(r/1e3).toFixed(1)+"K":String(r)}W(()=>(re(g()),re(M())),()=>{O(g()),M()}),W(()=>e(k),()=>{var r,m;s(p,typeof((m=(r=e(k))==null?void 0:r.tokens)==null?void 0:m.input)=="number"?e(k).tokens.input:void 0)}),W(()=>e(k),()=>{var r,m;s(z,typeof((m=(r=e(k))==null?void 0:r.tokens)==null?void 0:m.output)=="number"?e(k).tokens.output:void 0)}),W(()=>(e(k),e(p),e(z)),()=>{var r,m;s(B,typeof((m=(r=e(k))==null?void 0:r.tokens)==null?void 0:m.used)=="number"?e(k).tokens.used:e(p)!=null||e(z)!=null?(e(p)??0)+(e(z)??0):void 0)}),W(()=>e(k),()=>{var r,m;s(i,typeof((m=(r=e(k))==null?void 0:r.tokens)==null?void 0:m.max)=="number"?e(k).tokens.max:void 0)}),W(()=>(e(B),e(i)),()=>{s(C,e(B)!=null&&e(i)!=null?Math.min(100,Math.round(e(B)/e(i)*100)):void 0)}),W(()=>e(k),()=>{var r;s(w,(r=e(k))!=null&&r.model?String(e(k).model).split("/").pop():void 0)}),W(()=>e(k),()=>{var r,m,ee;s(y,typeof((ee=(m=(r=e(k))==null?void 0:r.tokens)==null?void 0:m.cache)==null?void 0:ee.read)=="number"?e(k).tokens.cache.read:void 0)}),W(()=>e(k),()=>{var r,m,ee;s(f,typeof((ee=(m=(r=e(k))==null?void 0:r.tokens)==null?void 0:m.cache)==null?void 0:ee.write)=="number"?e(k).tokens.cache.write:void 0)}),W(()=>(e(y),e(p)),()=>{s(x,e(y)!=null&&e(p)!=null&&e(p)+e(y)>0?Math.round(e(y)/(e(p)+e(y))*100):void 0)}),nt(),He();var X=An(),te=a(X),Y=n(a(te),2);{var S=r=>{var m=wn(),ee=a(m);t(m),J(()=>T(ee,`${e(C)??""}%`)),b(r,m)};K(Y,r=>{e(C)!=null&&r(S)})}t(te);var G=n(te,2),P=a(G),H=a(P,!0);t(P);var ve=n(P,2);{var ye=r=>{var m=xn(),ee=a(m);t(m),J(oe=>T(ee,`/ ${oe??""} tokens`),[()=>(e(i),l(()=>L(e(i))))]),b(r,m)},ke=r=>{var m=$n();b(r,m)};K(ve,r=>{e(i)!=null?r(ye):r(ke,-1)})}t(G);var le=n(G,2);{var we=r=>{var m=In(),ee=a(m);t(m),J(()=>ot(ee,`transform:scaleX(${e(C)/100})`)),b(r,m)};K(le,r=>{e(C)!=null&&r(we)})}var h=n(le,2);{var c=r=>{var m=Sn(),ee=n(a(m),1,!0);t(m),J(()=>T(ee,e(w))),b(r,m)};K(h,r=>{e(w)&&r(c)})}var o=n(h,2);{var d=r=>{var m=zn(),ee=n(a(m));t(m),J((oe,ge)=>T(ee,`cache ${e(x)??""}% · ${oe??""} read / ${ge??""} write`),[()=>(e(y),l(()=>D(e(y)))),()=>(e(f),l(()=>D(e(f))))]),b(r,m)};K(o,r=>{e(x)!=null&&r(d)})}t(X),J(r=>T(H,r),[()=>(e(B),l(()=>L(e(B))))]),b(j,X),Je()}var Cn=$('<span class="counts mono svelte-1oo25bu"> </span>'),Tn=$('<div class="repo-line mono svelte-1oo25bu"> </div>'),En=$('<div><span class="pre svelte-1oo25bu"> </span> </div>'),Ln=$('<div class="diff svelte-1oo25bu"></div>'),Mn=$('<div class="entry svelte-1oo25bu"><button type="button"><span class="change svelte-1oo25bu"></span> <span class="nm svelte-1oo25bu"> </span> <span class="cnt svelte-1oo25bu"><span class="add svelte-1oo25bu"> </span> <span class="sep svelte-1oo25bu">/</span> <span class="del svelte-1oo25bu"> </span></span></button> <!></div>'),jn=$('<div class="files mono svelte-1oo25bu"></div>'),On=$('<div class="section-label svelte-1oo25bu">—</div>'),Bn=$('<div class="wd svelte-1oo25bu"><div class="hd svelte-1oo25bu"><span class="section-label svelte-1oo25bu">Working dir</span> <!></div> <!> <!> <!></div>');function Dn(j,v){Ve(v,!1);const p=u(),z=u();let B=Ee(v,"sessionId",8,void 0),i=Ee(v,"tick",8,0),C=Ee(v,"showDiff",8,!0),w=u(""),y=u([]),f=u(new Set);async function x(h){if(!h){s(w,""),s(y,[]),e(f).clear(),s(f,e(f));return}try{const c=await $e.context(h);if(h!==B())return;if(s(w,(c==null?void 0:c.directory)??""),C()){const o=await $e.diff(h);if(h!==B())return;s(y,(Array.isArray(o)?o:[]).map(d=>({path:String((d==null?void 0:d.path)??""),additions:Number((d==null?void 0:d.additions)??0),deletions:Number((d==null?void 0:d.deletions)??0),lines:Array.isArray(d==null?void 0:d.lines)?d.lines:[]})).filter(d=>d.path).slice(0,8))}else s(y,[])}catch{}}function g(h){if(!h)return"";const c=h.replace(/\/+$/,"").split("/");return c[c.length-1]||""}function M(h){const c=h.split("/");return c.length>3?"…/"+c.slice(-3).join("/"):h}function k(h){return h.additions>0&&h.deletions>0?"mod":h.additions>0?"add":h.deletions>0?"del":"none"}function O(h){return h==="add"?"var(--ok)":h==="del"?"var(--err)":h==="mod"?"var(--warn)":"var(--text-4)"}function L(h){e(f).has(h)?e(f).delete(h):e(f).add(h),s(f,e(f))}function D(h){return h==="add"?"+":h==="del"?"−":" "}function X(h){return h.kind==="add"&&h.text.startsWith("+")||h.kind==="del"&&h.text.startsWith("-")||h.kind==="ctx"&&h.text.startsWith(" ")?h.text.slice(1):h.text}W(()=>(re(B()),re(i()),re(C())),()=>{x(B()),i(),C()}),W(()=>e(y),()=>{s(p,e(y).reduce((h,c)=>h+c.additions,0))}),W(()=>e(y),()=>{s(z,e(y).reduce((h,c)=>h+c.deletions,0))}),nt(),He();var te=Bn(),Y=a(te),S=n(a(Y),2);{var G=h=>{var c=Cn(),o=a(c);t(c),J(()=>T(o,`+${e(p)??""}/−${e(z)??""}`)),b(h,c)};K(S,h=>{e(y),l(()=>e(y).length)&&h(G)})}t(Y);var P=n(Y,2);{var H=h=>{var c=Tn(),o=a(c,!0);t(c),J(d=>T(o,d),[()=>(e(w),l(()=>g(e(w))))]),b(h,c)},ve=ht(()=>(e(w),l(()=>g(e(w)))));K(P,h=>{e(ve)&&h(H)})}var ye=n(P,2);{var ke=h=>{var c=jn();st(c,5,()=>e(y),o=>o.path,(o,d)=>{var r=Mn(),m=a(r);let ee;var oe=a(m),ge=n(oe,2),Se=a(ge,!0);t(ge);var se=n(ge,2),ue=a(se),Le=a(ue);t(ue);var Re=n(ue,4),De=a(Re);t(Re),t(se),t(m);var A=n(m,2);{var Q=Ie=>{var _=Ln();st(_,5,()=>(e(d),l(()=>e(d).lines)),Jt,(q,U)=>{var pe=En(),Ce=a(pe),Me=a(Ce,!0);t(Ce);var F=n(Ce,1,!0);t(pe),J((ae,V)=>{be(pe,1,`line ${e(U),l(()=>e(U).kind)??""}`,"svelte-1oo25bu"),T(Me,ae),T(F,V)},[()=>(e(U),l(()=>D(e(U).kind))),()=>(e(U),l(()=>X(e(U))))]),b(q,pe)}),t(_),b(Ie,_)},fe=ht(()=>(e(f),e(d),l(()=>e(f).has(e(d).path)&&e(d).lines.length>0)));K(A,Ie=>{e(fe)&&Ie(Q)})}t(r),J((Ie,_,q,U)=>{ee=be(m,1,"f svelte-1oo25bu",null,ee,Ie),Ne(m,"aria-expanded",_),ot(oe,`background: ${q??""}`),T(Se,U),T(Le,`+${e(d),l(()=>e(d).additions)??""}`),T(De,`−${e(d),l(()=>e(d).deletions)??""}`)},[()=>({open:e(f).has(e(d).path)}),()=>(e(f),e(d),l(()=>e(f).has(e(d).path))),()=>(e(d),l(()=>O(k(e(d))))),()=>(e(d),l(()=>M(e(d).path)))]),N("click",m,()=>L(e(d).path)),b(o,r)}),t(c),b(h,c)};K(ye,h=>{e(y),l(()=>e(y).length)&&h(ke)})}var le=n(ye,2);{var we=h=>{var c=On();b(h,c)};K(le,h=>{e(w),e(y),l(()=>!e(w)&&e(y).length===0)&&h(we)})}t(te),b(j,te),Je()}var Pn=$('<!><div class="divider svelte-gu3dqx"></div>',1),Nn=$('<!><div class="divider svelte-gu3dqx"></div>',1),Rn=$('<!><div class="divider svelte-gu3dqx"></div>',1),Wn=$('<!> <div class="divider svelte-gu3dqx"></div>',1),Kn=$('<aside class="inspector svelte-gu3dqx"><div class="head svelte-gu3dqx"><div class="section-label svelte-gu3dqx">会话</div> <div class="name svelte-gu3dqx"><span class="title-text svelte-gu3dqx"> </span></div></div> <!> <div class="pinned svelte-gu3dqx"><!> <div class="divider svelte-gu3dqx"></div> <!> <!> <!> <!> <!> <div class="divider svelte-gu3dqx"></div> <!> <div class="divider svelte-gu3dqx"></div> <!></div></aside>');function Fn(j,v){Ve(v,!1);const p=()=>qe(vt,"$sessionList",i),z=()=>qe(qt,"$feeds",i),B=()=>qe(ia,"$can",i),[i,C]=lt(),w=u(),y=u(),f=u();let x=Ee(v,"sessionId",8,void 0),g=u(0),M=u(-1),k=u();ca(()=>clearTimeout(e(k))),W(()=>(p(),re(x())),()=>{s(w,p().find(se=>se.id===x()))}),W(()=>e(w),()=>{var se;s(y,(se=e(w))==null?void 0:se.title)}),W(()=>(re(x()),z()),()=>{var se;s(f,x()?((se=z()[x()])==null?void 0:se.lastSeq)??0:0)}),W(()=>(e(f),e(M),e(k),e(g)),()=>{e(f)!==e(M)&&(s(M,e(f)),clearTimeout(e(k)),s(k,setTimeout(()=>s(g,e(g)+1),1e3)))}),nt(),He();var O=Kn(),L=a(O),D=n(a(L),2),X=a(D),te=a(X,!0);t(X),t(D),t(L);var Y=n(L,2);{var S=se=>{Ws(se,{get sessionId(){return x()},get tick(){return e(g)}})},G=ht(()=>(B(),l(()=>B()("todos"))));K(Y,se=>{e(G)&&se(S)})}var P=n(Y,2),H=a(P);Qs(H,{get tick(){return e(g)}});var ve=n(H,4);{var ye=se=>{var ue=Pn(),Le=Ze(ue);sn(Le,{get tick(){return e(g)}}),bt(),b(se,ue)},ke=ht(()=>(B(),l(()=>B()("skills"))));K(ve,se=>{e(ke)&&se(ye)})}var le=n(ve,2);{var we=se=>{var ue=Nn(),Le=Ze(ue);un(Le,{get sessionId(){return x()},get tick(){return e(g)}}),bt(),b(se,ue)},h=ht(()=>(B(),l(()=>B()("files"))));K(le,se=>{e(h)&&se(we)})}var c=n(le,2);{var o=se=>{var ue=Rn(),Le=Ze(ue);gn(Le,{get sessionId(){return x()},get tick(){return e(g)}}),bt(),b(se,ue)},d=ht(()=>(B(),l(()=>B()("worktrees"))));K(c,se=>{e(d)&&se(o)})}var r=n(c,2);{var m=se=>{var ue=Wn(),Le=Ze(ue);Gs(Le,{get tick(){return e(g)}}),bt(2),b(se,ue)},ee=ht(()=>(B(),l(()=>B()("mcp"))));K(r,se=>{e(ee)&&se(m)})}var oe=n(r,2);kn(oe,{get sessionId(){return x()},get tick(){return e(g)}});var ge=n(oe,4);qn(ge,{get sessionId(){return x()},get tick(){return e(g)}});var Se=n(ge,4);{let se=mt(()=>(B(),l(()=>B()("diff"))));Dn(Se,{get sessionId(){return x()},get tick(){return e(g)},get showDiff(){return e(se)}})}t(P),t(O),J(se=>{Ne(D,"title",e(y)??x()),T(te,se)},[()=>(e(y),re(x()),l(()=>e(y)||(x()?"…"+x().slice(-8):"No session")))]),b(j,O),Je(),C()}function Un(j,v){const p=v.trim().toLowerCase();return p?j.filter(z=>(z.title??"").toLowerCase().includes(p)||(z.agent??"").toLowerCase().includes(p)||z.id.toLowerCase().includes(p)):j}var Gn=$('<div class="empty svelte-wh9uu8">无匹配结果</div>'),Hn=$('<div class="group svelte-wh9uu8" role="presentation"><span class="group-icon svelte-wh9uu8" aria-hidden="true"> </span> <span class="group-label mono svelte-wh9uu8"> </span></div>'),Vn=$('<button role="option"><span class="tile glyph svelte-wh9uu8" aria-hidden="true"> </span> <span class="label svelte-wh9uu8"> </span> <span class="hint mono svelte-wh9uu8"> </span></button>'),Jn=$('<button role="option"><span class="tile svelte-wh9uu8" aria-hidden="true">#</span> <span class="label svelte-wh9uu8"> </span> <span class="hint mono svelte-wh9uu8"> </span></button>'),Xn=$('<button role="option"><span class="tile svelte-wh9uu8" aria-hidden="true">/</span> <span class="label svelte-wh9uu8"> </span> <span class="hint mono svelte-wh9uu8"> </span></button>'),Yn=$('<div class="error svelte-wh9uu8"> </div>'),Qn=$('<div class="about mono svelte-wh9uu8"> </div>'),Zn=$('<div class="overlay svelte-wh9uu8"><button class="backdrop svelte-wh9uu8" aria-label="关闭"></button> <div class="palette svelte-wh9uu8" role="dialog" aria-modal="true" aria-label="搜索会话与命令" tabindex="-1"><div class="header svelte-wh9uu8"><span class="search-icon svelte-wh9uu8" aria-hidden="true"><!></span> <input class="q svelte-wh9uu8" placeholder="跳转会话,或运行命令…" aria-label="搜索会话与命令"/> <kbd class="keycap mono svelte-wh9uu8" aria-label="按 Esc 关闭">esc</kbd></div> <div class="results svelte-wh9uu8" role="listbox" aria-label="结果"><!> <!> <!></div></div></div>');function er(j,v){Ve(v,!1);const p=()=>qe(ua,"$page",w),z=()=>qe(Nt,"$backends",w),B=()=>qe(vt,"$sessionList",w),i=()=>qe(ya,"$currentBackendId",w),C=()=>qe(ia,"$can",w),[w,y]=lt(),f=u(),x=u(),g=u(),M=u(),k=u(),O=u(),L=u(),D=u();let X=Ee(v,"open",8,!1);const te=Oa();let Y=u(""),S=u(0),G=u(""),P=u(""),H=u(null),ve=u([]),ye=u(null);function ke(_,q,U){const pe=U.trim().toLowerCase();return pe?_.toLowerCase().includes(pe)||q.toLowerCase().includes(pe):!0}const le=[{name:"new-session",description:"New session"},{name:"toggle-panel",description:"Collapse / expand the agent panel"},{name:"cycle-accent",description:"Cycle accent color"}];function we(_){var U,pe,Ce;const q=_.replace(/[^a-zA-Z0-9 ]/g," ").trim().split(/[\s-]+/).filter(Boolean);return((((U=q[0])==null?void 0:U[0])??"")+(((pe=q[1])==null?void 0:pe[0])??((Ce=q[0])==null?void 0:Ce[1])??"")).toUpperCase()||_.slice(0,2).toUpperCase()}function h(_,q,U,pe,Ce){const Me=[];let F=0;if(_.length){Me.push({type:"group",label:"Agents",icon:"◆"});for(const V of _)Me.push({type:"agent",agent:V,selectableIndex:F++})}if(q.length){Me.push({type:"group",label:"Sessions",icon:"#"});for(const V of q)Me.push({type:"session",session:V,selectableIndex:F++})}const ae=[...U.map(V=>({...V,kind:"backend"})),...pe.map(V=>({...V}))];if(ae.length){Me.push({type:"group",label:"Commands",icon:"/"});for(const V of ae){const _e=V.kind==="backend"&&!Ce;Me.push({type:"command",command:V,disabled:_e,selectableIndex:_e?void 0:F++})}}return Me}let c=null,o=u();function d(_){c=document.activeElement,_.focus()}function r(){var _;te("close"),s(Y,""),s(G,""),(_=c==null?void 0:c.focus)==null||_.call(c),c=null}function m(_){Xt(`/${_}/`),r()}function ee(){const _=i()??"opencode",q=kt(_),U=Bt[(Bt.indexOf(q)+1)%Bt.length];Ut(_,U)}async function oe(_){Gt(_);try{await Dt(_)}catch{}r()}async function ge(_){if(_==="cycle-accent"){ee(),r();return}if(_==="new-session"){zt.set(!0),r();return}if(_==="toggle-panel"){Vt.update(q=>!q),r();return}if(!(!e(f)||e(P))){s(P,_),s(G,"");try{await $e.runCommand({sessionId:e(f),command:_}),r()}catch(q){s(G,`/${_} failed: ${q.message}`)}finally{s(P,"")}}}function Se(_){_.type==="agent"&&_.agent?oe(_.agent.id):_.type==="session"&&_.session?m(_.session.id):_.type==="command"&&!_.disabled&&_.command&&ge(_.command.name)}function se(_){if(_.key==="Escape"){r();return}if(_.key==="Tab"){ue(_);return}if(e(D)!==0){if(_.key==="ArrowDown"){_.preventDefault(),s(S,Math.min(e(S)+1,e(D)-1)),Le();return}if(_.key==="ArrowUp"){_.preventDefault(),s(S,Math.max(e(S)-1,0)),Le();return}if(_.key==="Enter"){const q=e(L).find(U=>U.selectableIndex===e(S));q&&(_.preventDefault(),Se(q))}}}function ue(_){if(_.key!=="Tab"||!e(o))return;const q=Array.from(e(o).querySelectorAll("input, button:not(:disabled)"));if(q.length===0)return;const U=q[0],pe=q[q.length-1];_.shiftKey&&document.activeElement===U?(_.preventDefault(),pe.focus()):!_.shiftKey&&document.activeElement===pe&&(_.preventDefault(),U.focus())}async function Le(){await Ba();const _=document.querySelector(".palette .row.active");_==null||_.scrollIntoView({block:"nearest"})}function Re(_,q){return q?"Open a session first":(_==null?void 0:_.description)??""}W(()=>(re(X()),e(H),$e),()=>{X()&&!e(H)&&$e.version().then(_=>{s(H,{version:_.version,uptime:_.uptime})}).catch(()=>{})}),W(()=>p(),()=>{s(f,p().params.sessionId)}),W(()=>z(),()=>{var _;s(x,((_=z())==null?void 0:_.backends)??[])}),W(()=>(e(x),e(Y)),()=>{s(g,e(x).filter(_=>ke(_.name??_.id,_.id,e(Y))))}),W(()=>(B(),e(Y)),()=>{s(M,Un(B(),e(Y)))}),W(()=>(re(X()),i(),e(ye),C(),$e),()=>{X()&&i()&&i()!==e(ye)&&(s(ye,i()),C()("commands")?$e.commands(i()).then(_=>{s(ve,_)}).catch(()=>{s(ye,null)}):s(ve,[]))}),W(()=>(e(ve),e(Y)),()=>{s(k,e(ve).filter(_=>ke(_.name,_.description,e(Y))))}),W(()=>e(Y),()=>{s(O,le.filter(_=>ke(_.name,_.description,e(Y))))}),W(()=>(e(g),e(M),e(k),e(O),e(f)),()=>{s(L,h(e(g),e(M),e(k),e(O),e(f)))}),W(()=>e(L),()=>{s(D,e(L).filter(_=>_.selectableIndex!=null).length)}),W(()=>(e(S),e(D)),()=>{s(S,e(D)?Math.max(0,Math.min(e(S),e(D)-1)):-1)}),W(()=>e(Y),()=>{e(Y),s(S,0)}),nt();var De={close:r};He();var A=xt(),Q=Ze(A);{var fe=_=>{var q=Zn(),U=a(q),pe=n(U,2),Ce=a(pe),Me=a(Ce),F=a(Me);wt(F,{name:"search",size:14}),t(Me);var ae=n(Me,2);pt(ae),Yt(ae,ne=>d==null?void 0:d(ne)),$t(()=>_t(ae,()=>e(Y),ne=>s(Y,ne))),$t(()=>N("keydown",ae,se)),bt(2),t(Ce);var V=n(Ce,2),_e=a(V);{var E=ne=>{var ie=Gn();b(ne,ie)},Te=ne=>{var ie=xt(),Oe=Ze(ie);st(Oe,1,()=>e(L),je=>{var R,Xe,Ke;return((R=je.agent)==null?void 0:R.id)??((Xe=je.session)==null?void 0:Xe.id)??((Ke=je.command)==null?void 0:Ke.name)??je.label??""},(je,R)=>{var Xe=xt(),Ke=Ze(Xe);{var Fe=Pe=>{var Ae=Hn(),We=a(Ae),Ue=a(We,!0);t(We);var Ye=n(We,2),Qe=a(Ye,!0);t(Ye),t(Ae),J(()=>{T(Ue,(e(R),l(()=>e(R).icon))),T(Qe,(e(R),l(()=>e(R).label)))}),b(Pe,Ae)},xe=Pe=>{var Ae=Vn();let We;var Ue=a(Ae),Ye=a(Ue,!0);t(Ue);var Qe=n(Ue,2),ce=a(Qe,!0);t(Qe);var de=n(Qe,2),me=a(de,!0);t(de),t(Ae),J(tt=>{We=be(Ae,1,"row svelte-wh9uu8",null,We,{active:e(R).selectableIndex===e(S)}),Ne(Ae,"aria-selected",(e(R),e(S),l(()=>e(R).selectableIndex===e(S)))),T(Ye,tt),T(ce,(e(R),l(()=>{var Ge,dt;return((Ge=e(R).agent)==null?void 0:Ge.name)??((dt=e(R).agent)==null?void 0:dt.id)??""}))),T(me,(e(R),z(),l(()=>{var Ge,dt,rt;return((Ge=e(R).agent)==null?void 0:Ge.id)===((dt=z())==null?void 0:dt.activeId)?"active":((rt=e(R).agent)==null?void 0:rt.status)??""})))},[()=>(e(R),l(()=>{var tt,Ge;return we(((tt=e(R).agent)==null?void 0:tt.name)??((Ge=e(R).agent)==null?void 0:Ge.id)??"")}))]),N("click",Ae,()=>{e(R).agent&&oe(e(R).agent.id)}),N("mouseenter",Ae,()=>{e(R).selectableIndex!=null&&s(S,e(R).selectableIndex)}),b(Pe,Ae)},Be=Pe=>{var Ae=Jn();let We;var Ue=n(a(Ae),2),Ye=a(Ue,!0);t(Ue);var Qe=n(Ue,2),ce=a(Qe,!0);t(Qe),t(Ae),J(de=>{We=be(Ae,1,"row svelte-wh9uu8",null,We,{active:e(R).selectableIndex===e(S)}),Ne(Ae,"aria-selected",(e(R),e(S),l(()=>e(R).selectableIndex===e(S)))),T(Ye,de),T(ce,(e(R),l(()=>{var me;return((me=e(R).session)==null?void 0:me.agent)??""})))},[()=>(e(R),l(()=>{var de,me;return((de=e(R).session)==null?void 0:de.title)??((me=e(R).session)==null?void 0:me.id.slice(-8))??""}))]),N("click",Ae,()=>{e(R).session&&m(e(R).session.id)}),N("mouseenter",Ae,()=>{e(R).selectableIndex!=null&&s(S,e(R).selectableIndex)}),b(Pe,Ae)},et=Pe=>{var Ae=Xn();let We;var Ue=n(a(Ae),2),Ye=a(Ue,!0);t(Ue);var Qe=n(Ue,2),ce=a(Qe,!0);t(Qe),t(Ae),J(de=>{We=be(Ae,1,"row svelte-wh9uu8",null,We,{active:e(R).selectableIndex===e(S),disabled:e(R).disabled}),Ae.disabled=(e(R),e(P),l(()=>{var me;return e(R).disabled||e(P)===((me=e(R).command)==null?void 0:me.name)})),Ne(Ae,"aria-selected",(e(R),e(S),l(()=>e(R).selectableIndex===e(S)))),T(Ye,(e(R),l(()=>{var me;return((me=e(R).command)==null?void 0:me.name)??""}))),T(ce,de)},[()=>(e(P),e(R),l(()=>{var de;return e(P)===((de=e(R).command)==null?void 0:de.name)?"运行中…":Re(e(R).command,e(R).disabled)}))]),N("click",Ae,()=>{e(R).command&&ge(e(R).command.name)}),N("mouseenter",Ae,()=>{e(R).selectableIndex!=null&&s(S,e(R).selectableIndex)}),b(Pe,Ae)};K(Ke,Pe=>{e(R),l(()=>e(R).type==="group")?Pe(Fe):(e(R),l(()=>e(R).type==="agent")?Pe(xe,1):(e(R),l(()=>e(R).type==="session")?Pe(Be,2):(e(R),l(()=>e(R).type==="command")&&Pe(et,3))))})}b(je,Xe)}),b(ne,ie)};K(_e,ne=>{e(L),l(()=>e(L).length===0)?ne(E):ne(Te,-1)})}var I=n(_e,2);{var Z=ne=>{var ie=Yn(),Oe=a(ie,!0);t(ie),J(()=>T(Oe,e(G))),b(ne,ie)};K(I,ne=>{e(G)&&ne(Z)})}var he=n(I,2);{var ze=ne=>{var ie=Qn(),Oe=a(ie);t(ie),J(()=>T(Oe,`ocrc v${e(H),l(()=>e(H).version)??""} · uptime ${e(H),l(()=>e(H).uptime)??""}`)),b(ne,ie)};K(he,ne=>{e(H)&&ne(ze)})}t(V),t(pe),Rt(pe,ne=>s(o,ne),()=>e(o)),t(q),N("click",U,r),N("keydown",pe,ue),b(_,q)};K(Q,_=>{X()&&_(fe)})}b(j,A),Ha(v,"close",r);var Ie=Je(De);return y(),Ie}var tr=$('<div class="empty svelte-cfrpez">正在加载 agent…</div>'),ar=$('<button type="button" role="radio"><span class="chip-tile svelte-cfrpez"> </span> <span><span class="sr-only svelte-cfrpez"> </span></span> <span class="chip-name svelte-cfrpez"> </span></button>'),sr=$('<div class="field svelte-cfrpez"><span class="label svelte-cfrpez">Agent</span> <div class="agent-chips svelte-cfrpez" role="radiogroup" aria-label="选择 agent"></div></div>'),nr=$('<button class="recent svelte-cfrpez" type="button"><span class="recent-name svelte-cfrpez"> </span> <span class="recent-dir mono svelte-cfrpez"> </span></button>'),rr=$('<div><span class="recents-label mono svelte-cfrpez"> </span> <div class="recents-list svelte-cfrpez"></div></div>'),lr=$('<div class="error svelte-cfrpez"> </div>'),or=$('<div class="overlay svelte-cfrpez"><button class="backdrop svelte-cfrpez" aria-label="关闭"></button> <div class="modal svelte-cfrpez" role="dialog" aria-modal="true" aria-label="新建会话"><div class="header svelte-cfrpez"><span class="title svelte-cfrpez">New session</span> <button class="close svelte-cfrpez" aria-label="关闭"><!></button></div> <div class="body svelte-cfrpez"><!> <div class="field svelte-cfrpez"><label class="label svelte-cfrpez" for="new-session-dir">Working directory</label> <div class="dir-input svelte-cfrpez"><span class="host-prefix mono svelte-cfrpez">host:</span> <input id="new-session-dir" class="path mono svelte-cfrpez" type="text" placeholder="/path/to/project"/> <button class="browse svelte-cfrpez" type="button" title="该 agent 最近使用的目录">最近</button></div> <!></div> <div class="field svelte-cfrpez"><label class="label svelte-cfrpez" for="new-session-branch">Branch <span class="optional svelte-cfrpez">(optional)</span></label> <input id="new-session-branch" class="branch mono svelte-cfrpez" type="text" placeholder="main"/></div> <!></div> <div class="footer svelte-cfrpez"><button class="btn secondary svelte-cfrpez" type="button">取消</button> <button class="btn primary svelte-cfrpez" type="button"> </button></div></div></div>');function ir(j,v){Ve(v,!1);const p=()=>qe(Nt,"$backends",i),z=()=>qe(vt,"$sessionList",i),B=()=>qe(zt,"$newSessionOpen",i),[i,C]=lt(),w=u(),y=u(),f=u(),x=u();let g=u(""),M=u(""),k=u(""),O=u(!1),L=u(null),D=u(!1);function X(o){const d=o.split(/[\s\-_:./]+/).filter(Boolean);return d.length>=2?(d[0][0]+d[1][0]).toUpperCase():o.slice(0,2).toUpperCase()}function te(o){return X((o==null?void 0:o.name)||(o==null?void 0:o.id)||"OC")}function Y(o){return o==="online"||o==="connected"?"online":o==="connecting"||o==="reconnecting"?"connecting":o==="offline"?"offline":"online"}function S(){zt.set(!1),s(L,null)}function G(o){s(M,o),s(D,!1)}async function P(){const o=e(M).trim();if(!o){s(L,"需要填写工作目录");return}if(!e(O)){s(O,!0),s(L,null);try{await Dt(e(g));const d=await $e.createSession({directory:o});vt.set(await $e.sessions()),Wa.set(await $e.workspaces()),S(),Xt(`/${d.id}/`)}catch(d){s(L,d.message)}finally{s(O,!1)}}}function H(o){if(o.key==="Escape"){S();return}o.key==="Tab"&&le(o)}let ve=u();function ye(o){return Array.from(o.querySelectorAll("button, input, [tabindex]")).filter(d=>!d.hasAttribute("disabled"))}function ke(o){const d=document.activeElement,r=o.querySelector("input:not([disabled])")??ye(o)[0];return r==null||r.focus(),{destroy(){var m;(m=d==null?void 0:d.focus)==null||m.call(d)}}}function le(o){if(!e(ve))return;const d=ye(e(ve));if(d.length===0)return;const r=d[0],m=d[d.length-1];o.shiftKey&&document.activeElement===r?(o.preventDefault(),m.focus()):!o.shiftKey&&document.activeElement===m&&(o.preventDefault(),r.focus())}W(()=>p(),()=>{var o;s(w,((o=p())==null?void 0:o.backends)??[])}),W(()=>(p(),e(w)),()=>{var o,d;s(y,((o=p())==null?void 0:o.activeId)??((d=e(w)[0])==null?void 0:d.id)??"opencode")}),W(()=>(e(g),e(y)),()=>{s(g,e(g)||e(y))}),W(()=>(p(),e(g)),()=>{var o,d;s(f,((d=(o=p())==null?void 0:o.backends.find(r=>r.id===e(g)))==null?void 0:d.name)??e(g))}),W(()=>(z(),e(g)),()=>{s(x,(()=>{const o=new Set,d=[];for(const r of[...z()].sort((m,ee)=>ee.lastActiveAt-m.lastActiveAt))!(r.backendId===e(g)||!r.backendId&&e(g)==="opencode")||!r.directory||o.has(r.directory)||(o.add(r.directory),d.push({directory:r.directory,name:r.directory.replace(/\/+$/,"").split("/").pop()||r.directory}));return d})())}),nt(),He();var we=xt();N("keydown",Tt,H);var h=Ze(we);{var c=o=>{var d=or(),r=a(d),m=n(r,2),ee=a(m),oe=n(a(ee),2),ge=a(oe);wt(ge,{name:"close",size:14}),t(oe),t(ee);var Se=n(ee,2),se=a(Se);{var ue=V=>{var _e=tr();b(V,_e)},Le=V=>{var _e=sr(),E=n(a(_e),2);st(E,5,()=>e(w),Te=>Te.id,(Te,I)=>{const Z=mt(()=>(re(kt),e(I),l(()=>kt(e(I).id)))),he=mt(()=>(e(I),e(g),l(()=>e(I).id===e(g))));var ze=ar();let ne;var ie=a(ze),Oe=a(ie,!0);t(ie);var je=n(ie,2),R=a(je),Xe=a(R,!0);t(R),t(je);var Ke=n(je,2),Fe=a(Ke,!0);t(Ke),t(ze),J((xe,Be,et)=>{ne=be(ze,1,"agent-chip svelte-cfrpez",null,ne,{selected:e(he)}),Ne(ze,"aria-checked",e(he)),ot(ie,`background:${re(gt),re(e(Z)),l(()=>gt[e(Z)])??""}; color:${re(at),re(e(Z)),l(()=>at[e(Z)])??""}; border-color:${re(yt),re(e(Z)),l(()=>yt[e(Z)])??""}`),T(Oe,xe),be(je,1,`chip-status ${Be??""}`,"svelte-cfrpez"),ot(je,`--dot:${re(at),re(e(Z)),l(()=>at[e(Z)])??""}`),T(Xe,et),T(Fe,(e(I),l(()=>e(I).name??e(I).id)))},[()=>(e(I),l(()=>te(e(I)))),()=>(e(I),l(()=>Y(e(I).status))),()=>(e(I),l(()=>Y(e(I).status)))]),N("click",ze,()=>{s(g,e(I).id)}),b(Te,ze)}),t(E),t(_e),b(V,_e)};K(se,V=>{e(w),l(()=>e(w).length===0)?V(ue):V(Le,-1)})}var Re=n(se,2),De=n(a(Re),2),A=n(a(De),2);pt(A);var Q=n(A,2);t(De);var fe=n(De,2);{var Ie=V=>{var _e=rr();let E;var Te=a(_e),I=a(Te);t(Te);var Z=n(Te,2);st(Z,5,()=>e(x),he=>he.directory,(he,ze)=>{var ne=nr(),ie=a(ne),Oe=a(ie,!0);t(ie);var je=n(ie,2),R=a(je,!0);t(je),t(ne),J(()=>{Ne(ne,"title",(e(ze),l(()=>e(ze).directory))),T(Oe,(e(ze),l(()=>e(ze).name))),T(R,(e(ze),l(()=>e(ze).directory)))}),N("click",ne,()=>G(e(ze).directory)),b(he,ne)}),t(Z),t(_e),J(()=>{E=be(_e,1,"recents svelte-cfrpez",null,E,{open:e(D)}),T(I,`recent · ${e(f)??""}`)}),b(V,_e)};K(fe,V=>{e(x),l(()=>e(x).length>0)&&V(Ie)})}t(Re);var _=n(Re,2),q=n(a(_),2);pt(q),t(_);var U=n(_,2);{var pe=V=>{var _e=lr(),E=a(_e,!0);t(_e),J(()=>T(E,e(L))),b(V,_e)};K(U,V=>{e(L)&&V(pe)})}t(Se);var Ce=n(Se,2),Me=a(Ce),F=n(Me,2),ae=a(F,!0);t(F),t(Ce),t(m),Rt(m,V=>s(ve,V),()=>e(ve)),Yt(m,V=>ke==null?void 0:ke(V)),t(d),J(V=>{Me.disabled=e(O),F.disabled=V,T(ae,e(O)?"Creating…":"Create")},[()=>(e(O),e(M),l(()=>e(O)||!e(M).trim()))]),N("click",r,S),N("click",oe,S),_t(A,()=>e(M),V=>s(M,V)),N("focus",A,()=>{s(D,!0)}),N("click",Q,()=>s(D,!e(D))),_t(q,()=>e(k),V=>s(k,V)),N("click",Me,S),N("click",F,P),b(o,d)};K(h,o=>{B()&&o(c)})}b(j,we),Je(),C()}var cr=$('<button><span class="ch-name"> </span> <span> </span></button>'),vr=$('<span class="note svelte-b8emeh"> </span>'),dr=$('<p class="hint svelte-b8emeh">自定义白名单已保存——用工作区切换器添加条目后再来这里勾选。</p>'),ur=$('<div class="detail svelte-b8emeh"><div class="d-hd svelte-b8emeh"><span class="d-name svelte-b8emeh"> </span> <button aria-label="启用通道"><span class="knob svelte-b8emeh"></span></button></div> <p class="note svelte-b8emeh"><!></p> <div class="sec svelte-b8emeh"><div class="sec-label svelte-b8emeh">关联凭证</div> <input class="cred mono svelte-b8emeh"/> <div class="sec-acts svelte-b8emeh"><button class="save svelte-b8emeh">保存</button> <!></div></div> <div class="sec svelte-b8emeh"><div class="sec-label svelte-b8emeh">回复粒度</div> <div class="opts svelte-b8emeh"><button>标准回复(隐藏工具过程)</button> <button>详细回复(显示工具过程)</button></div></div> <div class="sec svelte-b8emeh"><div class="sec-label svelte-b8emeh">工作区访问范围</div> <div class="opts svelte-b8emeh"><button>所有工作区</button> <button>自定义</button></div> <!></div> <div class="sec danger svelte-b8emeh"><div class="sec-label svelte-b8emeh">重置</div> <button class="reset svelte-b8emeh">恢复默认设置</button></div></div>'),pr=$("<span> </span>"),fr=$('<div class="qr-expired svelte-b8emeh"><span>二维码已过期</span> <button class="copy svelte-b8emeh">刷新二维码</button></div>'),hr=$('<div class="pair-head svelte-b8emeh"><div><div class="pair-title svelte-b8emeh">等待手机连接 <!></div> <div class="hint svelte-b8emeh">用手机扫码,或在手机上打开链接。链接 5 分钟内有效,仅可使用一次。</div></div> <button class="stop svelte-b8emeh">停止</button></div> <div><!> <!></div> <div class="pair-acts svelte-b8emeh"><span class="hint svelte-b8emeh">无法扫码?可以在手机上打开链接。</span> <span class="spacer svelte-b8emeh"></span> <button class="copy svelte-b8emeh"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M21 12a9 9 0 1 1-2.64-6.36"></path><path d="M21 3v6h-6"></path></svg> 刷新二维码</button> <button class="copy svelte-b8emeh"> </button></div>',1),br=$('<div class="pair-stopped svelte-b8emeh"><span>已停止配对。</span> <button class="copy svelte-b8emeh">重新开始</button></div>'),_r=$('<p class="hint svelte-b8emeh">配对信息加载中…</p>'),mr=$('<div class="overlay svelte-b8emeh"><button class="backdrop svelte-b8emeh" aria-label="关闭"></button> <div class="modal svelte-b8emeh" role="dialog" aria-modal="true" aria-label="机器人与通道" tabindex="-1"><div class="header svelte-b8emeh"><span class="title svelte-b8emeh">🤖 机器人 · 通道</span> <button class="close svelte-b8emeh" aria-label="关闭">✕</button></div> <div class="cols svelte-b8emeh"><div class="list svelte-b8emeh"></div> <!></div> <div class="pair svelte-b8emeh"><!></div></div></div>');function gr(j,v){Ve(v,!1);const p=()=>qe(Ht,"$channelsOpen",z),[z,B]=lt(),i=u(),C=u(),w=u(),y=u();let f=u([]),x=u(),g=u(null),M=u(""),k=u(""),O=u(!1),L=u(Date.now()),D=u(!1),X;async function te(){try{s(f,(await $e.channels()).channels??[]),!e(x)&&e(f).length>0&&s(x,e(f)[0].id)}catch{}}async function Y(){s(D,!1);try{s(g,await $e.pairQr())}catch{s(g,null)}}function S(){s(D,!0)}va(()=>{te(),Y(),X=setInterval(()=>s(L,Date.now()),1e3)}),ca(()=>{X&&clearInterval(X)});function G(r){return r==="telegram"?"Telegram":r==="wechat"?"微信":r==="lark"?"Lark":r}function P(){Ht.set(!1)}function H(r){s(x,r),s(M,""),s(k,"")}async function ve(r){s(f,e(f).map(m=>m.id===r.id?{...m,enabled:!m.enabled}:m));try{await $e.updateChannel(r.id,{enabled:!r.enabled})}catch{}}async function ye(r,m){s(f,e(f).map(ee=>ee.id===r.id?{...ee,replyGranularity:m}:ee));try{await $e.updateChannel(r.id,{replyGranularity:m})}catch{}}async function ke(r){if(!e(M).trim()){s(k,"请输入凭证内容");return}try{await $e.updateChannel(r.id,{credentials:{token:e(M).trim()}}),s(k,"已保存——重启实例后生效"),s(M,"")}catch{s(k,"保存失败")}}async function le(){if(e(i)){try{await $e.resetChannel(e(i).id)}catch{}await te()}}async function we(){if(e(g))try{await navigator.clipboard.writeText(e(g).url),s(O,!0),setTimeout(()=>s(O,!1),1600)}catch{}}function h(r){r.key==="Escape"&&P()}W(()=>(e(f),e(x)),()=>{s(i,e(f).find(r=>r.id===e(x))??e(f)[0])}),W(()=>(e(g),e(L)),()=>{var r;s(C,(r=e(g))!=null&&r.expiresAt?Math.max(0,e(g).expiresAt-e(L)):null)}),W(()=>e(C),()=>{s(w,e(C)!==null&&e(C)<=0)}),W(()=>e(C),()=>{s(y,e(C)===null?"":`${Math.floor(e(C)/6e4)}:${String(Math.floor(e(C)%6e4/1e3)).padStart(2,"0")}`)}),nt(),He();var c=xt();N("keydown",Tt,h);var o=Ze(c);{var d=r=>{var m=mr(),ee=a(m),oe=n(ee,2),ge=a(oe),Se=n(a(ge),2);t(ge);var se=n(ge,2),ue=a(se);st(ue,5,()=>e(f),_=>_.id,(_,q)=>{var U=cr();let pe;var Ce=a(U),Me=a(Ce,!0);t(Ce);var F=n(Ce,2);let ae;var V=a(F,!0);t(F),t(U),J(_e=>{var E;pe=be(U,1,"ch svelte-b8emeh",null,pe,{sel:((E=e(i))==null?void 0:E.id)===e(q).id}),T(Me,_e),ae=be(F,1,"ch-state svelte-b8emeh",null,ae,{on:e(q).enabled}),T(V,(e(q),l(()=>e(q).enabled?"已启用":"已停用")))},[()=>(e(q),l(()=>G(e(q).channel)))]),N("click",U,()=>H(e(q).id)),b(_,U)}),t(ue);var Le=n(ue,2);{var Re=_=>{var q=ur(),U=a(q),pe=a(U),Ce=a(pe,!0);t(pe);var Me=n(pe,2);let F;t(U);var ae=n(U,2),V=a(ae);{var _e=ce=>{var de=Pt();J(()=>T(de,`${e(i),l(()=>{var me;return(me=e(i).live)!=null&&me.connected?"轮询运行中":"未在轮询"})??""}${e(i),l(()=>{var me;return(me=e(i).live)!=null&&me.username?` · @${e(i).live.username}`:""})??""}。
3
3
  停用/启用在重启实例后生效。`)),b(ce,de)},E=ce=>{var de=Pt("待接入:凭证保存后,通道本体在后续版本启用。");b(ce,de)};K(V,ce=>{e(i),l(()=>e(i).channel==="telegram")?ce(_e):ce(E,-1)})}t(ae);var Te=n(ae,2),I=n(a(Te),2);pt(I);var Z=n(I,2),he=a(Z),ze=n(he,2);{var ne=ce=>{var de=vr(),me=a(de,!0);t(de),J(()=>T(me,e(k))),b(ce,de)};K(ze,ce=>{e(k)&&ce(ne)})}t(Z),t(Te);var ie=n(Te,2),Oe=n(a(ie),2),je=a(Oe);let R;var Xe=n(je,2);let Ke;t(Oe),t(ie);var Fe=n(ie,2),xe=n(a(Fe),2),Be=a(xe);let et;var Pe=n(Be,2);let Ae;t(xe);var We=n(xe,2);{var Ue=ce=>{var de=dr();b(ce,de)};K(We,ce=>{e(i),l(()=>e(i).workspaces.mode==="custom")&&ce(Ue)})}t(Fe);var Ye=n(Fe,2),Qe=n(a(Ye),2);t(Ye),t(q),J(ce=>{T(Ce,ce),F=be(Me,1,"switch svelte-b8emeh",null,F,{on:e(i).enabled}),Ne(Me,"aria-pressed",(e(i),l(()=>e(i).enabled))),Ne(I,"placeholder",(e(i),l(()=>e(i).channel==="telegram"?"BotFather token(留空保持不变)":"凭证(预留)"))),R=be(je,1,"opt svelte-b8emeh",null,R,{sel:e(i).replyGranularity==="standard"}),Ke=be(Xe,1,"opt svelte-b8emeh",null,Ke,{sel:e(i).replyGranularity==="detailed"}),et=be(Be,1,"opt svelte-b8emeh",null,et,{sel:e(i).workspaces.mode==="all"}),Ae=be(Pe,1,"opt svelte-b8emeh",null,Ae,{sel:e(i).workspaces.mode==="custom"})},[()=>(e(i),l(()=>G(e(i).channel)))]),N("click",Me,()=>ve(e(i))),_t(I,()=>e(M),ce=>s(M,ce)),N("click",he,()=>ke(e(i))),N("click",je,()=>ye(e(i),"standard")),N("click",Xe,()=>ye(e(i),"detailed")),N("click",Be,()=>$e.updateChannel(e(i).id,{workspaces:{mode:"all"}}).then(te)),N("click",Pe,()=>$e.updateChannel(e(i).id,{workspaces:{mode:"custom",dirs:[]}}).then(te)),N("click",Qe,le),b(_,q)};K(Le,_=>{e(i)&&_(Re)})}t(se);var De=n(se,2),A=a(De);{var Q=_=>{var q=hr(),U=Ze(q),pe=a(U),Ce=a(pe),Me=n(a(Ce));{var F=ie=>{var Oe=pr();let je;var R=a(Oe,!0);t(Oe),J(()=>{je=be(Oe,1,"cd mono svelte-b8emeh",null,je,{expired:e(w)}),T(R,e(w)?"已过期":`· ${e(y)}`)}),b(ie,Oe)};K(Me,ie=>{e(C)!==null&&ie(F)})}t(Ce),bt(2),t(pe);var ae=n(pe,2);t(U);var V=n(U,2);let _e;var E=a(V);Fa(E,()=>(e(g),l(()=>e(g).svg)));var Te=n(E,2);{var I=ie=>{var Oe=fr(),je=n(a(Oe),2);t(Oe),N("click",je,Y),b(ie,Oe)};K(Te,ie=>{e(w)&&ie(I)})}t(V);var Z=n(V,2),he=n(a(Z),4),ze=n(he,2),ne=a(ze,!0);t(ze),t(Z),J(()=>{_e=be(V,1,"qr-big svelte-b8emeh",null,_e,{dim:e(w)}),T(ne,e(O)?"✓ 已复制":"复制链接")}),N("click",ae,S),N("click",he,Y),N("click",ze,we),b(_,q)},fe=_=>{var q=br(),U=n(a(q),2);t(q),N("click",U,Y),b(_,q)},Ie=_=>{var q=_r();b(_,q)};K(A,_=>{e(g)&&!e(D)?_(Q):e(D)?_(fe,1):_(Ie,-1)})}t(De),t(oe),t(m),N("click",ee,P),N("click",Se,P),N("click",oe,Ka(function(_){Va.call(this,v,_)})),N("click",m,P),b(r,m)};K(o,r=>{p()&&r(d)})}b(j,c),Je(),B()}var yr=$('<div class="overlay svelte-1r7zhoh"><button class="backdrop svelte-1r7zhoh" aria-label="Close"></button> <div class="menu svelte-1r7zhoh" role="menu" aria-label="New actions"><button class="item svelte-1r7zhoh" role="menuitem"><span class="icon svelte-1r7zhoh" aria-hidden="true">+</span> <span class="label svelte-1r7zhoh">New session</span></button> <button class="item svelte-1r7zhoh" role="menuitem"><span class="icon svelte-1r7zhoh" aria-hidden="true"><!></span> <span class="label svelte-1r7zhoh">Command palette</span> <kbd class="keycap mono svelte-1r7zhoh">⌘K</kbd></button></div></div>');function kr(j,v){Ve(v,!1);const p=()=>qe(It,"$plusMenuOpen",z),[z,B]=lt();let i=Ee(v,"anchor",8,null);function C(){It.set(!1),zt.set(!0)}function w(){It.set(!1),St.set(!0)}function y(){It.set(!1)}function f(k){k.key==="Escape"&&y()}He();var x=xt();N("keydown",Tt,f);var g=Ze(x);{var M=k=>{var O=yr(),L=a(O),D=n(L,2),X=a(D),te=n(X,2),Y=a(te),S=a(Y);wt(S,{name:"search",size:14}),t(Y),bt(4),t(te),t(D),t(O),J(G=>ot(D,G),[()=>(re(i()),l(()=>i()?`top:${i().getBoundingClientRect().bottom+6}px; left:${i().getBoundingClientRect().left}px`:""))]),N("click",L,y),N("click",X,C),N("click",te,w),b(k,O)};K(g,k=>{p()&&k(M)})}b(j,x),Je(),B()}var wr=$('<button class="scrim svelte-9zfapn" aria-label="Close"></button>'),xr=$('<button class="dial-item svelte-9zfapn" role="menuitem"><span class="dial-label mono svelte-9zfapn"> </span> <span class="dial-icon svelte-9zfapn" aria-hidden="true"> </span></button>'),$r=$('<div class="dial svelte-9zfapn" role="menu"></div>'),Ir=$('<div><!> <!> <button><span aria-hidden="true">+</span></button></div>');function Sr(j,v){Ve(v,!1);let p=u(!1);const z=()=>s(p,!e(p)),B=()=>s(p,!1),i=[{label:"新建会话",icon:"+",run:()=>zt.set(!0)},{label:"搜索与命令",icon:"⌕",run:()=>St.set(!0)}];function C(D){D.run(),B()}function w(D){D.key==="Escape"&&e(p)&&B()}He();var y=Ir();N("keydown",Tt,w);let f;var x=a(y);{var g=D=>{var X=wr();N("click",X,B),b(D,X)};K(x,D=>{e(p)&&D(g)})}var M=n(x,2);{var k=D=>{var X=$r();st(X,5,()=>i,te=>te.label,(te,Y)=>{var S=xr(),G=a(S),P=a(G,!0);t(G);var H=n(G,2),ve=a(H,!0);t(H),t(S),J(()=>{T(P,e(Y).label),T(ve,e(Y).icon)}),N("click",S,()=>C(e(Y))),b(te,S)}),t(X),b(D,X)};K(M,D=>{e(p)&&D(k)})}var O=n(M,2);let L;t(y),J(()=>{f=be(y,1,"fab-root svelte-9zfapn",null,f,{open:e(p)}),L=be(O,1,"fab svelte-9zfapn",null,L,{rot:e(p)}),Ne(O,"aria-label",e(p)?"关闭菜单":"快捷操作"),Ne(O,"aria-expanded",e(p))}),N("click",O,z),b(j,y),Je()}var zr=$('<p class="rejected svelte-9s687p">上一次的令牌被服务器拒绝了——请在下方重新配对。</p>'),Ar=$('<p class="rejected svelte-9s687p"> </p>'),qr=$('<div class="err svelte-9s687p"> </div>'),Cr=$('<div class="gate svelte-9s687p"><div class="card svelte-9s687p"><div class="brand svelte-9s687p"><b>ocrc</b></div> <h1 class="svelte-9s687p">配对此设备</h1> <!> <!> <p class="svelte-9s687p">In Telegram, send <code class="svelte-9s687p">/pair</code> to your bot, then paste the <strong>link</strong> (or token) below.</p> <input class="field mono svelte-9s687p" placeholder="粘贴配对令牌或链接…" aria-label="配对令牌或链接" autocapitalize="off" autocorrect="off" spellcheck="false"/> <!> <button class="connect svelte-9s687p">连接</button> <p class="hint svelte-9s687p">令牌只保存在本设备上。</p></div></div>');function Tr(j,v){Ve(v,!1);const p=()=>qe(ka,"$pairHint",z),[z,B]=lt();let i=Ee(v,"status",8,"pairing"),C=u(""),w=u("");function y(S){const G=S.trim(),P=G.match(/token=([^&#\s]+)/);return P?decodeURIComponent(P[1]):G}async function f(){if(s(w,""),/[?#]pair=/.test(e(C))){s(w,await wa(e(C)));return}const S=y(e(C));if(!S||S.length<16){s(w,"这看起来不是有效的令牌。");return}xa(S)||s(w,"这看起来不是有效的令牌。")}He();var x=Cr(),g=a(x),M=n(a(g),4);{var k=S=>{var G=zr();b(S,G)};K(M,S=>{i()==="rejected"&&S(k)})}var O=n(M,2);{var L=S=>{var G=Ar(),P=a(G,!0);t(G),J(()=>T(P,p())),b(S,G)};K(O,S=>{p()&&S(L)})}var D=n(O,4);pt(D);var X=n(D,2);{var te=S=>{var G=qr(),P=a(G,!0);t(G),J(()=>T(P,e(w))),b(S,G)};K(X,S=>{e(w)&&S(te)})}var Y=n(X,2);bt(2),t(g),t(x),J(S=>Y.disabled=S,[()=>(e(C),l(()=>!e(C).trim()))]),_t(D,()=>e(C),S=>s(C,S)),N("keydown",D,S=>S.key==="Enter"&&f()),N("click",Y,f),b(j,x),Je(),B()}var Er=$('<button class="backdrop svelte-12qhfyh" aria-label="Close"></button>'),Lr=$('<div class="app svelte-12qhfyh"><!> <!> <div class="body svelte-12qhfyh"><!> <div><!></div> <main class="svelte-12qhfyh"><!></main> <div><!></div></div></div> <!> <!> <!> <!> <!> <!>',1);function Wr(j,v){Ve(v,!1);const p=()=>qe(ua,"$page",y),z=()=>qe(Nt,"$backends",y),B=()=>qe(jt,"$inspectorOpen",y),i=()=>qe(Vt,"$leftPanelOpen",y),C=()=>qe(St,"$paletteOpen",y),w=()=>qe(Kt,"$auth",y),[y,f]=lt(),x=u();let g=u(!1),M=u(!1),k=u(),O=u(null);function L(){s(g,!1),jt.set(!1)}function D(){s(g,!e(g)),jt.set(!1)}function X(){jt.update(F=>!F),s(g,!1)}function te(F){if((F.metaKey||F.ctrlKey)&&F.key.toLowerCase()==="k"){F.preventDefault(),St.set(!0);return}if(F.key==="Escape"){if(At(It)){It.set(!1);return}if(At(zt)){zt.set(!1);return}L()}}let Y=u(""),S=null,G=u(null);async function P(){e(G)&&(e(G).prompt(),await e(G).userChoice,s(G,null))}let H=null,ve=!1,ye=0,ke;async function le(F){if(!(ve||Date.now()-ye<2e3)){ve=!0,ye=Date.now();try{const{cards:ae,lastSeq:V}=await $e.history(F);na.set(!0),Ft(F,ae,V),setTimeout(()=>na.set(!1),350),S==null||S.send({type:"subscribe",sessionId:F,sinceSeq:V})}catch(ae){console.warn("[layout] resync failed",ae)}finally{ve=!1}}}function we(F){var V,_e;if(At(Kt)!=="ready")return;if(Sa.set(F),es(F),!F){ta(void 0),H=null;return}ta(F);const ae=!((_e=(V=At(qt)[F])==null?void 0:V.order)!=null&&_e.length);F===H&&!ae||(H=F,$e.history(F).then(({cards:E,lastSeq:Te})=>{Ft(F,E,Te),S==null||S.send({type:"subscribe",sessionId:F,sinceSeq:Te})}).catch(E=>{console.warn("[layout] history failed",E),Ft(F,[],0),S==null||S.send({type:"subscribe",sessionId:F})}))}function h(){S&&(S.close(),S=null),$e.me().then(ae=>{s(Y,ae.email)}).catch(()=>{}),$e.sessions().then(ae=>{vt.set(ae)}).catch(()=>{}),$a(),Ia();const F=location.protocol==="https:"?"wss:":"ws:";S=Za({url:`${F}//${location.host}/ws`,onReconnect:()=>{var ae;if(H){const V=((ae=At(qt)[H])==null?void 0:ae.lastSeq)??0;S==null||S.send({type:"subscribe",sessionId:H,sinceSeq:V})}},onMessage:ae=>{var V;if(ae.type==="card"&&ae.card){const _e=ae.card.sessionId,E=_e?((V=At(qt)[_e])==null?void 0:V.lastSeq)??0:0;za(ae.card),_e&&Aa(E,ae.card)&&(clearTimeout(ke),ke=setTimeout(()=>{le(_e)},500))}(ae.type==="hello"||ae.type==="sessions")&&ae.sessions&&(vt.set(ae.sessions),ts(ae.sessions)),ae.type==="replayEnd"&&ae.complete===!1&&typeof ae.sessionId=="string"&&le(ae.sessionId)}}),we(p().params.sessionId)}va(()=>{const F=Kt.subscribe(ie=>{ie==="ready"&&h()}),ae=ie=>{ie.preventDefault(),s(G,ie)};window.addEventListener("beforeinstallprompt",ae);const V=window.matchMedia("(max-width: 820px)");s(M,V.matches);const _e=ie=>{s(M,ie.matches),ie.matches||L()};V.addEventListener("change",_e);const E=window.visualViewport,Te=()=>{!E||!e(k)||(window.scrollY!==0&&window.scrollTo(0,0),aa(k,e(k).style.height=`${Math.round(E.height)}px`),aa(k,e(k).style.transform=E.offsetTop>0?`translateY(${Math.round(E.offsetTop)}px)`:""))};Te(),E==null||E.addEventListener("resize",Te),E==null||E.addEventListener("scroll",Te);const I=()=>setTimeout(Te,300);window.addEventListener("orientationchange",I);let Z=0,he=0;const ze=()=>{Te(),Date.now()<Z?he=requestAnimationFrame(ze):he=0},ne=()=>{Z=Date.now()+650,he||(he=requestAnimationFrame(ze))};return window.addEventListener("focusin",ne),window.addEventListener("focusout",ne),()=>{F(),window.removeEventListener("beforeinstallprompt",ae),V.removeEventListener("change",_e),E==null||E.removeEventListener("resize",Te),E==null||E.removeEventListener("scroll",Te),window.removeEventListener("focusin",ne),window.removeEventListener("focusout",ne),window.removeEventListener("orientationchange",I),he&&cancelAnimationFrame(he),clearTimeout(ke),S==null||S.close()}}),Ua(F=>{var ae,V;L(),we((V=(ae=F.to)==null?void 0:ae.params)==null?void 0:V.sessionId)}),W(()=>(z(),Gt),()=>{z()&&typeof document<"u"&&Gt(z().activeId)}),W(()=>p(),()=>{s(x,!!p().params.sessionId)}),nt(),He();var c=Lr();N("keydown",Tt,te);var o=Ze(c),d=a(o);{var r=F=>{ls(F,{get email(){return e(Y)},onPalette:()=>St.set(!0),get installEvent(){return e(G)},onInstall:P,get drawerLeft(){return e(g)},get drawerRight(){return B()},onToggleLeft:D,onToggleRight:X,get newButtonAnchor(){return e(O)},set newButtonAnchor(ae){s(O,ae)},$$legacy:!0})};K(d,F=>{e(M)&&e(x)||F(r)})}var m=n(d,2);is(m);var ee=n(m,2),oe=a(ee);{var ge=F=>{var ae=Er();N("click",ae,L),b(F,ae)};K(oe,F=>{(e(g)||B())&&F(ge)})}var Se=n(oe,2);let se;var ue=a(Se);Os(ue,{get activeId(){return p(),l(()=>p().params.sessionId)},get drawer(){return e(M)}}),t(Se);var Le=n(Se,2),Re=a(Le);Ga(Re,v,"default",{}),t(Le);var De=n(Le,2);let A;var Q=a(De);Fn(Q,{get sessionId(){return p(),l(()=>p().params.sessionId)}}),t(De),t(ee),t(o),Rt(o,F=>s(k,F),()=>e(k));var fe=n(o,2);er(fe,{get open(){return C()},$$events:{close:()=>St.set(!1)}});var Ie=n(fe,2);kr(Ie,{get anchor(){return e(O)}});var _=n(Ie,2);ir(_,{});var q=n(_,2);gr(q,{});var U=n(q,2);{var pe=F=>{Sr(F,{})};K(U,F=>{e(x)||F(pe)})}var Ce=n(U,2);{var Me=F=>{{let ae=mt(()=>w()==="rejected"?"rejected":"pairing");Tr(F,{get status(){return e(ae)}})}};K(Ce,F=>{w()!=="ready"&&F(Me)})}J(()=>{se=be(Se,1,"rail-wrap svelte-12qhfyh",null,se,{collapsed:!i()&&!e(M),open:e(g)||e(M)&&!e(x)}),A=be(De,1,"inspector-wrap svelte-12qhfyh",null,A,{open:B()})}),b(j,c),Je(),f()}export{Wr as component,Rr as universal};
@@ -1 +1 @@
1
- import"../chunks/CWj6FrbW.js";import{aE as f,a4 as g,a$ as v,w as d,aB as l,a6 as _,J as s,aK as o,aU as x,aR as p}from"../chunks/BjY4dxcB.js";import{b as $,p as c}from"../chunks/C_8ke_Oe.js";const b={get error(){return c.error},get status(){return c.status}};$.updated.check;const m=b;var k=_("<h1> </h1> <p> </p>",1);function J(n,u){f(u,!0);var t=k(),a=g(t),h=s(a,!0);o(a);var r=x(a,2),i=s(r,!0);o(r),v(()=>{var e;p(h,m.status),p(i,(e=m.error)==null?void 0:e.message)}),d(n,t),l()}export{J as component};
1
+ import"../chunks/CWj6FrbW.js";import{aE as f,a4 as g,a$ as v,w as d,aB as l,a6 as _,J as s,aK as o,aU as x,aR as p}from"../chunks/BjY4dxcB.js";import{b as $,p as c}from"../chunks/9FNwjwpR.js";const b={get error(){return c.error},get status(){return c.status}};$.updated.check;const m=b;var k=_("<h1> </h1> <p> </p>",1);function J(n,u){f(u,!0);var t=k(),a=g(t),h=s(a,!0);o(a);var r=x(a,2),i=s(r,!0);o(r),v(()=>{var e;p(h,m.status),p(i,(e=m.error)==null?void 0:e.message)}),d(n,t),l()}export{J as component};
@@ -1 +1 @@
1
- import"../chunks/CWj6FrbW.js";import{r as y,j as I,z as N,i as L}from"../chunks/COhEGSJl.js";import{aE as B,ap as d,aq as M,w as l,aB as O,a8 as t,a6 as S,aO as p,J as j,b4 as q,aK as z,au as m,b0 as _,a$ as E,aR as J}from"../chunks/BjY4dxcB.js";import{i as K,s as R,a as f}from"../chunks/DIEDQ_hk.js";import{g as b}from"../chunks/C_8ke_Oe.js";var C=S('<div class="empty svelte-1uha8ag"><!></div>');function Q(g,$){B($,!1);const v=()=>f(I,"$backends",c),s=()=>f(N,"$sessionList",c),h=()=>f(L,"$backendName",c),[c,k]=R(),o=m(),i=m(),u=window.matchMedia("(max-width: 820px)").matches;let n=m(!1);d(()=>v(),()=>{var e;p(o,(e=v())==null?void 0:e.activeId)}),d(()=>(t(o),s()),()=>{p(i,t(o)?s().filter(e=>e.backendId===t(o)||!e.backendId&&t(o)==="opencode").sort((e,a)=>a.lastActiveAt-e.lastActiveAt):[...s()].sort((e,a)=>a.lastActiveAt-e.lastActiveAt))}),d(()=>(t(n),t(i),b),()=>{!t(n)&&!u&&t(i).length>0&&(p(n,!0),b(`/${t(i)[0].id}/`,{replaceState:!0}))}),M(),y();var r=C(),A=j(r);{var x=e=>{var a=_();E(()=>J(a,`No sessions yet — create one to start chatting with ${h()??""}.`)),l(e,a)},w=e=>{var a=_("Opening latest session…");l(e,a)};K(A,e=>{s(),q(()=>s().length===0)?e(x):e(w,-1)})}z(r),l(g,r),O(),k()}export{Q as component};
1
+ import"../chunks/CWj6FrbW.js";import{r as y,j as I,z as N,i as L}from"../chunks/COhEGSJl.js";import{aE as B,ap as d,aq as M,w as l,aB as O,a8 as t,a6 as S,aO as p,J as j,b4 as q,aK as z,au as m,b0 as _,a$ as E,aR as J}from"../chunks/BjY4dxcB.js";import{i as K,s as R,a as f}from"../chunks/DIEDQ_hk.js";import{g as b}from"../chunks/9FNwjwpR.js";var C=S('<div class="empty svelte-1uha8ag"><!></div>');function Q(g,$){B($,!1);const v=()=>f(I,"$backends",c),s=()=>f(N,"$sessionList",c),h=()=>f(L,"$backendName",c),[c,k]=R(),o=m(),i=m(),u=window.matchMedia("(max-width: 820px)").matches;let n=m(!1);d(()=>v(),()=>{var e;p(o,(e=v())==null?void 0:e.activeId)}),d(()=>(t(o),s()),()=>{p(i,t(o)?s().filter(e=>e.backendId===t(o)||!e.backendId&&t(o)==="opencode").sort((e,a)=>a.lastActiveAt-e.lastActiveAt):[...s()].sort((e,a)=>a.lastActiveAt-e.lastActiveAt))}),d(()=>(t(n),t(i),b),()=>{!t(n)&&!u&&t(i).length>0&&(p(n,!0),b(`/${t(i)[0].id}/`,{replaceState:!0}))}),M(),y();var r=C(),A=j(r);{var x=e=>{var a=_();E(()=>J(a,`No sessions yet — create one to start chatting with ${h()??""}.`)),l(e,a)},w=e=>{var a=_("Opening latest session…");l(e,a)};K(A,e=>{s(),q(()=>s().length===0)?e(x):e(w,-1)})}z(r),l(g,r),O(),k()}export{Q as component};
@@ -1,4 +1,4 @@
1
- var Yr=Object.defineProperty;var Xr=(s,t,n)=>t in s?Yr(s,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):s[t]=n;var ze=(s,t,n)=>Xr(s,typeof t!="symbol"?t+"":t,n);import"../chunks/CWj6FrbW.js";import{r as Ye,f as He,k as ts,i as Vr,F as Qr,y as Jr,j as ea,z as Mn,e as ta,a as ms,b as vs,c as bs,B as na,p as er,l as sa,w as ra}from"../chunks/COhEGSJl.js";import{aE as Xe,M as Ft,a4 as Je,w as L,aB as Ve,V as fe,b4 as T,J as m,aK as h,a$ as J,a8 as e,aR as Q,a3 as ie,aU as R,a6 as P,aw as un,aO as p,au as A,ay as dn,ap as X,aq as ht,b5 as _n,Q as aa,az as ns,$ as Wt,b2 as tr,av as Zt,b1 as Cn,aI as ia,b0 as oa,a7 as la,Z as ca}from"../chunks/BjY4dxcB.js";import{i as se,a as ct,s as xn}from"../chunks/DIEDQ_hk.js";import{h as ut,w as nr,I as rt,u as je,v as et,j as sr,k as Xt,t as ua,x as da,c as fa,e as Vn,g as pa,f as rr,q as ga,s as ha,C as _s,a as ma,z as va,y as ba,l as ar,p as _a,n as Es,i as Ea}from"../chunks/Cf5UwiSA.js";import{p as Me,b as Mt}from"../chunks/C2FuqD3s.js";import{g as Ln}from"../chunks/C_8ke_Oe.js";var ya=P('<button class="chip svelte-1hbn5f9" role="listitem"> </button>'),ka=P('<div class="suggestions svelte-1hbn5f9" role="list" aria-label="建议的后续操作"><!> <button class="dismiss svelte-1hbn5f9" aria-label="忽略建议"><!></button></div>');function wa(s,t){Xe(t,!1);let n=Me(t,"suggestions",24,()=>[]),r=Me(t,"onPick",8,()=>{}),a=Me(t,"onDismiss",8,()=>{});Ye();var o=Ft(),i=Je(o);{var l=c=>{var d=ka(),f=m(d);ut(f,3,n,E=>E,(E,I,B)=>{var _=ya(),k=m(_,!0);h(_),J(z=>{nr(_,z),Q(k,e(I))},[()=>(fe(e(B)),T(()=>`animation-delay: ${Math.min(e(B),5)*45}ms`))]),ie("click",_,()=>r()(e(I))),L(E,_)});var g=R(f,2),b=m(g);rt(b,{name:"close",size:12}),h(g),h(d),ie("click",g,function(...E){var I;(I=a())==null||I.apply(this,E)}),L(c,d)};se(i,c=>{fe(n()),T(()=>n().length>0)&&c(l)})}L(s,o),Ve()}var xa=P('<div class="card user svelte-2ec03f"> </div>');function Ta(s,t){Xe(t,!1);let n=Me(t,"card",8);Ye();var r=xa(),a=m(r,!0);h(r),J(()=>Q(a,(fe(n()),T(()=>n().text)))),L(s,r),Ve()}var Aa=P('<button class="stop svelte-1n9pz5q">Stop</button>'),Sa=P('<div class="thinking-row svelte-1n9pz5q"><span class="toggle mono svelte-1n9pz5q"><span class="caret svelte-1n9pz5q" aria-hidden="true"><!></span> reasoning</span> <!></div>');function Ra(s,t){Xe(t,!1);let n=Me(t,"card",8);Ye();var r=Sa(),a=m(r),o=m(a),i=m(o);rt(i,{name:"caret-right",size:11}),h(o),un(),h(a);var l=R(a,2);{var c=d=>{var f=Aa();ie("click",f,()=>He.abort(n().sessionId)),L(d,f)};se(l,d=>{fe(n()),T(()=>n().showStop)&&d(c)})}h(r),L(s,r),Ve()}var Na=P('<div class="body mono svelte-z2jsf2"><pre class="svelte-z2jsf2"> </pre></div>'),Oa=P('<button class="toggle mono svelte-z2jsf2"><span aria-hidden="true"><!></span> reasoning</button> <!>',1);function Ia(s,t){Xe(t,!1);let n=Me(t,"card",8),r=A(!1);Ye();var a=Oa(),o=Je(a),i=m(o);let l;var c=m(i);rt(c,{name:"caret-right",size:11}),h(i),un(),h(o);var d=R(o,2);{var f=g=>{var b=Na(),E=m(b),I=m(E,!0);h(E),h(b),J(()=>Q(I,(fe(n()),T(()=>n().thinkingText)))),L(g,b)};se(d,g=>{e(r)&&g(f)})}J(()=>{je(o,"aria-expanded",e(r)),l=et(i,1,"caret svelte-z2jsf2",null,l,{open:e(r)})}),ie("click",o,()=>p(r,!e(r))),L(s,a),Ve()}function ss(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}let Qt=ss();function ir(s){Qt=s}const or=/[&<>"']/,Ma=new RegExp(or.source,"g"),lr=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,Ca=new RegExp(lr.source,"g"),La={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},ys=s=>La[s];function Tt(s,t){if(t){if(or.test(s))return s.replace(Ma,ys)}else if(lr.test(s))return s.replace(Ca,ys);return s}const Da=/(^|[^\[])\^/g;function Pe(s,t){let n=typeof s=="string"?s:s.source;t=t||"";const r={replace:(a,o)=>{let i=typeof o=="string"?o:o.source;return i=i.replace(Da,"$1"),n=n.replace(a,i),r},getRegex:()=>new RegExp(n,t)};return r}function ks(s){try{s=encodeURI(s).replace(/%25/g,"%")}catch{return null}return s}const En={exec:()=>null};function ws(s,t){const n=s.replace(/\|/g,(o,i,l)=>{let c=!1,d=i;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),r=n.split(/ \|/);let a=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length<t;)r.push("");for(;a<r.length;a++)r[a]=r[a].trim().replace(/\\\|/g,"|");return r}function hn(s,t,n){const r=s.length;if(r===0)return"";let a=0;for(;a<r&&s.charAt(r-a-1)===t;)a++;return s.slice(0,r-a)}function $a(s,t){if(s.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<s.length;r++)if(s[r]==="\\")r++;else if(s[r]===t[0])n++;else if(s[r]===t[1]&&(n--,n<0))return r;return-1}function xs(s,t,n,r){const a=t.href,o=t.title?Tt(t.title):null,i=s[1].replace(/\\([\[\]])/g,"$1");if(s[0].charAt(0)!=="!"){r.state.inLink=!0;const l={type:"link",raw:n,href:a,title:o,text:i,tokens:r.inlineTokens(i)};return r.state.inLink=!1,l}return{type:"image",raw:n,href:a,title:o,text:Tt(i)}}function Pa(s,t){const n=s.match(/^(\s+)(?:```)/);if(n===null)return t;const r=n[1];return t.split(`
1
+ var Yr=Object.defineProperty;var Xr=(s,t,n)=>t in s?Yr(s,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):s[t]=n;var ze=(s,t,n)=>Xr(s,typeof t!="symbol"?t+"":t,n);import"../chunks/CWj6FrbW.js";import{r as Ye,f as He,k as ts,i as Vr,F as Qr,y as Jr,j as ea,z as Mn,e as ta,a as ms,b as vs,c as bs,B as na,p as er,l as sa,w as ra}from"../chunks/COhEGSJl.js";import{aE as Xe,M as Ft,a4 as Je,w as L,aB as Ve,V as fe,b4 as T,J as m,aK as h,a$ as J,a8 as e,aR as Q,a3 as ie,aU as R,a6 as P,aw as un,aO as p,au as A,ay as dn,ap as X,aq as ht,b5 as _n,Q as aa,az as ns,$ as Wt,b2 as tr,av as Zt,b1 as Cn,aI as ia,b0 as oa,a7 as la,Z as ca}from"../chunks/BjY4dxcB.js";import{i as se,a as ct,s as xn}from"../chunks/DIEDQ_hk.js";import{h as ut,w as nr,I as rt,u as je,v as et,j as sr,k as Xt,t as ua,x as da,c as fa,e as Vn,g as pa,f as rr,q as ga,s as ha,C as _s,a as ma,z as va,y as ba,l as ar,p as _a,n as Es,i as Ea}from"../chunks/CEn8-WG3.js";import{p as Me,b as Mt}from"../chunks/C2FuqD3s.js";import{g as Ln}from"../chunks/9FNwjwpR.js";var ya=P('<button class="chip svelte-1hbn5f9" role="listitem"> </button>'),ka=P('<div class="suggestions svelte-1hbn5f9" role="list" aria-label="建议的后续操作"><!> <button class="dismiss svelte-1hbn5f9" aria-label="忽略建议"><!></button></div>');function wa(s,t){Xe(t,!1);let n=Me(t,"suggestions",24,()=>[]),r=Me(t,"onPick",8,()=>{}),a=Me(t,"onDismiss",8,()=>{});Ye();var o=Ft(),i=Je(o);{var l=c=>{var d=ka(),f=m(d);ut(f,3,n,E=>E,(E,I,B)=>{var _=ya(),k=m(_,!0);h(_),J(z=>{nr(_,z),Q(k,e(I))},[()=>(fe(e(B)),T(()=>`animation-delay: ${Math.min(e(B),5)*45}ms`))]),ie("click",_,()=>r()(e(I))),L(E,_)});var g=R(f,2),b=m(g);rt(b,{name:"close",size:12}),h(g),h(d),ie("click",g,function(...E){var I;(I=a())==null||I.apply(this,E)}),L(c,d)};se(i,c=>{fe(n()),T(()=>n().length>0)&&c(l)})}L(s,o),Ve()}var xa=P('<div class="card user svelte-2ec03f"> </div>');function Ta(s,t){Xe(t,!1);let n=Me(t,"card",8);Ye();var r=xa(),a=m(r,!0);h(r),J(()=>Q(a,(fe(n()),T(()=>n().text)))),L(s,r),Ve()}var Aa=P('<button class="stop svelte-1n9pz5q">Stop</button>'),Sa=P('<div class="thinking-row svelte-1n9pz5q"><span class="toggle mono svelte-1n9pz5q"><span class="caret svelte-1n9pz5q" aria-hidden="true"><!></span> reasoning</span> <!></div>');function Ra(s,t){Xe(t,!1);let n=Me(t,"card",8);Ye();var r=Sa(),a=m(r),o=m(a),i=m(o);rt(i,{name:"caret-right",size:11}),h(o),un(),h(a);var l=R(a,2);{var c=d=>{var f=Aa();ie("click",f,()=>He.abort(n().sessionId)),L(d,f)};se(l,d=>{fe(n()),T(()=>n().showStop)&&d(c)})}h(r),L(s,r),Ve()}var Na=P('<div class="body mono svelte-z2jsf2"><pre class="svelte-z2jsf2"> </pre></div>'),Oa=P('<button class="toggle mono svelte-z2jsf2"><span aria-hidden="true"><!></span> reasoning</button> <!>',1);function Ia(s,t){Xe(t,!1);let n=Me(t,"card",8),r=A(!1);Ye();var a=Oa(),o=Je(a),i=m(o);let l;var c=m(i);rt(c,{name:"caret-right",size:11}),h(i),un(),h(o);var d=R(o,2);{var f=g=>{var b=Na(),E=m(b),I=m(E,!0);h(E),h(b),J(()=>Q(I,(fe(n()),T(()=>n().thinkingText)))),L(g,b)};se(d,g=>{e(r)&&g(f)})}J(()=>{je(o,"aria-expanded",e(r)),l=et(i,1,"caret svelte-z2jsf2",null,l,{open:e(r)})}),ie("click",o,()=>p(r,!e(r))),L(s,a),Ve()}function ss(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}let Qt=ss();function ir(s){Qt=s}const or=/[&<>"']/,Ma=new RegExp(or.source,"g"),lr=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,Ca=new RegExp(lr.source,"g"),La={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},ys=s=>La[s];function Tt(s,t){if(t){if(or.test(s))return s.replace(Ma,ys)}else if(lr.test(s))return s.replace(Ca,ys);return s}const Da=/(^|[^\[])\^/g;function Pe(s,t){let n=typeof s=="string"?s:s.source;t=t||"";const r={replace:(a,o)=>{let i=typeof o=="string"?o:o.source;return i=i.replace(Da,"$1"),n=n.replace(a,i),r},getRegex:()=>new RegExp(n,t)};return r}function ks(s){try{s=encodeURI(s).replace(/%25/g,"%")}catch{return null}return s}const En={exec:()=>null};function ws(s,t){const n=s.replace(/\|/g,(o,i,l)=>{let c=!1,d=i;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),r=n.split(/ \|/);let a=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length<t;)r.push("");for(;a<r.length;a++)r[a]=r[a].trim().replace(/\\\|/g,"|");return r}function hn(s,t,n){const r=s.length;if(r===0)return"";let a=0;for(;a<r&&s.charAt(r-a-1)===t;)a++;return s.slice(0,r-a)}function $a(s,t){if(s.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<s.length;r++)if(s[r]==="\\")r++;else if(s[r]===t[0])n++;else if(s[r]===t[1]&&(n--,n<0))return r;return-1}function xs(s,t,n,r){const a=t.href,o=t.title?Tt(t.title):null,i=s[1].replace(/\\([\[\]])/g,"$1");if(s[0].charAt(0)!=="!"){r.state.inLink=!0;const l={type:"link",raw:n,href:a,title:o,text:i,tokens:r.inlineTokens(i)};return r.state.inLink=!1,l}return{type:"image",raw:n,href:a,title:o,text:Tt(i)}}function Pa(s,t){const n=s.match(/^(\s+)(?:```)/);if(n===null)return t;const r=n[1];return t.split(`
2
2
  `).map(a=>{const o=a.match(/^\s+/);if(o===null)return a;const[i]=o;return i.length>=r.length?a.slice(r.length):a}).join(`
3
3
  `)}class Dn{constructor(t){ze(this,"options");ze(this,"rules");ze(this,"lexer");this.options=t||Qt}space(t){const n=this.rules.block.newline.exec(t);if(n&&n[0].length>0)return{type:"space",raw:n[0]}}code(t){const n=this.rules.block.code.exec(t);if(n){const r=n[0].replace(/^(?: {1,4}| {0,3}\t)/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?r:hn(r,`
4
4
  `)}}}fences(t){const n=this.rules.block.fences.exec(t);if(n){const r=n[0],a=Pa(r,n[3]||"");return{type:"code",raw:r,lang:n[2]?n[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):n[2],text:a}}}heading(t){const n=this.rules.block.heading.exec(t);if(n){let r=n[2].trim();if(/#$/.test(r)){const a=hn(r,"#");(this.options.pedantic||!a||/ $/.test(a))&&(r=a.trim())}return{type:"heading",raw:n[0],depth:n[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(t){const n=this.rules.block.hr.exec(t);if(n)return{type:"hr",raw:hn(n[0],`
@@ -1 +1 @@
1
- {"version":"1790623859657"}
1
+ {"version":"1790624441186"}
@@ -25,16 +25,16 @@
25
25
  <!-- iOS standalone PWA: fullscreen + translucent status bar (content padded via safe-area insets) -->
26
26
  <meta name="apple-mobile-web-app-capable" content="yes" />
27
27
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
28
- <link href="/_app/immutable/entry/start.Bn4wcDgT.js" rel="modulepreload">
29
- <link href="/_app/immutable/chunks/C_8ke_Oe.js" rel="modulepreload">
28
+ <link href="/_app/immutable/entry/start.DBrlF_4z.js" rel="modulepreload">
29
+ <link href="/_app/immutable/chunks/9FNwjwpR.js" rel="modulepreload">
30
30
  <link href="/_app/immutable/chunks/BjY4dxcB.js" rel="modulepreload">
31
- <link href="/_app/immutable/entry/app.DG6OD1B4.js" rel="modulepreload">
31
+ <link href="/_app/immutable/entry/app.D1PVdsZ0.js" rel="modulepreload">
32
32
  <link href="/_app/immutable/chunks/CWj6FrbW.js" rel="modulepreload">
33
33
  <link href="/_app/immutable/chunks/DIEDQ_hk.js" rel="modulepreload">
34
34
  <link href="/_app/immutable/chunks/C2FuqD3s.js" rel="modulepreload">
35
- <link href="/_app/immutable/nodes/0.CarUzRxC.js" rel="modulepreload">
35
+ <link href="/_app/immutable/nodes/0.D8zDxzVz.js" rel="modulepreload">
36
36
  <link href="/_app/immutable/chunks/COhEGSJl.js" rel="modulepreload">
37
- <link href="/_app/immutable/chunks/Cf5UwiSA.js" rel="modulepreload">
37
+ <link href="/_app/immutable/chunks/CEn8-WG3.js" rel="modulepreload">
38
38
 
39
39
  <link href="/_app/immutable/assets/0.D_Csy85O.css" rel="stylesheet">
40
40
  </head>
@@ -42,15 +42,15 @@
42
42
  <div style="display: contents">
43
43
  <script>
44
44
  {
45
- __sveltekit_1f2inr1 = {
45
+ __sveltekit_8l7x78 = {
46
46
  base: ""
47
47
  };
48
48
 
49
49
  const element = document.currentScript.parentElement;
50
50
 
51
51
  Promise.all([
52
- import("/_app/immutable/entry/start.Bn4wcDgT.js"),
53
- import("/_app/immutable/entry/app.DG6OD1B4.js")
52
+ import("/_app/immutable/entry/start.DBrlF_4z.js"),
53
+ import("/_app/immutable/entry/app.D1PVdsZ0.js")
54
54
  ]).then(([kit, app]) => {
55
55
  kit.start(app, element);
56
56
  });
@@ -1 +1 @@
1
- const a=location.pathname.split("/").slice(0,-1).join("/"),m=[a+"/_app/immutable/entry/app.DG6OD1B4.js",a+"/_app/immutable/nodes/0.CarUzRxC.js",a+"/_app/immutable/assets/0.D_Csy85O.css",a+"/_app/immutable/nodes/1.B_ZltGId.js",a+"/_app/immutable/nodes/2.DT4UfYmo.js",a+"/_app/immutable/assets/2.BNuGfmZP.css",a+"/_app/immutable/nodes/3.CGvR1ek8.js",a+"/_app/immutable/assets/3.CTDprntu.css",a+"/_app/immutable/chunks/BjY4dxcB.js",a+"/_app/immutable/chunks/C2FuqD3s.js",a+"/_app/immutable/chunks/COhEGSJl.js",a+"/_app/immutable/chunks/CWj6FrbW.js",a+"/_app/immutable/chunks/C_8ke_Oe.js",a+"/_app/immutable/chunks/Cf5UwiSA.js",a+"/_app/immutable/chunks/DIEDQ_hk.js",a+"/_app/immutable/entry/start.Bn4wcDgT.js"],o=[a+"/apple-touch-icon.png",a+"/favicon.png",a+"/favicon.svg",a+"/icon-192.png",a+"/icon-512-maskable.png",a+"/icon-512.png",a+"/manifest.webmanifest"],l="1790623859657",n=self,i=`ocrc-cache-${l}`,p=[...m,...o];n.addEventListener("install",t=>{t.waitUntil(caches.open(i).then(e=>e.addAll(p.map(s=>new Request(s,{cache:"reload"})))).then(()=>n.skipWaiting()))});n.addEventListener("activate",t=>{t.waitUntil((async()=>{for(const e of await caches.keys())e!==i&&await caches.delete(e);await n.clients.claim()})())});n.addEventListener("fetch",t=>{const{request:e}=t;if(e.method!=="GET")return;const s=new URL(e.url);if(s.origin===location.origin&&!(s.pathname.startsWith("/api/")||s.pathname==="/ws")){if(p.includes(s.pathname)){t.respondWith(caches.match(e).then(c=>c??fetch(e)));return}t.respondWith((async()=>{try{return await fetch(e)}catch{return await caches.match(e)??await caches.match("/")??Response.error()}})())}});
1
+ const a=location.pathname.split("/").slice(0,-1).join("/"),m=[a+"/_app/immutable/entry/app.D1PVdsZ0.js",a+"/_app/immutable/nodes/0.D8zDxzVz.js",a+"/_app/immutable/assets/0.D_Csy85O.css",a+"/_app/immutable/nodes/1.DDBSIioJ.js",a+"/_app/immutable/nodes/2.CQexb4qk.js",a+"/_app/immutable/assets/2.BNuGfmZP.css",a+"/_app/immutable/nodes/3.DPl0KnmZ.js",a+"/_app/immutable/assets/3.CTDprntu.css",a+"/_app/immutable/chunks/9FNwjwpR.js",a+"/_app/immutable/chunks/BjY4dxcB.js",a+"/_app/immutable/chunks/C2FuqD3s.js",a+"/_app/immutable/chunks/CEn8-WG3.js",a+"/_app/immutable/chunks/COhEGSJl.js",a+"/_app/immutable/chunks/CWj6FrbW.js",a+"/_app/immutable/chunks/DIEDQ_hk.js",a+"/_app/immutable/entry/start.DBrlF_4z.js"],l=[a+"/apple-touch-icon.png",a+"/favicon.png",a+"/favicon.svg",a+"/icon-192.png",a+"/icon-512-maskable.png",a+"/icon-512.png",a+"/manifest.webmanifest"],o="1790624441186",n=self,i=`ocrc-cache-${o}`,p=[...m,...l];n.addEventListener("install",t=>{t.waitUntil(caches.open(i).then(s=>s.addAll(p.map(e=>new Request(e,{cache:"reload"})))).then(()=>n.skipWaiting()))});n.addEventListener("activate",t=>{t.waitUntil((async()=>{for(const s of await caches.keys())s!==i&&await caches.delete(s);await n.clients.claim()})())});n.addEventListener("fetch",t=>{const{request:s}=t;if(s.method!=="GET")return;const e=new URL(s.url);if(e.origin===location.origin&&!(e.pathname.startsWith("/api/")||e.pathname==="/ws")){if(p.includes(e.pathname)){t.respondWith(caches.match(s).then(c=>c??fetch(s)));return}t.respondWith((async()=>{try{return await fetch(s)}catch{return await caches.match(s)??await caches.match("/")??Response.error()}})())}});
@@ -1 +0,0 @@
1
- var tt=e=>{throw TypeError(e)};var Dt=(e,t,n)=>t.has(e)||tt("Cannot "+n);var y=(e,t,n)=>(Dt(e,t,"read from private field"),n?n.call(e):t.get(e)),A=(e,t,n)=>t.has(e)?tt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);import{b8 as Ve,az as nt,aX as T,a8 as I,aO as P,b1 as _e,aZ as qt,aS as Vt}from"./BjY4dxcB.js";class Me{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Be{constructor(t,n){try{new Headers({location:n})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(n)}: this string contains characters that cannot be used in HTTP headers`)}this.status=t,this.location=n}}class Ke extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Mt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Bt(e){return e.split("%25").map(decodeURI).join("%25")}function Kt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function Pe({href:e}){return e.split("#")[0]}function j(){}function Ft(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;function Gt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);return n}const Ht=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&X.delete(Fe(e)),Ht(e,t));const X=new Map;function Wt(e,t){const n=Fe(e,t),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const o=a.getAttribute("data-ttl");return o&&X.set(n,{body:r,init:i,ttl:1e3*Number(o)}),a.getAttribute("data-b64")!==null&&(r=Gt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function zt(e,t,n){if(X.size>0){const a=Fe(e,n),r=X.get(a);if(r){if(performance.now()<r.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(r.body,r.init);X.delete(a)}}return window.fetch(t,n)}function Fe(e,t){let a=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const r=[];t.headers&&r.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&r.push(t.body),a+=`[data-hash="${Ft(...r)}"]`}return a}const Jt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Yt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Zt(e).map(a=>{const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const o=a.split(/\[(.+?)\](?!\])/);return"/"+o.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return Oe(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return Oe(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=Jt.exec(l),[,u,w,p,f]=d;return t.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&o[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return Oe(l)}).join("")}).join("")}/?$`),params:t}}function Xt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Zt(e){return e.slice(1).split("/").filter(Xt)}function Qt(e,t,n){const a={},r=e.slice(1),i=r.filter(s=>s!==void 0);let o=0;for(let s=0;s<t.length;s+=1){const l=t[s];let c=r[s-o];if(l.chained&&l.rest&&o&&(c=r.slice(s-o,s+1).filter(d=>d).join("/"),o=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=t[s+1],u=r[s+1];d&&!d.rest&&d.optional&&u&&l.chained&&(o=0),!d&&!u&&Object.keys(a).length===i.length&&(o=0);continue}if(l.optional&&l.chained){o++;continue}return}if(!o)return a}function Oe(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function en({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([s,[l,c,d]])=>{const{pattern:u,params:w}=Yt(s),p={id:s,exec:f=>{const m=u.exec(f);if(m)return Qt(m,w,a)},errors:[1,...d||[]].map(f=>e[f]),layouts:[0,...c||[]].map(o),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(s){const l=s<0;return l&&(s=~s),[l,e[s]]}function o(s){return s===void 0?s:[r.has(s),e[s]]}}function mt(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function rt(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}var ut;const U=((ut=globalThis.__sveltekit_1f2inr1)==null?void 0:ut.base)??"";var dt;const tn=((dt=globalThis.__sveltekit_1f2inr1)==null?void 0:dt.assets)??U??"",nn="1790623859657",_t="sveltekit:snapshot",wt="sveltekit:scroll",vt="sveltekit:states",rn="sveltekit:pageurl",F="sveltekit:history",Z="sveltekit:navigation",V={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Le=location.origin;function Ge(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function M(){return{x:pageXOffset,y:pageYOffset}}function K(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const at={...V,"":V.hover};function yt(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function bt(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=yt(e)}}function je(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";a.hash=`#${s}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||Ue(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=(a==null?void 0:a.origin)===Le&&e.hasAttribute("download");return{url:a,external:i,target:r,download:o}}function we(e){let t=null,n=null,a=null,r=null,i=null,o=null,s=e;for(;s&&s!==document.documentElement;)a===null&&(a=K(s,"preload-code")),r===null&&(r=K(s,"preload-data")),t===null&&(t=K(s,"keepfocus")),n===null&&(n=K(s,"noscroll")),i===null&&(i=K(s,"reload")),o===null&&(o=K(s,"replacestate")),s=yt(s);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:at[a??"off"],preload_data:at[r??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(o)}}function ot(e){const t=Ve(e);let n=!0;function a(){n=!0,t.update(o=>o)}function r(o){n=!1,t.set(o)}function i(o){let s;return t.subscribe(l=>{(s===void 0||n&&l!==s)&&o(s=l)})}return{notify:a,set:r,subscribe:i}}const kt={v:j};function an(){const{set:e,subscribe:t}=Ve(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${tn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const o=(await r.json()).version!==nn;return o&&(e(!0),kt.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:a}}function Ue(e,t,n){return e.origin!==Le||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function On(e){}const St=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...St];const on=new Set([...St]);[...on];function sn(e){return e.filter(t=>t!=null)}function ge(e,t){return e+"/"+t}function He(e){return e instanceof Me||e instanceof Ke?e.status:500}function ln(e){return e instanceof Ke?e.text:"Internal Error"}let x,Q,$e;const cn=nt.toString().includes("$$")||/function \w+\(\) \{\}/.test(nt.toString()),st="a:";var ae,oe,se,ie,le,ce,fe,ue,ht,de,pt,he,gt;cn?(x={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(st)},Q={current:null},$e={current:!1}):(x=new(ht=class{constructor(){A(this,ae,T({}));A(this,oe,T(null));A(this,se,T(null));A(this,ie,T({}));A(this,le,T({id:null}));A(this,ce,T({}));A(this,fe,T(-1));A(this,ue,T(new URL(st)))}get data(){return I(y(this,ae))}set data(t){P(y(this,ae),t)}get form(){return I(y(this,oe))}set form(t){P(y(this,oe),t)}get error(){return I(y(this,se))}set error(t){P(y(this,se),t)}get params(){return I(y(this,ie))}set params(t){P(y(this,ie),t)}get route(){return I(y(this,le))}set route(t){P(y(this,le),t)}get state(){return I(y(this,ce))}set state(t){P(y(this,ce),t)}get status(){return I(y(this,fe))}set status(t){P(y(this,fe),t)}get url(){return I(y(this,ue))}set url(t){P(y(this,ue),t)}},ae=new WeakMap,oe=new WeakMap,se=new WeakMap,ie=new WeakMap,le=new WeakMap,ce=new WeakMap,fe=new WeakMap,ue=new WeakMap,ht),Q=new(pt=class{constructor(){A(this,de,T(null))}get current(){return I(y(this,de))}set current(t){P(y(this,de),t)}},de=new WeakMap,pt),$e=new(gt=class{constructor(){A(this,he,T(!1))}get current(){return I(y(this,he))}set current(t){P(y(this,he),t)}},he=new WeakMap,gt),kt.v=()=>$e.current=!0);function Et(e){Object.assign(x,e)}const{onMount:fn}=qt,un=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const D=mt(wt)??{},ee=mt(_t)??{},N={url:ot({}),page:ot({}),navigating:Ve(null),updated:an()};function We(e){D[e]=M()}function dn(e,t){let n=e+1;for(;D[n];)delete D[n],n+=1;for(n=t+1;ee[n];)delete ee[n],n+=1}function te(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(j)}async function Rt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}let ze,Ne,ve,O,De,S;const ye=[],be=[];let v=null;function ke(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const me=new Map,xt=new Set,hn=new Set,G=new Set;let _={branch:[],error:null,url:null},Lt=!1,Se=!1,it=!0,ne=!1,Y=!1,Ut=!1,Je=!1,At,k,L,C;const Ee=new Set,lt=new Map,ct=new Map;async function Nn(e,t,n){var i,o,s,l;globalThis.__sveltekit_1f2inr1&&(globalThis.__sveltekit_1f2inr1.query,globalThis.__sveltekit_1f2inr1.prerender),document.URL!==location.href&&(location.href=location.href),S=e,await((o=(i=e.hooks).init)==null?void 0:o.call(i)),ze=en(e),O=document.documentElement,De=t,Ne=e.nodes[0],ve=e.nodes[1],Ne(),ve(),k=(s=history.state)==null?void 0:s[F],L=(l=history.state)==null?void 0:l[Z],k||(k=L=Date.now(),history.replaceState({...history.state,[F]:k,[Z]:L},""));const a=D[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Ln(De,n)):(await H({type:"enter",url:Ge(S.hash?Tn(new URL(location.href)):location.href),replace_state:!0}),r()),xn()}function pn(){ye.length=0,Je=!1}function Tt(e){be.some(t=>t==null?void 0:t.snapshot)&&(ee[e]=be.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function It(e){var t;(t=ee[e])==null||t.forEach((n,a)=>{var r,i;(i=(r=be[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function ft(){We(k),rt(wt,D),Tt(L),rt(_t,ee)}async function Pt(e,t,n,a){let r,i;t.invalidateAll&&ke(),await H({type:"goto",url:Ge(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{if(t.invalidateAll){Je=!0,r=new Set;for(const[o,s]of lt)for(const l of s.keys())r.add(ge(o,l));i=new Set;for(const[o,s]of ct)for(const l of s.keys())i.add(ge(o,l))}t.invalidate&&t.invalidate.forEach(Rn)}}),t.invalidateAll&&_e().then(_e).then(()=>{for(const[o,s]of lt)for(const[l,{resource:c}]of s)r!=null&&r.has(ge(o,l))&&c.refresh();for(const[o,s]of ct)for(const[l,{resource:c}]of s)i!=null&&i.has(ge(o,l))&&c.reconnect()})}async function gn(e){if(e.id!==(v==null?void 0:v.id)){ke();const t={};Ee.add(t),v={id:e.id,token:t,promise:$t({...e,preload:t}).then(n=>(Ee.delete(t),n.type==="loaded"&&n.state.error&&ke(),n)),fork:null}}return v.promise}async function Ce(e){var n;const t=(n=await Ae(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(a=>a[1]()))}async function Ot(e,t,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...e.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Et(e.props.page),At=new S.root({target:t,props:{...e.props,stores:N,components:be},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),It(L),n){const o={from:null,to:{...a,scroll:D[k]??M()},willUnload:!1,type:"enter",complete:Promise.resolve()};G.forEach(s=>s(o))}Se=!0}async function Re({url:e,params:t,branch:n,errors:a,status:r,error:i,route:o,form:s}){let l="never";if(U&&(e.pathname===U||e.pathname===U+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);e.pathname=Mt(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:o},props:{constructors:sn(n).map(f=>f.node.component),page:et(x)}};s!==void 0&&(c.props.form=s);let d={},u=!x,w=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const m=n[f],h=_.branch[f];(m==null?void 0:m.data)!==(h==null?void 0:h.data)&&(u=!0),m&&(d={...d,...m.data},u&&(c.props[`data_${w}`]=d),w+=1)}return(!_.url||e.href!==_.url.href||_.error!==i||s!==void 0&&s!==x.form||u)&&(c.props.page={error:i,params:t,route:{id:(o==null?void 0:o.id)??null},state:{},status:r,url:new URL(e),form:s??null,data:u?d:x.data}),c}async function Ye({loader:e,parent:t,url:n,params:a,route:r,server_data_node:i}){var c,d;let o=null;const s={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:o,uses:s}:null,data:o??(i==null?void 0:i.data)??null,slash:((d=l.universal)==null?void 0:d.trailingSlash)??(i==null?void 0:i.slash)}}function mn(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const i=Se?zt(a,r.href,t):Wt(a,t);return{resolved:r,promise:i}}function _n(e,t,n,a,r,i){if(Je)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const o of r.search_params)if(a.has(o))return!0;for(const o of r.params)if(i[o]!==_.params[o])return!0;for(const o of r.dependencies)if(ye.some(s=>s(new URL(o))))return!0;return!1}function Xe(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function wn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(o=>i.includes(o))&&i.every(o=>r.includes(o))&&n.delete(a)}return n}function vn({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:et(x),constructors:[]}}}async function $t({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if((v==null?void 0:v.id)===e)return Ee.delete(v.token),v.promise;const{errors:o,layouts:s,leaf:l}=r,c=[...s,l];o.forEach(h=>h==null?void 0:h().catch(j)),c.forEach(h=>h==null?void 0:h[1]().catch(j));const d=_.url?e!==xe(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=wn(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var $;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!_n(p,u,d,w,($=b.universal)==null?void 0:$.uses,a)?b:(p=!0,Ye({loader:h[1],url:n,params:a,route:r,parent:async()=>{var pe;const q={};for(let B=0;B<g;B+=1)Object.assign(q,(pe=await f[B])==null?void 0:pe.data);return q},server_data_node:Xe(h[0]?{type:"skip"}:null,h[0]?b==null?void 0:b.server:void 0)}))});for(const h of f)h.catch(j);const m=[];for(let h=0;h<c.length;h+=1)if(c[h])try{m.push(await f[h])}catch(g){if(g instanceof Be)return{type:"redirect",location:g.location};if(Ee.has(i))return vn({error:await re(g,{params:a,url:n,route:{id:r.id}}),url:n,params:a,route:r});let b=He(g),R;if(g instanceof Me)R=g.body;else{if(await N.updated.check())return await Rt(),await te(n);R=await re(g,{params:a,url:n,route:{id:r.id}})}const $=await yn(h,m,o);return $?Re({url:n,params:a,branch:m.slice(0,$.idx).concat($.node),errors:o,status:b,error:R,route:r}):await jt(n,{id:r.id},R,b)}else m.push(void 0);return Re({url:n,params:a,branch:m,errors:o,status:200,error:null,route:r,form:t?void 0:null})}async function yn(e,t,n){for(;e--;)if(n[e]){let a=e;for(;!t[a];)a-=1;try{return{idx:a+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ze({status:e,error:t,url:n,route:a}){const r={};let i=null;try{const o=await Ye({loader:Ne,url:n,params:r,route:a,parent:()=>Promise.resolve({}),server_data_node:Xe(i)}),s={node:await ve(),loader:ve,universal:null,server:null,data:null};return Re({url:n,params:r,branch:[o,s],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Be)return Pt(new URL(o.location,location.href),{},0);throw o}}async function bn(e){const t=e.href;if(me.has(t))return me.get(t);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(e),fetch:async(i,o)=>mn(i,o,e).promise})??e;if(typeof r=="string"){const i=new URL(e);S.hash?i.hash=r:i.pathname=r,r=i}return r})();me.set(t,a),n=await a}catch{me.delete(t);return}return n}async function Ae(e,t){if(e&&!Ue(e,U,S.hash)){const n=await bn(e);if(!n)return;const a=kn(n);for(const r of ze){const i=r.exec(a);if(i)return{id:xe(e),invalidating:t,route:r,params:Kt(i),url:e}}}}function kn(e){return Bt(S.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function xe(e){return(S.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function Ct({url:e,type:t,intent:n,delta:a,event:r,scroll:i}){let o=!1;const s=Qe(_,n,e,t,i??null);a!==void 0&&(s.navigation.delta=a),r!==void 0&&(s.navigation.event=r);const l={...s.navigation,cancel:()=>{o=!0,s.reject(new Error("navigation cancelled"))}};return ne||xt.forEach(c=>c(l)),o?null:s}async function H({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o={},redirect_count:s=0,nav_token:l={},accept:c=j,block:d=j,event:u}){var B;const w=C;C=l;const p=await Ae(t,!1),f=e==="enter"?Qe(_,p,t,e):Ct({url:t,type:e,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),C===l&&(C=w);return}const m=k,h=L;c(),ne=!0,Se&&f.navigation.type!=="enter"&&N.navigating.set(Q.current=f.navigation);let g=p&&await $t(p);if(!g){if(Ue(t,U,S.hash))return await te(t,i);g=await jt(t,{id:null},await re(new Ke(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(p==null?void 0:p.url)||t,C!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(s<20){await H({type:e,url:new URL(g.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o,redirect_count:s+1,nav_token:l}),f.fulfil(void 0);return}g=await Ze({status:500,error:await re(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await N.updated.check()&&(await Rt(),await te(t,i));if(pn(),We(m),Tt(h),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),o=n?n.state:o,!n){const E=i?0:1,W={[F]:k+=E,[Z]:L+=E,[vt]:o};(i?history.replaceState:history.pushState).call(history,W,"",t),i||dn(k,L)}const b=p&&(v==null?void 0:v.id)===p.id?v.fork:null;v!=null&&v.fork&&!b&&ke(),v=null,g.props.page.state=o;let R;if(Se){const E=(await Promise.all(Array.from(hn,z=>z(f.navigation)))).filter(z=>typeof z=="function");if(E.length>0){let z=function(){E.forEach(Ie=>{G.delete(Ie)})};E.push(z),E.forEach(Ie=>{G.add(Ie)})}const W=f.navigation.to;_={...g.state,nav:{params:W.params,route:W.route,url:W.url}},g.props.page&&(g.props.page.url=t);const Te=b&&await b;Te?R=Te.commit():(J=null,At.$set(g.props),J&&Object.assign(g.props.page,J),Et(g.props.page),R=(B=Vt)==null?void 0:B()),Ut=!0}else await Ot(g,De,!1);const{activeElement:$}=document;if(await R,await _e(),await _e(),C!==l)return f.reject(new Error("navigation aborted")),!1;g.props.page&&J&&Object.assign(g.props.page,J);let q=null;if(it){const E=n?n.scroll:r?M():null;E?scrollTo(E.x,E.y):(q=t.hash&&document.getElementById(Nt(t)))?q.scrollIntoView():scrollTo(0,0)}const pe=document.activeElement!==$&&document.activeElement!==document.body;!a&&!pe&&An(t,!q),it=!0,ne=!1,e==="popstate"&&It(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=M()),G.forEach(E=>E(f.navigation)),N.navigating.set(Q.current=null)}async function jt(e,t,n,a,r){return e.origin===Le&&e.pathname===location.pathname&&!Lt?await Ze({status:a,error:n,url:e,route:t}):await te(e,r)}function Sn(){let e,t={element:void 0,href:void 0},n;O.addEventListener("mousemove",s=>{const l=s.target;clearTimeout(e),e=setTimeout(()=>{i(l,V.hover)},20)});function a(s){s.defaultPrevented||i(s.composedPath()[0],V.tap)}O.addEventListener("mousedown",a),O.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(s=>{for(const l of s)l.isIntersecting&&(Ce(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(s,l){const c=bt(s,O),d=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=je(c,U,S.hash);if(w||p)return;const f=we(c),m=u&&xe(_.url)===xe(u);if(!(f.reload||m))if(l<=f.preload_data){t={element:c,href:c.href},n=V.tap;const h=await Ae(u,!1);if(!h)return;gn(h)}else l<=f.preload_code&&(t={element:c,href:c.href},n=l,Ce(u))}function o(){r.disconnect();for(const s of O.querySelectorAll("a")){const{url:l,external:c,download:d}=je(s,U,S.hash);if(c||d)continue;const u=we(s);u.reload||(u.preload_code===V.viewport&&r.observe(s),u.preload_code===V.eager&&Ce(l))}}G.add(o),o()}function re(e,t){if(e instanceof Me)return e.body;const n=He(e),a=ln(e);return S.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function En(e,t){fn(()=>(e.add(t),()=>{e.delete(t)}))}function Dn(e){En(G,e)}function qn(e,t={}){return e=new URL(Ge(e)),e.origin!==Le?Promise.reject(new Error("goto: invalid URL")):Pt(e,t,0)}function Rn(e){if(typeof e=="function")ye.push(e);else{const{href:t}=new URL(e,location.href);ye.push(n=>n.href===t)}}function xn(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(ft(),!ne){const r=Qe(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};xt.forEach(o=>o(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ft()}),(t=navigator.connection)!=null&&t.saveData||Sn(),O.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=bt(n.composedPath()[0],O);if(!a)return;const{url:r,external:i,target:o,download:s}=je(a,U,S.hash);if(!r)return;if(o==="_parent"||o==="_top"){if(window.parent!==window)return}else if(o&&o!=="_self")return;const l=we(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||s)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===Pe(location);if(i||l.reload&&(!w||!u)){Ct({url:r,type:"link",event:n})?ne=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,We(k),e(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await H({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),O.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const s=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Ue(s,U,!1))return;const l=n.target,c=we(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);s.search=new URLSearchParams(d).toString(),H({type:"form",url:s,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??s.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!qe){if((a=n.state)!=null&&a[F]){const r=n.state[F];if(C={},r===k)return;const i=D[r],o=n.state[vt]??{},s=new URL(n.state[rn]??location.href),l=n.state[Z],c=_.url?Pe(location)===Pe(_.url):!1;if(l===L&&(Ut||c)){o!==x.state&&(x.state=o),e(s),D[k]=M(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await H({type:"popstate",url:s,popped:{state:o,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:C,event:n})}else if(!Y){const r=new URL(location.href);e(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[F]:++k,[Z]:L},"",location.href))});for(const n of document.querySelectorAll("link"))un.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&N.navigating.set(Q.current=null)});function e(n){_.url=x.url=n,N.page.set(et(x)),N.page.notify()}}async function Ln(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:o,data:s,form:l}){Lt=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await Ae(c,!1)||{}),d=ze.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=s[h];return g!=null&&g.uses&&(g.uses=Un(g.uses)),Ye({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let R=0;R<h;R+=1)Object.assign(b,(await p[R]).data);return b},server_data_node:Xe(g)})}),f=await Promise.all(p);if(d){const m=d.layouts;for(let h=0;h<m.length;h++)m[h]||f.splice(h,0,void 0)}u=await Re({url:c,params:r,branch:f,status:t,error:n,errors:d==null?void 0:d.errors,form:l,route:d??null})}catch(p){if(p instanceof Be){await te(new URL(p.location,location.href));return}u=await Ze({status:He(p),error:await re(p,{url:c,params:r,route:i}),url:c,route:i}),e.textContent="",w=!1}finally{}u.props.page&&(u.props.page.state={}),await Ot(u,e,w)}function Un(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let qe=!1;function An(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const a=Nt(e);if(a&&document.getElementById(a)){const{x:i,y:o}=M();setTimeout(()=>{const s=history.state;qe=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(s,"",e),t&&scrollTo(i,o),qe=!1})}else{const i=document.body,o=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),o!==null?i.setAttribute("tabindex",o):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let o=0;o<r.rangeCount;o+=1)i.push(r.getRangeAt(o));setTimeout(()=>{if(r.rangeCount===i.length){for(let o=0;o<r.rangeCount;o+=1){const s=i[o],l=r.getRangeAt(o);if(s.commonAncestorContainer!==l.commonAncestorContainer||s.startContainer!==l.startContainer||s.endContainer!==l.endContainer||s.startOffset!==l.startOffset||s.endOffset!==l.endOffset)return}r.removeAllRanges()}})}}}function Qe(e,t,n,a,r=null){var c,d;let i,o;const s=new Promise((u,w)=>{i=u,o=w});return s.catch(j),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:M()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((d=t==null?void 0:t.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!t,type:a,complete:s},fulfil:i,reject:o}}function et(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Tn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Nt(e){let t;if(S.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Dn as a,N as b,qn as g,On as l,x as p,Nn as s};
@@ -1 +0,0 @@
1
- import{l as o,s as r}from"../chunks/C_8ke_Oe.js";export{o as load_css,r as start};