@deepseek-insight/dsi 0.5.20 → 0.5.22
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/.agents/skills/dsh-jump-prepare-fix/SKILL.md +99 -0
- package/.agents/skills/dsi-ov-setup/SKILL.md +36 -0
- package/.agents/skills/dsi-sync/SKILL.md +69 -0
- package/README.md +23 -29
- package/bin/dsi.mjs +18 -15
- package/build/client/_app/immutable/assets/2.DRj7JwRK.css +1 -0
- package/build/client/_app/immutable/chunks/Ch36fHI9.js +1 -0
- package/build/client/_app/immutable/chunks/D94Od7GQ.js +2 -0
- package/build/client/_app/immutable/chunks/DUawi_ZZ.js +1 -0
- package/build/client/_app/immutable/chunks/DXSIz1Bv.js +1 -0
- package/build/client/_app/immutable/chunks/DlfWhx6l.js +1 -0
- package/build/client/_app/immutable/chunks/{CxmtCU9s.js → zBRTraNY.js} +1 -1
- package/build/client/_app/immutable/entry/{app.CqYGeqRv.js → app.DLUi0EIr.js} +2 -2
- package/build/client/_app/immutable/entry/start.CWU06EOY.js +1 -0
- package/build/client/_app/immutable/nodes/{0.u99aBgpL.js → 0.DfmjWWCy.js} +1 -1
- package/build/client/_app/immutable/nodes/1.Cy_8L_sF.js +1 -0
- package/build/client/_app/immutable/nodes/2.hEv7awQ2.js +171 -0
- package/build/client/_app/version.json +1 -1
- package/build/handler.js +4 -4
- package/build/index.js +4 -4
- package/build/server/chunks/chunks/{app-config.svelte.js-CFb4kaFl.js → app-config.svelte.js-DX-xENzY.js} +2 -2
- package/build/server/chunks/chunks/{config.js-iG_1bK3r.js → config.js-BvW5LrfQ.js} +3 -2
- package/build/server/chunks/chunks/{db.js-9wP1ySFv.js → db.js-DUiYPVrk.js} +2 -2
- package/build/server/chunks/chunks/{db2.js-B_Un4Zvq.js → db2.js-B2wnWJ5y.js} +2 -2
- package/build/server/chunks/chunks/{dsh-connection.js-CwL9I98w.js → dsh-connection.js-DLLvHgxn.js} +3 -3
- package/build/server/chunks/chunks/{dsh-events.js-BtDxaV6Q.js → dsh-events.js-DEZgATm-.js} +4 -2
- package/build/server/chunks/chunks/{git-probe.js-C7z6xDzg.js → git-probe.js-CNhqEFLP.js} +4 -4
- package/build/server/chunks/chunks/{insight-config.js-COS9LOWZ.js → insight-config.js-BgiNeS6f.js} +3 -3
- package/build/server/chunks/chunks/{internal.js-Bf2uRIVS.js → internal.js-Du2x925l.js} +3 -3
- package/build/server/chunks/chunks/{permission-state.js-BoJAoWqi.js → permission-state.js-B7UpAHBv.js} +3 -2
- package/build/server/chunks/chunks/{runtime.js-BPLc5RLR.js → runtime.js-CCJi3XaY.js} +3 -2
- package/build/server/chunks/chunks/{settings-document.js-BKnRkLVq.js → settings-document.js-i5MkkSFH.js} +2 -2
- package/build/server/chunks/chunks/{state.js-OWX1K3Yj.js → state.js-BOUZ4Mdx.js} +4 -4
- package/build/server/chunks/chunks/{watcher.js-Dc9hzRLI.js → watcher.js-DMNZ6PC_.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-0rfV7w20.js → _server.ts.js-BFZR8uHn.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-DX0DUIja.js → _server.ts.js-BgqhjoUU.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-zB-V9Naa.js → _server.ts.js-CLVptu9i.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-Bo4VgIna.js → _server.ts.js-D8M_XizI.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-_Wc4NU0Q.js → _server.ts.js-DS8L3_Bt.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-CvoINUYy.js → _server.ts.js-BUEokCIX.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-B4UwZ8nd.js → _server.ts.js-lLG8ls0C.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-Hml2J0Bq.js → _server.ts.js-BSenSXeg.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-CsZ2u8cs.js → _server.ts.js-DCXKkJ0v.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-BhF1Nzig.js → _server.ts.js-BED7HhEP.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-BGXjV_Ak.js → _server.ts.js-Bg8nHHOZ.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-BF4vBIja.js → _server.ts.js-Dyo678sQ.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-B2OwrEQD.js → _server.ts.js-Bo1MLZzv.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-DboY_7cp.js → _server.ts.js-B5hEmzA3.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-BpioYdnc.js → _server.ts.js-B0YMraSe.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-CLrgUoq0.js → _server.ts.js-B7E_ugh9.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-BlZr_mA6.js → _server.ts.js-CpSm33QW.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-BiU_IgYD.js → _server.ts.js-qX_48Xfk.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-FV-4ougZ.js → _server.ts.js-BmMx7VT-.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-ChxB0XU5.js → _server.ts.js-D9WGgQkP.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-DkSydg_X.js → _server.ts.js-JNQ1THCO.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-Wbuf-vse.js → _server.ts.js-CyYEK2YZ.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-B-BfCKKL.js → _server.ts.js-9teKQw8I.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-fKfv5g19.js → _server.ts.js-D0EtJceT.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file-bytes/{_server.ts.js-DZpRzvas.js → _server.ts.js-DVBe8VFL.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-Hn5-fnsU.js → _server.ts.js-_ICn-AJI.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-CtPDRjV7.js → _server.ts.js-deEnJXis.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-DOp3nIcK.js → _server.ts.js-C99S7qPG.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-DiwcZfK9.js → _server.ts.js-DIbV5U-C.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-SoNSMvWj.js → _server.ts.js-C9sx5xeq.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-DIZiiHk-.js → _server.ts.js-BQN2GfYg.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-CbsUk0fk.js → _server.ts.js-Ya8ewOIo.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-DCeIpzKT.js → _server.ts.js-Dtq_vXJc.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-Blw1UFX2.js → _server.ts.js-DptPqI-s.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-yflU8VH2.js → _server.ts.js-B4C7kLHl.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-q9jXuJ1p.js → _server.ts.js-Db9JKnPM.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-YjwnbPfG.js → _server.ts.js-C8gzgR2I.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-DRQay15h.js → _server.ts.js-BIlHfNA_.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-BiCzLyNH.js → _server.ts.js-DRza8q_m.js} +8 -8
- package/build/server/chunks/entries/{hooks.server.js-B_E1wCwG.js → hooks.server.js-Bt6VP5fg.js} +4 -4
- package/build/server/chunks/entries/pages/{_error.svelte.js-DkmmDHjP.js → _error.svelte.js-B6QZqJkc.js} +30 -10
- package/build/server/chunks/entries/pages/{_page.server.ts.js-BHW1mzYQ.js → _page.server.ts.js-BOFnfJKx.js} +4 -4
- package/build/server/chunks/entries/pages/{_page.svelte.js-BSt3-Adz.js → _page.svelte.js-GQS2SRws.js} +2082 -200
- package/build/server/chunks/{handler-CEAxnB4f.js → handler-cx07G9-G.js} +3 -3
- package/build/server/chunks/{index.js-B-3rUYGC.js → index.js-Dfzyw-2i.js} +2 -2
- package/build/server/chunks/{manifest.js--ZDTDlzU.js → manifest.js-CFJqE5Kz.js} +44 -44
- package/build/server/chunks/nodes/{0.js-BQXxAZac.js → 0.js-CLm26i36.js} +2 -2
- package/build/server/chunks/nodes/1.js-cfJjJ8lx.js +9 -0
- package/build/server/chunks/nodes/2.js-BtKfdVVe.js +27 -0
- package/package.json +2 -2
- package/build/client/_app/immutable/assets/2.Dk-hwaP_.css +0 -1
- package/build/client/_app/immutable/chunks/7MCZCUsX.js +0 -1
- package/build/client/_app/immutable/chunks/CodI3RGj.js +0 -1
- package/build/client/_app/immutable/chunks/DKDzTags.js +0 -2
- package/build/client/_app/immutable/chunks/azDKH4zi.js +0 -1
- package/build/client/_app/immutable/chunks/qIBjcgkE.js +0 -1
- package/build/client/_app/immutable/entry/start.CIXiL_7f.js +0 -1
- package/build/client/_app/immutable/nodes/1.qcRcZCY6.js +0 -1
- package/build/client/_app/immutable/nodes/2.GgqfB5rv.js +0 -171
- package/build/server/chunks/nodes/1.js-DMcugevB.js +0 -9
- package/build/server/chunks/nodes/2.js-BrT7uCAN.js +0 -27
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# DSH Jump Unstick — the `prepare` Scheduler-Symbol Split
|
|
2
|
+
|
|
3
|
+
Every DSH edition jump that dies with `Cannot read properties of undefined
|
|
4
|
+
(reading 'prepare')` on the first tool call has ONE verified cause class and ONE
|
|
5
|
+
validated fix. This skill exists so the jump is never blocked twice on the same
|
|
6
|
+
bug — the 2026-09-18 jump to `dsh-v0.1.6-alpha.2` lost the session to it, and
|
|
7
|
+
the diagnosis had to be rebuilt from scratch on 2026-09-19.
|
|
8
|
+
|
|
9
|
+
Authority: upstream [discussion 783](https://github.com/deepseek-ai/deepseek-harness/discussions/783)
|
|
10
|
+
names the mechanism for global installs; the 2026-09-19 probe (below) proved the
|
|
11
|
+
source-checkout variant and validated the fix end to end.
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- A DSH checkout just moved (pull / tag checkout / rebuild) and EVERY tool call
|
|
16
|
+
in EVERY session fails with `Cannot read properties of undefined (reading
|
|
17
|
+
'prepare')`, code `UNKNOWN`, ending the turn.
|
|
18
|
+
- Or the jump aborted earlier and `~/.dsh/sessions/**/session.v3.jsonl.zstd`
|
|
19
|
+
shows a `turn/end` with that exact message.
|
|
20
|
+
- Do NOT use for other `undefined` errors — the message must name `prepare`.
|
|
21
|
+
|
|
22
|
+
## The mechanism, in one paragraph
|
|
23
|
+
|
|
24
|
+
`packages/core/tools` exports `TOOL_RUNTIME_SCHEDULER = Symbol(...)` — a plain
|
|
25
|
+
Symbol, so each loaded copy of the module mints a distinct key. The tools
|
|
26
|
+
registry registers the scheduler under ONE copy's Symbol; the agent loop reads
|
|
27
|
+
it through the OTHER copy's Symbol; the lookup yields `undefined` and
|
|
28
|
+
`.prepare` throws. What splits the copies depends on launch mode: in a global
|
|
29
|
+
install it is a profile-local `pnpm install` materializing `@deepseek-ai/*`
|
|
30
|
+
under `~/.dsh/profiles/<name>/node_modules` (discussion 783); in a
|
|
31
|
+
source-checkout launch (`pnpm dsh …` = `node --import tsx/esm apps/cli/src/bin.ts`)
|
|
32
|
+
the 2026-09-19 probe caught the cordis plugin loader importing BOTH
|
|
33
|
+
`packages/core/tools/src/index.ts` (via tsx tsconfig `paths`) AND
|
|
34
|
+
`packages/core/tools/lib/index.js` (via package `exports`) in the same process.
|
|
35
|
+
Any jump that changes plugin resolution can re-trigger it.
|
|
36
|
+
|
|
37
|
+
## Confirm before fixing (2 minutes, optional but cheap)
|
|
38
|
+
|
|
39
|
+
Instrument both copies, reproduce, read the stacks:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
# in the moved checkout, add after the Symbol line in BOTH
|
|
43
|
+
# packages/core/tools/src/index.ts and packages/core/tools/lib/index.js:
|
|
44
|
+
if (process.env.DSH_PROBE_SYMBOL) console.error('[PROBE]', import.meta.url, new Error('stack').stack)
|
|
45
|
+
|
|
46
|
+
export DSH_PROBE_SYMBOL=1
|
|
47
|
+
pnpm dsh --profile headless "Use the bash tool to run: echo probe" 2>&1 | grep PROBE
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Two `[PROBE]` lines with different URLs (one `src/`, one `lib/`, or two
|
|
51
|
+
distinct trees) = this bug. One line only = something else; stop and re-diagnose.
|
|
52
|
+
|
|
53
|
+
## The fix (validated 2026-09-19 against a pristine alpha.2 worktree)
|
|
54
|
+
|
|
55
|
+
Make the scheduler key copy-robust with the global symbol registry, in BOTH
|
|
56
|
+
copies of `packages/core/tools`:
|
|
57
|
+
|
|
58
|
+
- `src/index.ts`:
|
|
59
|
+
`export const TOOL_RUNTIME_SCHEDULER: unique symbol = Symbol.for('@deepseek-ai/dsh-tools.scheduler')`
|
|
60
|
+
- `lib/index.js` (after the line `const TOOL_RUNTIME_SCHEDULER = …`):
|
|
61
|
+
`Symbol.for("@deepseek-ai/dsh-tools.scheduler")`
|
|
62
|
+
|
|
63
|
+
Patching only one copy does NOT work — either copy may provide the registry or
|
|
64
|
+
read it, and a `Symbol.for` key on one side still mismatches a plain `Symbol()`
|
|
65
|
+
on the other.
|
|
66
|
+
|
|
67
|
+
## Verify, then clean up
|
|
68
|
+
|
|
69
|
+
1. Remove any `[PROBE]` instrumentation lines added above.
|
|
70
|
+
2. Headless proof (isolated home so the running web host is untouched):
|
|
71
|
+
```sh
|
|
72
|
+
export DSH_HOME="$(mktemp -d)" && cp ~/.dsh/settings.yaml "$DSH_HOME/"
|
|
73
|
+
export ZAI_API_KEY="$(grep -oE 'ZAI_API_KEY=?["'"'"']?[A-Za-z0-9._-]+' ~/.zshrc | head -1 | sed -E 's/^ZAI_API_KEY=?["'"'"']?//')"
|
|
74
|
+
pnpm dsh --profile headless "Use the bash tool to run: echo <tag> — then reply with exactly its output."
|
|
75
|
+
```
|
|
76
|
+
Green = the reply is exactly the echoed tag.
|
|
77
|
+
3. Web profile: boot briefly with the isolated `DSH_HOME`; plugin activation
|
|
78
|
+
must pass (an `EADDRINUSE` on the running host's port means plugins are
|
|
79
|
+
healthy). Only then restart the real `pnpm dsh web`.
|
|
80
|
+
|
|
81
|
+
## Standing caveats
|
|
82
|
+
|
|
83
|
+
- `lib/` is a build artifact: re-apply the lib patch after every
|
|
84
|
+
`pnpm run build`. The src patch dirties the tree across pulls — re-apply
|
|
85
|
+
after checking out a new edition, drop when upstream adopts the fix.
|
|
86
|
+
- Never commit the patched files; this is a local unblock only.
|
|
87
|
+
- The error also litters the session ledger with orphan `tool/call` events
|
|
88
|
+
(persisted before the throwing lookup). DeepSeek's endpoint rejects later
|
|
89
|
+
turns of such sessions with a 400 (`tool_calls` must be followed by `tool`
|
|
90
|
+
messages) — affected sessions are lost for that provider; start a new session
|
|
91
|
+
rather than resuming.
|
|
92
|
+
|
|
93
|
+
## Retire this skill when
|
|
94
|
+
|
|
95
|
+
Upstream ships the key as `Symbol.for` (or otherwise guarantees singleton
|
|
96
|
+
resolution) in a tag this machine runs — verify with:
|
|
97
|
+
`git grep -n "Symbol.for('@deepseek-ai/dsh-tools.scheduler')" <tag> -- packages/core/tools/src/index.ts`,
|
|
98
|
+
then delete the repo copy and the mirror and note the retirement in the DSI
|
|
99
|
+
release KB note covering that jump.
|
|
@@ -17,10 +17,12 @@ Run in order; stop at the first failing gate:
|
|
|
17
17
|
| Server config | `ls ~/.openviking/ov.conf` | exists |
|
|
18
18
|
| Client config | `cat ~/.openviking/ovcli.conf` | `url` = `http://127.0.0.1:1933` |
|
|
19
19
|
| Package | `openviking-server --version` | prints a version |
|
|
20
|
+
| Plugin installed | `grep @openviking ~/.dsh/profiles/web/package.json` + `ls ~/.dsh/profiles/web/node_modules/@openviking/dsh-memory-plugin` | both the bundle entry and the package exist |
|
|
20
21
|
| MCP connection | harness tool list shows `mcp__openviking__*` | tools present |
|
|
21
22
|
|
|
22
23
|
- Health fails + `ov.conf` missing → **Recovery path (§2)**, the common case.
|
|
23
24
|
- Health fails + `ov.conf` exists → run `openviking-server doctor`, fix what it names, go to §2 step 4.
|
|
25
|
+
- Plugin missing from manifest or `node_modules` → reinstall via the sanctioned path (§2 step 6): from the running host's checkout, `pnpm dsh plugin --profile web add @openviking/dsh-memory-plugin`. This persists both the dependency and the `dsh.profile.bundles` entry, so profile rebuilds keep it. A bare `pnpm install` in the profile dir is a dead end — bundles are not `dependencies` and pnpm reports "Already up to date" while the plugin stays missing (RCA 2026-09-18 — The Vanished Plugin).
|
|
24
26
|
- Health ok but MCP disconnected → the plugin reconnects on its own within a turn or two; if not after a full turn, restart the harness session. Do not reinstall anything.
|
|
25
27
|
- Package missing → fresh install: do §2 steps 1–6 from scratch.
|
|
26
28
|
|
|
@@ -82,6 +84,11 @@ openviking-server doctor # expect: all checks PASS (config, auth, disk ≥ se
|
|
|
82
84
|
openviking-server # foreground proof; then move to a supervisor
|
|
83
85
|
```
|
|
84
86
|
|
|
87
|
+
Sandbox warning: server startup acquires a PID lock at
|
|
88
|
+
`~/.openviking/data/.openviking.pid` — under a workspace-only file sandbox it
|
|
89
|
+
dies with `PermissionError` / exit 3 at once. Start the server with full file
|
|
90
|
+
access (same as step 2's CLI housekeeping).
|
|
91
|
+
|
|
85
92
|
For persistence: launchd/nohup/systemd — never rely on an agent shell outliving the session. Verify:
|
|
86
93
|
|
|
87
94
|
```sh
|
|
@@ -95,6 +102,14 @@ A stale `~/.openviking/pending/` queue (hundreds of files) from the downtime dra
|
|
|
95
102
|
|
|
96
103
|
Within a turn of the server going healthy, the plugin reconnects (MCP tools answer, `<openviking-context>` appears at the next session start). If MCP tools still error after a full turn: restart the harness session once. Only then suspect the bundle (`~/.dsh/profiles/web/package.json` must list `@openviking/dsh-memory-plugin` in `dsh.profile.bundles`).
|
|
97
104
|
|
|
105
|
+
If the plugin must be (re)installed, run from the **running host's checkout** (find it: `lsof -p <dsh-web-pid> | grep cwd`):
|
|
106
|
+
|
|
107
|
+
```sh
|
|
108
|
+
pnpm dsh plugin --profile web add @openviking/dsh-memory-plugin
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
This is the only install path that reconciles `dsh.profile.bundles` and survives profile rebuilds. With `patchReload: "live"` in the manifest the profile recomposes without a host restart and `<openviking-context>` returns mid-session.
|
|
112
|
+
|
|
98
113
|
## 3. Verification checklist (all seven, in order)
|
|
99
114
|
|
|
100
115
|
1. `openviking-server --version` → prints version
|
|
@@ -112,3 +127,24 @@ Within a turn of the server going healthy, the plugin reconnects (MCP tools answ
|
|
|
112
127
|
- `auth_mode: "dev"` = no auth, localhost only. Never bind `0.0.0.0` without switching to API-key auth (docs: Authentication guide).
|
|
113
128
|
- Piped `init` answers are prompt-order-fragile (Step 3) — count prompts, don't trust defaults.
|
|
114
129
|
- Re-examine actual prompt output on every version bump; this sequence was tested against OpenViking 0.4.20 / plugin 0.3.2 (2026-09-16) and the wizard's prompts are not a stable contract.
|
|
130
|
+
|
|
131
|
+
## 5. Report the run — always, before finishing
|
|
132
|
+
|
|
133
|
+
Every execution of this skill — recovery, install, or clean-bill-of-health —
|
|
134
|
+
ends by writing an RCA report so the next run diffs from a written baseline.
|
|
135
|
+
|
|
136
|
+
- Path: `~/.dsi/dev/ov/YYYY-MM-DD HH-MM - <Short Name> — <What Happened>.md`
|
|
137
|
+
(mkdir the directory first; date = when the analysis ran, 24h `HH-MM` to
|
|
138
|
+
keep colons out of the filename).
|
|
139
|
+
- Required sections: TL;DR (+ layman glossary), symptom & diagnosis path
|
|
140
|
+
(the §0 gate table with pass/fail per gate), one RCA block per root cause
|
|
141
|
+
with file/line evidence, a mermaid **flowchart** (the journey, failed
|
|
142
|
+
branches colored) and a mermaid **sequenceDiagram** (who talks to whom),
|
|
143
|
+
fix application & testing (command → result table), corrective actions,
|
|
144
|
+
and a closing **open question**.
|
|
145
|
+
- Exemplar: `~/.dsi/dev/ov/2026-09-18 09-56 - The Vanished Plugin and the
|
|
146
|
+
Sandboxed Lock — OpenViking Recovery RCA.md`.
|
|
147
|
+
- If the run surfaced a new trap or fixed a gap in this skill, update this
|
|
148
|
+
SKILL.md (repo copy at `deepseek-insight/.agents/skills/dsi-ov-setup/`),
|
|
149
|
+
then re-copy to the mirror `~/.agents/skills/dsi-ov-setup/` — a skill the
|
|
150
|
+
slash menu never sees is a skill nobody invokes.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dsi-sync
|
|
3
|
+
description: Use when the user runs /dsi-sync or says to sync/mirror DeepSeek Insight (DSI) to its GitHub mirror — re-syncs ~/agentic-ai/deepseek-insight into ~/github/deepseek-insight (excluding dev/ and .git/), then commits and pushes the mirror. Covers resync, commit, push, and no-change skip.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DSI → GitHub Mirror Sync
|
|
7
|
+
|
|
8
|
+
Mirror DSI into a publishable GitHub repo, then commit & push. The mirror lives at
|
|
9
|
+
`~/github/deepseek-insight` and has its own `.git` (origin:
|
|
10
|
+
`git@github.com:mitmplay/deepseek-insight.git`). Never touch the mirror's `.git`
|
|
11
|
+
or DSI's `dev/` folder.
|
|
12
|
+
|
|
13
|
+
## Source of truth
|
|
14
|
+
|
|
15
|
+
- SOURCE: `~/agentic-ai/deepseek-insight/`
|
|
16
|
+
- MIRROR: `~/github/deepseek-insight/`
|
|
17
|
+
- EXCLUDED from sync (always): `dev/`, `.git/`
|
|
18
|
+
- The mirror's own `.git` is protected because rsync excludes `.git/` — with
|
|
19
|
+
`--delete`, excluded target paths are never deleted.
|
|
20
|
+
|
|
21
|
+
## 1. Re-sync
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
rsync -a --delete \
|
|
25
|
+
--exclude 'dev/' \
|
|
26
|
+
--exclude '.git/' \
|
|
27
|
+
~/agentic-ai/deepseek-insight/ \
|
|
28
|
+
~/github/deepseek-insight/
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Trailing slashes matter: they copy CONTENTS of source into target, not the folder itself.
|
|
32
|
+
|
|
33
|
+
## 2. Verify the exclusions held
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
test -d ~/github/deepseek-insight/dev && echo 'BAD: dev leaked' || echo 'ok: no dev'
|
|
37
|
+
test -d ~/github/deepseek-insight/.git && echo 'ok: .git intact' || echo 'BAD: .git lost'
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If either BAD line prints, stop and fix before committing — do not push a broken mirror.
|
|
41
|
+
|
|
42
|
+
## 3. Commit & push (skip if nothing changed)
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
cd ~/github/deepseek-insight
|
|
46
|
+
git add -A
|
|
47
|
+
if git diff --cached --quiet; then
|
|
48
|
+
echo 'no changes to sync'
|
|
49
|
+
else
|
|
50
|
+
git commit -m "sync from DSI $(date '+%Y-%m-%d %H:%M')"
|
|
51
|
+
git push origin main
|
|
52
|
+
fi
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
- Always use `git add -A` then check the staged diff — never commit blind.
|
|
56
|
+
- Quote the date format: `(date '+%Y-%m-%d %H:%M')` — unquoted, the space
|
|
57
|
+
word-splits the expansion and `date` errors with "illegal time format"
|
|
58
|
+
(observed 2026-09-18).
|
|
59
|
+
- Report to the user: file count changed (or "no changes"), commit hash, push result.
|
|
60
|
+
- If push is rejected (non-fast-forward), STOP and ask the user — never force-push
|
|
61
|
+
without explicit approval.
|
|
62
|
+
|
|
63
|
+
## Failure handling
|
|
64
|
+
|
|
65
|
+
- `rsync` errors: report the failing path; do not commit a partial sync.
|
|
66
|
+
- Remote unreachable (SSH): report the error verbatim; the sync itself is still
|
|
67
|
+
complete and committed locally.
|
|
68
|
+
- Mirror `.git` missing entirely: ask the user before re-initializing — do not
|
|
69
|
+
invent a remote URL.
|
package/README.md
CHANGED
|
@@ -1,48 +1,42 @@
|
|
|
1
1
|
# DeepSeek Insight
|
|
2
2
|
|
|
3
|
-
-
|
|
4
|
-
- [DeepSeek Insight](https://gitlab.com/wharsojo.dev/deepseek-insight) (DSI) shows you the **whole floor**
|
|
3
|
+
> [DeepSeek Insight](https://github.com/mitmplay/deepseek-insight) (**DSI**) **See your multiple agents run on the floor (agent, sub-agent, etc)**, each **conversation on the floor are updated instantly**.
|
|
5
4
|
|
|
6
|
-
>
|
|
5
|
+
> A `Control room` built on [Deepseek Harness's](https://github.com/deepseek-ai/deepseek-harness) (**DSH**) **records**: any (running) session, show side by side on the floor; **Lineage tree** of **parent to sub-agents**; Clean conversation with **tool-call(s) chips** with status **+** auto-expand **thingking chips**.
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
> A `Prompt Input` with **Slash-command(/)**, **Macros(!)** and **Auto-complete(?)**. Prompt-manager you can search it and to manage macros & autocomplete; user-prompts worth keeping is one-click-away tobe reuse.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
>
|
|
9
|
+
> Included skills for:
|
|
10
|
+
> - Spec and Tasks execution,
|
|
11
|
+
> - Integration helper for [OpenViking](https://openviking.ai/)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
> **Your language.** The interface speaks English, Chinese, Indonesian & Spanish.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
<details>
|
|
16
|
+
<summary>Deepseek-insight-panels</summary>
|
|
17
|
+
<img src="docs/images/deepseek-insight-panels.png"/>
|
|
18
|
+
</details>
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
- **The workspace explorer, with git diff.** A side panel shows the files your agent is touching. Changed files are flagged and pulsing while the agent works; click one and you get a **real git diff** — additions in green, removals in red — rendered from the file's live buffer, so it updates as the agent edits and refreshes if you (or anything else) change the file underneath.
|
|
19
|
-
- **Presets and workspaces.** Start each chat with the right agent for the job — a coder, a researcher, a generalist — pointed at the right folder.
|
|
20
|
-
- **Many conversations, one page.** Conversations live in panels you can open side by side; compare two runs, or keep a scratch chat next to the main one.
|
|
21
|
-
- **A family tree under every chat.** When your agent spawns sub-agents, they appear as their own panels **below the parent that made them** — a ghost-tinted panel that stays put on refresh, so you always know who was working for whom. And when one conversation is worth a second try, **fork it**: one click clones the loaded context into a fresh session that starts exactly where the original stood — same history, new task.
|
|
22
|
-
- **A prompt library that files itself.** Save any bubble into the library and give it short filing words (tags) at save time; filter the prompt manager by tag chips or `+tag` words in the search box, and narrow the suggestion strip with its own tag chips — filters survive a reload. Tune the offered tags in `~/.dsi/settings.yaml` under `prompts.tags`.
|
|
23
|
-
- **Your language.** The interface speaks English, Chinese, and Indonesian.
|
|
20
|
+
---
|
|
24
21
|
|
|
25
|
-
|
|
22
|
+
## Quick Start
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
```sh
|
|
24
|
+
```bash
|
|
30
25
|
npx @deepseek-insight/dsi@latest dsh --sync --zai
|
|
26
|
+
# Open http://localhost:5174
|
|
31
27
|
```
|
|
32
28
|
|
|
33
|
-
|
|
29
|
+
- **`npx @deepseek-insight/dsi@latest`** — get latest DSI.
|
|
30
|
+
- `dsh` — starts **DSH** (`dsh web`) and **DSI** together, as one pair and runs it.
|
|
31
|
+
- `--sync` — copies DSH token to DSI config — **one window, one Ctrl-C stops both**.
|
|
32
|
+
- `--zai` — **optional.** It bootstraps the GLM (Z.AI) provider into the harness settings (`~/.dsh/settings.yaml`). **If you do not have a GLM account, simply leave it off** — DSI will use whatever provider your harness is already configured with.
|
|
33
|
+
|
|
34
34
|
|
|
35
|
-
- `npx @deepseek-insight/dsi@latest` — fetches the newest published DSI and runs it, **no install step**; nothing is added to your project, and `@latest` is what keeps it the latest.
|
|
36
|
-
- `dsh` — talk to the harness side: this subcommand starts the **DSH host** (`dsh web`) and the **DSI page** together, as one pair.
|
|
37
|
-
- `--sync` — copies the harness one-time launch token into DSI config (`~/.dsi/settings.yaml`) so the page can speak to the host, then serves both in the foreground — **one window, one Ctrl-C stops both**.
|
|
38
|
-
- `--zai` — **optional.** It bootstraps the GLM (Z.AI) provider into the harness settings (`~/.dsh/settings.yaml`). **If you do not have a GLM account, simply leave it off** — DSI will use whatever provider your harness is already configured with:
|
|
39
35
|
|
|
40
|
-
```sh
|
|
41
|
-
npx @deepseek-insight/dsi@latest dsh --sync
|
|
42
|
-
```
|
|
43
36
|
|
|
44
|
-
When it is up, your browser opens the page by itself (default `http://127.0.0.1:5174`).
|
|
37
|
+
When it is up, your browser opens the page by itself (default `http://127.0.0.1:5174`).
|
|
45
38
|
|
|
46
39
|
## License
|
|
47
40
|
|
|
48
|
-
[Apache-2.0](LICENSE) — Copyright © 2026 Widi Harsojo
|
|
41
|
+
[Apache-2.0](LICENSE) — Copyright © 2026 [Widi Harsojo](https://www.linkedin.com/in/wharsojo/)
|
|
42
|
+
> OPEN TO WORK (SG_PR)
|
package/bin/dsi.mjs
CHANGED
|
@@ -4,15 +4,18 @@
|
|
|
4
4
|
// prepares the artifacts, this launcher only runs them. The build is resolved
|
|
5
5
|
// relative to this file, not the cwd, so a globally installed or npx-run
|
|
6
6
|
// package serves its own bundled build from any directory.
|
|
7
|
-
// `dsi
|
|
8
|
-
// default model to ~/.dsh/settings.yaml
|
|
7
|
+
// `--zai` (on `dsi web` / `dsi dsh --sync`) bootstraps a fresh DSH install:
|
|
8
|
+
// it adds the ZAI provider and the default model to ~/.dsh/settings.yaml
|
|
9
|
+
// (idempotent — existing entries win). The standalone `dsi zai` command was
|
|
10
|
+
// decommissioned — the flag does the same work before anything boots.
|
|
9
11
|
// `dsi dsh --token <token>` copies a dsh launch token into DSI's config
|
|
10
12
|
// ($DSI_CONFIG_PATH or ~/.dsi/settings.yaml, key dsh.authToken — the same
|
|
11
13
|
// file scripts/dsh-web-synced.sh keeps fresh). `dsi dsh --sync` runs that
|
|
12
14
|
// script AND serves the dsi build — one foreground pair, one Ctrl-C.
|
|
13
15
|
// `--dev` serves the Vite dev server instead of the build (sources only).
|
|
14
16
|
// `dsi dsh --sync-kills` sweeps orphans a lost previous run left behind.
|
|
15
|
-
// `dsi dsh --ov` (or --sync --ov) installs the OpenViking
|
|
17
|
+
// `dsi dsh --ov` (or --sync --ov, or web --ov) installs the OpenViking
|
|
18
|
+
// memory plugin into
|
|
16
19
|
// the active dsh profile by delegating to `dsh plugin ... add` (idempotent).
|
|
17
20
|
|
|
18
21
|
import { spawn, spawnSync } from 'node:child_process';
|
|
@@ -65,11 +68,9 @@ const USAGE = [
|
|
|
65
68
|
'',
|
|
66
69
|
' All commands (flags — see above):',
|
|
67
70
|
'',
|
|
68
|
-
' dsi web [--zai] [--dev] [--token <token>]',
|
|
71
|
+
' dsi web [--zai] [--ov] [--dev] [--token <token>]',
|
|
69
72
|
' serve the DSI page alone (PORT env default 5174,',
|
|
70
73
|
' HOST env default 127.0.0.1)',
|
|
71
|
-
' dsi zai add the ZAI provider + default model to',
|
|
72
|
-
' ~/.dsh/settings.yaml',
|
|
73
74
|
' dsi dsh --token <token>',
|
|
74
75
|
' store the dsh launch token in ~/.dsi/settings.yaml',
|
|
75
76
|
' dsi dsh --sync [--zai] [--dev] [--ov]',
|
|
@@ -87,7 +88,7 @@ if (command === '--help' || command === '-h' || command === 'help') {
|
|
|
87
88
|
console.log(USAGE);
|
|
88
89
|
process.exit(0);
|
|
89
90
|
}
|
|
90
|
-
if (command !== 'web' && command !== '
|
|
91
|
+
if (command !== 'web' && command !== 'dsh') {
|
|
91
92
|
console.error(command === undefined ? 'dsi: missing command' : `dsi: unknown command "${command}"`);
|
|
92
93
|
console.error(USAGE);
|
|
93
94
|
process.exit(64);
|
|
@@ -137,11 +138,6 @@ function isRecord(value) {
|
|
|
137
138
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
138
139
|
}
|
|
139
140
|
|
|
140
|
-
if (command === 'zai') {
|
|
141
|
-
addZaiProvider();
|
|
142
|
-
process.exit(0);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
141
|
// ── dsi dsh ────────────────────────────────────────────────────────────────
|
|
146
142
|
|
|
147
143
|
/** One pkill -f sweep per orphan signature. The patterns match only the
|
|
@@ -525,12 +521,14 @@ function startDsiServer(defaultPort = '5174') {
|
|
|
525
521
|
if (command === 'web') {
|
|
526
522
|
// Optional dsi-side flags, the same meanings as `dsi dsh --sync`: --zai
|
|
527
523
|
// bootstraps the ZAI provider BEFORE anything boots (so this run picks it
|
|
528
|
-
// up), --token stores the dsh launch token before the page serves, --
|
|
529
|
-
//
|
|
524
|
+
// up), --token stores the dsh launch token before the page serves, --ov
|
|
525
|
+
// installs the OpenViking memory plugin, --dev swaps the built server for
|
|
526
|
+
// the Vite dev server. Everything is done
|
|
530
527
|
// first, then the one child spawns and the script falls off the end.
|
|
531
528
|
const rest = process.argv.slice(3);
|
|
532
529
|
const withZai = rest.includes('--zai');
|
|
533
530
|
const withDev = rest.includes('--dev');
|
|
531
|
+
const withOv = rest.includes('--ov');
|
|
534
532
|
const tokenIdx = rest.indexOf('--token');
|
|
535
533
|
let token;
|
|
536
534
|
if (tokenIdx !== -1) {
|
|
@@ -541,7 +539,7 @@ if (command === 'web') {
|
|
|
541
539
|
}
|
|
542
540
|
}
|
|
543
541
|
const unknown = rest.filter((arg, i) =>
|
|
544
|
-
arg !== '--zai' && arg !== '--dev'
|
|
542
|
+
arg !== '--zai' && arg !== '--ov' && arg !== '--dev'
|
|
545
543
|
&& arg !== '--token' && !(tokenIdx !== -1 && i === tokenIdx + 1)
|
|
546
544
|
);
|
|
547
545
|
if (unknown.length > 0) {
|
|
@@ -550,9 +548,14 @@ if (command === 'web') {
|
|
|
550
548
|
process.exit(64);
|
|
551
549
|
}
|
|
552
550
|
if (withZai) addZaiProvider();
|
|
551
|
+
if (withOv) runOvPlugin();
|
|
553
552
|
if (token !== undefined) setDshAuthToken(token);
|
|
554
553
|
runSkillsMirror();
|
|
555
554
|
const child = withDev ? startDsiDevServer() : startDsiServer();
|
|
555
|
+
// Same browser-follows-the-UI contract as the pair (runSyncedPair): open
|
|
556
|
+
// the default browser at the serving port — --dev's Vite server takes
|
|
557
|
+
// 5175, the built server 5174; PORT/HOST overrides apply.
|
|
558
|
+
openBrowser(`http://${process.env.HOST ?? '127.0.0.1'}:${process.env.PORT ?? (withDev ? '5175' : '5174')}/`);
|
|
556
559
|
|
|
557
560
|
for (const signal of ['SIGINT', 'SIGTERM']) {
|
|
558
561
|
process.on(signal, () => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.status.svelte-x2ntn8{flex-shrink:0;justify-content:center;align-items:center;width:.5rem;height:.5rem;display:inline-flex}.status.run.svelte-x2ntn8{gap:.0625rem}.bar.svelte-x2ntn8{background:var(--si-run,#b91c1c);border-radius:9999px;width:.125rem;height:100%;animation:1.1s ease-in-out infinite svelte-x2ntn8-ss-stream}.bar.svelte-x2ntn8:nth-child(2){animation-delay:.18s}.bar.svelte-x2ntn8:nth-child(3){animation-delay:.36s}@keyframes svelte-x2ntn8-ss-stream{0%,to{height:30%}50%{height:100%}}@media (prefers-reduced-motion:reduce){.bar.svelte-x2ntn8{animation:none}.bar.svelte-x2ntn8:first-child{height:55%}.bar.svelte-x2ntn8:nth-child(2){height:100%}.bar.svelte-x2ntn8:nth-child(3){height:35%}}.status.idle.svelte-x2ntn8:after{content:"";background:var(--si-idle,#52606d);border-radius:9999px;width:.5rem;height:.5rem}.status.delegated.run.svelte-x2ntn8 .bar:where(.svelte-x2ntn8){background:var(--si-run-delegated,#b91c1c)}.status.delegated.idle.svelte-x2ntn8:after{background:var(--si-idle-delegated,#b91c1c)}.status.svelte-x2ntn8{position:relative}.badge.svelte-x2ntn8{color:#fff;text-align:center;background:#b91c1c;border-radius:9999px;min-width:.5rem;padding:0 .0625rem;font-size:.5rem;font-weight:600;line-height:.625rem;position:absolute;top:-.375rem;left:.4375rem}.title-chip.svelte-ds4wzl{white-space:nowrap;flex:auto;align-items:center;gap:.1875rem;min-width:0;padding:.125rem .375rem;line-height:1;display:flex}.chip-label.svelte-ds4wzl{text-overflow:ellipsis;min-width:0;overflow:hidden}.title-chip.dead.svelte-ds4wzl{color:#991b1b;--si-idle:#991b1b;background:0 0;border-color:#991b1b}.ws-chip.svelte-u6vikv{align-items:center;gap:var(--wsc-gap,.1875rem);width:var(--wsc-width,auto);max-width:var(--wsc-max-width,6.5rem);font-size:var(--wsc-font-size,.75rem);padding:var(--wsc-padding,.15rem .375rem);vertical-align:middle;white-space:nowrap;border:1px solid var(--wsc-border,color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a));background:var(--wsc-bg,color-mix(in srgb, var(--color-accent-blue,#3b82f6) 8%, transparent));color:var(--wsc-fg,color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a));border-radius:9999px;flex-shrink:0;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.ws-chip.svelte-u6vikv svg{color:inherit;flex-shrink:0}.ws-chip.ghost.svelte-u6vikv{border-color:var(--wsc-border,#52606d73);background:var(--wsc-bg,var(--si-chip-ghost-bg,color-mix(in srgb, var(--color-surface-alt,#f1f3f5) 35%, transparent)));color:var(--wsc-fg,var(--si-chip-ghost,#52606d))}.chip-label.svelte-u6vikv{text-overflow:ellipsis;min-width:0;overflow:hidden}.ws-slot.svelte-1weslq2{flex-shrink:0;width:6.5rem}.ws-slot.branch.svelte-1weslq2{color:var(--color-text-muted,#adb5bd);align-items:center;display:inline-flex;overflow:hidden}.ws-slot.branch.fork.svelte-1weslq2{color:#00a802}.ws-slot.branch.doc-child.svelte-1weslq2{color:maroon}.ws-slot.branch.ws-child.svelte-1weslq2{color:#06c}.tree-line.svelte-1weslq2{flex:1;height:10px;position:relative}.tree-line.svelte-1weslq2:before{content:"";border-bottom:2px solid;border-left:2px solid;border-bottom-left-radius:5px;position:absolute;inset:0 3px 0 0}.tree-line.svelte-1weslq2:after{content:"";border-top:2px solid;border-right:2px solid;width:4px;height:4px;position:absolute;top:7px;right:1.5px;transform:rotate(45deg)}.label.svelte-1weslq2{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.group-rows.svelte-y4gy65{flex-direction:column;gap:.125rem;display:flex}.row.svelte-y4gy65{min-width:0;color:var(--color-text-primary,#212529);border-radius:.3rem;align-items:center;gap:.3rem;padding:.25rem .375rem;font-size:.75rem;transition:background-color .15s;display:flex}.row.current.svelte-y4gy65{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 30%, #fff);box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);font-weight:600}.row.panel-row.svelte-y4gy65{cursor:pointer}.row.panel-row.svelte-y4gy65 .label,.row.panel-row.svelte-y4gy65 .ws{color:#9400d3}.row.panel-row.dead.svelte-y4gy65:not(.current) .label,.row.panel-row.dead.svelte-y4gy65:not(.current) .ws{color:#991b1b}.row.panel-row.svelte-y4gy65 .row-btn{color:#9400d3;opacity:.7}.row.panel-row.dead.svelte-y4gy65:not(.current) .row-btn{color:#991b1b}.row.ghost-row.svelte-y4gy65{cursor:pointer;opacity:.88;font-size:.6875rem}.row.ghost-row.svelte-y4gy65:hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 20%, #fff);opacity:1}.row.ghost-row.svelte-y4gy65:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 20%, #fff);outline-offset:-2px;outline:2px solid #1e3a8a}.adopt-hint.svelte-y4gy65{color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 30%, #1e3a8a);opacity:0;flex-shrink:0;font-size:.5625rem;font-style:italic;transition:opacity .15s}.row.ghost-row.svelte-y4gy65:hover .adopt-hint:where(.svelte-y4gy65),.row.ghost-row.svelte-y4gy65:focus-visible .adopt-hint:where(.svelte-y4gy65){opacity:1}.spawned-by.svelte-y4gy65{text-overflow:ellipsis;white-space:nowrap;max-width:7rem;color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 30%, #1e3a8a);flex-shrink:0;align-items:center;gap:.125rem;font-size:.5625rem;display:inline-flex;overflow:hidden}.spawned-by.svelte-y4gy65 svg{flex-shrink:0}.row.panel-row.svelte-y4gy65:hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 20%, #fff)}.row.panel-row.svelte-y4gy65:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 20%, #fff);outline-offset:-2px;outline:2px solid #1e3a8a}.row.current.panel-row.svelte-y4gy65:hover,.row.current.panel-row.svelte-y4gy65:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 34%, #fff)}.row.dead.svelte-y4gy65:not(.current){color:#991b1b;--si-idle:#991b1b}.row-actions.svelte-y4gy65{flex-shrink:0;align-items:center;gap:.125rem;margin-right:-.25rem;display:inline-flex}.row-btn{width:1.125rem;height:1.125rem;color:inherit;cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.row.panel-row.svelte-y4gy65:hover .row-btn,.row-btn:focus-visible{opacity:1}.row-btn:hover,.row-btn:focus-visible{background:var(--color-surface-hover,#0000001a);outline:none}.row.current.svelte-y4gy65 .row-btn:hover,.row.current.svelte-y4gy65 .row-btn:focus-visible{background:#00000014}.seg-group.svelte-akbq14{flex-shrink:0;align-items:stretch;display:flex}.seg.svelte-akbq14{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:.15rem .275rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.seg.svelte-akbq14 svg{display:block}.seg.svelte-akbq14:disabled{cursor:default;opacity:.6}.seg.left.svelte-akbq14{border-radius:9999px 0 0 9999px}.seg.right.svelte-akbq14{border-left-width:0;border-radius:0 9999px 9999px 0}.seg.svelte-akbq14:not(:disabled):hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.seg.svelte-akbq14:focus-visible{outline-offset:-2px;outline:2px solid #1e3a8a}.pane.svelte-1pi3b2j{flex-direction:column;flex:none;max-height:50%;margin-top:.125rem;display:flex}.panel-group.svelte-1pi3b2j{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);background:linear-gradient(180deg, color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, #fff), color-mix(in srgb, var(--color-accent-blue,#3b82f6) 7%, #fff));border-radius:.5rem;flex-direction:column;flex:auto;gap:.125rem;min-height:0;padding:.25rem;display:flex}.panel-container.svelte-1pi3b2j{flex:auto;min-height:0;overflow-y:auto}.group-head-row.svelte-1pi3b2j{flex-shrink:0;align-items:center;gap:.25rem;min-width:0;display:flex}.group-head.svelte-1pi3b2j{min-width:0;color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border:none;border-radius:.375rem;flex:auto;align-items:center;gap:.375rem;padding:.25rem .375rem;font-size:.6875rem;line-height:1.25;transition:background-color .15s;display:flex}.group-head.svelte-1pi3b2j:hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 18%, #fff)}.group-head.svelte-1pi3b2j:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 18%, #fff);outline-offset:-2px;outline:2px solid #1e3a8a}.group-head.svelte-1pi3b2j svg{color:#1e3a8a;flex-shrink:0}.head-title.svelte-1pi3b2j{white-space:nowrap;color:#1e3a8a;flex:auto;align-items:center;min-width:0;font-weight:600;display:flex;overflow:hidden}.pill.svelte-mm9fzx{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;white-space:nowrap;background:0 0;border-radius:9999px;align-items:center;gap:.25rem;max-width:9rem;padding:.25rem .5rem;font-size:.625rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.pill.svelte-mm9fzx:hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.pill.on.svelte-mm9fzx{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);color:#fff}.pill.count-only.svelte-mm9fzx:not(.on){color:var(--color-text-primary,#212529);background:#9acd32;border-color:#648520}.pill.count-only.svelte-mm9fzx:not(.on):hover{color:var(--color-text-primary,#212529);background:#83ae2b;border-color:#55711c}.pill.svelte-1f6ce44{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;white-space:nowrap;background:0 0;border-radius:9999px;align-items:center;gap:.25rem;padding:.25rem;font-size:.625rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.pill.svelte-1f6ce44:hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.blank-group.svelte-1f6ce44{flex-shrink:0;align-items:stretch;display:flex}.pill.left.svelte-1f6ce44{border-radius:9999px 0 0 9999px}.pill.mid.svelte-1f6ce44{border-left-width:0;border-radius:0}.pill.right.svelte-1f6ce44{border-left-width:0;border-radius:0 9999px 9999px 0}.pill.on.svelte-1f6ce44{color:var(--color-text-primary,#212529);background:#9acd32;border-color:#648520}.pill.on.svelte-1f6ce44:hover{color:var(--color-text-primary,#212529);background:#83ae2b;border-color:#55711c}.pill.svelte-1f6ce44 svg{flex-shrink:0}.pill.on.svelte-1f6ce44 svg{color:inherit}.icon-btn.svelte-zmx0en{width:22px;height:22px;color:var(--color-text-secondary,#6c757d);background:0 0;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,background-color .15s;display:inline-flex}.icon-btn.svelte-zmx0en:hover,.icon-btn.svelte-zmx0en:focus-visible{color:var(--color-accent-blue,#3b82f6);background:var(--color-surface-hover,#0000000d);outline:none}.panel.svelte-zmx0en{z-index:60;border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-elevated,#fff);border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex;position:fixed;box-shadow:0 4px 16px #0000001f}.panel-head.svelte-zmx0en{justify-content:space-between;align-items:center;display:flex}.panel-title.svelte-zmx0en{color:var(--color-text-primary,#212529);font-size:.75rem;font-weight:600}.hidden-toggle.svelte-zmx0en{border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border-radius:999px;padding:.0625rem .5rem;font-size:.625rem}.hidden-toggle[aria-pressed=true].svelte-zmx0en{color:var(--color-accent-blue,#3b82f6);border-color:var(--color-accent-blue,#3b82f6)}.crumbs.svelte-zmx0en{white-space:nowrap;align-items:center;gap:.125rem;padding-bottom:.125rem;display:flex;overflow-x:auto}.crumb.svelte-zmx0en{color:var(--color-accent-blue,#3b82f6);cursor:pointer;background:0 0;border:none;border-radius:.25rem;align-items:center;gap:.1875rem;padding:.0625rem .25rem;font-size:.6875rem;display:inline-flex}.crumb.svelte-zmx0en:hover{background:var(--color-surface-hover,#0000000d)}.crumb.current.svelte-zmx0en{color:var(--color-text-primary,#212529);cursor:default;font-weight:600}.crumb-sep.svelte-zmx0en{color:var(--color-text-secondary,#6c757d);flex-shrink:0}.rows.svelte-zmx0en{border:1px solid var(--color-surface-border,#dee2e6);border-radius:.375rem;flex-direction:column;max-height:240px;padding:.25rem;display:flex;overflow-y:auto}.row.svelte-zmx0en{width:100%;color:var(--color-text-primary,#212529);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.25rem;align-items:center;gap:.375rem;padding:.3125rem .375rem;font-size:.75rem;display:flex}.row.svelte-zmx0en:hover,.row.svelte-zmx0en:focus-visible{background:var(--color-surface-hover,#0000000d);outline:none}.row.hidden.svelte-zmx0en{opacity:.55}.row-name.svelte-zmx0en{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.row-chev.svelte-zmx0en{color:var(--color-text-secondary,#6c757d);flex-shrink:0}.hint.svelte-zmx0en{color:var(--color-text-secondary,#6c757d);font-size:.6875rem}.panel-actions.svelte-zmx0en{justify-content:flex-end;gap:.375rem;display:flex}.btn.svelte-zmx0en{cursor:pointer;border-radius:.375rem;padding:.375rem .75rem;font-size:.75rem}.btn.ghost.svelte-zmx0en{border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-secondary,#6c757d);background:0 0}.btn.ghost.svelte-zmx0en:hover{color:var(--color-text-primary,#212529)}.btn.solid.svelte-zmx0en{border:1px solid var(--color-accent-blue,#3b82f6);background:var(--color-accent-blue,#3b82f6);color:#fff;font-weight:500}.btn.solid.svelte-zmx0en:disabled,.btn.ghost.svelte-zmx0en:disabled{opacity:.55;cursor:default}.target.svelte-zmx0en{color:var(--color-text-secondary,#6c757d);overflow-wrap:anywhere;margin:0;font-size:.625rem}.mono.svelte-zmx0en{font-family:ui-monospace,monospace;font-weight:400}.error.svelte-zmx0en{color:var(--color-status-fail,#ef4444);overflow-wrap:anywhere;font-size:.6875rem}.meta.svelte-xp425j{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.menu.svelte-1x5rzx5{background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);border-radius:.5rem;flex-direction:column;gap:.25rem;min-width:13rem;max-width:16rem;padding:.375rem;display:flex;box-shadow:0 .5rem 1.25rem #00000026}.row.svelte-1x5rzx5{width:100%;color:var(--color-text-primary,#212529);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.375rem;padding:.375rem .5rem;font-size:.75rem;line-height:1.3;display:block}.row.svelte-1x5rzx5:hover:not(:disabled),.row.svelte-1x5rzx5:focus-visible:not(:disabled){background:var(--color-surface-hover,#e9ecef)}.row.svelte-1x5rzx5:disabled{opacity:.5;cursor:default}.row.danger.svelte-1x5rzx5{color:var(--color-accent-rose,#f43f5e)}.row.danger.svelte-1x5rzx5:hover:not(:disabled),.row.danger.svelte-1x5rzx5:focus-visible:not(:disabled){background:color-mix(in srgb, var(--color-accent-rose,#f43f5e) 12%, transparent)}.row.primary.svelte-1x5rzx5{color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 60%, #1e3a8a);font-weight:600}.pane.svelte-1x5rzx5{flex-direction:column;gap:.375rem;display:flex}.pane.svelte-1x5rzx5 input:where(.svelte-1x5rzx5){border:1px solid var(--color-surface-border,#dee2e6);width:100%;color:var(--color-text-primary,#212529);background:var(--color-surface-elevated,#fff);border-radius:.375rem;padding:.375rem .5rem;font-size:.75rem}.row-set.svelte-1x5rzx5{justify-content:flex-end;gap:.25rem;display:flex}.cost.svelte-1x5rzx5{color:var(--color-text-secondary,#6c757d);margin:0;font-size:.6875rem;line-height:1.35}.error.svelte-1x5rzx5{color:var(--color-accent-rose,#f43f5e);margin:0;font-size:.6875rem}.header.svelte-1x74v2r{align-items:center;gap:.25rem;min-width:0;display:flex;position:relative}.header.svelte-1x74v2r .ws-chip.menuable{cursor:context-menu}.header.svelte-1x74v2r .ws-chip.menuable:hover{--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 80%, #1e3a8a)}.header.svelte-1x74v2r .ws-chip.ghost{--wsc-bg:transparent}.menu-anchor.svelte-1x74v2r{z-index:40;position:absolute;top:100%;left:.375rem}.head.svelte-1x74v2r{min-width:0;color:var(--color-text-primary,#212529);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.375rem;flex:auto;align-items:center;gap:.375rem;padding:.25rem .375rem;font-size:.6875rem;line-height:1.25;transition:background-color .15s;display:flex}.head.svelte-1x74v2r:hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 18%, #fff)}.head.svelte-1x74v2r:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 18%, #fff);outline:2px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);outline-offset:-2px}.head.svelte-1x74v2r>svg{color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);flex-shrink:0}.chip.svelte-1x74v2r{vertical-align:middle;white-space:nowrap;border:1px solid #0000;border-radius:9999px;align-items:center;gap:.1875rem;max-width:6.5rem;padding:.15rem .375rem;font-size:.75em;line-height:1;display:inline-flex}.chip.svelte-1x74v2r svg{flex-shrink:0}.chip-label.svelte-1x74v2r{text-overflow:ellipsis;min-width:0;overflow:hidden}.chip.agent.svelte-1x74v2r{color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);border-color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 8%, transparent)}.summary.svelte-1x74v2r{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);font-weight:600;overflow:hidden}.placeholder.svelte-1x74v2r{color:var(--color-text-secondary,#6c757d);font-weight:400}.pill.svelte-1wj0ebt{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;white-space:nowrap;background:0 0;border-radius:9999px;align-items:center;gap:.25rem;max-width:9rem;padding:.25rem .5rem;font-size:.625rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.pill.svelte-1wj0ebt:hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.pill.on.svelte-1wj0ebt{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);color:#fff}.pill.preset.reg.svelte-1wj0ebt:not(.on){color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);border-color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 8%, transparent)}.pill.preset.reg.svelte-1wj0ebt:not(.on):hover{color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);border-color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 12%, #fff)}.pill.preset.on.svelte-1wj0ebt{background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 75%, #4c1d95);border-color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 75%, #4c1d95);color:#fff}.pill.svelte-1wj0ebt svg{flex-shrink:0}.pill.on.svelte-1wj0ebt svg{color:inherit}.label.svelte-1wj0ebt{text-overflow:ellipsis;min-width:0;overflow:hidden}.count.svelte-1wj0ebt{font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.5625rem}.pill.svelte-dam7rh{cursor:pointer;--wsc-fg:#52606d;--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);--wsc-bg:transparent;--wsc-font-size:.625rem;--wsc-padding:.25rem .5rem;--wsc-gap:.25rem;--wsc-max-width:9rem;background:0 0;border:none;padding:0;display:inline-flex}.pill.svelte-dam7rh:not(.on):hover{--wsc-fg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);--wsc-bg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.pill.reg.svelte-dam7rh:not(.on){--wsc-fg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);--wsc-bg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 8%, transparent)}.pill.on.svelte-dam7rh{--wsc-fg:#fff;--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);--wsc-bg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a)}.pill.ghost.svelte-dam7rh:not(.on){--wsc-border:#52606d73}.pill.ghost.svelte-dam7rh:not(.on):hover{--wsc-fg:#495057;--wsc-border:#52606d}.pill.ghost.on.svelte-dam7rh{--wsc-fg:#495057;--wsc-border:#52606d;--wsc-bg:var(--color-surface-hover,#e9ecef)}.count.svelte-dam7rh{font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.5625rem}.divider.svelte-dam7rh{background:var(--color-surface-border,#dee2e6);flex-shrink:0;width:1px;height:.75rem}.filters.svelte-txyks4{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);background:linear-gradient(135deg,#0000,#6d05ff42);border-radius:.5rem;flex-direction:column;align-items:stretch;gap:.25rem;min-width:0;margin:.125rem 0;padding:.25rem;display:flex}.pills.svelte-txyks4{flex-wrap:wrap;align-items:center;gap:.25rem;min-width:0;display:flex}.row.svelte-vv7jet{min-width:0;color:var(--color-text-primary,#212529);border-radius:.375rem;align-items:center;gap:.3rem;padding:.3rem .5rem;font-size:.75rem;transition:background-color .15s;display:flex}.row.child.svelte-vv7jet .label{font-size:.6875rem}a.row.svelte-vv7jet:hover,a.row.svelte-vv7jet:focus-visible{background:var(--color-surface-hover,#e9ecef);outline:none}.time.svelte-vv7jet{color:var(--color-text-muted,#adb5bd);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.625rem}.cal.svelte-qbc0wr{z-index:50;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);-webkit-user-select:none;user-select:none;border-radius:.5rem;width:14rem;margin-top:.25rem;padding:.5rem;position:absolute;top:100%;right:0;box-shadow:0 .5rem 1rem #00000026}.cal-head.svelte-qbc0wr{justify-content:space-between;align-items:center;margin-bottom:.25rem;padding:0 .25rem;display:flex}.cal-nav.svelte-qbc0wr{color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;padding:.25rem;transition:background-color .15s,color .15s;display:inline-flex}.cal-nav.svelte-qbc0wr:hover{background:var(--color-surface-hover,#e9ecef);color:var(--color-text-primary,#212529)}.cal-month.svelte-qbc0wr{color:var(--color-text-primary,#212529);font-size:.6875rem;font-weight:600}.cal-row.svelte-qbc0wr{text-align:center;grid-template-columns:repeat(7,1fr);display:grid}.cal-days.svelte-qbc0wr{margin-bottom:.125rem}.cal-day-head.svelte-qbc0wr{color:var(--color-text-secondary,#6c757d);padding:.125rem 0;font-size:.5625rem;font-weight:600}.cal-day.svelte-qbc0wr{width:1.75rem;height:1.75rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;border-radius:.25rem;flex-direction:column;justify-content:center;align-items:center;margin:0 auto;font-size:.625rem;transition:background-color .15s;display:flex;position:relative}.cal-day.svelte-qbc0wr:hover{background:var(--color-surface-hover,#e9ecef)}.cal-day.empty.svelte-qbc0wr{cursor:default;background:0 0}.cal-day.selected.svelte-qbc0wr{background:var(--color-accent-purple,#8b5cf6);color:#fff;font-weight:600}.cal-day.today.svelte-qbc0wr{color:var(--color-accent-purple,#8b5cf6);font-weight:600}.cal-dot.svelte-qbc0wr{background:var(--color-accent-purple,#8b5cf6);border-radius:9999px;width:.25rem;height:.25rem;position:absolute;bottom:.125rem;left:50%;transform:translate(-50%)}.cal-foot.svelte-qbc0wr{border-top:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 30%, transparent);justify-content:center;margin-top:.25rem;padding-top:.25rem;display:flex}.cal-clear.svelte-qbc0wr{color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;padding:.125rem .5rem;font-size:.625rem;transition:color .15s}.cal-clear.svelte-qbc0wr:hover{color:var(--color-text-primary,#212529)}.wrap.svelte-tnppsm{flex-shrink:0;position:relative}.badge.svelte-tnppsm{border:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 75%, transparent);background:var(--color-surface-elevated,#fff);height:1.375rem;color:var(--color-text-secondary,#6c757d);border-radius:.375rem;align-items:center;gap:.125rem;padding:0 .25rem 0 .375rem;font-size:.6875rem;transition:color .15s,background-color .15s;display:flex}.badge.svelte-tnppsm:hover{background:var(--color-surface-hover,#e9ecef)}.badge.active.svelte-tnppsm{color:#8a2be2}.trigger.svelte-tnppsm{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:inline-flex}.trigger.svelte-tnppsm:focus-visible{outline-offset:1px;border-radius:.25rem;outline:2px solid #1e3a8a}.label.svelte-tnppsm{white-space:nowrap;line-height:1}.clear.svelte-tnppsm{color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;padding:.125rem;transition:color .15s,background-color .15s;display:inline-flex}.clear.svelte-tnppsm:hover{color:var(--color-status-fail,#ef4444);background:#ef44441a}.anchor.svelte-tnppsm{position:relative}.pane.svelte-1ckjre5{flex-direction:column;flex:auto;min-height:0;display:flex}.spine-group.svelte-1ckjre5{border:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 75%, transparent);background:linear-gradient(45deg,#10b98142,#0000);border-radius:.5rem;flex-direction:column;flex:1;gap:.125rem;min-height:0;padding:.25rem;display:flex}.group-head.svelte-1ckjre5{flex-shrink:0;align-items:center;gap:.25rem;min-width:0;display:flex}.group-toggle.svelte-1ckjre5{min-width:0;color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border:none;border-radius:.375rem;flex-shrink:0;align-items:center;gap:.25rem;padding:.1875rem .375rem;font-size:.6875rem;font-weight:600;line-height:1.25;transition:background-color .15s;display:inline-flex}.group-toggle.svelte-1ckjre5:hover{background:var(--color-surface-hover,#e9ecef)}.group-toggle.svelte-1ckjre5:focus-visible{background:var(--color-surface-hover,#e9ecef);outline-offset:-2px;outline:2px solid #1e3a8a}.group-toggle.svelte-1ckjre5 svg{color:var(--color-text-secondary,#6c757d);flex-shrink:0}.head-title.svelte-1ckjre5{text-overflow:ellipsis;white-space:nowrap;color:#8a2be2;min-width:0;overflow:hidden}.filter-input.svelte-1ckjre5{border:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 75%, transparent);background:var(--color-surface-elevated,#fff);min-width:0;height:1.375rem;color:var(--color-text-primary,#212529);border-radius:.375rem;flex:1;padding:0 .375rem;font-size:.6875rem}.filter-input.svelte-1ckjre5::placeholder{color:var(--color-text-secondary,#6c757d)}.filter-input.svelte-1ckjre5:focus-visible{outline-offset:-1px;outline:2px solid #1e3a8a}.row-btn.svelte-1ckjre5{width:1.125rem;height:1.125rem;color:var(--color-text-primary,#212529);cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;transition:background-color .15s,opacity .15s;display:inline-flex}.row-btn.svelte-1ckjre5:hover,.row-btn.svelte-1ckjre5:focus-visible{opacity:1;background:var(--color-surface-hover,#e9ecef);outline:none}.row-btn.active.svelte-1ckjre5{opacity:1;color:#1e3a8a}.group-rows.svelte-1ckjre5{flex-direction:column;flex:auto;gap:.125rem;min-height:0;display:flex;overflow-y:auto}.hint.svelte-1ckjre5{color:var(--color-text-secondary,#6c757d);padding:.5rem;font-size:.6875rem}hr.svelte-1k0m3nb{border:none;border-top:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 75%, transparent);flex-shrink:0;margin:0}.list.svelte-1k0m3nb{flex-direction:column;flex:1;gap:.125rem;min-height:0;display:flex;overflow:hidden}.new-chat.svelte-lgkb7b{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 15%, #fff);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);cursor:pointer;border-radius:.375rem;transition:background-color .15s,border-color .15s}.new-chat.svelte-lgkb7b:not(:disabled):hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 22%, #fff);border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 55%, #1e3a8a)}.new-chat.svelte-lgkb7b:disabled{cursor:default;opacity:.6}.seg-group.svelte-lgkb7b{flex-shrink:0;align-items:stretch;display:flex}.seg.svelte-lgkb7b{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;white-space:nowrap;background:0 0;align-items:center;padding:.15rem .35rem;font-size:.6rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.seg.svelte-lgkb7b:disabled{cursor:default;opacity:.6}.seg.left.svelte-lgkb7b{border-radius:9999px 0 0 9999px}.seg.right.svelte-lgkb7b{border-left-width:0;border-radius:0 9999px 9999px 0}.seg.svelte-lgkb7b:not(:disabled):hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.seg.on.svelte-lgkb7b{color:var(--color-text-primary,#212529);background:#9acd32;border-color:#648520}.seg.on.svelte-lgkb7b:not(:disabled):hover{color:var(--color-text-primary,#212529);background:#83ae2b;border-color:#55711c}.slash-menu.svelte-hiff6x{z-index:5;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);border-radius:.5rem .5rem 0 0;flex-direction:column;max-height:calc(100dvh - 10rem);font-size:.75rem;display:flex;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto;box-shadow:0 -6px 16px #0000001f}.slash-section-label.svelte-hiff6x{color:var(--color-text-muted,#868e96);text-transform:uppercase;letter-spacing:.04em;align-items:baseline;gap:.375rem;padding:.375rem .5rem .125rem;font-size:.625rem;font-weight:600;display:flex}.slash-section-kind.svelte-hiff6x{text-transform:none;letter-spacing:0;color:var(--color-text-muted,#adb5bd);text-overflow:ellipsis;white-space:nowrap;font-weight:400;overflow:hidden}.slash-row.svelte-hiff6x{width:100%;color:var(--color-text-primary,#212529);cursor:pointer;text-align:left;background:0 0;border:none;align-items:baseline;gap:.375rem;padding:.125rem .5rem;font-size:.75rem;display:flex}.slash-row.svelte-hiff6x:hover,.slash-row.active.svelte-hiff6x{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 10%, transparent)}.slash-name.svelte-hiff6x{flex-shrink:0;font-weight:600}.slash-desc.svelte-hiff6x{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-text-secondary,#6c757d);overflow:hidden}.slash-hint.svelte-hiff6x{color:var(--color-text-muted,#adb5bd);text-overflow:ellipsis;white-space:nowrap;flex-basis:100%;font-size:.6875rem;overflow:hidden}.slash-row.svelte-hiff6x{flex-wrap:wrap}.slash-badge.svelte-hiff6x{background:var(--color-surface-hover,#e9ecef);color:var(--color-text-secondary,#6c757d);border-radius:9999px;flex-shrink:0;padding:0 .3rem;font-size:.625rem;line-height:1.4}.slash-status.svelte-hiff6x{color:var(--color-text-muted,#868e96);padding:.375rem .5rem}.slash-error.svelte-hiff6x{color:#b91c1c}.strip-tip.svelte-xf8nks{z-index:10002;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);pointer-events:none;border-radius:.375rem;padding:.25rem;position:fixed;transform:translateY(-100%);box-shadow:0 4px 12px #0000001f}.strip-tip-md.svelte-xf8nks{word-break:break-word;max-height:70vh;color:var(--color-text-primary,#212529);margin:0;padding:.25rem .375rem;font-family:inherit;font-size:.75rem;line-height:1.4;overflow-y:auto}.strip-tip-md.svelte-xf8nks p:first-child{margin-top:0}.strip-tip-md.svelte-xf8nks p:last-child{margin-bottom:0}.strip-tip-md.svelte-xf8nks p,.strip-tip-md.svelte-xf8nks ul,.strip-tip-md.svelte-xf8nks ol{margin:.25em 0}.strip-tip-md.svelte-xf8nks code{font-size:.6875rem}.strip-chip.svelte-1ylllv7{background:var(--color-surface,#f8f9fa);align-items:center;width:100%;max-width:100%;display:flex;position:relative}.strip-chip.active.svelte-1ylllv7{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 10%, transparent)}.strip-pick.svelte-1ylllv7{color:var(--color-text-primary,#212529);cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:.375rem;min-width:0;max-width:100%;padding:.125rem .5rem;font-size:.75rem;display:flex}.strip-label.svelte-1ylllv7{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hl.svelte-1ylllv7{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-color:var(--color-accent-blue,#3b82f6);text-decoration-color:var(--color-accent-blue,#3b82f6);text-underline-offset:2px;background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, transparent);border-radius:2px}.strip-ml.svelte-1ylllv7,.strip-count.svelte-1ylllv7{color:var(--color-text-muted,#868e96);flex-shrink:0}.strip-menu.svelte-1ylllv7,.strip-step.svelte-1ylllv7{flex-shrink:0;position:relative}.strip-step-btn.svelte-1ylllv7{color:var(--color-text-muted,#868e96);cursor:pointer;background:0 0;border:none;padding:.125rem .25rem;font-size:.75rem;line-height:1}.strip-step-btn.svelte-1ylllv7:hover{color:var(--color-accent-blue,#3b82f6)}.strip-menu-btn.svelte-1ylllv7{color:var(--color-text-muted,#868e96);cursor:pointer;background:0 0;border:none;padding:.125rem .25rem;font-size:.75rem;line-height:1}.strip-menu-btn.svelte-1ylllv7:hover{color:var(--color-text-primary,#212529)}.strip-menu-pop.svelte-1ylllv7{z-index:10001;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);border-radius:.375rem;padding:.5rem;position:fixed;box-shadow:0 4px 12px #0000001f}.strip-menu-form.svelte-1ylllv7{flex-direction:column;gap:.375rem;display:flex}.strip-menu-field.svelte-1ylllv7{color:var(--color-text-muted,#868e96);flex-direction:column;gap:.125rem;font-size:.75rem;display:flex}.strip-menu-input.svelte-1ylllv7{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-elevated,#fff);color:var(--color-text-primary,#212529);border-radius:.25rem;padding:.25rem .375rem;font-size:.75rem}.strip-menu-text.svelte-1ylllv7{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-elevated,#fff);color:var(--color-text-primary,#212529);white-space:nowrap;resize:none;box-sizing:border-box;border-radius:.25rem;width:100%;padding:.25rem .375rem;font-size:.75rem;overflow-x:auto}.strip-menu-actions.svelte-1ylllv7{gap:.5rem;margin-top:.5rem;display:flex}.strip-menu-save.svelte-1ylllv7{background:var(--color-accent-blue,#3b82f6);color:#fff;cursor:pointer;border:none;border-radius:.25rem;flex:1;padding:.25rem .5rem;font-size:.75rem}.strip-menu-save.svelte-1ylllv7:hover{background:#2563eb}.strip-menu-delete.svelte-1ylllv7{border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.strip-menu-delete.svelte-1ylllv7:hover{background:var(--color-surface-hover,#e9ecef)}.strip-manage.svelte-rgc8xj{color:var(--color-text-muted,#868e96);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-self:flex-start;padding:.125rem .5rem;font-size:.75rem}.strip-manage.svelte-rgc8xj:hover{color:var(--color-accent-blue,#3b82f6)}.strip-tag-chips.svelte-1dki9fw{border-top:1px solid #8b5cf61f;flex-wrap:wrap;gap:.25rem;padding:.375rem .625rem;display:flex}.strip-tag-chip.svelte-1dki9fw{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);color:var(--color-text-secondary,#495057);cursor:pointer;border-radius:.625rem;align-items:center;gap:.25rem;padding:0 .5rem;font-size:.6875rem;line-height:1.25rem;display:inline-flex}.strip-tag-chip.on.svelte-1dki9fw{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, transparent);border-color:var(--color-accent-blue,#3b82f6);color:var(--color-accent-blue,#3b82f6);font-weight:600}.strip-tag-chip.svelte-1dki9fw input:where(.svelte-1dki9fw){accent-color:var(--color-accent-blue,#3b82f6);margin:0}.suggest-strip.svelte-17pdojr{z-index:5;background:var(--color-surface-elevated,#fff);flex-direction:column;max-height:calc(100dvh - 8rem);font-size:.75rem;display:flex;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto;box-shadow:0 -6px 16px #0000001f}button.svelte-ec7sz9 svg{color:inherit}.footer.svelte-x4ykdr{border-top:1px solid var(--color-surface-border,#dee2e6);flex-direction:column;gap:.5rem;padding:.5rem;display:flex}.footer-create.svelte-x4ykdr{flex-direction:column;gap:.375rem;display:flex}.footer-create-strip.svelte-x4ykdr{align-items:center;gap:.375rem;display:flex}.footer-create-alert.svelte-x4ykdr{color:var(--color-amber-600,#d97706);justify-content:space-between;align-items:center;gap:.5rem;font-size:.75rem;display:flex}.footer-create-alert-close.svelte-x4ykdr{color:var(--color-amber-700,#b45309);cursor:pointer;border-radius:.125rem;flex-shrink:0;line-height:1}.footer-create-alert-close.svelte-x4ykdr:hover{background:var(--color-amber-100,#fef3c7);color:var(--color-amber-900,#78350f)}.footer-version.svelte-x4ykdr{letter-spacing:.05em;color:var(--color-text-secondary,#6c757d);white-space:nowrap;flex-direction:column;flex-shrink:0;gap:.0625rem;font-size:.625rem;font-weight:600;line-height:1.2;display:flex}.sessions.svelte-1nppouf{flex-direction:column;flex:1;min-height:0;display:flex}.hint.svelte-1nppouf{color:var(--color-text-secondary,#6c757d);padding:.5rem;font-size:.6875rem}.hint.error.svelte-1nppouf{color:var(--color-status-fail,#ef4444)}.rail-header-group.svelte-ild1n1{align-items:center;gap:.375rem;min-width:0;margin-right:auto;display:flex}.rail-title.svelte-ild1n1{text-transform:uppercase;letter-spacing:.05em;color:#4b5563;white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;font-weight:600;overflow:hidden}.rail-header-actions.svelte-ijmtbh{flex-shrink:0;align-items:center;display:flex}.icon-btn.svelte-ijmtbh{width:22px;height:22px;color:var(--color-text-secondary,#6c757d);background:0 0;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,background-color .15s;display:inline-flex}.icon-btn.svelte-ijmtbh:hover,.icon-btn.svelte-ijmtbh:focus-visible{color:var(--color-accent-purple,#8b5cf6);background:var(--color-surface-hover,#0000000d);outline:none}.about-backdrop.svelte-2dj481{z-index:10007;background:#0006;position:fixed;inset:0}.about-modal.svelte-2dj481{z-index:10008;text-align:center;--about-gradient:linear-gradient(120deg, #ffe9d6, #c7ddf8, #e4d5f7, #c3f0dc, #ffe9d6);background:var(--about-gradient);border:1px solid var(--color-surface-border,#dee2e6);background-size:300% 300%;border-radius:.5rem;width:90%;max-width:24rem;padding:1.25rem 1.5rem 1.5rem;animation:12s ease-in-out infinite svelte-2dj481-about-gradient-pan;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px 16px #0000001f}@keyframes svelte-2dj481-about-gradient-pan{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@media (prefers-reduced-motion:reduce){.about-modal.svelte-2dj481{animation:none}}.about-close.svelte-2dj481{width:20px;height:20px;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border-radius:.25rem;justify-content:center;align-items:center;font-size:.875rem;line-height:1;display:inline-flex;position:absolute;top:.5rem;right:.5rem}.about-close.svelte-2dj481:hover{color:var(--color-text-primary,#212529);background:var(--color-surface-hover,#0000000d)}.about-title.svelte-2dj481{letter-spacing:.06em;color:var(--color-text-primary,#212529);margin:0;font-size:1.125rem;font-weight:700}.about-subtitle.svelte-2dj481{color:#4b5563;margin:.5rem 0 0;font-size:.8125rem;font-weight:500}.about-credit.svelte-2dj481{color:#4b5563;margin:1rem 0 0;font-size:.75rem}.about-link.svelte-2dj481{color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);margin-top:.375rem;font-size:.75rem;text-decoration:none;display:inline-block}.about-link.svelte-2dj481:hover{text-decoration:underline}.about-trigger.svelte-1djxfw6{width:18px;height:18px;color:var(--color-accent-purple,#8b5cf6);border:1.5px solid var(--color-accent-purple,#8b5cf6);cursor:pointer;background:#ffffff8c;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.625rem;font-weight:700;line-height:1;transition:color .15s,box-shadow .15s;animation:8s ease-in-out infinite svelte-1djxfw6-about-ring-cycle;display:inline-flex;box-shadow:0 0 0 2px #8b5cf62e}@keyframes svelte-1djxfw6-about-ring-cycle{0%,to{background:#ffffff8c;border-color:#8b5cf6}25%{background:#ffe9d6bf;border-color:#f6ad7b}50%{background:#c7ddf8bf;border-color:#60a5fa}75%{background:#c3f0dcbf;border-color:#34d399}}.about-trigger.svelte-1djxfw6:hover,.about-trigger.svelte-1djxfw6:focus-visible{color:#7c3aed;background:#ffffffd9;border-color:#7c3aed;outline:none;animation:none;box-shadow:0 0 0 3px #8b5cf659}@media (prefers-reduced-motion:reduce){.about-trigger.svelte-1djxfw6{animation:none}}.rail-header.svelte-184i93r{--rail-gradient:linear-gradient(120deg, #ffe9d6, #c7ddf8, #e4d5f7, #c3f0dc, #ffe9d6);background:var(--rail-gradient);background-size:300% 300%;border:thin solid #ffa9003d;border-radius:.25rem;justify-content:space-between;align-items:center;gap:.375rem;padding:.5rem;animation:12s ease-in-out infinite svelte-184i93r-rail-header-gradient;display:flex}@keyframes svelte-184i93r-rail-header-gradient{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@media (prefers-reduced-motion:reduce){.rail-header.svelte-184i93r{animation:none}}.rail-wrap.svelte-113gpvg{flex-shrink:0;height:100%;min-height:0;display:flex}.rail.svelte-113gpvg{background:var(--color-surface-elevated,#fff);flex-direction:column;flex:1;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.rail-embedded.svelte-113gpvg{width:100%}.rail-collapsed.svelte-113gpvg{--rail-gradient:linear-gradient(120deg, #ffe9d6, #c7ddf8, #e4d5f7, #c3f0dc, #ffe9d6);background:var(--rail-gradient);background-size:300% 300%;animation:12s ease-in-out infinite svelte-113gpvg-rail-header-gradient}@keyframes svelte-113gpvg-rail-header-gradient{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@media (prefers-reduced-motion:reduce){.rail-collapsed.svelte-113gpvg{animation:none}}.rail-collapsed.svelte-113gpvg{border:none;border-right:1px solid var(--color-surface-border,#dee2e6);color:#4b5563;flex-direction:column;flex-shrink:0;align-items:center;gap:.25rem;width:34px;min-width:34px;height:100%;padding:.5rem 0;display:flex}.stub-expand.svelte-113gpvg{min-height:0;color:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:.25rem;transition:color .15s,background-color .15s;display:flex}.stub-expand.svelte-113gpvg:hover,.stub-expand.svelte-113gpvg:focus-visible{color:var(--color-accent-purple,#8b5cf6);background:var(--color-surface-hover,#00000008);outline:none}.rail-collapsed.svelte-113gpvg .rail-collapsed-label{text-transform:uppercase;letter-spacing:.05em;writing-mode:vertical-rl;font-size:.5625rem;font-weight:600}.rail-gutter.svelte-113gpvg{cursor:col-resize;flex-shrink:0;width:6px;transition:background-color .15s}.rail-gutter.svelte-113gpvg:hover{background:var(--color-accent-blue,#3b82f6);opacity:.25}.stick-toggle.svelte-fe1hyx{width:1.5rem;height:1.5rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:color .15s,border-color .15s,background-color .15s;display:flex}.stick-toggle.svelte-fe1hyx:hover{color:maroon;border-color:#80000066}.stick-toggle.on.svelte-fe1hyx{color:maroon;background:#80000014;border-color:#80000073}.stick-toggle.svelte-fe1hyx svg{color:inherit;flex-shrink:0}.streaming-indicator.svelte-5t6kwy{color:#ef4444;pointer-events:none;align-items:center;gap:4px;display:flex;position:absolute;bottom:1rem;right:.25rem;transform:translateY(50%)}.streaming-indicator.centered.svelte-5t6kwy{position:static;bottom:auto;right:auto;transform:none}.dot.svelte-5t6kwy{background:currentColor;border-radius:50%;width:7px;height:7px;animation:1.4s ease-in-out infinite svelte-5t6kwy-dot-bounce}.dot-2.svelte-5t6kwy{animation-delay:.2s}.dot-3.svelte-5t6kwy{animation-delay:.4s}@keyframes svelte-5t6kwy-dot-bounce{0%,80%,to{opacity:.2;transform:scale(.7)}40%{opacity:1;transform:scale(1.2)}}.command-help.svelte-1tbbgiz{z-index:5;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-secondary,#6c757d);border-radius:.5rem .5rem 0 0;flex-direction:column;gap:.375rem;padding:.5rem .625rem;font-size:.75rem;display:flex;position:absolute;bottom:100%;left:0;right:0;box-shadow:0 -6px 16px #0000001f}.help-usage.svelte-1tbbgiz{align-items:center;gap:.5rem;display:flex}.help-usage.svelte-1tbbgiz code:where(.svelte-1tbbgiz){color:var(--color-text-primary,#212529);font-size:.8125rem;font-weight:600}.help-tag.svelte-1tbbgiz{background:var(--color-accent-blue,#3b82f6);color:#fff;text-transform:uppercase;border-radius:9999px;padding:0 .375rem;font-size:.625rem;font-weight:600}.help-summary.svelte-1tbbgiz{margin:0;line-height:1.35}.help-params.svelte-1tbbgiz{flex-direction:column;gap:.125rem;margin:0;display:flex}.help-params.svelte-1tbbgiz dt:where(.svelte-1tbbgiz){float:left;margin-right:.5rem}.help-params.svelte-1tbbgiz dt:where(.svelte-1tbbgiz) code:where(.svelte-1tbbgiz){color:var(--color-accent-purple,#8b5cf6)}.help-params.svelte-1tbbgiz dd:where(.svelte-1tbbgiz){margin:0;line-height:1.35;overflow:hidden}.help-examples.svelte-1tbbgiz{flex-direction:column;gap:.125rem;margin:0;padding:0;list-style:none;display:flex}.help-examples.svelte-1tbbgiz li:where(.svelte-1tbbgiz){align-items:baseline;gap:.5rem;line-height:1.35;display:flex}.help-examples.svelte-1tbbgiz code:where(.svelte-1tbbgiz){color:var(--color-accent-blue,#3b82f6);white-space:nowrap}.help-note.svelte-1tbbgiz{color:var(--color-text-secondary,#6c757d);margin:0;line-height:1.35}.help-hint.svelte-1tbbgiz{color:var(--color-text-muted,#adb5bd);margin:0}.mgr-text-cell.svelte-144v1my{max-width:28rem}.mgr-text-cell.mgr-stacked.svelte-144v1my .mgr-label-tag:where(.svelte-144v1my),.mgr-text-cell.mgr-stacked.svelte-144v1my .mgr-line2:where(.svelte-144v1my){display:block}.mgr-label-tag.svelte-144v1my{color:var(--color-text-secondary,#495057);margin-right:.375rem;padding:0 .375rem;font-size:.6875rem;display:inline-block}.mgr-preview.svelte-144v1my{white-space:pre-wrap;overflow-wrap:anywhere;vertical-align:bottom}.mgr-ml.svelte-144v1my{color:var(--color-text-muted,#adb5bd);font-size:.6875rem}.mgr-line2.svelte-144v1my{margin-bottom:.25rem;padding:0 .375rem}.mgr-search.svelte-w3lpt8{border:1px solid var(--color-surface-border,#dee2e6);resize:none;background:var(--color-surface,#f8f9fa);border-radius:.25rem;flex:1;min-width:10rem;height:calc(2.4em + .5rem + 2px);padding:.25rem;font-size:.75rem;line-height:1.2}.mgr-tags-cell.svelte-108d03j{white-space:nowrap;text-overflow:ellipsis;width:10rem;overflow:hidden}.mgr-tag-chip.svelte-108d03j{color:var(--color-text-secondary,#495057);text-overflow:ellipsis;vertical-align:middle;background:#8b5cf61f;border-radius:.625rem;max-width:6rem;margin-right:.25rem;padding:0 .375rem;font-size:.6875rem;line-height:1.25rem;display:inline-block;overflow:hidden}.mgr-tag-more.svelte-108d03j{color:var(--color-text-muted,#888);cursor:help;font-size:.6875rem;font-weight:600}.mgr-tag-none.svelte-108d03j{color:var(--color-text-muted,#adb5bd)}.mgr-tag-row.svelte-1uamgti{border-bottom:1px solid #8b5cf61f;flex-wrap:wrap;gap:.25rem;width:19rem;display:flex}.mgr-tag-filter-chip.svelte-1uamgti{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);color:var(--color-text-secondary,#495057);cursor:pointer;border-radius:.625rem;padding:0 .5rem;font-size:.6875rem;line-height:1.25rem}.mgr-tag-filter-chip.svelte-1uamgti:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-tag-filter-chip.on.svelte-1uamgti{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, transparent);border-color:var(--color-accent-blue,#3b82f6);color:var(--color-accent-blue,#3b82f6);font-weight:600}.mgr-count.svelte-sqcp1g{white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}.mgr-edit-portal.svelte-5dpdoo{display:contents}.mgr-btn.svelte-5dpdoo{border:1px solid var(--color-surface-border,#dee2e6);cursor:pointer;background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.mgr-btn.svelte-5dpdoo:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-btn-save.svelte-5dpdoo{color:#16a34a}.mgr-btn-cancel.svelte-5dpdoo{color:var(--color-text-muted,#888)}.mgr-edit-backdrop.svelte-5dpdoo{z-index:10005;background:#00000059;position:fixed;inset:0}.mgr-edit-dialog.svelte-5dpdoo{z-index:10006;background:var(--color-surface-elevated,#fff);border:1px solid #8b5cf64d;border-radius:.5rem;flex-direction:column;gap:.625rem;width:min(90vw,34rem);padding:1rem;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 32px #0000002e}.mgr-edit-dialog.svelte-5dpdoo h3:where(.svelte-5dpdoo){margin:0 0 .25rem;font-size:.9375rem}.mgr-field.svelte-5dpdoo{flex-direction:column;gap:.25rem;font-size:.75rem;display:flex}.mgr-field.svelte-5dpdoo>span:where(.svelte-5dpdoo){text-transform:uppercase;color:var(--color-text-muted,#888);font-size:.6875rem;font-weight:600}.mgr-field-pair.svelte-5dpdoo{flex-direction:row;align-items:flex-start;gap:1rem}.mgr-field-macro.svelte-5dpdoo{gap:.375rem}.mgr-edit-macro.svelte-5dpdoo{width:1rem;height:1rem;margin-top:.125rem}.mgr-edit-uses.svelte-5dpdoo{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;width:6rem;padding:.25rem .5rem;font-size:.75rem}.mgr-edit-label.svelte-5dpdoo,.mgr-edit-text.svelte-5dpdoo,.mgr-edit-tags.svelte-5dpdoo{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem;font-family:inherit;font-size:.75rem}.mgr-edit-text.svelte-5dpdoo{resize:vertical;min-height:5rem}.mgr-edit-tags.svelte-5dpdoo{resize:vertical;height:3.25rem}.mgr-edit-actions.svelte-5dpdoo{justify-content:flex-end;gap:.375rem;margin-top:.25rem;display:flex}.mgr-edit-portal.svelte-14p6cj{display:contents}.mgr-btn.svelte-14p6cj{border:1px solid var(--color-surface-border,#dee2e6);cursor:pointer;background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.mgr-btn.svelte-14p6cj:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-btn-save.svelte-14p6cj{color:#16a34a}.mgr-btn-cancel.svelte-14p6cj{color:var(--color-text-muted,#888)}.mgr-edit-backdrop.svelte-14p6cj{z-index:10005;background:#00000059;position:fixed;inset:0}.mgr-edit-dialog.svelte-14p6cj{z-index:10006;background:var(--color-surface-elevated,#fff);border:1px solid #8b5cf64d;border-radius:.5rem;flex-direction:column;gap:.625rem;width:min(90vw,34rem);padding:1rem;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 32px #0000002e}.mgr-edit-dialog.svelte-14p6cj h3:where(.svelte-14p6cj){margin:0 0 .25rem;font-size:.9375rem}.mgr-field.svelte-14p6cj{flex-direction:column;gap:.25rem;font-size:.75rem;display:flex}.mgr-field.svelte-14p6cj>span:where(.svelte-14p6cj){text-transform:uppercase;color:var(--color-text-muted,#888);font-size:.6875rem;font-weight:600}.mgr-field-pair.svelte-14p6cj{flex-direction:row;align-items:flex-start;gap:1rem}.mgr-field-macro.svelte-14p6cj{gap:.375rem}.mgr-edit-macro.svelte-14p6cj{width:1rem;height:1rem;margin-top:.125rem}.mgr-edit-uses.svelte-14p6cj{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;width:6rem;padding:.25rem .5rem;font-size:.75rem}.mgr-add-text.svelte-14p6cj{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);resize:vertical;border-radius:.25rem;padding:.25rem;font-family:inherit;font-size:.75rem}.mgr-add-label.svelte-14p6cj,.mgr-add-tags.svelte-14p6cj{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem;font-family:inherit;font-size:.75rem}.mgr-edit-actions.svelte-14p6cj{justify-content:flex-end;gap:.375rem;margin-top:.25rem;display:flex}.mgr-sticky.svelte-1kuoadm{z-index:5;margin:0 calc(-1 * var(--mgr-bleed,1rem));background:var(--color-surface-elevated,#fff);position:sticky;top:0;box-shadow:0 1px 4px #8b5cf614}.mgr-sticky-bar.svelte-1kuoadm{justify-content:space-between;align-items:center;gap:.5rem;padding:.375rem 1.25rem;display:flex}.mgr-head-table.svelte-1kuoadm{border-collapse:collapse;table-layout:fixed;background:0 0;border:none;border-radius:0;width:100%;margin:0}.mgr-head-table.svelte-1kuoadm thead:where(.svelte-1kuoadm) th:where(.svelte-1kuoadm){border-left:none;border-right:none}.mgr-head-table.svelte-1kuoadm th:where(.svelte-1kuoadm){text-align:left;color:var(--color-text-primary);text-transform:uppercase;white-space:nowrap;background:#8b5cf61f;border:1px solid #8b5cf626;padding:.35em .6em;font-size:.6875rem;font-weight:600}.mgr-unselect-all.svelte-1kuoadm{cursor:pointer;color:var(--color-text-muted,#888);background:0 0;border:none;padding:0;font-size:.875rem;line-height:1}.mgr-unselect-all.svelte-1kuoadm:hover{color:var(--color-accent-blue,#3b82f6)}.mgr-toolbar.svelte-1kuoadm{flex:1;align-items:center;gap:.25rem;display:flex}.mgr-btn.svelte-1kuoadm{border:1px solid var(--color-surface-border,#dee2e6);cursor:pointer;background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.mgr-btn.svelte-1kuoadm:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-btn-add.svelte-1kuoadm{color:var(--color-accent-blue,#3b82f6)}.mgr-btn-cancel.svelte-1kuoadm{color:var(--color-text-muted,#888)}.mgr-btn-danger.svelte-1kuoadm{color:#dc2626}.mgr-btn-danger.svelte-1kuoadm:disabled{opacity:.4;cursor:not-allowed;color:var(--color-text-muted,#888)}.mgr-error.svelte-1kuoadm{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:.25rem;margin-bottom:.5rem;padding:.375rem .5rem}.mgr-table.svelte-1kuoadm{border-collapse:collapse;table-layout:fixed;background:#8b5cf60a;border:1px solid #8b5cf633;border-radius:.5em;width:100%;margin:0 0 .5em;overflow:hidden}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm):first-child,.mgr-table.svelte-1kuoadm td:first-child{width:2rem}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm):nth-child(2),.mgr-table.svelte-1kuoadm td:nth-child(2){width:4rem}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm):nth-child(3),.mgr-table.svelte-1kuoadm td:nth-child(3){width:auto}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm):nth-child(4),.mgr-table.svelte-1kuoadm td:nth-child(4){width:3.5rem}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm){text-align:left;border-bottom:1px solid var(--color-surface-border,#dee2e6);text-transform:uppercase;color:var(--color-text-muted,#888);white-space:nowrap;padding:.375rem .5rem;font-size:.6875rem;font-weight:600}.mgr-table.svelte-1kuoadm td:where(.svelte-1kuoadm){text-align:left;vertical-align:top;border:1px solid #8b5cf626;padding:.35em .6em}.mgr-body-table.svelte-1kuoadm tbody:where(.svelte-1kuoadm) tr:where(.svelte-1kuoadm):nth-child(2n){background:#8b5cf608}.mgr-body-table.svelte-1kuoadm tbody:where(.svelte-1kuoadm) tr:where(.svelte-1kuoadm):hover td:where(.svelte-1kuoadm){background:#8b5cf614}.mgr-table.svelte-1kuoadm tr.sel:where(.svelte-1kuoadm) td:where(.svelte-1kuoadm){background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, #8b5cf60a)}.mgr-sel-col.svelte-1kuoadm{width:2rem}.mgr-check.svelte-1kuoadm{cursor:pointer;accent-color:var(--color-accent-blue,#3b82f6)}.mgr-sort-btn.svelte-1kuoadm{font:inherit;color:inherit;cursor:pointer;text-transform:inherit;background:0 0;border:none}.mgr-sort-btn.active.svelte-1kuoadm{color:var(--color-accent-blue,#3b82f6)}.mgr-macro-toggle.svelte-1kuoadm{cursor:pointer;color:var(--color-text-muted,#888);background:0 0;border:none;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1}.mgr-macro-toggle.svelte-1kuoadm:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-macro-toggle.on.svelte-1kuoadm{color:var(--color-accent-blue,#3b82f6);font-weight:600}.mgr-macro-col.svelte-1kuoadm{white-space:nowrap;text-align:center;color:var(--color-text-muted,#888);font-size:.75rem}.mgr-tags-col.svelte-1kuoadm{white-space:nowrap;text-overflow:ellipsis;width:10rem;overflow:hidden}.mgr-editing.svelte-1kuoadm td:where(.svelte-1kuoadm){background:#8b5cf629!important}.mgr-footer.svelte-1kuoadm{text-align:center;color:var(--color-text-muted,#888);padding:.5rem;font-size:.6875rem}.mgr-loading.svelte-1kuoadm,.mgr-empty.svelte-1kuoadm{text-align:center;color:var(--color-text-muted,#888);padding:2rem}.mgr-backdrop.svelte-13xs6jp{z-index:10003;background:#0006;position:fixed;inset:0}.mgr-modal.svelte-13xs6jp{z-index:10004;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);border-radius:.5rem;flex-direction:column;width:90%;max-width:60rem;min-height:min(28rem,80vh);max-height:80vh;padding:0 1rem 1rem;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.mgr-dialog-header.svelte-13xs6jp{flex:none;align-items:center;gap:.5rem;display:flex}.mgr-dialog-body.svelte-13xs6jp{flex:1;min-height:0;overflow-y:auto}.mgr-dialog-title.svelte-13xs6jp{text-align:left;flex:1;margin:0;font-size:.9rem;font-weight:600}.mgr-dialog-close.svelte-13xs6jp{color:var(--color-text-muted,#888);cursor:pointer;background:0 0;border:none;font-size:1.125rem;line-height:1}.mgr-dialog-close.svelte-13xs6jp:hover{color:var(--color-text-primary,#212529);font-size:.8125rem}.cancel-btn.svelte-1gevkmd svg,.send-btn.svelte-1gevkmd svg,.prompt-sync-check.svelte-1gevkmd svg{color:inherit}.prompt-sync-check.on.svelte-1gevkmd{color:#9acd32}.prompt-sync-check.on.svelte-1gevkmd:hover{color:#6c9023;background-color:#f3f9e6}.agent-chip.svelte-mhnbss{border:1px solid color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);white-space:nowrap;color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 8%, transparent);border-radius:9999px;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.75rem;line-height:1;display:inline-flex}.save-prompt-wrap.svelte-78up8f{display:inline-flex;position:relative}.save-prompt-popup.svelte-78up8f{z-index:9000;background:var(--color-surface-elevated,#fff);border:1px solid #8b5cf64d;border-radius:.5rem;flex-direction:column;gap:.5rem;width:16rem;padding:.5rem;display:flex;position:fixed;box-shadow:0 8px 24px #00000029}.save-prompt-preview.svelte-78up8f{color:var(--color-text-secondary,#495057);white-space:pre-wrap;overflow-wrap:anywhere;border-bottom:1px solid var(--color-surface-border,#dee2e6);max-height:4.5rem;padding-bottom:.375rem;font-size:.6875rem;overflow:hidden}.save-prompt-chips.svelte-78up8f{flex-wrap:wrap;gap:.25rem;display:flex}.save-prompt-chip.svelte-78up8f{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);color:var(--color-text-secondary,#495057);cursor:pointer;border-radius:.625rem;padding:0 .5rem;font-size:.6875rem;line-height:1.25rem}.save-prompt-chip.on.svelte-78up8f{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, transparent);border-color:var(--color-accent-blue,#3b82f6);color:var(--color-accent-blue,#3b82f6);font-weight:600}.save-prompt-label.svelte-78up8f{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;width:100%;padding:.25rem .375rem;font-size:.75rem}.save-prompt-actions.svelte-78up8f{justify-content:flex-end;gap:.375rem;display:flex}.save-prompt-cancel.svelte-78up8f,.save-prompt-save.svelte-78up8f{border:1px solid var(--color-surface-border,#dee2e6);cursor:pointer;background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.save-prompt-save.svelte-78up8f{color:#16a34a}.save-prompt-save.svelte-78up8f:disabled{opacity:.5;cursor:wait}.chip-button.svelte-c1qaf4 svg,.chip-button.svelte-1h02qiz svg,.chip-button.svelte-ts2c91 svg,.chip-button.svelte-1p1wfzw svg{color:var(--color-accent-purple)}.chip-button.svelte-1gttfnp svg{color:var(--color-red-600)}.floating-anchor-btn.svelte-1ebzurb{cursor:pointer;pointer-events:auto;border-radius:9999px;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;transition:background .15s,color .15s,transform .1s;display:flex;box-shadow:0 2px 8px #00000026}.floating-anchor-btn.svelte-1ebzurb:hover{transform:scale(1.08)}.tone-cyan.svelte-1ebzurb{border:1px solid var(--color-accent-cyan,#06b6d4);background:color-mix(in srgb, var(--color-accent-cyan,#06b6d4) 12%, transparent);color:var(--color-accent-cyan,#06b6d4)}.tone-cyan.svelte-1ebzurb:hover{color:var(--color-text-primary,#fff)}.tone-cyan.active.svelte-1ebzurb{background:var(--color-accent-cyan,#06b6d4);color:#fff;border-color:var(--color-accent-cyan,#06b6d4)}.floating-anchor-btn.svelte-1ebzurb svg{color:inherit}.floating-anchor-btn.svelte-1gmo090{cursor:pointer;pointer-events:auto;border-radius:9999px;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;transition:background .15s,color .15s,transform .1s;display:flex;box-shadow:0 2px 8px #00000026}.floating-anchor-btn.svelte-1gmo090:hover{transform:scale(1.08)}.tone-blue.svelte-1gmo090{border:1px solid var(--color-accent-blue,#3b82f6);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, transparent);color:var(--color-accent-blue,#3b82f6)}.tone-blue.svelte-1gmo090:hover{color:var(--color-text-primary,#fff)}.tone-blue.draining.svelte-1gmo090{background:var(--color-accent-blue,#3b82f6);color:#fff;border-color:var(--color-accent-blue,#3b82f6);cursor:wait}.floating-anchor-btn.svelte-1gmo090 svg{color:inherit}.floating-anchor-btn.svelte-1gmo090 .spin{animation:1s linear infinite svelte-1gmo090-bte-rotate}@keyframes svelte-1gmo090-bte-rotate{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.floating-anchor-btn.svelte-1gmo090 .spin{animation:none}}.floating-anchor-btn.svelte-dnm04b{cursor:pointer;pointer-events:auto;border-radius:9999px;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;transition:background .15s,color .15s,transform .1s;display:flex;box-shadow:0 2px 8px #00000026}.floating-anchor-btn.svelte-dnm04b:hover{transform:scale(1.08)}.tone-purple.svelte-dnm04b{border:1px solid var(--color-accent-purple,#a855f7);background:color-mix(in srgb, var(--color-accent-purple,#a855f7) 12%, transparent);color:var(--color-accent-purple,#a855f7)}.tone-purple.svelte-dnm04b:hover{color:var(--color-text-primary,#fff)}.tone-purple.active.svelte-dnm04b{background:var(--color-accent-purple,#a855f7);color:#fff;border-color:var(--color-accent-purple,#a855f7)}.floating-anchor-btn.svelte-dnm04b svg{color:inherit}.relative.svelte-ntohaz{position:relative}.floating-anchor-btn.svelte-ntohaz{cursor:pointer;pointer-events:auto;border-radius:9999px;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;transition:background .15s,color .15s,transform .1s;display:flex;box-shadow:0 2px 8px #00000026}.floating-anchor-btn.svelte-ntohaz:hover{transform:scale(1.08)}.tone-maroon.svelte-ntohaz{color:maroon;background:#8000001f;border:1px solid maroon}.tone-maroon.svelte-ntohaz:hover{color:var(--color-text-primary,#fff)}.tone-maroon.active.svelte-ntohaz{color:#fff;background:maroon;border-color:maroon}.floating-anchor-btn.svelte-ntohaz svg{color:inherit}.shelf-item.svelte-ntohaz{border-radius:.25rem;align-items:center;gap:.25rem;padding:.125rem .25rem;display:flex}.shelf-item.svelte-ntohaz:hover{background:#80000014}.shelf-divider.svelte-ntohaz{border:none;border-top:1px solid var(--color-surface-border,#dee2e6);width:100%;margin:.125rem 0}.shelf-item.svelte-ntohaz .shelf-copy{width:1.125rem;height:1.125rem;color:inherit;opacity:.6;cursor:pointer;background:0 0;border:none;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.shelf-item.svelte-ntohaz .shelf-copy:hover{opacity:1;background:var(--color-surface-hover,#0000001a)}.shelf-pick.svelte-ntohaz{color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.25rem;flex:1;align-items:center;padding:.25rem;font-size:.75rem;display:flex}.shelf-pick.svelte-ntohaz:hover{background:#80000014}.shelf-pick-path.svelte-ntohaz{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:16rem;font-weight:600;overflow:hidden}.stats-bar.svelte-1bg5es8{text-align:center;color:#7c3aed;opacity:.75;white-space:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;height:1.5rem;padding:0 .375rem;font-size:.75rem;display:flex;overflow:hidden}.segment.svelte-1bg5es8{text-overflow:ellipsis;flex-shrink:1;overflow:hidden}.sep.svelte-1bg5es8{opacity:.5;flex-shrink:0}.macro-run.svelte-zl61ov{margin:0 .5rem .25rem;font-size:.75rem}.macro-chip.svelte-zl61ov{color:#1d4ed8;background:#3b82f61a;border-radius:6px;align-items:center;gap:.375rem;padding:.125rem .5rem;display:flex}.macro-chip[data-phase=failed].svelte-zl61ov{color:#b91c1c;background:#ef44441f}.macro-chip[data-phase=stopped].svelte-zl61ov{color:#4b5563;background:#6b72801f}.macro-chip-label.svelte-zl61ov{color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:.25rem;min-width:0;padding:.125rem 0;font-size:.75rem;display:flex}.macro-chip-text.svelte-zl61ov{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.macro-chip-caret.svelte-zl61ov{opacity:.7;flex-shrink:0}.macro-stop.svelte-zl61ov{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;flex-shrink:0;padding:0 .375rem;font-size:.6875rem;line-height:1.4}.macro-stop.svelte-zl61ov:hover{background:#ef44441f}.macro-close.svelte-zl61ov{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;flex-shrink:0;padding:0 .25rem;font-size:.75rem;line-height:1.4}.macro-close.svelte-zl61ov:hover{opacity:1}.macro-sheet.svelte-zl61ov{background:var(--color-surface-elevated,#fff);border:1px solid #3b82f640;border-radius:6px;flex-direction:column;gap:.125rem;margin-top:.25rem;padding:.375rem .5rem;display:flex}.macro-row.svelte-zl61ov{align-items:baseline;gap:.375rem;min-width:0;display:flex}.macro-row.query-row.svelte-zl61ov .macro-line-text:where(.svelte-zl61ov){opacity:.8;font-style:italic}.macro-mark.svelte-zl61ov{text-align:center;flex-shrink:0;width:1.1em}.macro-line-text.svelte-zl61ov{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-text-primary,#212529);flex:1;overflow:hidden}.macro-line-n.svelte-zl61ov{color:var(--color-text-muted,#868e96);flex-shrink:0;font-size:.6875rem}.macro-line-note.svelte-zl61ov{text-overflow:ellipsis;white-space:nowrap;max-width:45%;color:var(--color-text-muted,#868e96);flex-shrink:0;overflow:hidden}.macro-empty.svelte-zl61ov{color:var(--color-text-muted,#868e96);padding:.125rem 0}.macro-controls.svelte-zl61ov{gap:.5rem;margin-top:.25rem;display:flex}.macro-controls.svelte-zl61ov button:where(.svelte-zl61ov){border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border-radius:.25rem;padding:.125rem .5rem;font-size:.75rem}.macro-controls.svelte-zl61ov button:where(.svelte-zl61ov):hover{background:var(--color-surface-hover,#e9ecef)}.goal-bar.svelte-k3rmjz{margin:0 .5rem .25rem;font-size:.75rem}.goal-chip.svelte-k3rmjz{color:#047857;background:#10b9811a;border-radius:6px;align-items:center;gap:.375rem;padding:.125rem .5rem;display:flex}.goal-chip[data-phase=paused].svelte-k3rmjz{color:#4b5563;background:#6b72801f}.goal-chip[data-phase=blocked].svelte-k3rmjz{color:#b45309;background:#f59e0b24}.goal-chip-label.svelte-k3rmjz{color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:.25rem;min-width:0;padding:.125rem 0;font-size:.75rem;display:flex}.goal-chip-glyph.svelte-k3rmjz{text-align:center;flex-shrink:0;width:1.1em}.goal-chip-text.svelte-k3rmjz{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.goal-chip-caret.svelte-k3rmjz{opacity:.7;flex-shrink:0}.goal-action.svelte-k3rmjz{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;flex-shrink:0;padding:0 .375rem;font-size:.6875rem;line-height:1.4}.goal-action.svelte-k3rmjz:hover{background:#0000000f}.goal-clear.svelte-k3rmjz{opacity:.7;border:none;padding:0 .25rem;font-size:.75rem}.goal-clear.svelte-k3rmjz:hover{opacity:1;background:0 0}.goal-edit-form.svelte-k3rmjz{background:var(--color-surface-elevated,#fff);border:1px solid #10b9814d;border-radius:6px;flex-direction:column;gap:.25rem;margin-top:.25rem;padding:.375rem .5rem;display:flex}.goal-edit-label.svelte-k3rmjz{color:var(--color-text-muted,#868e96);flex-direction:column;gap:.125rem;font-size:.6875rem;display:flex}.goal-edit-label.svelte-k3rmjz textarea:where(.svelte-k3rmjz),.goal-edit-label.svelte-k3rmjz input:where(.svelte-k3rmjz){border:1px solid var(--color-surface-border,#dee2e6);border-radius:.25rem;padding:.125rem .25rem;font-size:.75rem}.goal-sheet.svelte-k3rmjz{background:var(--color-surface-elevated,#fff);border:1px solid #10b9814d;border-radius:6px;flex-direction:column;gap:.125rem;margin-top:.25rem;padding:.375rem .5rem;display:flex}.goal-row.svelte-k3rmjz{align-items:baseline;gap:.375rem;min-width:0;display:flex}.goal-key.svelte-k3rmjz{width:4.5rem;color:var(--color-text-muted,#868e96);flex-shrink:0}.goal-value.svelte-k3rmjz{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;color:var(--color-text-primary,#212529);flex:1}.goal-controls.svelte-k3rmjz{gap:.5rem;margin-top:.25rem;display:flex}.goal-controls.svelte-k3rmjz button:where(.svelte-k3rmjz){border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border-radius:.25rem;padding:.125rem .5rem;font-size:.75rem}.goal-controls.svelte-k3rmjz button:where(.svelte-k3rmjz):hover{background:var(--color-surface-hover,#e9ecef)}.command-note.svelte-18u549u{color:#047857;background:#10b9811f;border-radius:6px;margin:0 .5rem .25rem;padding:.25rem .5rem;font-size:.75rem}.command-note-error.svelte-18u549u{color:#b91c1c;background:#ef44441f}.composer-error.svelte-18u549u{flex-direction:column;gap:.125rem;display:flex}.composer-error-hint.svelte-18u549u{opacity:.85}.composer-area.svelte-18u549u{position:relative}.composer-stick.svelte-18u549u{z-index:20;margin-bottom:-2rem;position:absolute;bottom:100%;right:.5rem}.floating-stick.svelte-18u549u{z-index:20;background:var(--color-surface,#fff);border-radius:8px;padding:.125rem;position:absolute;bottom:1.75rem;right:.5rem;box-shadow:0 1px 4px #00000026}.settings-editor-body.svelte-cqvzi6{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.settings-toolbar.svelte-cqvzi6{border-bottom:1px solid var(--panel-border,#2a2a2a);align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.85rem;display:flex}.settings-title.svelte-cqvzi6{font-weight:600}.settings-state.svelte-cqvzi6{opacity:.7;flex:1}.settings-error.svelte-cqvzi6{color:#ffb4bb;background:#45161c;margin:0;padding:.4rem .75rem;font-size:.8rem}.settings-editor-host.svelte-cqvzi6{flex:1;min-height:0}.markdown-panel.svelte-db6jsb{height:100%;padding:1rem 1.25rem;overflow:auto}.injected-doc.svelte-147nwn4{flex-direction:column;height:100%;display:flex}.doc-toolbar.svelte-147nwn4{border-bottom:1px solid var(--color-surface-border,#dee2e6);align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.75rem;display:flex}.doc-title.svelte-147nwn4{color:maroon;font-weight:600}.doc-state.svelte-147nwn4{color:var(--color-text-secondary,#6c757d)}.doc-toolbar.svelte-147nwn4 button:where(.svelte-147nwn4){color:inherit;cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:.875rem}.doc-missing.svelte-147nwn4{color:var(--color-text-secondary,#6c757d);padding:1rem 1.25rem;font-size:.75rem}.doc-editor-host.svelte-147nwn4{flex:1;min-height:0}.actions.svelte-14l0ymn{align-items:center;gap:.25rem;margin-left:auto;display:inline-flex}.head-btn.svelte-14l0ymn{border:1px solid var(--color-border,#d0d7de);width:1.25rem;height:1.25rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.head-btn.svelte-14l0ymn:hover,.head-btn.svelte-14l0ymn:focus-visible{background:var(--color-surface-secondary,#f1f3f5);color:var(--color-text-primary,#212529)}.explorer-toolbar.svelte-b18z79{background:var(--color-surface-primary,#fff);flex-shrink:0;justify-content:flex-start;align-items:center;gap:.25rem;width:100%;display:flex}.tabs.svelte-b18z79{align-items:center;gap:.125rem;margin-right:.375rem;display:inline-flex}.tab.svelte-b18z79{color:var(--color-text-secondary,#6c757d);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.25rem;padding:.05rem .4rem;font-size:.75rem}.tab.active.svelte-b18z79{border-color:var(--color-border,#d0d7de);background:var(--color-surface-secondary,#f1f3f5);color:var(--color-text-primary,#212529);font-weight:600}.fti.svelte-hurohb{--fti-paper:var(--color-bg,#fff);flex-shrink:0}.fti.code.svelte-hurohb,.fti.html.svelte-hurohb,.fti.markdown.svelte-hurohb{color:#4176e6}.fti.excel.svelte-hurohb{color:#22c55e}.fti.image.svelte-hurohb,.fti.video.svelte-hurohb{color:#8b76f6}.fti.other.svelte-hurohb{color:#cfd3d6}.fti.pdf.svelte-hurohb{color:#ec1313}.fti.ppt.svelte-hurohb{color:#f59e0b}.fti.word.svelte-hurohb{color:#5686fe}.fold.svelte-hurohb,.mark.svelte-hurohb{fill:var(--fti-paper)}.tree.svelte-hbtlo6{margin:0;padding:0;list-style:none}.tree.svelte-hbtlo6 ul:where(.svelte-hbtlo6){margin:0;padding:0 0 0 .75rem;list-style:none}.row-line.svelte-hbtlo6{min-width:0}.row.svelte-hbtlo6{font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;text-align:left;background:0 0;border:none;align-items:center;gap:.25rem;max-width:100%;padding:.1rem .25rem;display:inline-flex;overflow:hidden}.caret.svelte-hbtlo6{flex-shrink:0;justify-content:center;align-items:center;width:.75rem;display:inline-flex}.entry-icon.svelte-hbtlo6{flex-shrink:0;align-items:center;display:inline-flex}.entry-icon.svelte-hbtlo6 svg{color:inherit}.dir.svelte-hbtlo6 .entry-icon:where(.svelte-hbtlo6){color:#7c3aed}.row.repo.svelte-hbtlo6 .entry-icon:where(.svelte-hbtlo6){color:#f7ad31}.row.repo.svelte-hbtlo6 .entry-name:where(.svelte-hbtlo6){color:#ff4500;font-weight:600}.row.hot.svelte-hbtlo6 .entry-name:where(.svelte-hbtlo6),.row.changed.svelte-hbtlo6 .entry-name:where(.svelte-hbtlo6){color:#d2691e;font-weight:600}.entry-name.svelte-hbtlo6{text-overflow:ellipsis;overflow:hidden}.note.svelte-hbtlo6{color:var(--color-text-muted,#6b7280);padding:.1rem .25rem;font-size:.75rem}.note.fail.svelte-hbtlo6{color:#b91c1c}.repo-head.svelte-yuc21i{font:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:.25rem;max-width:100%;font-weight:600;display:inline-flex}.repo-head.svelte-yuc21i .caret:where(.svelte-yuc21i){color:#ff4500;flex-shrink:0;justify-content:center;align-items:center;width:.75rem;display:inline-flex}.repo-head.svelte-yuc21i .caret:where(.svelte-yuc21i) svg{color:inherit}.tree.svelte-yuc21i{margin:0;padding:0;list-style:none}.row.svelte-yuc21i{font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;text-align:left;background:0 0;border:none;align-items:center;gap:.25rem;max-width:100%;padding:.1rem .25rem;display:inline-flex;overflow:hidden}.caret.svelte-yuc21i{flex-shrink:0;justify-content:center;align-items:center;width:.75rem;display:inline-flex}.repo-group.svelte-yuc21i{margin-bottom:.5rem}.repo-head.svelte-yuc21i{color:#ff4500;text-overflow:ellipsis;white-space:nowrap;padding:.1rem .25rem;font-weight:600;overflow:hidden}.change-code.svelte-yuc21i{font-family:var(--font-mono,monospace);color:#d2691e;justify-content:center;width:1.5rem;font-size:.6875rem}.row.svelte-yuc21i .entry-name:where(.svelte-yuc21i){color:#d2691e;font-weight:600}.entry-name.svelte-yuc21i{text-overflow:ellipsis;overflow:hidden}.note.svelte-yuc21i{color:var(--color-text-muted,#6b7280);padding:.1rem .25rem;font-size:.75rem}.tree.svelte-yuc21i .note:where(.svelte-yuc21i){margin-left:1rem}.note.fail.svelte-yuc21i{color:#b91c1c}.explorer.svelte-1l3v1je{flex-direction:column;gap:.25rem;height:100%;padding:.5rem;font-size:.8125rem;display:flex;position:relative;overflow:hidden}.tree-scroll.svelte-1l3v1je{flex:1;min-height:0;overflow:auto}.changes.svelte-1l3v1je{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.file-toolbar.svelte-cqlxfy{align-items:center;gap:.5rem;display:flex}.path.svelte-cqlxfy{color:var(--color-text-secondary,#6c757d);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.6875rem;overflow:hidden}.dirty.svelte-cqlxfy{color:#b45309;flex-shrink:0;font-size:.6875rem}.save-btn.svelte-cqlxfy{border:1px solid var(--color-border,#d0d7de);cursor:pointer;background:0 0;border-radius:.25rem;flex-shrink:0;padding:.1rem .5rem;font-size:.6875rem}.save-btn.svelte-cqlxfy:disabled{opacity:.5;cursor:not-allowed}.seg-group.svelte-cqlxfy{flex-shrink:0;display:inline-flex}.seg-group.svelte-cqlxfy .seg:where(.svelte-cqlxfy){border:1px solid var(--color-border,#d0d7de);cursor:pointer;background:0 0;padding:.1rem .5rem;font-size:.6875rem}.seg-group.svelte-cqlxfy .seg.left:where(.svelte-cqlxfy){border-radius:.25rem 0 0 .25rem}.seg-group.svelte-cqlxfy .seg.right:where(.svelte-cqlxfy){border-left:none;border-radius:0 .25rem .25rem 0}.seg-group.svelte-cqlxfy .seg.on:where(.svelte-cqlxfy){background:var(--color-accent-blue,#3b82f6);border-color:var(--color-accent-blue,#3b82f6);color:#fff}.seg-group.svelte-cqlxfy .seg:where(.svelte-cqlxfy):disabled{opacity:.5;cursor:not-allowed}.stale.svelte-cqlxfy{color:var(--color-text-muted,#6b7280);flex-shrink:0;font-size:.6875rem}.copy-slot.svelte-cqlxfy{flex-shrink:0;align-items:center;display:inline-flex}.tabs.svelte-cqlxfy{gap:.125rem;display:inline-flex}.tabs.svelte-cqlxfy button:where(.svelte-cqlxfy){border:1px solid var(--color-border,#d0d7de);cursor:pointer;background:0 0;border-radius:.25rem;padding:.1rem .5rem;font-size:.6875rem}.tabs.svelte-cqlxfy button.active:where(.svelte-cqlxfy){background:var(--color-accent-blue,#3b82f6);border-color:var(--color-accent-blue,#3b82f6);color:#fff}.file-panel.svelte-1ewqqbd{flex-direction:column;gap:.25rem;height:100%;padding:.25rem;font-size:.8125rem;display:flex;overflow:hidden}.note.svelte-1ewqqbd{color:var(--color-text-muted,#6b7280);font-size:.75rem}.note.fail.svelte-1ewqqbd{color:#b91c1c}.file-editor-host.svelte-1ewqqbd{border:1px solid var(--color-border,#d0d7de);border-radius:.25rem;flex:1;min-height:0}.file-scroll.svelte-1ewqqbd{flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.img-preview.svelte-1ewqqbd{object-fit:contain;border:1px solid var(--color-border,#d0d7de);background:repeating-conic-gradient(#f0f0f0 0% 25%,#fff 0% 50%) 50%/16px 16px;border-radius:.25rem;max-width:100%;max-height:100%}.html-frame.svelte-1ewqqbd{border:1px solid var(--color-border,#d0d7de);background:#fff;border-radius:.25rem;flex:1;width:100%;min-height:0}.file-body.svelte-1pgc8hn{flex-direction:column;flex:1;min-height:0;display:flex}.bar.svelte-9whorb{flex-shrink:0;align-items:center;gap:.375rem;padding:.25rem .5rem;display:flex}.path.svelte-9whorb{color:var(--color-text-secondary,#6c757d);word-break:break-all;flex:1;font-size:.75rem}.dirty.svelte-9whorb{color:#d97706;font-size:.75rem}.save.svelte-9whorb{font:inherit;border:1px solid var(--color-border,#d0d7de);background:var(--color-surface-secondary,#f1f3f5);cursor:pointer;border-radius:.25rem;padding:.1rem .5rem;font-size:.75rem}.save.svelte-9whorb:disabled{opacity:.5;cursor:default}.copy-slot.svelte-9whorb{flex-shrink:0;align-items:center;display:inline-flex}.home-file.svelte-bq960k{flex-direction:column;height:100%;min-height:0;display:flex}.error.svelte-bq960k{color:#b91c1c;flex-shrink:0;padding:.25rem .5rem;font-size:.75rem}.editor-host.svelte-bq960k{border:1px solid var(--color-border,#d0d7de);border-radius:.25rem;flex:1;min-height:0}.file-tabs.svelte-1hdf0bx{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.strip.svelte-1hdf0bx{border-bottom:1px solid var(--color-border,#ddd);flex:none;gap:2px;padding:2px 4px 0;display:flex;overflow-x:auto}.tab.svelte-1hdf0bx{cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;align-items:center;gap:4px;max-width:180px;padding:3px 6px;font-size:.75rem;display:inline-flex}.tab.active.svelte-1hdf0bx{border-color:var(--color-border,#ddd);background:var(--color-surface,#fff);font-weight:600}.label.svelte-1hdf0bx{text-overflow:ellipsis;overflow:hidden}.close.svelte-1hdf0bx{width:14px;height:14px;color:var(--color-text-muted,#888);border-radius:3px;justify-content:center;align-items:center;font-size:.7rem;line-height:1;display:inline-flex}.close.svelte-1hdf0bx:hover{background:var(--color-border,#ddd);color:var(--color-text,#222)}.body.svelte-1hdf0bx{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.empty.svelte-1hdf0bx{flex:1}.body.svelte-1hdf0bx>*{flex:1;height:auto;min-height:0}.gutter.svelte-gujdub{cursor:col-resize;background:0 0;border:none;flex:0 0 6px;align-self:stretch;width:6px;padding:0;transition:background-color .15s;display:block}.gutter.svelte-gujdub:hover,.gutter.svelte-gujdub:active{background:var(--color-accent-blue,#3b82f6)}.gutter.svelte-gujdub:focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:-2px}.split.svelte-v4uero{height:100%;min-height:0;display:flex;overflow:hidden}.split.svelte-v4uero>.explorer{flex:0 0 var(--tree-basis,100%);min-width:0;overflow:hidden}.split.svelte-v4uero>.file-tabs{flex:1 1 var(--file-basis,0%);min-width:0;overflow:hidden}.panels-viewport.svelte-1yjbji0{background:var(--color-surface-secondary,#f1f3f5);flex:1;min-width:0;overflow:auto hidden}.zoom-frame.svelte-1yjbji0{height:100%}.panels-row.svelte-1yjbji0{width:max-content;transform:scale(var(--zoom,1));transform-origin:0 0;height:calc(100% / var(--zoom,1));align-items:stretch;padding:4px;display:flex}.panel-header.svelte-1xanvl9{min-height:1.75rem;color:var(--color-text-secondary,#6c757d);border-bottom:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-primary,#fff);flex-shrink:0;justify-content:space-between;align-items:center;gap:.5rem;padding:.25rem .5rem;font-size:.6875rem;display:flex}.panel-header.selected.svelte-1xanvl9{background:#fdf5e6}.label.svelte-1xanvl9{white-space:nowrap;align-items:center;gap:.25rem;min-width:0;display:inline-flex;overflow:hidden}.id.svelte-1xanvl9{letter-spacing:.01em;flex-shrink:0}.actions.svelte-1xanvl9{flex-shrink:0;align-items:center;gap:.125rem;display:inline-flex}.hdr-btn.svelte-1xanvl9{width:1.25rem;height:1.25rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.hdr-btn.svelte-1xanvl9:hover,.hdr-btn.svelte-1xanvl9:focus-visible{background:var(--color-surface-secondary,#f1f3f5);color:var(--color-text-primary,#212529)}.hdr-btn.svelte-1xanvl9:disabled{opacity:.5;cursor:not-allowed}.column.svelte-1cuodug{background:var(--color-surface-primary,#fff);border-right:1px solid var(--color-surface-border,#dee2e6);flex-direction:column;flex-shrink:0;height:100%;display:flex;position:relative}.width-badge.svelte-1cuodug{z-index:5;pointer-events:none;border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 10%, #fff);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 30%, #1e3a8a);font-variant-numeric:tabular-nums;white-space:nowrap;opacity:1;border-radius:.375rem;padding:.125rem .375rem;font-size:.6875rem;line-height:1.25;position:absolute;top:2.5rem;right:.875rem}.width-badge.fading.svelte-1cuodug{opacity:0;transition:opacity 10s linear}@media (prefers-reduced-motion:reduce){.width-badge.fading.svelte-1cuodug{transition:none}}.column.selected.svelte-1cuodug:after{content:"";z-index:5;pointer-events:none;-webkit-mask-composite:xor;background:linear-gradient(135deg,#60a5fa 0%,#a78bfa 45%,lch(38.63% 66.68 19.97) 100%);border-radius:.75rem;padding:5px;position:absolute;inset:-3px;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.body.svelte-1cuodug{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.rail-column.svelte-s09nms{background:var(--color-surface-elevated,#fff);flex-direction:column;flex-shrink:0;display:flex;position:relative;overflow:visible}.rail-gutter.svelte-s09nms{cursor:col-resize;flex-shrink:0;width:6px;transition:background-color .15s}.rail-gutter.svelte-s09nms:hover{background:var(--color-accent-blue,#3b82f6);opacity:.25}.empty-floor.svelte-z8g5d9{text-align:center;pointer-events:none;color:var(--color-text-secondary,#6c757d);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:flex;position:absolute;inset:0}.empty-floor.svelte-z8g5d9 .hint:where(.svelte-z8g5d9){opacity:.8;font-size:.75rem}.add-panel.svelte-10hagb1{align-items:center;gap:.375rem;display:flex}.add-panel.svelte-10hagb1 input:where(.svelte-10hagb1){border:1px solid var(--color-surface-border,#dee2e6);min-width:0;color:var(--color-text-primary,#212529);background:var(--color-surface-primary,#fff);border-radius:.375rem;flex:1;padding:.25rem .5rem;font-family:ui-monospace,monospace;font-size:.75rem}.add-panel.svelte-10hagb1 input:where(.svelte-10hagb1):focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:-1px}.add-panel.svelte-10hagb1 button:where(.svelte-10hagb1){border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-secondary,#f1f3f5);color:var(--color-text-primary,#212529);cursor:pointer;border-radius:.375rem;flex-shrink:0;padding:.25rem .625rem;font-size:.75rem}.add-panel.svelte-10hagb1 button:where(.svelte-10hagb1):focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:-1px}.slider-width.svelte-1clwddj{color:var(--color-text-secondary,#6c757d);flex-direction:column;gap:.25rem;font-size:.6875rem;display:flex}.caption.svelte-1clwddj{justify-content:space-between;display:flex}.px.svelte-1clwddj{font-variant-numeric:tabular-nums;color:var(--color-text-primary,#212529)}.slider-width.svelte-1clwddj input:where(.svelte-1clwddj){width:100%;accent-color:var(--color-accent-blue,#3b82f6)}.slider-width.svelte-1clwddj input:where(.svelte-1clwddj):focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:2px}.slider-zoom.svelte-9i0zv0{color:var(--color-text-secondary,#6c757d);flex-direction:column;gap:.25rem;font-size:.6875rem;display:flex}.caption.svelte-9i0zv0{justify-content:space-between;display:flex}.pct.svelte-9i0zv0{font-variant-numeric:tabular-nums;color:var(--color-text-primary,#212529)}.slider-zoom.svelte-9i0zv0 input:where(.svelte-9i0zv0){width:100%;accent-color:var(--color-accent-blue,#3b82f6)}.slider-zoom.svelte-9i0zv0 input:where(.svelte-9i0zv0):focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:2px}.tray-buttons.svelte-1cnxsid{justify-content:flex-end;align-items:center;gap:.375rem;display:flex}.tray.svelte-xu2fbc{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-primary,#fff);border-radius:.5rem;flex-direction:column;gap:.625rem;min-width:15rem;padding:.75rem;display:flex;position:absolute;top:calc(100% + .375rem);right:0;box-shadow:0 4px 16px #0000001f}.controlbar.svelte-vs008k{z-index:30;position:fixed;top:.5rem;right:.75rem}.trigger.svelte-vs008k{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-primary,#fff);width:1.75rem;height:1.75rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;opacity:.65;border-radius:.375rem;justify-content:center;align-items:center;margin-left:auto;transition:opacity .15s,color .15s;display:inline-flex;box-shadow:0 1px 2px #00000014}.controlbar.svelte-vs008k:hover .trigger:where(.svelte-vs008k),.controlbar.open.svelte-vs008k .trigger:where(.svelte-vs008k),.trigger.svelte-vs008k:focus-visible{opacity:1;color:var(--color-text-primary,#212529)}.conversation-page.svelte-1uha8ag{background-color:#fff}.panel-manager-body.svelte-1uha8ag{--mgr-bleed:0rem;height:100%;padding:0;font-size:.8125rem;overflow-y:auto}.floor.svelte-1uha8ag{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.panel-error.svelte-1uha8ag{text-align:center;color:#b91c1c;background:#fef2f2;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;height:100%;padding:1rem;font-size:.8125rem;display:flex}.panel-error.svelte-1uha8ag button:where(.svelte-1uha8ag){color:#b91c1c;cursor:pointer;background:#fff;border:1px solid #fca5a5;border-radius:.375rem;padding:.25rem .75rem;font-size:.75rem}.panel-loading.svelte-1uha8ag{height:100%;color:var(--color-text-secondary,#6c757d);justify-content:center;align-items:center;font-size:.875rem;display:flex}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{at as e,bt as t}from"./DnA33f7e.js";import{a as n}from"./D94Od7GQ.js";import{d as r}from"./DlfWhx6l.js";var i={},a=[`en`,`zh`,`id`,`es`],o=`dsi.locale`,s=3456e4,c=[`cookie`,`preferredLanguage`,`baseLocale`],l=[],u=typeof window>`u`;globalThis.__paraglide=globalThis.__paraglide??{},globalThis.__paraglide.ssr=globalThis.__paraglide.ssr??{};var d=!1,f=()=>{let e=c;!u&&typeof window<`u`&&window.location?.href&&(e=P(window.location.href));let t=p(e,typeof window<`u`?window.location?.href:void 0);if(t)return d||(d=!0,h(t,{reload:!1})),t;throw Error(`No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found`)};function p(e,t){let n;for(let t of e){if(t===`cookie`)n=D();else if(t===`baseLocale`)n=`en`;else if(t===`preferredLanguage`&&!u)n=O();else if(I(t)&&F.has(t)){let e=F.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return v(t)}}let e=_(n);if(e)return e}}var m=e=>{e?window.location.href=e:window.location.reload()},h=(e,t)=>{let n={reload:!0,...t},r;try{r=f()}catch{}let i=[],a=c;!u&&typeof window<`u`&&window.location?.href&&(a=P(window.location.href));for(let t of a)if(t===`cookie`){if(u||typeof document>`u`||typeof window>`u`)continue;let t=`${o}=${e}; path=/; max-age=${s}`;document.cookie=t,T()}else if(t===`baseLocale`)continue;else if(I(t)&&F.has(t)){let n=F.get(t);if(n){let r=n.setLocale(e);r instanceof Promise&&(r=r.catch(e=>{throw Error(`Custom strategy "${t}" setLocale failed.`,{cause:e})}),i.push(r))}}let l=()=>{!u&&n.reload&&window.location&&e!==r&&m(void 0)};if(i.length)return Promise.all(i).then(()=>{l()});l()},g=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function _(e){if(typeof e!=`string`)return;let t=e.toLowerCase();for(let e of a)if(e.toLowerCase()===t)return e}function v(e){let t=_(e);if(t)return t;throw Error(`Invalid locale: ${e}. Expected one of: ${a.join(`, `)}`)}function y(e){return e}function b(e,t){return e.exec(t.href)}var x=o.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),S=RegExp(`(?:^|;\\s*)${x}=([^;]*)`),C=Symbol(),w=C;function T(){w=C}function E(){typeof queueMicrotask==`function`?queueMicrotask(T):Promise.resolve().then(T)}function D(){if(typeof document>`u`)return;if(w!==C)return w;let e=document.cookie.match(S)?.[1];return w=_(e),E(),w}function O(){if(!navigator?.languages?.length)return;let e=navigator.languages.map(e=>({fullTag:e,baseTag:e.split(`-`)[0]}));for(let t of e){let e=_(t.fullTag);if(e)return e;let n=_(t.baseTag);if(n)return n}}function k(e){return A(e)}function A(e){let t=y(typeof e==`string`?new URL(e,g()):new URL(e)),n=t.pathname.split(`/`).filter(Boolean);return n.length>0&&_(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),y(t)}var j,M;function N(e){if(l.length===0)return;let t=typeof e==`string`?e:e.href;if(j===t)return M;let n=y(new URL(t,`http://example.com`)),r=k(n),a=r.href===n.href?[n]:[n,r],o;for(let e of a){for(let t of l)if(b(new i(t.match,e.href),e)){o=t;break}if(o)break}return j=t,M=o,o}function P(e){let t=N(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:c}var F=new Map;function I(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}var L=e({locale:`en`});function R(){let e=t(L).locale;try{let e=f();if(r.includes(e))return e}catch{}return r.includes(e)?e:`en`}async function z(e){if(r.includes(e)){await h(e,{reload:!1});try{localStorage.setItem(`dsi.locale`,e)}catch{}L.locale=e}}function B(e){t(L).locale;try{let t=f();if(r.includes(t))return e()}catch{}return e()}var V={get data(){return n.data},get error(){return n.error},get form(){return n.form},get params(){return n.params},get route(){return n.route},get state(){return n.state},get status(){return n.status},get url(){return n.url}};export{f as a,B as i,R as n,z as r,V as t};
|