@hybridaione/hybridclaw 0.17.0 → 0.18.0
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/CHANGELOG.md +62 -0
- package/README.md +16 -6
- package/config.example.json +1 -1
- package/console/dist/assets/chat-C4lYYG3X.css +1 -0
- package/console/dist/assets/{chat-ZXlZMDQn.js → chat-CBzFOOa7.js} +28 -28
- package/console/dist/assets/{cx-D-Eeq-HT.js → cx-Dx36j-u-.js} +1 -1
- package/console/dist/assets/{index-C4X6KQL_.css → index-CbSfc5B7.css} +1 -1
- package/console/dist/assets/{index-BcOge1oI.js → index-mP3V4MBi.js} +8 -8
- package/console/dist/assets/{terminal-BhiO_Bf5.js → terminal-CfDfvr7E.js} +1 -1
- package/console/dist/index.html +3 -3
- package/container/dist/approval-policy.js +130 -13
- package/container/dist/approval-policy.js.map +1 -1
- package/container/dist/image-generation.js +5 -5
- package/container/dist/image-generation.js.map +1 -1
- package/container/dist/tools.js +123 -1
- package/container/dist/tools.js.map +1 -1
- package/container/dist/video-generation.js +3 -3
- package/container/dist/video-generation.js.map +1 -1
- package/container/dist/web-search.js +101 -14
- package/container/dist/web-search.js.map +1 -1
- package/container/package-lock.json +2 -2
- package/container/package.json +1 -1
- package/container/shared/browser-navigation.d.ts +1 -0
- package/container/shared/browser-navigation.js +5 -1
- package/container/shared/browser-stealth-policy.d.ts +27 -0
- package/container/shared/browser-stealth-policy.js +108 -0
- package/container/shared/web-search-config.d.ts +5 -0
- package/container/src/approval-policy.ts +165 -14
- package/container/src/image-generation.ts +5 -5
- package/container/src/tools.ts +139 -0
- package/container/src/video-generation.ts +3 -3
- package/container/src/web-search.ts +146 -22
- package/dist/agent/prompt-hooks.d.ts.map +1 -1
- package/dist/agent/prompt-hooks.js +1 -0
- package/dist/agent/prompt-hooks.js.map +1 -1
- package/dist/agents/agent-config-command.d.ts.map +1 -1
- package/dist/agents/agent-config-command.js +13 -1
- package/dist/agents/agent-config-command.js.map +1 -1
- package/dist/agents/agent-registry.d.ts.map +1 -1
- package/dist/agents/agent-registry.js +17 -1
- package/dist/agents/agent-registry.js.map +1 -1
- package/dist/agents/agent-types.d.ts +8 -0
- package/dist/agents/agent-types.d.ts.map +1 -1
- package/dist/agents/agent-types.js +40 -0
- package/dist/agents/agent-types.js.map +1 -1
- package/dist/browser/browser-use-cloud-provider.js +1 -1
- package/dist/browser/browser-use-cloud-provider.js.map +1 -1
- package/dist/browser/camofox-provider.d.ts +7 -1
- package/dist/browser/camofox-provider.d.ts.map +1 -1
- package/dist/browser/camofox-provider.js +36 -2
- package/dist/browser/camofox-provider.js.map +1 -1
- package/dist/browser/playwright-utils.d.ts +1 -1
- package/dist/browser/playwright-utils.d.ts.map +1 -1
- package/dist/browser/playwright-utils.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +3 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/skill-command.d.ts.map +1 -1
- package/dist/cli/skill-command.js +13 -0
- package/dist/cli/skill-command.js.map +1 -1
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +19 -1
- package/dist/command-registry.js.map +1 -1
- package/dist/config/config.d.ts +2 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +4 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/runtime-config.d.ts +1 -0
- package/dist/config/runtime-config.d.ts.map +1 -1
- package/dist/config/runtime-config.js +32 -8
- package/dist/config/runtime-config.js.map +1 -1
- package/dist/doctor/provider-probes.d.ts.map +1 -1
- package/dist/doctor/provider-probes.js +11 -2
- package/dist/doctor/provider-probes.js.map +1 -1
- package/dist/gateway/gateway-http-proxy.d.ts +1 -1
- package/dist/gateway/gateway-http-proxy.d.ts.map +1 -1
- package/dist/gateway/gateway-http-proxy.js +221 -42
- package/dist/gateway/gateway-http-proxy.js.map +1 -1
- package/dist/gateway/gateway-http-server.d.ts.map +1 -1
- package/dist/gateway/gateway-http-server.js +16 -1
- package/dist/gateway/gateway-http-server.js.map +1 -1
- package/dist/gateway/gateway-provider-service.d.ts +2 -2
- package/dist/gateway/gateway-provider-service.d.ts.map +1 -1
- package/dist/gateway/gateway-provider-service.js +39 -7
- package/dist/gateway/gateway-provider-service.js.map +1 -1
- package/dist/gateway/gateway-secret-injection.d.ts +3 -3
- package/dist/gateway/gateway-secret-injection.d.ts.map +1 -1
- package/dist/gateway/gateway-secret-injection.js +4 -5
- package/dist/gateway/gateway-secret-injection.js.map +1 -1
- package/dist/gateway/gateway-service.d.ts +3 -0
- package/dist/gateway/gateway-service.d.ts.map +1 -1
- package/dist/gateway/gateway-service.js +22 -6
- package/dist/gateway/gateway-service.js.map +1 -1
- package/dist/gateway/gateway-types.d.ts +3 -4
- package/dist/gateway/gateway-types.d.ts.map +1 -1
- package/dist/gateway/gateway-types.js.map +1 -1
- package/dist/gateway/model-provider-keys.d.ts +3 -0
- package/dist/gateway/model-provider-keys.d.ts.map +1 -0
- package/dist/gateway/model-provider-keys.js +2 -0
- package/dist/gateway/model-provider-keys.js.map +1 -0
- package/dist/gateway/skill-commands.d.ts.map +1 -1
- package/dist/gateway/skill-commands.js +26 -1
- package/dist/gateway/skill-commands.js.map +1 -1
- package/dist/infra/container-runner.d.ts.map +1 -1
- package/dist/infra/container-runner.js +9 -13
- package/dist/infra/container-runner.js.map +1 -1
- package/dist/infra/host-runner.d.ts.map +1 -1
- package/dist/infra/host-runner.js +8 -13
- package/dist/infra/host-runner.js.map +1 -1
- package/dist/infra/web-search-runtime-config.d.ts +3 -0
- package/dist/infra/web-search-runtime-config.d.ts.map +1 -0
- package/dist/infra/web-search-runtime-config.js +21 -0
- package/dist/infra/web-search-runtime-config.js.map +1 -0
- package/dist/infra/worker-signature.d.ts +1 -0
- package/dist/infra/worker-signature.d.ts.map +1 -1
- package/dist/infra/worker-signature.js +1 -0
- package/dist/infra/worker-signature.js.map +1 -1
- package/dist/policy/secret-route-policy.d.ts +1 -1
- package/dist/policy/secret-route-policy.d.ts.map +1 -1
- package/dist/policy/secret-route-policy.js +0 -8
- package/dist/policy/secret-route-policy.js.map +1 -1
- package/dist/providers/hybridai-bots.js +1 -1
- package/dist/providers/hybridai-bots.js.map +1 -1
- package/dist/providers/hybridai-discovery.d.ts +2 -0
- package/dist/providers/hybridai-discovery.d.ts.map +1 -1
- package/dist/providers/hybridai-discovery.js +62 -4
- package/dist/providers/hybridai-discovery.js.map +1 -1
- package/dist/providers/hybridai-health.d.ts.map +1 -1
- package/dist/providers/hybridai-health.js +8 -3
- package/dist/providers/hybridai-health.js.map +1 -1
- package/dist/providers/provider-credentials.d.ts.map +1 -1
- package/dist/providers/provider-credentials.js +31 -17
- package/dist/providers/provider-credentials.js.map +1 -1
- package/dist/providers/utils.d.ts +1 -0
- package/dist/providers/utils.d.ts.map +1 -1
- package/dist/providers/utils.js +5 -0
- package/dist/providers/utils.js.map +1 -1
- package/dist/security/browser-stealth-policy.d.ts +10 -0
- package/dist/security/browser-stealth-policy.d.ts.map +1 -0
- package/dist/security/browser-stealth-policy.js +70 -0
- package/dist/security/browser-stealth-policy.js.map +1 -0
- package/dist/security/secret-policy.d.ts +1 -1
- package/dist/security/secret-policy.d.ts.map +1 -1
- package/dist/security/secret-policy.js +4 -1
- package/dist/security/secret-policy.js.map +1 -1
- package/dist/security/secret-refs.d.ts +3 -6
- package/dist/security/secret-refs.d.ts.map +1 -1
- package/dist/security/secret-refs.js +9 -39
- package/dist/security/secret-refs.js.map +1 -1
- package/dist/skills/skill-manifest.d.ts +1 -1
- package/dist/skills/skill-manifest.d.ts.map +1 -1
- package/dist/skills/skills-import.d.ts.map +1 -1
- package/dist/skills/skills-import.js +20 -1
- package/dist/skills/skills-import.js.map +1 -1
- package/dist/skills/skills.d.ts +12 -0
- package/dist/skills/skills.d.ts.map +1 -1
- package/dist/skills/skills.js +47 -0
- package/dist/skills/skills.js.map +1 -1
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +1 -0
- package/dist/workspace.js.map +1 -1
- package/docs/content/developer-guide/approvals.md +27 -4
- package/docs/content/developer-guide/runtime.md +6 -3
- package/docs/content/getting-started/authentication.md +7 -3
- package/docs/content/guides/bundled-skills.md +10 -2
- package/docs/content/guides/remote-access.md +3 -3
- package/docs/content/guides/skills/README.md +2 -2
- package/docs/content/guides/skills/integrations.md +79 -5
- package/docs/content/guides/skills/publishing.md +63 -1
- package/docs/content/internal/roadmap.md +3 -3
- package/docs/content/reference/configuration.md +20 -9
- package/docs/content/reference/diagnostics.md +5 -0
- package/docs/content/reference/tools/web-search.md +50 -3
- package/docs/content/tutorials/README.md +3 -0
- package/docs/content/tutorials/campaign-pulse-digest.md +22 -0
- package/docs/content/tutorials/feature-explainer-videos.md +24 -3
- package/docs/tools/web-search.md +50 -2
- package/package.json +4 -2
- package/skills/download-platform-invoices/helpers/config.cjs +72 -39
- package/skills/firecrawl/SKILL.md +65 -14
- package/skills/firecrawl/firecrawl.cjs +91 -8
- package/skills/ga4/SKILL.md +200 -0
- package/skills/ga4/evals/scenarios.json +225 -0
- package/skills/ga4/scripts/ga4.py +832 -0
- package/skills/hermes3000-writing/SKILL.md +254 -0
- package/skills/hermes3000-writing/agents/openai.yaml +4 -0
- package/skills/hermes3000-writing/references/api-workflow.md +302 -0
- package/skills/hermes3000-writing/scripts/hermes3000.cjs +580 -0
- package/skills/heygen/client.cjs +2 -0
- package/skills/heygen/heygen.cjs +10 -63
- package/skills/heygen/lib/common.cjs +67 -0
- package/skills/skill-creator/SKILL.md +2 -1
- package/skills/skill-creator/references/output-patterns.md +1 -1
- package/skills/skill-creator/scripts/quick_validate.py +11 -4
- package/skills/video.from-script/SKILL.md +156 -0
- package/skills/video.from-script/video-from-script.cjs +638 -0
- package/console/dist/assets/chat-LVRun8dV.css +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,68 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## [0.18.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.18.0) - 2026-05-13
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **GA4 reporting skill**: Bundled `ga4` adds production Google Analytics 4
|
|
10
|
+
Data API reporting, request planning/review, gateway-injected bearer auth,
|
|
11
|
+
service-account support, traffic-source, landing-page, time-series, revenue,
|
|
12
|
+
session, and key-event reports, plus eval scenarios.
|
|
13
|
+
- **Hermes3000 long-form writing skill**: Bundled `hermes3000-writing` can
|
|
14
|
+
authenticate through the gateway secret rail, manage portal-backed book
|
|
15
|
+
projects, draft and revise chapters, update consistency memory, and export
|
|
16
|
+
DOCX/PDF/EPUB/HTML deliverables without exposing JWTs to the agent context.
|
|
17
|
+
- **Video-from-script skill**: Bundled `video.from-script` turns approved
|
|
18
|
+
avatar, voice, and script briefs into HeyGen MP4 jobs with planning, guarded
|
|
19
|
+
async render start, status polling, optional download, and credit-spend
|
|
20
|
+
approval gates.
|
|
21
|
+
- **Firecrawl self-host adapter**: The Firecrawl skill now supports
|
|
22
|
+
self-hosted Firecrawl origins alongside managed API mode, including optional
|
|
23
|
+
self-host auth for scrape, crawl, map, and extraction workflows.
|
|
24
|
+
- **Per-agent authenticated SearXNG search**: Agents can bind their own
|
|
25
|
+
SearXNG base URL and bearer-token SecretRef, with bearer injection routed
|
|
26
|
+
through the gateway HTTP proxy so tokens stay out of model context.
|
|
27
|
+
- **Reviewed skill unblock controls**: Blocked skills now appear in CLI, web,
|
|
28
|
+
and gateway skill listings, and local operators can run `skill unblock` or
|
|
29
|
+
use the Admin Skills page to record a reviewed scanner-bypass marker for an
|
|
30
|
+
installed copy.
|
|
31
|
+
- **Browser stealth host policy**: Camofox stealth browsing is deny-by-default
|
|
32
|
+
unless workspace policy explicitly allowlists the target host with
|
|
33
|
+
`browser.stealth.rules`.
|
|
34
|
+
- **Node version guardrails**: Source checkouts now include `.node-version`,
|
|
35
|
+
`.nvmrc`, and a `check:node` preflight so local builds and tests fail fast
|
|
36
|
+
when they are not running on Node.js 22.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
|
|
40
|
+
- **SecretRef handling is store-first**: Runtime SecretRefs now accept the
|
|
41
|
+
encrypted `store` source for new configuration. Legacy Browser Use Cloud
|
|
42
|
+
env-backed refs are canonicalized to stored SecretRefs, and malformed legacy
|
|
43
|
+
refs produce explicit configuration errors.
|
|
44
|
+
- **HybridAI auth diagnostics are clearer**: Provider discovery, health, bot
|
|
45
|
+
lookup, and doctor output distinguish auth, configuration, and remote service
|
|
46
|
+
failures more cleanly.
|
|
47
|
+
- **Web chat scrolling respects user position**: The chat UI now sticks to the
|
|
48
|
+
bottom only when appropriate, preserves pinned scroll position while users
|
|
49
|
+
read older content, and exposes a jump-to-latest affordance.
|
|
50
|
+
- **Console model-provider typing is narrower**: The chat model switcher no
|
|
51
|
+
longer shares broader gateway provider types that were not part of the
|
|
52
|
+
console UI contract.
|
|
53
|
+
- **Trace-judge live CI is less brittle**: Main-branch CI no longer blocks on
|
|
54
|
+
missing trace-judge live secrets.
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **SearXNG bearer leakage risk**: SearXNG bearer values are no longer exposed
|
|
59
|
+
through runtime env forwarding; configured SecretRefs are resolved only by
|
|
60
|
+
the gateway proxy at request time.
|
|
61
|
+
- **Camofox navigation scope**: Stealth browser sessions now enforce both safe
|
|
62
|
+
navigation schemes and host allowlisting before visiting a URL.
|
|
63
|
+
- **Browser credential fills**: SecretRef-backed browser fills require a
|
|
64
|
+
resolvable page URL and calling skill name so host, selector, skill, and
|
|
65
|
+
agent policy can be evaluated.
|
|
66
|
+
|
|
5
67
|
## [0.17.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.17.0) - 2026-05-12
|
|
6
68
|
|
|
7
69
|
### Added
|
package/README.md
CHANGED
|
@@ -110,6 +110,8 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
110
110
|
- Web Chat shows live context-window usage, accepts `/context`, and lets you
|
|
111
111
|
switch the active agent and model from the composer; active agent switching is
|
|
112
112
|
preserved across session reloads and UI route changes
|
|
113
|
+
- Web Chat keeps scrolling pinned when you read older messages and shows a
|
|
114
|
+
jump-to-latest affordance when new output arrives below the current viewport
|
|
113
115
|
- Web Chat accepts `/btw <question>` side questions while a primary run is
|
|
114
116
|
active, so you can ask an ephemeral follow-up without interrupting the
|
|
115
117
|
current run
|
|
@@ -196,6 +198,9 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
196
198
|
- `hybridclaw skill install <source>`, `skill upgrade`, `skill revisions`, and
|
|
197
199
|
`skill rollback` manage packaged business skills with manifests, audit
|
|
198
200
|
events, and snapshots.
|
|
201
|
+
- `hybridclaw skill list blocked` and `hybridclaw skill unblock <name>` let
|
|
202
|
+
local operators review scanner-blocked skills and record a bypass marker for
|
|
203
|
+
the installed copy when the finding has been accepted.
|
|
199
204
|
- The bundled tutorials cover owner, GTM, marketing, sales, DevRel, content,
|
|
200
205
|
invoicing, webinar, and release-launch workflows that can run from the TUI,
|
|
201
206
|
web chat, or connected channels.
|
|
@@ -225,8 +230,11 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
225
230
|
encrypted runtime secret store and are passed into host or container agent
|
|
226
231
|
runtimes from the active config.
|
|
227
232
|
- Web search can also target a self-hosted SearXNG instance through
|
|
228
|
-
`web.search.searxngBaseUrl` or `SEARXNG_BASE_URL`;
|
|
229
|
-
|
|
233
|
+
`web.search.searxngBaseUrl` or `SEARXNG_BASE_URL`; authenticated instances
|
|
234
|
+
use store-backed SearXNG bearer SecretRefs, and agents can override the
|
|
235
|
+
global SearXNG base URL and bearer SecretRef for tenant-specific search.
|
|
236
|
+
Bundled `search.web`, `search.news`, and `search.images` skills prefer that
|
|
237
|
+
sovereign search path.
|
|
230
238
|
- Google OAuth credentials for Workspace skills live in the encrypted runtime
|
|
231
239
|
secret store; agent runtimes receive short-lived access tokens for `gog` and
|
|
232
240
|
`gws` instead of long-lived refresh tokens.
|
|
@@ -245,16 +253,18 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
245
253
|
- Bundled skills include API-backed Google Workspace workflows (`gog`, `gws`),
|
|
246
254
|
Salesforce inspection, GitHub issue queue processing (`gh-issues`),
|
|
247
255
|
monthly SaaS invoice harvesting (`download-platform-invoices`), Airtable,
|
|
248
|
-
FastBill, Firecrawl, Google Ads,
|
|
256
|
+
FastBill, managed or self-hosted Firecrawl, Google Ads, GA4 reporting,
|
|
257
|
+
HeyGen, Hermes3000 long-form writing, natural-language warehouse SQL
|
|
249
258
|
(`warehouse-sql`), brand-voice drafting, and editable Excalidraw diagram
|
|
250
259
|
creation.
|
|
251
260
|
- Native media tools generate images and videos through configured providers,
|
|
252
261
|
persist the resulting artifacts, and expose the same capability through the
|
|
253
|
-
bundled `image-generation` and `video-
|
|
262
|
+
bundled `image-generation`, `video-generation`, and `video.from-script`
|
|
263
|
+
skills.
|
|
254
264
|
- Browser automation can use local persistent Playwright profiles, Camofox
|
|
255
265
|
profiles, or Browser Use Cloud sessions with encrypted `BROWSER_USE_API_KEY`
|
|
256
|
-
storage, usage metering, shared navigation guards,
|
|
257
|
-
|
|
266
|
+
storage, usage metering, shared navigation guards, SecretRef-gated credential
|
|
267
|
+
fills, and deny-by-default host allowlisting for Camofox stealth mode.
|
|
258
268
|
- The repo-shipped `brand-voice` plugin can flag, rewrite, or block final
|
|
259
269
|
responses that violate configured voice rules before they reach users.
|
|
260
270
|
- Built-in office skills handle longer PDF creation flows cleanly: the bundled
|
package/config.example.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._srOnly_jfnet_1{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}._chatPage_ebl64_1{--chat-hover-bg:color-mix(in srgb, var(--muted) 94%, var(--foreground) 6%);width:100%;max-width:100vw;height:var(--chat-visual-viewport-height,100dvh);min-height:0;display:flex;overflow:hidden}._chatPage_ebl64_1>div{height:100%;min-height:0}.layout:has(._chatPage_ebl64_1){width:100%;max-width:100vw;min-height:0;height:var(--chat-visual-viewport-height,100dvh);overflow:hidden}html:has(.chatPage){width:100%;max-width:100vw;overflow-x:hidden}body:has(.chatPage){width:100%;max-width:100vw;overflow-x:hidden}#root:has(.chatPage){width:100%;max-width:100vw;overflow-x:hidden}._chatSidebarHeader_ebl64_36{justify-content:space-between;align-items:center;gap:8px;padding:0 4px;display:flex}._chatSidebarContent_ebl64_44{flex-direction:column;gap:8px;padding:0 4px;display:flex;overflow:hidden}._newChatButton_ebl64_52{appearance:none;width:100%;color:inherit;font:inherit;border-radius:var(--radius-sm);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:12px;padding:18px 8px;font-weight:500;transition:background .12s;display:flex}._newChatButton_ebl64_52:hover{background:var(--chat-hover-bg)}._newChatButton_ebl64_52>span:first-child{justify-content:center;width:20px;font-size:1.25rem;line-height:1;display:inline-flex}._sidebarLabel_ebl64_82{text-transform:uppercase;letter-spacing:.08em;color:var(--muted-foreground);margin:12px 0 4px;padding:0 6px;font-size:.7rem;font-weight:700}._sidebarListHeader_ebl64_92{justify-content:space-between;align-items:center;gap:8px;display:flex}._sidebarScopeToggle_ebl64_99{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--muted);align-items:center;padding:2px;display:inline-flex}._sidebarScopeButton_ebl64_108{appearance:none;border-radius:calc(var(--radius-sm) - 2px);color:var(--muted-foreground);font:inherit;cursor:pointer;background:0 0;border:0;padding:5px 8px;font-size:.72rem;font-weight:600;line-height:1;transition:background .12s,color .12s,box-shadow .12s}._sidebarScopeButton_ebl64_108:hover{color:var(--text)}._sidebarScopeButtonActive_ebl64_130{background:var(--primary);color:var(--primary-foreground);box-shadow:0 1px 2px #0f172a2e, 0 0 0 1px color-mix(in srgb, var(--primary) 70%, var(--background));font-weight:700}._sidebarScopeButtonActive_ebl64_130:hover{color:var(--primary-foreground)}._sessionList_ebl64_143{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}._sessionItem_ebl64_152{appearance:none;border-radius:var(--radius-sm);cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border:0;flex-direction:column;gap:2px;padding:8px 10px;transition:background .12s;display:flex;overflow:hidden}._sessionItem_ebl64_152:hover{background:var(--chat-hover-bg)}._sessionItemPending_ebl64_174{animation:1s ease-in-out infinite _sessionPulse_ebl64_1}@keyframes _sessionPulse_ebl64_1{0%,to{opacity:1}50%{opacity:.5}}._sessionTitle_ebl64_188{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:500;overflow:hidden}._sessionTime_ebl64_197{color:var(--muted-foreground);font-size:.72rem}._sessionSnippet_ebl64_202{color:var(--muted-foreground);white-space:nowrap;text-overflow:ellipsis;font-size:.76rem;overflow:hidden}._sessionItemActive_ebl64_210 ._sessionTitle_ebl64_188,._sessionItemActive_ebl64_210 ._sessionSnippet_ebl64_202{color:var(--primary)}._sidebarSearchWrap_ebl64_215{padding:10px 0 4px}._sidebarSearch_ebl64_215{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel-bg);width:100%;color:var(--text);font:inherit;padding:9px 11px}._sidebarSearch_ebl64_215::placeholder{color:var(--muted-foreground)}._sidebarSearch_ebl64_215:focus{outline:2px solid var(--accent-soft);outline-offset:1px;border-color:var(--ring)}._sidebarStatus_ebl64_239{color:var(--muted-foreground);padding:6px 10px;font-size:.82rem}aside[data-state=collapsed] ._newChatButton_ebl64_52{justify-content:center;gap:0;padding:10px 8px}aside[data-state=collapsed] ._newChatButton_ebl64_52>span:not(:first-child),aside[data-state=collapsed] ._sidebarSearchWrap_ebl64_215,aside[data-state=collapsed] ._chatSidebarContent_ebl64_44{display:none}._chatMobileTrigger_ebl64_258{margin-right:auto;display:inline-flex}._chatTopbar_ebl64_263{z-index:50;flex-shrink:0;justify-content:flex-end;align-items:center;gap:10px;min-width:0;max-width:100%;padding:24px 24px 0;display:flex;position:relative;overflow:visible}._mobileQrButton_ebl64_277{appearance:none;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-bg);width:36px;height:36px;color:var(--muted-foreground);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}._mobileQrButton_ebl64_277:hover{color:var(--primary);border-color:color-mix(in srgb, var(--primary) 42%, var(--line))}._mobileQrButton_ebl64_277:disabled{opacity:.55;cursor:wait}._mobileQrIcon_ebl64_301{grid-template-rows:repeat(2,7px);grid-template-columns:repeat(2,7px);gap:3px;display:grid}._mobileQrIcon_ebl64_301 span{border:2px solid;border-radius:2px}._mobileQrOverlay_ebl64_313{z-index:80;background:#02061773;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}._mobileQrDialog_ebl64_324{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel-bg);width:min(360px,100%);padding:18px;box-shadow:0 18px 55px #0f172a38}._mobileQrHeader_ebl64_333{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}._mobileQrHeader_ebl64_333 h2{margin:0;font-size:1rem;font-weight:650}._mobileQrClose_ebl64_347{appearance:none;border:1px solid var(--line);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--muted-foreground);cursor:pointer;font:inherit;background:0 0;line-height:1}._mobileQrImage_ebl64_360{border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;justify-content:center;padding:12px;display:flex}._mobileQrImage_ebl64_360 img{width:min(260px,100%);height:auto}._mobileQrLink_ebl64_374{color:var(--primary);text-align:center;word-break:break-word;margin-top:12px;font-size:.86rem;display:block}._chatMain_ebl64_383{background:var(--page-bg);flex-direction:column;flex:auto;min-width:0;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}._messageArea_ebl64_395{overscroll-behavior:contain;overflow-anchor:none;flex:auto;min-width:0;min-height:0;padding:16px 24px 12px;overflow:hidden auto}._messageList_ebl64_408{flex-direction:column;gap:12px;width:100%;min-width:0;max-width:100%;display:flex}._sidebarCollapseButton_ebl64_417{align-self:center}._emptyState_ebl64_421{flex-direction:column;flex:auto;justify-content:center;align-items:center;min-height:0;padding:48px 24px;display:flex}._greeting_ebl64_431{color:var(--muted-foreground);text-align:center;letter-spacing:-.02em;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:700;line-height:1.3}._messageBlock_ebl64_440{flex-direction:column;gap:6px;width:100%;min-width:0;max-width:100%;display:flex}._jumpToLatest_ebl64_452{left:50%;bottom:calc(var(--chat-composer-height,132px) + 12px);border:1px solid var(--line-strong);background:var(--panel-bg);color:var(--text);font:inherit;cursor:pointer;box-shadow:var(--shadow-raised);z-index:40;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:.82rem;font-weight:500;transition:background .12s;display:inline-flex;position:absolute;transform:translate(-50%)}._jumpToLatest_ebl64_452:hover{background:var(--chat-hover-bg)}._jumpToLatest_ebl64_452:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px}._jumpToLatest_ebl64_452 span:first-child{font-weight:700;line-height:1}._messageBlockUser_ebl64_488{align-items:flex-end}._messageBlockAssistant_ebl64_492,._messageBlockSystem_ebl64_493{align-items:flex-start}._agentLabel_ebl64_497{color:var(--muted-foreground);align-items:center;gap:8px;padding:0 4px;font-size:.82rem;font-weight:600;display:flex}._agentAvatar_ebl64_507{object-fit:cover;border-radius:999px;width:32px;height:32px}._agentInitial_ebl64_514{background:var(--primary);width:32px;height:32px;color:var(--primary-foreground);border-radius:999px;justify-content:center;align-items:center;font-size:.86rem;font-weight:700;display:flex}._bubble_ebl64_527{word-wrap:break-word;overflow-wrap:break-word;border-radius:14px;min-width:0;max-width:85%;padding:10px 14px;font-size:.92rem;line-height:1.55}._bubbleUser_ebl64_538{background:linear-gradient(135deg, var(--primary), var(--ring));color:var(--primary-foreground);border-bottom-right-radius:4px}._bubbleAssistant_ebl64_544{background:var(--card);color:var(--card-foreground);border:1px solid var(--line);box-shadow:var(--shadow-card);border-bottom-left-radius:4px}._bubbleSystem_ebl64_552{background:var(--accent-soft);color:var(--accent-foreground);text-align:center;align-self:center;max-width:90%;font-size:.84rem}._markdownContent_ebl64_561{overflow-wrap:anywhere;min-width:0;max-width:100%;line-height:1.6}._markdownContent_ebl64_561 h1,._markdownContent_ebl64_561 h2,._markdownContent_ebl64_561 h3{color:var(--foreground);letter-spacing:-.02em;margin:.6em 0 .3em;font-weight:600}._markdownContent_ebl64_561 h1{font-size:1.25rem}._markdownContent_ebl64_561 h2{font-size:1.12rem}._markdownContent_ebl64_561 h3{font-size:1rem}._markdownContent_ebl64_561 p{margin:.4em 0}._markdownContent_ebl64_561 ul,._markdownContent_ebl64_561 ol{margin:.4em 0;padding-left:20px}._markdownContent_ebl64_561 li{margin:2px 0}._markdownContent_ebl64_561 blockquote{border-left:3px solid var(--line-strong);color:var(--muted-foreground);margin:.5em 0;padding:4px 12px}._markdownContent_ebl64_561 code{background:var(--muted);color:var(--foreground);border-radius:4px;padding:2px 5px;font-size:.86em}._markdownContent_ebl64_561 pre{background:var(--terminal);color:var(--terminal-foreground);border-radius:var(--radius-sm);margin:.5em 0;padding:12px 14px;font-size:.84rem;line-height:1.5;overflow-x:auto}._markdownContent_ebl64_561 pre code{color:inherit;font-size:inherit;background:0 0;border-radius:0;padding:0}._markdownContent_ebl64_561 hr{border:none;border-top:1px solid var(--line);margin:.8em 0}._markdownContent_ebl64_561 a{color:var(--primary);text-decoration:none}._markdownContent_ebl64_561 a:hover{text-decoration:underline}._markdownContent_ebl64_561 table{border-collapse:collapse;width:100%;margin:.5em 0;font-size:.86rem}._markdownContent_ebl64_561 th,._markdownContent_ebl64_561 td{border:1px solid var(--line);text-align:left;padding:6px 10px}._markdownContent_ebl64_561 th{background:var(--muted);font-weight:600}._markdownContent_ebl64_561 tbody tr:nth-child(2n){background:var(--muted)}._messageActions_ebl64_675{gap:4px;padding:0 4px;display:flex}._messageActions_ebl64_675 ._actionButton_ebl64_681{width:24px;height:24px;min-height:unset;color:var(--muted-foreground);background:0 0;border-color:#0000;border-radius:999px;font-size:.82rem}._messageActions_ebl64_675 ._actionButton_ebl64_681:hover:not(:disabled):not([data-disabled]){background:var(--chat-hover-bg);color:var(--foreground)}._actionButtonSuccess_ebl64_697{color:var(--success)}._branchSwitcher_ebl64_701{color:var(--muted-foreground);align-items:center;gap:4px;padding:0 4px;font-size:.75rem;display:inline-flex}._branchButton_ebl64_710{width:22px;height:22px;min-height:unset;border-radius:999px;font-size:.8rem}._branchButton_ebl64_710:hover:not(:disabled):not([data-disabled]){background:var(--chat-hover-bg);color:var(--text)}._branchButton_ebl64_710:disabled{opacity:.4;cursor:default}._approvalActions_ebl64_728{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}._approvalAllow_ebl64_735{border-color:var(--success-border);background:var(--success-soft);color:var(--success)}._artifactCard_ebl64_741{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--muted);flex-direction:column;align-items:center;gap:10px;width:fit-content;max-width:100%;margin-top:8px;padding:10px 14px;display:flex}._artifactCardWithPreview_ebl64_755{align-items:stretch;width:min(720px,100%)}._artifactHeader_ebl64_760{align-items:center;gap:10px;min-width:0;display:flex}._artifactFilename_ebl64_767{color:var(--text);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:.84rem;font-weight:500;overflow:hidden}._artifactBadge_ebl64_777{background:var(--accent-soft);color:var(--accent-foreground);border-radius:4px;flex-shrink:0;padding:2px 6px;font-size:.7rem;font-weight:500}._artifactDownload_ebl64_787{color:var(--primary);cursor:pointer;background:0 0;border:none;flex-shrink:0;margin-left:auto;padding:0;font-size:.82rem;text-decoration:none}._artifactDownload_ebl64_787:hover{text-decoration:underline}._artifactDownload_ebl64_787:disabled{opacity:.6;cursor:default;text-decoration:none}._artifactPreview_ebl64_809{border-radius:var(--radius-sm);max-width:100%;overflow:hidden}._artifactPreview_ebl64_809 img{border-radius:var(--radius-sm);max-width:100%;display:block}._artifactPdfPreview_ebl64_821{border:1px solid var(--line);background:#fff;width:100%;height:min(60vh,560px);min-height:360px}._artifactPdfPreview_ebl64_821 iframe{background:#fff;border:0;width:100%;height:100%;display:block}._thinking_ebl64_837{align-items:center;gap:4px;padding:10px 14px;display:flex}._thinkingDot_ebl64_844{background:var(--muted-foreground);border-radius:999px;width:7px;height:7px;animation:1.2s ease-in-out infinite _thinkingBounce_ebl64_1}._thinkingDot_ebl64_844:nth-child(2){animation-delay:.15s}._thinkingDot_ebl64_844:nth-child(3){animation-delay:.3s}@keyframes _thinkingBounce_ebl64_1{0%,80%,to{opacity:.4;transform:scale(.6)}40%{opacity:1;transform:scale(1)}}._composerWrapper_ebl64_873{flex-shrink:0;min-width:0;max-width:100%;margin-top:auto;padding:0 24px 20px;overflow:hidden}._composer_ebl64_873{border:1px solid var(--line-strong);background:var(--panel-bg);width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-raised);border-radius:16px;flex-direction:column;gap:8px;padding:12px 16px;transition:border-color .15s;display:flex}._pendingMediaRow_ebl64_897{flex-wrap:wrap;gap:6px;padding:10px 14px 0;display:flex}._mediaChip_ebl64_904{background:var(--muted);color:var(--text);border-radius:6px;align-items:center;gap:4px;max-width:180px;padding:4px 8px;font-size:.78rem;display:inline-flex}._mediaChipName_ebl64_916{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._mediaChipRemove_ebl64_922{width:16px;height:16px;color:var(--muted-foreground);cursor:pointer;background:0 0;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.7rem;display:flex}._mediaChipRemove_ebl64_922:hover{color:var(--danger)}._composerRow_ebl64_941{align-items:flex-end;gap:8px;padding:10px 14px;display:flex}._composerActions_ebl64_948{justify-content:space-between;align-items:center;gap:8px;display:flex}._composerLeftActions_ebl64_955{align-items:center;gap:12px;min-width:0;display:flex}._composerInput_ebl64_962{resize:none;min-height:36px;max-height:180px;color:var(--text);background:0 0;border:none;outline:none;flex:auto;padding:0;font-size:.92rem;line-height:36px}._composerInput_ebl64_962:not(:placeholder-shown){padding:6px 0;line-height:1.5}._composerInput_ebl64_962::placeholder{color:var(--muted-foreground)}._attachButton_ebl64_985,._sendButton_ebl64_986{cursor:pointer;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;transition:background .12s,color .12s;display:flex}._attachButton_ebl64_985:focus-visible,._sendButton_ebl64_986:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px}._attachButton_ebl64_985{color:var(--muted-foreground);background:0 0;font-size:1.2rem}._attachButton_ebl64_985:hover{background:var(--chat-hover-bg);color:var(--text)}._composerPill_ebl64_1021{max-width:220px;height:36px;color:var(--muted-foreground);font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;border-radius:999px;outline:none;align-items:center;gap:8px;padding:0 16px;font-size:.78rem;font-weight:500;line-height:36px;transition:background .12s,color .12s;display:inline-flex;position:relative;overflow:hidden}._composerPill_ebl64_1021:hover:not(:disabled):not([data-disabled]),._composerPill_ebl64_1021:focus,._composerPill_ebl64_1021:focus-within,._composerPill_ebl64_1021[data-state=open]{background:var(--chat-hover-bg);color:var(--text)}._composerPill_ebl64_1021:disabled,._composerPill_ebl64_1021[data-disabled]{opacity:.55;cursor:default}._agentSelect_ebl64_1063{appearance:none;max-width:180px;height:36px;color:inherit;font:inherit;font-size:inherit;font-weight:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;outline:none;padding:0;line-height:36px;overflow:hidden}._agentSelect_ebl64_1063:disabled{cursor:default}._composerPillChevron_ebl64_1086{opacity:.7;flex-shrink:0;align-items:center;transition:transform .16s;display:inline-flex}._composerPill_ebl64_1021[data-state=open] ._composerPillChevron_ebl64_1086{opacity:1;transform:rotate(180deg)}._sendButton_ebl64_986{color:var(--muted-foreground);border:1px solid var(--line-strong);background:0 0;font-size:.9rem}._sendButton_ebl64_986:hover:not(:disabled){background:var(--chat-hover-bg);color:var(--text)}._sendButton_ebl64_986:disabled{opacity:.5;cursor:default}._sendButton_ebl64_986._stopping_ebl64_1116{background:var(--danger-soft);color:var(--danger)}._slashSuggestions_ebl64_1121{background:var(--popover);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-popover);overflow:hidden}._slashSuggestionsScroll_ebl64_1129{max-height:220px}._slashSuggestionsList_ebl64_1133{outline:none}._suggestionItem_ebl64_1137{cursor:pointer;border-left:2px solid #0000;flex-direction:column;justify-content:center;gap:2px;min-width:0;min-height:44px;padding:10px 14px;transition:background .1s;display:flex}._suggestionItemActive_ebl64_1152{background:color-mix(in srgb, var(--primary) 14%, transparent);border-left-color:var(--primary)}._suggestionItemSub_ebl64_1157{padding-left:28px}._suggestionLabel_ebl64_1161{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.86rem;font-weight:500;overflow:hidden}._suggestionLabelMono_ebl64_1170{font-family:var(--font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--muted-foreground);font-size:.82rem}._suggestionMatch_ebl64_1176{color:inherit;text-underline-offset:3px;background:0 0;font-weight:700;text-decoration:underline;text-decoration-thickness:1px}._suggestionDesc_ebl64_1185{color:var(--muted-foreground);white-space:nowrap;text-overflow:ellipsis;font-size:.76rem;overflow:hidden}._suggestionEmpty_ebl64_1193{color:var(--muted-foreground);padding:14px;font-size:.82rem}@media (width<=768px){._suggestionItem_ebl64_1137{min-height:48px;padding:12px 14px}}._errorBanner_ebl64_1210{border-radius:var(--radius-sm);background:var(--danger-soft);border:1px solid var(--danger-border);color:var(--danger);width:calc(100% - 48px);max-width:860px;margin:0 auto;padding:8px 14px;font-size:.84rem}._editArea_ebl64_1224{resize:vertical;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel-bg);width:100%;min-height:48px;max-height:200px;color:var(--text);padding:8px 10px;font-family:inherit;font-size:.92rem;line-height:1.5}._editButtons_ebl64_1239{gap:6px;margin-top:6px;display:flex}@media (width<=900px){._chatPage_ebl64_1{width:100vw;max-width:100vw;position:fixed;inset:0}._chatPage_ebl64_1,._chatPage_ebl64_1 *{max-width:100vw}._chatPage_ebl64_1{height:var(--chat-visual-viewport-height,100svh)}._chatMain_ebl64_383{flex:0 0 100vw;width:100vw;max-width:100vw}._chatTopbar_ebl64_263{width:100vw;padding:8px 16px 0}._messageArea_ebl64_395{width:100vw;max-width:100vw;padding:16px 16px calc(var(--chat-composer-height,150px) + 12px)}._messageList_ebl64_408,._messageBlock_ebl64_440{width:100%;max-width:100%;overflow-x:clip}._bubble_ebl64_527,._bubbleUser_ebl64_538,._bubbleAssistant_ebl64_544{max-width:min(95%,100vw - 32px)}._composerWrapper_ebl64_873{z-index:45;background:var(--page-bg);padding:0 16px;position:fixed;bottom:0;left:0;right:0}._slashSuggestionsScroll_ebl64_1129{max-height:40vh}}@media (width<=480px){._bubbleUser_ebl64_538,._bubbleAssistant_ebl64_544{max-width:95%}._messageArea_ebl64_395{padding:12px 8px calc(var(--chat-composer-height,150px) + 12px)}._composerWrapper_ebl64_873{padding:0 12px}._emptyState_ebl64_421 h1{font-size:1.2rem}}@media (prefers-reduced-motion:reduce){._thinkingDot_ebl64_844,._sessionItemPending_ebl64_174{animation:none}}._root_16nbt_1{flex-direction:column;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}._viewport_16nbt_10{scrollbar-width:none;-ms-overflow-style:none;outline:none;flex:auto;width:100%;min-width:0;height:100%;min-height:0;overflow:hidden scroll}._viewport_16nbt_10::-webkit-scrollbar{width:0;height:0;display:none}._scrollbar_16nbt_29{opacity:0;touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;flex-direction:column;width:8px;padding:0;transition:opacity .16s;display:flex;position:absolute;top:4px;bottom:4px;right:2px}._scrollbar_16nbt_29[data-state=visible]{opacity:.6}._root_16nbt_1:hover ._scrollbar_16nbt_29[data-state=visible],._scrollbar_16nbt_29[data-state=visible]:hover,._scrollbar_16nbt_29[data-state=visible]:focus-within{opacity:1}._thumb_16nbt_55{background:color-mix(in srgb, var(--text) 26%, transparent);cursor:grab;will-change:transform;border-radius:999px;width:100%;min-height:20px;transition:background .12s}._thumb_16nbt_55:hover{background:color-mix(in srgb, var(--text) 38%, transparent)}._thumb_16nbt_55:active{background:color-mix(in srgb, var(--text) 48%, transparent);cursor:grabbing}._trigger_1fi1d_1{border:1px solid var(--line,var(--panel-bg));background-color:var(--panel-bg);max-width:220px;height:32px;color:var(--text);font:inherit;cursor:pointer;border-radius:999px;outline:none;align-items:center;gap:6px;padding:0 10px 0 12px;font-size:.78rem;font-weight:500;line-height:1;transition:background-color .12s,color .12s,border-color .12s;display:inline-flex}._trigger_1fi1d_1:hover:not([data-disabled]),._trigger_1fi1d_1[data-state=open]{background-color:color-mix(in srgb, var(--panel-bg) 80%, var(--text) 20%);border-color:color-mix(in srgb, var(--text) 22%, var(--panel-bg))}._trigger_1fi1d_1:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px}._trigger_1fi1d_1[data-disabled]{opacity:.55;cursor:default}._value_1fi1d_40{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._value_1fi1d_40[data-placeholder]{color:var(--muted-foreground)}._icon_1fi1d_52{color:currentColor;opacity:.7;flex-shrink:0;align-items:center;transition:transform .16s;display:inline-flex}._trigger_1fi1d_1[data-state=open] ._icon_1fi1d_52{opacity:1;transform:rotate(180deg)}._popup_1fi1d_66{z-index:1000;box-sizing:border-box;contain:layout style;border:1px solid color-mix(in srgb, var(--text) 28%, var(--panel-bg));background-color:var(--popover,var(--card,var(--panel-bg)));width:min(420px,100vw - 16px);height:min(440px,100vh - 32px);box-shadow:var(--shadow-popover);color:var(--text);border-radius:14px;outline:none;flex-direction:column;font-size:.82rem;transition:width .16s;animation:.12s ease-out _select-in_1fi1d_1;display:flex;position:fixed;overflow:hidden}._popup_1fi1d_66:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px}:root[data-theme=dark] ._popup_1fi1d_66{background-color:#1c2536}:root[data-theme=light] ._popup_1fi1d_66{background-color:#fff}@keyframes _select-in_1fi1d_1{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}._popupHeader_1fi1d_111{border-bottom:1px solid color-mix(in srgb, var(--text) 12%, transparent);flex-shrink:0;padding:8px 8px 6px}._popupBodyPlain_1fi1d_117,._popupBody_1fi1d_117{flex:auto;min-width:0;min-height:0;display:flex}._popupRail_1fi1d_131{box-sizing:border-box;border-right:1px solid color-mix(in srgb, var(--text) 12%, transparent);scrollbar-width:none;flex-direction:column;flex-grow:0;flex-shrink:0;align-items:center;gap:2px;width:48px;padding:6px 4px;display:flex;overflow:hidden auto}._popupRail_1fi1d_131::-webkit-scrollbar{display:none}._listScroll_1fi1d_151{flex:auto;min-width:0;min-height:0}._list_1fi1d_151{outline:none;padding:6px}._list_1fi1d_151:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:-2px;border-radius:12px}._group_1fi1d_168{display:block}._group_1fi1d_168+._group_1fi1d_168{margin-top:4px}._groupLabel_1fi1d_176{color:var(--muted-foreground);letter-spacing:.01em;padding:8px 10px 4px;font-size:.72rem;font-weight:500}._separator_1fi1d_184{background:color-mix(in srgb, var(--text) 12%, transparent);height:1px;margin:4px 6px}._empty_1fi1d_190{color:var(--muted-foreground);text-align:center;padding:18px 12px;font-size:.82rem}._item_1fi1d_197{min-height:34px;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;outline:none;align-items:center;gap:10px;padding:6px 10px;font-size:.84rem;line-height:1.3;display:flex;position:relative}._item_1fi1d_197:has(>._itemIndicator_1fi1d_214){padding-left:30px}._item_1fi1d_197[data-highlighted]:not([data-disabled]){background:color-mix(in srgb, var(--panel-bg) 60%, var(--text) 14%)}._item_1fi1d_197[data-state=checked]{font-weight:600}._item_1fi1d_197[data-state=checked]:not([data-highlighted]){background:color-mix(in srgb, var(--panel-bg) 75%, var(--text) 6%)}._item_1fi1d_197[data-disabled]{opacity:.5;cursor:not-allowed}._itemIndicator_1fi1d_214{color:currentColor;justify-content:center;align-items:center;display:none;position:absolute;left:8px}._item_1fi1d_197[data-state=checked]>._itemIndicator_1fi1d_214{display:inline-flex}._itemText_1fi1d_248{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._itemBody_1fi1d_256{flex-direction:column;flex:auto;align-items:flex-start;gap:1px;min-width:0;display:flex}._itemBody_1fi1d_256>*{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}._itemSubtitle_1fi1d_272{color:var(--muted-foreground);letter-spacing:.01em;font-size:.7rem;font-weight:400}._itemMeta_1fi1d_279{color:var(--muted-foreground);font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;gap:6px;font-size:.7rem;display:inline-flex}._search_12ewc_1{background:color-mix(in srgb, var(--panel-bg) 65%, transparent);height:30px;color:var(--muted-foreground);border-radius:8px;align-items:center;gap:8px;padding:0 10px;display:flex}._search_12ewc_1:focus-within{background:color-mix(in srgb, var(--panel-bg) 50%, var(--text) 6%);color:var(--text)}._searchInput_12ewc_17{min-width:0;height:100%;color:var(--text);font:inherit;background:0 0;border:none;outline:none;flex:auto;font-size:.82rem}._searchInput_12ewc_17::placeholder{color:var(--muted-foreground)}._rail_12ewc_33{display:contents}._railItem_12ewc_37{width:36px;height:36px;color:var(--muted-foreground);cursor:pointer;background:0 0;border:none;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:flex}._railItem_12ewc_37:hover:not([data-active]){background:color-mix(in srgb, var(--panel-bg) 60%, var(--text) 14%);color:var(--text)}._railItem_12ewc_37[data-active]{background:color-mix(in srgb, var(--panel-bg) 50%, var(--text) 18%);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--text) 26%, transparent)}._railItem_12ewc_37:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:1px}._railGlyph_12ewc_70{width:22px;height:22px;color:var(--muted-foreground);filter:grayscale()saturate(0);justify-content:center;align-items:center;line-height:1;display:inline-flex}._railItem_12ewc_37:hover ._railGlyph_12ewc_70,._railItem_12ewc_37[data-active] ._railGlyph_12ewc_70{color:var(--text)}._triggerPill_12ewc_90{color:var(--muted-foreground);background-color:#0000;border-color:#0000;height:36px;padding:0 16px}._triggerPill_12ewc_90:hover:not([data-disabled]),._triggerPill_12ewc_90[data-state=open]{background-color:var(--chat-hover-bg);color:var(--text);border-color:#0000}._triggerLogo_12ewc_105{color:var(--muted-foreground);filter:grayscale()saturate(0);flex-shrink:0;align-items:center;line-height:1;display:inline-flex}._itemLogo_12ewc_114{width:20px;height:20px;color:var(--muted-foreground);filter:grayscale()saturate(0);flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:inline-flex}._wrap_jrif0_1{flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex;position:relative}._trigger_jrif0_11{appearance:none;width:34px;height:34px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:background .12s;display:flex}._trigger_jrif0_11:hover,._trigger_jrif0_11:focus-visible{background:var(--muted);outline:none}._ring_jrif0_33{transform:rotate(-90deg)}._ringTrack_jrif0_37{fill:none;stroke:var(--line);stroke-width:3.5px}._ringFill_jrif0_43{fill:none;stroke-width:3.5px;stroke-linecap:round;transition:stroke-dashoffset .4s,stroke .2s}._ringFillNominal_jrif0_52{stroke:var(--primary)}._ringFillWarn_jrif0_56{stroke:var(--accent,#d97706)}._ringFillDanger_jrif0_60{stroke:var(--danger,#dc2626)}._ringLabel_jrif0_64{color:var(--muted-foreground);pointer-events:none;letter-spacing:0;justify-content:center;align-items:center;font-size:.62rem;font-weight:700;display:flex;position:absolute;inset:0}._ringLabelUnknown_jrif0_77{font-size:.7rem}._popover_jrif0_81{background:var(--popover);border:1px solid var(--line);border-radius:var(--radius-md);min-width:240px;box-shadow:var(--shadow-popover);color:var(--text);z-index:30;opacity:0;pointer-events:none;flex-direction:column;gap:6px;padding:10px 12px;font-size:.8rem;transition:opacity .15s,transform .15s;display:flex;position:absolute;top:calc(100% + 6px);right:0;transform:translateY(-4px)}._wrap_jrif0_1:hover ._popover_jrif0_81,._wrap_jrif0_1:focus-within ._popover_jrif0_81{opacity:1;pointer-events:auto;transform:translateY(0)}._popoverTitle_jrif0_112{color:var(--text);justify-content:space-between;gap:8px;font-size:.82rem;font-weight:600;display:flex}._popoverTitleValue_jrif0_121{color:var(--muted-foreground);font-weight:500}._popoverRow_jrif0_126{color:var(--muted-foreground);justify-content:space-between;gap:12px;display:flex}._popoverRowValue_jrif0_133{color:var(--text);font-variant-numeric:tabular-nums}._popoverProgress_jrif0_138{background:var(--muted);border-radius:999px;width:100%;height:6px;margin-top:2px;position:relative;overflow:hidden}._popoverProgressFill_jrif0_148{background:var(--primary);transition:width .4s,background .2s;position:absolute;inset:0 auto 0 0}._popoverProgressFillWarn_jrif0_157{background:var(--accent,#d97706)}._popoverProgressFillDanger_jrif0_161{background:var(--danger,#dc2626)}._popoverFoot_jrif0_165{color:var(--muted-foreground);margin-top:2px;font-size:.72rem}._button_kxq2k_1{white-space:nowrap;cursor:pointer;border-radius:var(--radius-sm);box-sizing:border-box;border:1px solid #0000;outline:none;flex-shrink:0;justify-content:center;align-items:center;gap:6px;font-size:.875rem;font-weight:500;line-height:1;text-decoration:none;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex}._button_kxq2k_1:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px}._button_kxq2k_1:disabled,._button_kxq2k_1[data-disabled]{cursor:default;opacity:.72}._button_kxq2k_1:disabled{pointer-events:none}._button_kxq2k_1[data-loading]{cursor:progress}._button_kxq2k_1 svg{pointer-events:none;flex-shrink:0}._default_kxq2k_50{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}._default_kxq2k_50:hover:not(:disabled):not([data-disabled]){opacity:.9}._ghost_kxq2k_60{background:var(--panel-bg);border-color:var(--line-strong);color:var(--text)}._ghost_kxq2k_60:hover:not(:disabled):not([data-disabled]){background:var(--muted)}._outline_kxq2k_70{border-color:var(--line-strong);color:var(--text);background:0 0}._outline_kxq2k_70:hover:not(:disabled):not([data-disabled]){background:var(--muted)}._danger_kxq2k_80{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger)}._danger_kxq2k_80:hover:not(:disabled):not([data-disabled]){opacity:.85}._sizeDefault_kxq2k_92{min-height:36px;padding:9px 12px}._sizeSm_kxq2k_97{min-height:30px;padding:6px 10px;font-size:.8125rem}._sizeIcon_kxq2k_103{width:36px;height:36px;min-height:unset;padding:0}
|